Seminar 1912, 19912 –NoSQL Datenbanken Thomas Behr 31. August 2015 1 Einführung Im täglichen Leben sind derzeit vor allem relationale Datenbanksysteme verbreitet. Immer wieder gab es Angriffe auf die Vorherrschaft dieser Art von Datenbanken. Zu nennen sind hier unter anderem objektorientierte Datenbanken und hierarchische Datenbanken. Häufig kamen solche neuen Entwicklungen aus der Therorie und konnten sich in der Praxis nicht durchsetzen. Gründe hierfür waren z.B. eine schlechte Performanz, eine fehlende mächtige Abfragesprache oder einfach nur mangelnde Akzeptanz der Praktiker“. Aber auch relationale Systeme haben ihre Schwächen. ” So ist es manchmal schwierig, ein gegebenes Problem mit den starren Schemata, die ein solches System vorschreibt, zu modellieren. Weiterhin sind solche Systeme darauf optimiert, viele kurze Anfragen parallel zu bearbeiten. Mit lang laufenden Anfragen haben solche Systeme enorme Probleme. Um diese und andere Probleme zu lösen, können sogenannte NoSQL (Not-Only-SQL)-Datenbanken eingesetzt werden. Im Kontrast zu anderen Systemen, kommen solche Systeme häufig aus der Praxis, um dort aufgetretene Probleme zu meistern. Häufig werden einige klassische Merkmale von Datenbanksystemen, z.B. Transaktionskontrolle, aufgeweicht, um anderen Faktoren Vorteile einzuräumen. Feste Schemata für die Daten sucht man in NoSQL-Systemn häufig vergeblich. Auch wird gern auf die ACID-Eigenschaften von Transaktionen zu Gunsten eine höheren Geschwindigkeit verzichtet. In vielen Fällen handelt es sich um verteilte Systeme, bei denen die Daten auf verschiedenen Computern aufgeteilt sind und ebenso verteilt bearbeitet werden. Das Hinzufügen neuer Computer sowie der Ausfall einzelner Knoten stellt im Idealfall kein Problem für solche Systeme dar. NoSQL-Datenbanken lassen sich in verschiedene Gruppen einteilen. Diese umfassen unter anderem: 1 • spaltenorientierte Datenbanken • Key-Value-Stores • Document Stores • Graph-Datenbanken Die einzelnen Gruppen verfolgen teilweise unterschiedliche Ziele. So bieten bsplw. Key-Value-Stores eine einfache Verteilung der Daten auf verschiedene Computer einschließlich Fehlerbehandlung an. Komplexe Anfragen sind jedoch schwierig zu formulieren. Bei den Document-Stores steht die Schemafreiheit der Daten eindeutig im Vordergrund. Bei den spaltenorientierten Datenbanken ist die Skalierbarkeit ein wesentliches Merkmal. Durch die spaltenorientierte Struktur sind Tabellen mit extrem vielen Spalten darstellbar und können schnell abgefragt werden. Der Vorteil von Graph-Datenbanken ist es, vernetzte Informationen auf einfache und natürliche Weise speichern und abfragen zu können. Ziel dieses Seminars soll es sein, die Welt der NoSQL-Datenbanken ein wenig anhand einiger existierender Systeme kennenzulernen. 2 Themenauswahl Dieses Dokument beschreibt die verschiedenen Themen des Seminars 1912/19912 im WS 2015/2016. Lesen Sie sich das Dokument gut durch und sehen Sie sich bei Bedarf kurz die dazugehörige Literatur an. Erstellen Sie eine Liste mit Ihren Prioritäten. In dieser Liste erhält das Thema, welches Sie am liebsten bearbeiten möchten, die Priorität 1, wogegen das Thema, das Sie keinesfalls bearbeiten möchten, die Priorität 16 bekommt. Vergeben Sie für jedes Thema eine eindeutige Priorität. Senden Sie diese Liste bis spätestens 30.9.2015 per E-Mail an die Kursbetreuung ([email protected]). Ich werde versuchen, bei der Themenvergabe Ihre Prioritäten weitestgehend zu berücksichtigen. Natürlich kann ich nicht garantieren, dass Sie Ihr Wunschthema erhalten. Sobald alle Listen eingegangen sind, jedoch spätestens nach Ende der angegebenen Frist, werden die Themen auf die Seminarteilnehmer/Seminarteilnehmerinnnen verteilt. Beleger/Belegerinnen des Seminars 19912 (für Master Wirtschaftsinformatik) erhalten zwei Themen zur Bearbeitung. Sollte von Ihnen bis Fristende keine Prioritätenliste vorliegen, wird Ihnen ein irgendein Thema zugewiesen. Sie erhalten Ihr Thema spätestens bis zum 6.10.2015 per E-Mail mitgeteilt. 2 3 Bearbeitung des Themas Lesen Sie sich die Themenbeschreibung zusammen mit der dort angegebenen Literatur gut durch. Es wird erwartet, dass Sie selbständig weitere Literatur zu Ihrem gewählten Thema recherchieren. Verwenden Sie dabei nach Möglichkeit vor allem wissenschaftliche Publikationen. Übersetzen Sie englischsprachige Texte nicht einfach, sondern geben Sie den Inhalt mit eigenen Worten wieder. Vermeiden Sie lange, direkte Zitate. Geben Sie alle verwendeten Quellen an. Beachten Sie auch die Gestaltungshinweise, die Sie unter: http://dna.fernuni-hagen.de/Lehre-offen/ Seminare/1912-WS1516/Gestaltungshinweise.pdf finden. Senden Sie eine Gliederung Ihrer Ausarbeitung im PDF-Format bis spätestens 10.11.2015 an die Kursbetreuung. Sie erhalten eine Rückmeldung, inwiefern diese Gliederung in Ordnung ist. Sie haben dann bis zum 11.1.2016 Zeit, die vollständige Ausarbeitung sowie Präsentationsfolien zu erstellen. Senden Sie Ihre Ausarbeitung und Ihre Folien wieder per E-Mail an die Kursbetreuung. Die Ausarbeitung ist im PDF-Format abzugeben. Die Präsentationsfolien können wahlweise als PDF, als PPT (Version 2010) oder als ODP eingereicht werden. Ich werde mir Ihre Dokumente ansehen. Bei Bedarf erhalten Sie einmalig Gelegenheit, diese nachzubessern. Am 26.2.2016 und am 27.2.2016 findet die Präsenzphase des Seminars in Hagen statt. Ein genauer Zeitplan wird noch bekanntgegeben. Alle Teilnehmer und Teilnehmerinnen des Seminars sind an beiden Tagen zu allen Vorträgen präsent. Die Vortragsdauer ist 45 Minuten. Halten Sie Ihren Vortrag vorab zur Probe, um sicherzustellen, dass Sie diese Zeit einhalten. Verlieren Sie sich während des Vortrags nicht in Einzelheiten und hasten Sie nicht von einem Detail zum nächsten. Versuchen Sie vielmehr in Ruhe die wichtigen Elemente Ihres Themas herauszustellen. Jeder Vortrag wird mit einer Diskussionsrunde abgeschlossen. Es wird erwartet, dass Sie sich an den Diskussionen aktiv beteiligen. Die Diskussionsrunde dauert maximal 15 Minuten. 4 Allgemeines über NoSQL Bei der Bearbeitung dieses Themas geht es darum, einen allgemeinen Überblick über NoSQL-Datenbanken, ihre Eigenschaften, Vor- und Nachteile, zu geben. Als Einstieg können die Veröffentlichungen [MH13] und [PPS11] verwendet werden. 3 Thema 1 5 Systeme In dieser Rubrik sollen einige NoSQL-Systeme vorgestellt werden. Sie müssen hier nicht die gesamten Inhalte der vorgeschlagenen Einstiegsliteratur in Ihre Ausarbeitung/ Ihren Vortrag einarbeiten. Versuchen Sie stattdessen das DBMS möglichst gut zu beschreiben. Stellen Sie die Besonderheiten des jeweiligen Systems heraus. Gehen Sie auf die Architektur und die Anfragemöglichkeiten ein. 6 Cassandra Thema 2 Cassandra [Fea10] ist ein Key-Value-Store, bei dem die Daten auf viele Computer verteilt werden. Besondere Beachtung beim Design fand die Skalierbarkeit und die Robustheit des Systems. So können unproblematisch neue Computer eingefügt werden und der Ausfall einzelner Knoten stellt kein Problem dar. Eine weitere Einführung in dieses System ist in [LM10] zu finden. 7 Redis Thema 3 Redis ist ebenfalls ein Vertreter der Key-Value-Stores. Daten werden hier vor allem im Hauptspeicher gehalten, wodurch sich sehr schnelle Zugriffszeiten ergeben. Eine kurze praktische Einführung gibt Karl Seguin in [Seg12]. Eine Darstellung der verwendeten Dateiformate und der Hauptspeicherstruktur wird in [XXX+ 14] gegeben. 7.1 Bigtable Thema 4 Einer der führenden Suchmaschinenanbieter ist Google™. Offenbar müssen für die Suche im Internet riesige Datenmengen gesammelt, aufbereitet und durchsucht werden. So ist es nicht verwunderlich, dass hier neue Mechanismen für das Handling solch riesiger Datenmengen entwickelt wurden. Ein Ergebnis ist Bigtable [CDG+ 08], ein System zur strukturierten Speicherung von großen Datenmengen. Obwohl der Begriff Table“ ” eine klassische Tabellendarstellung suggeriert, ist es hier nicht notwendig, dass alle Zeilen einer solchen Tabelle die gleichen Spaltenanzahlen aufweisen. 4 7.2 MongoDB Thema 5 Ein wichtiger Vertreter der Document-Stores ist MongoDB [AA13]. Neben der Schemafreiheit ist auch die Skalierbarbeit bei diesem System gegeben. Eine Architekturbeschreibung dieses Systems ist im White Paper [Mon15] zu finden. Eine kurze praktische Einführung in dieses System bietet [Seg11]. 7.3 Citrusleaf Thema 6 Citrusleaf [SB11] ist ein NoSQL-System, das trotz Garantie der ACIDEigenschaften von Transaktionen einen Realzeit-Betrieb auch bei großen Datenmengen ermöglicht. 7.4 Neo4j Thema 7 Als Vertreter der Graphdatenbanken ist Neo4j als eine freie Implementierung verfügbar. Während in [Mil13] relationale Datenbanken und Graphdatenbanken am Beispiel von Neo4j verglichen werden, wird in [CQPA13] ein spezieller Anwendungsfall für dieses System beschrieben. 7.5 BaseX Thema 8 Mit BaseX [GHS07] lernen wir einen weiteren Vertreter eines dokumentenbasierten Datenbanksystems kennen. In [GGHS09] werden Erweiterungen dieses Systems vorgestellt, um den vollen Sprachumfang einer vorgeschlagenen Anfragesprache für die Volltextsuche zu unterstützen. 8 Comeback von SQL Aus Performanzgründen wird in NoSQL-Datenbanken häufig auf einige Eigenschaften der relationalen Datenbanksysteme verzichtet. Manchmal wird dieses Fehlen von Funktionalität als störend angesehen und es wird versucht, diese Funktionalitäten im Nachhinein in existierenden Systemen zu implementieren. 8.1 Joins Thema 9 Ein wichtiges Hilfsmittel in relationalen Datenbanksystemen ist der Verbund (Join) zweier Relationen. In relationalen Datenbanken existieren etliche Algorithmen, solch einen Verbund effizient durchzuführen. So wird 5 in [KS15] ein Ansatz beschrieben, mittels MapReduce Joins zu berechnen. Ein Ansatz für Rank-Join-Queries ist in [NPT14] zu finden. 8.2 Transaktionen Thema 10 Der Verzicht auf Transaktionen, in denen Folgen von Datenbankbefehlen als eine Einheit verarbeitet werden, bietet Geschwindigkeitsvorteile und eine erhöhte Parallelität der Anfragen. Allerdings kann dieser Verzicht bekanntermaßen zu inkonsistenten Daten oder verlorenen Updates führen. Während für einige Anwendungsfälle solche fehlerbehafteten Daten toleriert werden können, ist dies für andere Anwendungen inakzeptabel. So entwickeltein die Autoren in [RK15] ein Transaktionsmodell für verteilte NoSQL-Datenbanken. 8.3 Einheitlicher Zugriff Thema 11 Während in relationalen Datenbanken der Zugriff (mehr oder minder) einheitlich über SQL erfolgt, existiert solch eine einheitliche Anfragesprache für NoSQL-Datenbanken nicht. Somit müssen Anwendungsprogramme, die von einer zu einer anderen NoSQL-Datenbank wechseln wollen, stark angepasst werden. In [ABR14] stellen die Autoren daher eine Programmierschnittstelle vor, die die Heterogenität der darunterliegenden Datenbanken verstecken soll. 8.4 Schema Thema 12 Für eine möglichst flexible Datenspeicherung verzichten NoSQL-Systeme häufig auf Datenschemata. Dies kann für bestimmte Anfragearten als problematisch eingestuft werden. In [KSS15] wird daher ein Mechanismus vorgeschlagen, um ein Schema aus einer NoSQL-Datenbank extrahieren zu können. 8.5 Vergleich SQL - NoSQL Offenbar bieten NoSQL-Datenbanksysteme einige Vorteile gegenüber den klassischen relationen Vertretern, aber besitzen auch einige Nachteile. So ist es nicht verwunderlich, dass Vergleiche zwischen diesen Klassen gezogen werden. Ein solcher Vergleich ist in [Cat10] beschrieben. Da NoSQL-Datenbanken vor allem für sehr große Datenmengen entwickelt wurden stellt sich die Frage, wie sich solche Systeme bei nor” 6 Thema 13 malen“ Datenmengen verhalten. Ein Vergleich mit relationalen DBMS in dieser Hinsicht wird in [AHM15] durchgeführt. 9 Anwendungen In diesem Abschnitt werden einige Anwendungsmöglichkeiten für NoSQLDatenbanken analysiert. 9.1 Graphen Thema 14 Mittels Graphen können die verschiedensten Dinge dargestellt werden. Diese Graphen können sehr groß werden, beispielsweise bei der Darstellung von Seitenzusammenhängen im WWW oder der Darstellung sozialer Netzwerke. Mitunter werden Dimensionen erreicht, die die Speicherkapazitäten (Haupspeicher und Sekundärspeicher) einzelner Computer übersteigen. In [LSK15] wird die Unicorn-Bibliothek vorgestellt, die mit Hilfe von HBase™ mit solchen Graphen umgehen kann. 9.2 Datenänderung Thema 15 Bei der Analyse von gespeicherten Daten führen Änderungen an diesen zu veränderten Ergebnissen. Aufgrund des hohen Datenvolumens ist eine vollständige Neuberechnung der Ergebnisse von Grund auf bei einer Datenänderung nicht sinnvoll. Daher werden inkrementelle Updates der Ergebnisse berechnet. Eine Voraussetzung hierfür ist, Änderungen an den Daten zu erkennen und weiterzugeben. In [HD14] werden Ansätze vorgestellt, Datenänderungen in spaltenorientierten Datenbanken zu verarbeiten. 9.3 Web-Datenbanken Thema 16 Datenbanken, die (spezielle) Web-Inhalte darstellen sollen, haben es mit heterogenen Daten zu tun. Aufgrund der Schemafreiheit von NoSQLDatenbanken scheinen diese hierfür geeignet zu sein. In [FJ15] wird eine Anwendung von NoSQL-Datenbanken beschrieben, um eine Suche nach Lerninhalten zu ermöglichen. Exemplarisch werden hier Lerninhalte der Medizin verwendet. 7 Literatur [AA13] Rupali Arora and Rinkle Rani Aggarwal. Modeling and querying data in MongoDB. International Journal of Scientific and Engineering Research, 4:141–144, 2013. [ABR14] Paolo Atzeni, Francesca Bugiotti, and Luca Rossi. Uniform access to NoSQL systems. Inf. Syst., 43:117–133, 2014. [AHM15] Mohammad Shamsul Arefin, Khondoker Nazibul Hossain, and Yasuhiko Morimoto. Efficiency of NoSQL databases under a moderate application load. In Wanming Chu, Shinji Kikuchi, and Subhash Bhalla, editors, Databases in Networked Information Systems - 10th International Workshop, DNIS 2015, Aizu-Wakamatsu, Japan, March 23-25, 2015. Proceedings, volume 8999 of Lecture Notes in Computer Science, pages 213–227. Springer, 2015. [Cat10] Rick Cattell. Scalable SQL and NoSQL data stores. SIGMOD Record, 39(4):12–27, 2010. [CDG+ 08] Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Michael Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. Bigtable: A distributed storage system for structured data. ACM Trans. Comput. Syst., 26(2), 2008. [CQPA13] Ciro Cattuto, Marco Quaggiotto, André Panisson, and Alex Averbuch. Time-varying social networks in a graph database: a Neo4j use case. In Peter A. Boncz and Thomas Neumann, editors, First International Workshop on Graph Data Management Experiences and Systems, GRADES 2013, co-loated with SIGMOD/PODS 2013, New York, NY, USA, June 24, 2013, page 11. CWI/ACM, 2013. [Fea10] Dietrich Featherston. Cassandra: Principles and application, 2010. [FJ15] Reem Qadan Al Fayez and Mike Joy. Applying NoSQL databases for integrating web educational stores - an ontologybased approach. In Sebastian Maneth, editor, Data Science 30th British International Conference on Databases, BICOD 2015, Edinburgh, UK, July 6-8, 2015, Proceedings, volume 8 9147 of Lecture Notes in Computer Science, pages 29–40. Springer, 2015. [GGHS09] Christian Grün, Sebastian Gath, Alexander Holupirek, and Marc H. Scholl. Xquery full text implementation in BaseX. In Zohra Bellahsene, Ela Hunt, Michael Rys, and Rainer Unland, editors, Database and XML Technologies, 6th International XML Database Symposium, XSym 2009, Lyon, France, August 24, 2009. Proceedings, volume 5679 of Lecture Notes in Computer Science, pages 114–128. Springer, 2009. [GHS07] Christian Grün, Alexander Holupirek, and Marc H. Scholl. Visually exploring and querying XML with BaseX. In Alfons Kemper, Harald Schöning, Thomas Rose, Matthias Jarke, Thomas Seidl, Christoph Quix, and Christoph Brochhaus, editors, Datenbanksysteme in Business, Technologie und Web (BTW 2007), 12. Fachtagung des GI-Fachbereichs Daten” banken und Informationssysteme“ (DBIS), Proceedings, 7.-9. März 2007, Aachen, Germany, volume 103 of LNI, pages 629– 632. GI, 2007. [HD14] Yong Hu and Stefan Dessloch. Extracting deltas from column oriented NoSQL databases for different incremental applications and diverse data targets. Data Knowl. Eng., 93:42–59, 2014. [KS15] Chulyun Kim and Kyuseok Shim. Supporting set-valued joins in NoSQL using mapreduce. Inf. Syst., 49:52–64, 2015. [KSS15] Meike Klettke, Uta Störl, and Stefanie Scherzinger. Schema extraction and structural outlier detection for json-based NoSQL data stores. In Thomas Seidl, Norbert Ritter, Harald Schöning, Kai-Uwe Sattler, Theo Härder, Steffen Friedrich, and Wolfram Wingerath, editors, Datenbanksysteme für Business, Technologie und Web (BTW), 16. Fachtagung des GI-Fachbereichs Datenbanken und Informationssysteme“ ” (DBIS), 4.-6.3.2015 in Hamburg, Germany. Proceedings, volume 241 of LNI, pages 425–444. GI, 2015. [LM10] Avinash Lakshman and Prashant Malik. Cassandra: a decentralized structured storage system. Operating Systems Review, 44(2):35–40, 2010. 9 [LSK15] Ho Lee, Bin Shao, and U. Kang. Fast graph mining with hbase. Inf. Sci., 315:56–66, 2015. [MH13] A. B. M. Moniruzzaman and Syed Akhter Hossain. NoSQL database: New era of databases for big data analytics - classification, characteristics and comparison. CoRR, abs/1307.0191, 2013. [Mil13] Justin J. Miller. Graph database applications and concepts with Neo4j. In Proceedings of the Southern Association for Information Systems Conference, Atlanta, GA, USA March 23rd-24th, 2013, pages 141–147, 2013. [Mon15] MongoDB. MongoDB architecture guide, 2015. [NPT14] Nikos Ntarmos, Ioannis Patlakas, and Peter Triantafillou. Rank join queries in NoSQL databases. PVLDB, 7(7):493– 504, 2014. [PPS11] R. P. Padhy, M. R. Patra, and S. C. Satapathy. RDBMS to NoSQL: Reviewing Some Next-Generation Non-Relational Database’s‖. International Journal of Advanced Engineering Science and Technologies, 11(1), 2011. [RK15] Dharavath Ramesh and Chiranjeev Kumar. A scalable generic transaction model scenario for distributed NoSQL databases. Journal of Systems and Software, 101:43–58, 2015. [SB11] V. Srinivasan and Brian Bulkowski. Citrusleaf: A real-time NoSQL DB which preserves ACID. PVLDB, 4(12):1340–1350, 2011. [Seg11] Karl Seguin. The Little MongoDB Book. 2011. [Seg12] Karl Seguin. The Little Redis Book. 2012. [XXX+ 14] Ming Xu, Xiaowei Xu, Jian Xu, Yizhi Ren, Haiping Zhang, and Ning Zheng. A forensic analysis method for Redis database based on RDB and AOF file. JCP, 9(11):2538–2544, 2014. 10