Add Thesis

Einsatz von NoSQL-Datenbanken in modernen Webapplikationen

Written by Andreas Hofstetter

Paper category

Master Thesis

Subject

Computer Science

Year

2012

Abstract

Masterarbeit: NoSQL-Konzept Der Begriff NoSQL wurde ursprünglich von Carlo Strozzi als Name des von ihm entwickelten Datenbankmanagementsystems verwendet. Im Gegensatz zur heutigen Verwendung des Begriffs bezieht sich dies jedoch auf ein bestimmtes Beziehungssystem. Das System von Strozzi unterscheidet sich von anderen RDBMS darin, dass es die traditionelle Abfragesprache SQL eliminiert, aber seine eigene API verwendet, die eine Reihe von CLI-ähnlichen Befehlen verwendet. [Strozzi12] Es wurde erstmals im Mai 2009 von Johan Oskarsson als nicht-relationales Namensdatenbanksystem verwendet. Als Titel der Konferenz wurde NoSQL verwendet, um kürzlich entstandene Datenbanksysteme wie HBase, Cassandra oder CouchDB zu diskutieren, die für den verteilten Einsatz entwickelt wurden. [Oskarsson12] Es gibt keine strikte Definition, welche Arten von Datenbanksystemen unter diesen Begriff fallen und welche nicht. Das NoSQL-Archiv bietet eine Sammlung von Dokumenten und Links zu diesem Thema und versucht, die NoSQL-Community zu nutzen, um Standards zu schaffen. Diese Standards werden verwendet, um die Klassifizierung von NoSQL-Systemen zu standardisieren.The Archives hat sieben Standards veröffentlicht, die ein Datenbankmanagementsystem haben sollte, bevor es als NoSQL-System klassifiziert werden kann. [NoSqlArchi-ve12] In der deutschen Übersetzung von Stefan Edlich wird NoSQL als „ein Datenbanksystem der neuen Generation, das in der Regel folgende Punkte berücksichtigt“ verstanden: Diese Definition ist nicht als absolutes Ausschlusskriterium zu verstehen. Fast kein Datenbankmanagementsystem kann alle sieben Standards erfüllen. Wie in Abbildung 4.1 gezeigt, ist die Konvertierung zwischen traditionellen Systemen und NoSQL-Systemen fließend. Vor allem, weil die Definition auch Merkmale umfasst, die nicht auf technischen Merkmalen beruhen. Auch das Alter des Projekts ("neue Generation") und die Lizenz ("Open Source") werden berücksichtigt. Daher lässt sich der Begriff NoSQL weiter in zwei Bereiche unterteilen. Es gibt einen Unterschied zwischen einem Core-NoSQL-System und einem Soft-NoSQL-System (auch Downstream-System genannt). Das Kernsystem umfasst zunächst Systeme, die aufgrund der neuen Anforderungen moderner Webanwendungen entstanden sind. Dazu gehören vier verschiedene Datenbankkonzepte, die im nächsten Kapitel näher beschrieben werden. Diese Konzepte sind dokumentorientierte Datenbanken, spaltenorientierte Datenbanken, Schlüsselwertdatenbanken und Graphdatenbanken. Spätere NoSQL-Systeme umfassten Objekt- und XML-Datenbanken, die eine Alternative zu relationalen Datenbanken waren, die in den 1990er Jahren entwickelt wurden. 4.1 Schlüsselwertdatenbank Das erste vorgeschlagene Konzept ist eines der ältesten Datenbankkonzepte und wird seit den 1970er Jahren verwendet. Daher ist das Schlüssel-Wert-Konzept viel älter als der Begriff NoSQL. Die meisten schlüsselwertbasierten DBMS erschienen erst mit dem Aufkommen von Web 2.0-Anwendungen.Schlüsselwertdatenbanken zeichnen sich durch ihre einfachen Datenschemata aus, in denen alles in Schlüssel-Wert-Paaren gespeichert wird. Ein Schlüssel ist eine Kennung, meist in Form eines Strings oder Binärcodes, mit der ein Datensatz eindeutig identifiziert werden kann. [Jan-senRedis12] Ein Wert oder Wert repräsentiert die eigentlich zu speichernden Informationen. Je nach verwendetem DBMS können es einfache Datentypen wie Strings und Zahlen sein oder es kann sich um eine zweispaltige Einzeltabelle mit komplexen Objekten und Listen handeln, wobei die erste Spalte den Schlüssel der zu durchsuchenden Tabelle bildet und die zweite Spalte enthält Der zu speichernde Wert. Zu beachten ist, dass der Zugriff auf die Daten nur über den Schlüssel möglich ist. Sie können nicht nach Werten suchen. Die Daten in der Schlüsselwertdatenbank sind irrelevant. Somit besteht keine Korrelation zwischen einzelnen Datensätzen. Diese einfache und unabhängige Struktur kann problemlos eine große Datenmenge auf mehrere physische Instanzen erweitern. [Edlich11] Ein gängiges Anwendungsgebiet von Key-Value-Datenbanken ist das Caching, also die Zwischenspeicherung von Daten. In diesem Fall werden die zuvor aus der relationalen Datenbank abgefragten Daten für einen bestimmten Zeitraum in der Schlüssel-Wert-Datenbank gespeichert. Bei wiederholten Abfragen dann lesender Zugriff auf die Schlüssel-Wert-Datenbank statt auf die relationale Datenbank. Der Vorteil hierbei ist, dass einige Schlüsselwert-Datenbanksysteme einen Teil oder alle ihrer Daten im Hauptspeicher des Servers ablegen können. Dadurch wird die Zugriffsgeschwindigkeit sehr hoch, wodurch die Reaktionszeit der Anwendung erhöht wird. Darüber hinaus können Abfragen in Schlüsselwertdatenbanken in der Regel ressourceneffizienter durchgeführt werden, wodurch auch die CPU-Last des Servers stark reduziert werden kann. [OracleMemcached10] Diese Varianten werden als Haupt-In-Memory-Datenbanken oder In-Memory-Datenbanken (IMDB) bezeichnet. Es gibt eine Vielzahl unterschiedlicher Schlüsselwertdatenbanken. Zu den bekanntesten Vertretern dieser Art gehört Membase, das in den Projekten Redis und Memcached vorkommt. Ersteres wird in den folgenden Abschnitten genauer untersucht und zur Entwicklung einer Beispiel-Webanwendung verwendet. Redis Dieses Projekt ist in ANSI C geschrieben, 2009 als Single-Person-Projekt gestartet und wird seit 2010 vom Virtualisierungsexperten VMWare weiterentwickelt. Read Less