Query Rewriting in NoSQLDatenbanksystemen Julian Stenzel Einleitung Der Begriff NoSQL (Not only SQL) bezeichnet eine aufstrebende Datenbanktechnologie, welche nicht den relationalen Ansatz verfolgt, bei dem die Daten üblicherweise in der von relationalen Datenbanken bekannten Form modelliert und gespeichert werden. Datenbanken dieser Form existieren bereits seit einer längeren Zeitspanne, wurden jedoch erst seit einigen Jahren durch das Aufkommen von Big Data und Web 2.0 unter dem Sammelbegriff NoSQL bekannt. Ein großer Vorteil von NoSQL-Datenbanksystemen besteht in der Schemafreiheit. Liegen Daten nicht in der entsprechenden Struktur vor, ist es üblich, dass ein Datenbankmanagementsystem diese bei der Speicherung zurückweist. Eine schemafreie Datenbank ist dagegen in der Lage, auch schwächer oder unstrukturierte Daten abzuspeichern. Dieser Mechanismus spielt seine Vorteile besonders in agilen Projekten aus, die von Natur aus einer hohen Änderungsrate unterliegen. Eine fehlende Kontrolle der Struktur der Daten führt in der Praxis jedoch zu Problemen. Motivation Mit dem Ansatz des Schema-Managements existiert eine Methodik, um den Problemen entgegenzuwirken. Dabei steht das Schema-Management für die Kontrolle der kontinuierlichen Änderungen an einem Schema der Datenbank, die während der Entwicklung und im Betrieb eines Softwaresystems auftreten. Trotz einer konsequenten Kontrolle durch das Schema-Management existieren in der Praxis jedoch weiterhin Daten in unterschiedlichen Schemaversionen. Will man diese durch eine beliebige Abfragesprache beziehen, stoßen wir auf zwei Probleme. Zum einen passen historisch gestellte Abfragen nicht mehr auf die Daten der sich stetig weiterentwickelnden Schemas. Zum anderen muss eine gestellte Abfrage, welche sich gegen eine einzelne Schemaversion richtet, so erweitert werden, dass sie auf alle korrespondierenden Schemaversionen passt. Abbildung 1 Beispiel einer umgeschriebenen Abfrage anhand dreier Schemaversionen Gegenstand dieser Arbeit ist die Definition der Grundlagen und die Motivation von Query Rewriting. Es werden Konzepte für die Integration des Rewriting im Schema-Management erarbeitet, evaluiert und diese anhand eines Prototyps in eine vorliegende Schema-Management-Komponente namens Darwin implementiert. Die Query kann sich dabei auf mehrere Schemaversionen beziehen, wobei wir beispielsweise die jüngste Version wählen. Die SMO HandlerKomponente überprüft ob es zu der gefundenen Schemaversion Vorgänger- und Nachfolgeschemas gibt. Würden zu Person wie im Beispiel gezeigt drei Schemaversionen vorliegen und unsere Anwendung eine Abfrage gegen Version 2 stellen, so würde unsere Query-ParserKonzept Komponente ein Matching zu Version 1 und zu Version 3 erkennen. Aus dem Matching zwischen den verschiedenen gefundenen Vorgänger- und In Abbildung 2 ist die Grundarchitektur des in der Nachfolgeversionen erstellt die Komponente eine Arbeit erstellten Konzeptes zu sehen. An der Spit- Tabelle, welche alle Matchings enthält. ze unserer Architektur steht der Nutzer, der über eine Anwendung, welche über eine API mit unse- Die Query-Rewriting-Komponente nutzt die erstellrer Schema-Management-Komponente kommuni- te Tabelle, um die von dem Nutzer gestellte Abziert, verbunden ist und über diese Datenbankab- frage mit der Hilfe eines Algorithmus (genannt fragen gegen ein NoSQL-Datenbanksystem stel- Chase & Backchase (C&B)) umzuschreiben. Die len kann. Diese Abfragen gilt es nun auf eine nun umgeschriebene Abfrage wird auf die vermögliche Anwendung des Query Rewriting zu schiedenen Datenquellen angewandt und das Ergebnis an den Nutzer bzw. an die Anwendung untersuchen. geleitet. Basierend auf erstellten Statistiken soll der Query-Rewriting-Prozess dauerhaft überwacht werden können. Das Konzept wurde als Prototyp in die Schema-Management-Komponente Darwin implementiert. Ergebnis In Abbildung 1 ist ein passendes Beispiel zu sehen. Dabei liegt ein Objekt Person in drei unterschiedlichen Schemaversionen vor, welche sich jeweils in ihrer Struktur unterscheiden. Eine potentielle Abfrage gegen Schemaversion 2 (in der Abbildung fett gedruckt), muss jeweils so erweitert werden, dass sie zusätzlich auf die Schemaversionen 1 und 2 passt. Der Vorgang, der sich um die automatisierte Anpassung der Abfragen bezüglich der verwalteten Abbildung 2 Grundarchitektur Query Rewriting Schemaversionen kümmert, wird im Kontext des Schema-Managements Query Rewriting genannt. Zunächst wird die Abfrage in der Query ParserKomponente geparsed. Gleichzeitig wird überprüft auf welche Schemaversion sich die Abfrage bezieht (im vorangegangenen Beispiel wäre das die Schemaversion 2). Kontakt Julian Stenzel Fachbereich Informatik Schöfferstraße 8b, 64295 Darmstadt E-Mail: [email protected] Es zeigt sich, dass das Query Rewriting eine wichtige Komponente des Schema-Managements darstellt und sich das entwickelte Konzept in dieses integrieren lässt. Im Zuge verschiedener Migrationsstrategien spielt das Query Rewriting eine entscheidende Rolle und dient als Grundlage für eine effiziente Lazy Migration. In gewissen Szenarien kann das Query Rewriting eine Migration sogar teilweise ersetzen. In den nächsten Arbeiten sollten weitere Tests an der Komponente durchgeführt und diese weiter verbessert und stabilisiert werden. Des Weiteren müssen verschiedene Kostenmodelle entwickelt werden auf Grundlage dessen Performancemessungen durchgeführt werden können. Die Messungen helfen je nach Einzelfall dabei, eine geeignete Migrationsstrategie auszuwählen. Referentin Prof. Dr. Uta Störl Korreferentin Prof. Dr. Inge Schestag