Zusammenfassung
Interaktive Webanwendungen, mit tausenden von Nutzern, erfordern den adäquaten Einsatz von geeigneten Datenbanktechnologien zur Verwaltung und Bereitstellung der ausgetauschten Daten. Am Beispiel des Open Source-Projektes PINGO wird aufgezeigt, wie sich die dokumentenorientierte NoSQL-Datenbank MongoDB in eine Webanwendungsarchitektur integrieren lässt, sodass die Datenbank skaliert und alle Datenbankzugriffe unmittelbar ausgeführt werden können. Ein Lasttest-Szenario belegt, dass die Geschwindigkeit der Gesamtanwendung nicht durch die genutzte MongoDB-Instanz, sondern durch die Ausstattung des eingesetzten Webservers limitiert wird. Im Szenario war es nicht möglich eine Lastobergrenze von MongoDB zu identifizieren, da sich die Netzwerkverbindung mit einer Übertragungsbandbreite von 400 Mbit/s als limitierender Faktor erwies. Darüber hinaus werden die mehr als fünfjährigen Projekterfahrungen genutzt, um die Entwicklung mit MongoDB kritisch zu reflektieren. Im Anwendungskontext zeigt sich MongoDB als flexible Datenbanktechnologie, welche sich einfach in das verwendete Web-Framework Ruby on Rails integrieren lässt. Die Konzepte der Schemalosigkeit und die Möglichkeit zur Bildung von logischen Einheiten zwischen Datenspeicherung und Darstellung erlauben zudem eine agile Weiterentwicklung der Webanwendung. Die größten Herausforderungen im Projektkontext resultierten aus der Tendenz vieler Entwickler relationale Modellierungskonzepte auf MongoDB zu übertragen.
Abstract
Interactive web applications with thousands of users need appropriate database technologies in order store and exchange data. Using the open source project PINGO as an example, we illustrate how the document-oriented NoSQL database MongoDB can be integrated with the web application stack, so that the database system scales up and every query is performed instantaneously. A load test scenario documents that the limiting factor is the webserver rather than the MongoDB instance. We could not find an upper bound for the load of MongoDB with the PINGO application as the 400 Mbit/s network connection turned out to be the bottleneck of the whole stack. Furthermore, we use our five years of experience with the project to reflect on the development process with MongoDB. The database integrates seamlessly with the Ruby on Rails framework and enables a very flexible development process. Moreover, the schemaless nature of MongoDB and the possibility to combine the object model with the persisted model facilitate agile methods for the continuous development of the application. Most challenges with the NoSQL technology were caused by developers who used previously learnt relational modeling approaches within the context of MongoDB.
Notes
Der Projekt-Quelltext ist öffentlich über GitHub verfügbar: http://www.github.com/PingoUPB/PINGOWebApp
Weitere Informationen zu Webanwendungsarchitektur finden sich in Kundisch et al. (2012).
Etwaige Infrastrukturprobleme, welche aus der Anbindung des Webservers an das Internet resultieren, werden im Lasttest-Szenario nicht nähergehend betrachtet.
Weitere Informationen zu den unterschiedlichen NoSQL-Datenmodellen vgl. bspw. Padhy et al. (2011).
Im Beispiel stimmen drei Teilnehmer für die erste Antwortoption und ein Teilnehmer für die Dritte. Darüber hinaus werden die Abstimmergebnisse den Antwortoptionen (options) als kumulierter Wert hinzugefügt.
Für weitere Informationen zum eingesetzten ODM siehe https://github.com/mongodb/mongoid.
Für weitere Informationen zum Eager Loading siehe https://docs.mongodb.org/ecosystem/tutorial/mongoid-queries/
Für weitere Informationen zu Embedded Documents siehe https://docs.mongodb.org/manual/tutorial/model-embedded-one-to-many-relationships-between-documents/
Für weitere Informationen zu Map-Reduce siehe https://docs.mongodb.org/manual/core/map-reduce/
Literatur
Aboutorabi SH, Rezapour M, Moradi M, Ghadiri N (2015) Performance evaluation of SQL and MongoDB databases for big e‑commerce data Proceedings of 2015 International Symposium on Computer Science and Software Engineering, S. 1–7
Cattell R (2010) Scalable SQL and NoSQL data stores. Acm Sigmod Rec 39:12–27. doi:10.1145/1978915.1978919
Faraj A, Rashid B, Shareef T (2014) Comperative Study of Relational and Non-Relations Database Performances using Oracle and MongoDB Systems. Int J Comput Eng Technol 5:11–22
Hajui O, Dehbi R, Talea M, Batouta Z (2015) An advanced comparative Study of the Most Promising NoSQL and NewSQL Databases with Multi-Criteria Analysis Method. J Theor Appl Inf Technol 81:579–588
Hecht R, Jablonski S (2011) NoSQL evaluation: A use case oriented survey Proceedings of the 2012 International Conference on Cloud and Service Computing, S. 336–341
Internet Live Stats (2016) Twitter Usage Statistics. http://www.internetlivestats.com/twitter-statistics/#trend. Zugegriffen: 05. Februar 2016
Kundisch D, Magenheim J, Beutner M, Herrmann P, Reinhardt W, Zokye A (2013) Classroom Response Systems. Inform Spektrum 36:389–393. doi:10.1007/s00287-013-0713-0
Kundisch D, Sievers M, Zoyke A, Herrmann P, Whittaker M, Beutner M, Fels G, Magenheim J (2012) Designing a web-based application to support Peer Instruction for very large Groups Proceedings of the International Conference on Information Systems.
Nayak A, Poriya A, Poojary D (2013) Type of NOSQL Databases and its Comparison with Relational Databases. Int J Appl Inf Syst 5:16–19
Padhy RP, Patra MR, Satapathy SC (2011) RDBMS to NoSQL: Reviewing some next-generation non-relational databases. Int J Adv Eng Sci Technol 11:15–30
Sareen P, Kumar P (2015) NoSQL Database and its Comparison with SQL Database. Int J Comput Sci Commun Networks 5:293–298
solid IT gmbh (2016a) DBMS popularity broken down by database model. http://db-engines.com/en/ranking_categories. Zugegriffen: 05. Februar 2016
solid IT gmbh (2016b) DB-Engines Ranking – Trend Popularity. http://db-engines.com/en/ranking_trend. Zugegriffen: 05. Februar 2016
Tauro CJM, Aravindh S, Shreeharsha AB (2012) Comparative study of the new generation, agile, scalable, high performance NOSQL databases. Int J Comput Appl 48:1–4
Wei-ping Z, Ming-xin L, Huan C (2011) Using MongoDB to implement textbook management system instead of MySQL Proceedings of the 3rd International Conference on Communication Software and Networks., S 303–305
Whittaker M, Neumann J (2013) Develop in the fast lane with Ruby/Rails. Softw Dev J:10–14
Wyllie D (2014) Datenbanksysteme für Web-Anwendungen im Vergleich. http://www.cowo.de/a/2496589. Zugegriffen: 05. Februar 2015
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Bach, C., Kundisch, D., Neumann, J. et al. Dokumentenorientierte NoSQL-Datenbanken in skalierbaren Webanwendungen. HMD 53, 486–498 (2016). https://doi.org/10.1365/s40702-016-0229-6
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1365/s40702-016-0229-6