Entwicklung & Design

Relationale Datenbanken bekommen Konkurrenz: NoSQL – Neues Denken in der Datenbankwelt

Seite 3 / 3

Riak kennt lose Verbindungen zwischen einzelnen Dokumenten in Form von Links [11]. Jedes Dokument kann eine Liste von ihnen enthalten. Verlinkte Dokumente können so ohne zusätzliche Roundtrips des Clients in einer Anfrage mit ausgeliefert werden [12].

Während CouchDB und Riak wohl am konsequentesten in der Abkehr von traditionellen Datenbanken sind, versucht MongoDB [13], den Weg des geringsten Widerstands zu gehen. Es baut auf bewährten Mechanismen auf und vereint Teile der traditionellen Datenbanken mit den Vorteilen der post-relationalen.

Dokumente in MongoDB werden in BSON gespeichert, einer Art binärem JSON-Format, das noch um einige native Typen erweitert wurde. MongoDB bietet Live-Queries, was die Nähe zu relationalen Datenbanken begründet. Damit diese allerdings performant laufen, sind auch bei MongoDB Indizes auf den gefragten Attributen notwendig.

MongoDB ist in C++ geschrieben und greift für Persistenz der Daten auf dessen Support für Memory-Mapped-Files zurück. Da diese keine hundertprozentige Konsistenz der Daten garantieren, ist ein Einsatz von MongoDB ohne eine entsprechende Live-Replika nicht ohne Risiko von Datenverlust.

CouchDB hingegen hängt Daten immer nur an seine B-Tree-Indizes an, womit jederzeit Konsistenz gewährleistet ist. MongoDB hat sich trotz seiner potenziellen Schwächen bewährt und kommt erfolgreich in einigen umfangreicheren Produktivumgebungen zum Einsatz. Auch Amazon fällt mit SimpleDB [14] in diese Kategorie, ist aber eher mit einer großen Excel-Tabelle als mit den oben genannten Vertretern vergleichbar.

Graph-Datenbanken

Geistig sind Graph-Datenbanken sehr nah an Objekt-Datenbanken. Ihre Stärke liegt in der direkten Abbildung von Relationen zwischen einzelnen Einträgen und der Möglichkeit, diese Referenzen ohne Performance-Verlust zu traversieren. Der bekannteste Vertreter ist Neo4j [15]. Es vereint die Vorteile von dokumentorientierten Datenbanken mit denen von Objekt-Datenbanken. Daten können unstrukturiert sein, sind aber über Relationen extrem performant traversierbar.

Ein weiterer Vertreter aus Deutschland ist Sones GraphDB [16], im Gegensatz zu den meisten hier vorgestellten Tools nicht Open Source. Während das Hauptaugenmerk auf C# als Anwendungssprache liegt, können Entwickler auch über eine SOAP- oder REST-API mit der Datenbank arbeiten. Anfragen werden in GQL formuliert, einem SQL-ähnlichen Dialekt.

Column-Stores

Column-Stores bauen auf der Philosophie auf, dass man Muster hat, denen zufolge man auf bestimmte Teile von Datensätzen zugreift. Da man oft nur einen Teil benötigt, wäre es effizienter, diese Daten zusammenhängend abzulegen, um Zugriffe so performant wie möglich zu machen.

Im Gegensatz zu relationalen Datenbanken sind Zugriffe auf bestimmte Attribute erstens versioniert und erfolgen zweitens direkt über eine Art sortierte Hashmap mit mehreren Keys: ID, Spalte und Version. Der Zugriff erfolgt so direkt und ohne den relationalen Umweg über Tabelle, ID und dann Spalte, was enorme Auswirkungen auf die Lese-Performance haben kann.

Über Familien von Spalten kann man forcieren, dass miteinander verwandte Attribute gemeinsam und effizient gespeichert und verteilt werden. Googles BigTable [17] baut als kommerzielles Produkt auf diesem Prinzip auf, während Facebooks Cassandra [18] den Ansatz mit den Verteilungsmechanismen von Dynamo verheiratet.

NoSQL und Ich

Es ist nicht einfach, eine konkrete Empfehlung auszusprechen, wie man die neuen Tools in Projekten einsetzen kann. Während zum Beispiel Redis durch seine Flexibilität recht vielfältig einsetzbar ist (Click-Tracking, Worker-Queue etc.) und Dokument-Datenbanken wie CouchDB sich für Webanwendungen vielfältigster Art anbieten, sind Tools wie Cassandra sehr spezialisiert auf bestimmte Anwendungsfälle. Aber gerade das macht die neue Generation von Datenbanken so interessant.

Sie wollen nicht für alle Fälle passen, sondern suchen sich einen Teil heraus und versuchen, diesen so performant und schmerzfrei wie möglich zu machen. Es lohnt sich, die einzelnen Tools im Detail anzuschauen, sie auszuprobieren und Erfahrungen mit ihnen zu sammeln. Fast alle werden produktiv eingesetzt, die meisten sind gar Open Source und werden von einer aktiven Community gestützt. Auch wenn relationale Datenbanken definitiv nicht am Ende sind, so ist das Ende von allgemeingültigen Lösungen nicht mehr weit. Die Zukunft gehört den spezialisierten Tools.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
flo
flo

Ein Fakt im Thema Graph-Datenbanken hat sich geändert!

sones GraphDB ist Open Source, den Code gibt es unter: GitHub

Weitere Informationen rund um die GraphDB unter: sones wiki