Crate – Haben neue Datenbanken Zukunft?

Interview mit Claus Matzinger, Integrations Engineer bei Crate.IO GmbH, www.crate.io, zum Thema neue Datenbanken

Symbol für Crate

Claus arbeitet seit einem Jahr bei Crate.IO am jungen Standort Berlin in einem Team von 18 Entwicklern und Entwicklerinnen, welche auf drei Standorte – San Francisco, Berlin und Dornbirn – verteilt sind. Crate.IO wurde 2013 von Jodok Batlogg, Christian Lutz und Bernd Dorn gegründet. Während der Arbeit mit Elasticsearch kam die Idee, eine neue Datenbank, genau genommen eine verteilte Datenbank für komplexe Anforderungen zu entwickeln, welche selbst einfach zu verwenden ist.

 

Danke Claus, dass du dir Zeit nimmst. Die wichtigste Frage gleich zu Beginn: Was ist Crate?

Crate.IO ist ein StartUp aus Vorarlberg und Crate eine horizontal skalierbare, verteilte SQL-Datenbank. Hervorgegangen ist die Idee dafür aus der Entwicklung des Elasticsearch Plugins, das zum Ziel hatte, SQL mit der Performance und Skalierbarkeit von Elasticsearch zu verbinden. Mittlerweile wird Elasticsearch aber nur mehr als Teil von Crate ausgeliefert und vieles wurde verändert oder ergänzt. Die Datenbank Nodes sind nach dem shared nothing Prinzip aufgebaut, in einem Cluster aus mehreren Nodes “kann jeder alles”. Jeder Node hat Lucene-Indizes (Shards), die er verwaltet. Über Routing (z.B. mit Primary Key modulo Anzahl der shards) wird festgestellt, wo welche Daten abgelegt werden, deren Location über den Cluster State den anderen Nodes bekannt gemacht wird. Die Lucene-Indizes selbst sind  unveränderbar (immutable data), atomare Operationen sind also nur Insert und Delete.

 

Was ist der Vorteil gegenüber NoSQL-Datenbanken?

Es ist nicht nur ein Key-Value Store (wie z. B. Redis), sondern man arbeitet mit relationalen Daten, die via (ANSI) SQL abgefragt, aggregiert, zusammengeführt und gefiltert werden können. Obwohl noch nicht alle SQL-Funktionalitäten verfügbar sind, ermöglicht es eine schnelle Analyse der Daten. Im Vergleich dazu muss z. B. bei MongoDB die Abfrage mittels Javascript Funktionen nach Map/Reduce Prinzipien erfolgen.

 

Wie bist du selbst auf die Firma aufmerksam geworden?

Nach meinem Praktikum bei RjDj in London hat einer der Mitarbeiter zu Crate gewechselt und mir davon erzählt. Nachdem mein eigenes StartUp auf Grund von fehlenden Fördermitteln stillgelegt werden musste, habe ich mich bei Crate.IO beworben.

 

Was sind deine Aufgaben?

Alles Mögliche, das ändert sich laufend. Derzeit Community Support und Developer Relations, also Marketing und Support. Demnächst habe ich einen Talk auf der Linux Con Europe in Berlin, habe bereits bei der Organisation und Durchführung eines Hackathon mitgewirkt und verfasse Blogposts etc. Zusätzlich kümmere mich um Community Support und löse Probleme verschiedener User. Davor war ich im Integrations Team tätig, welches Driver, etc. entwickelt. In Zukunft werde ich in den Business Support, möglicherweise als Teamleiter, wechseln.

 

Wer verwendet Crate? Welche bekannten Produkte/Firmen setzen Crate bereits ein?

Skyhigh Networks, ein Startup aus dem Silicon Valley mit über 500 Enterprise Kunden, hat ein Cluster mit 60 Nodes im Einsatz. Weitere Kunden sind: Kapsch AG, ein Telekommunikations- und Verkehrstelematikkonzern; Avuxi, ein Startup aus Barcelona, welches sich mit Social Media Analysen beschäftigt; und Space-Time Insights.

 

Für wen ist Crate interessant? Was sind typische Anwendungsfälle?

Sobald mit großen Datenmengen gearbeitet wird, ist Crate eine Lösung. Es gibt zwar Produkte wie Oracle Cluster, MySQL Cluster oder Microsoft SQL Cluster, diese sind aber teuer und stoßen irgendwann an ihre Grenzen. Sie haben oft einen hohen finanziellen Aufwand und sind sehr komplex in der Wartung. NoSQL-Datenbanken wie z.B. MongoDB bieten hingegen keine Möglichkeit, SQL zu verwenden. Crate ist auch als analytische Datenbank bzw. Data Warehouse optimal geeignet, weil Tabellen mit viele Attributen angelegt werden können und hier weder eine Einschränkung beim Datenbankdesign (Anm.: Tabellengrößen, etc.) noch bei der Performance besteht und auch ad-hoc Anfragen via SQL getätigt werden können.

 

Mit welcher SQL-Datenbank könnte man Crate vergleichen? Bzw. setzt es auf einem bekannten Produkt auf?

Vertica, Google Big Table etc. Es gibt bei einigen Produkten Aspekte, die ähnlich sind, aber ein direkter Vergleich ist schwierig. Crate wird oft mit MemSQL, einer reinen In-Memory Datenbank, verglichen, auch POCs werden damit erstellt.

 

Wie sieht es mit der Konkurrenz aus? Gibt es Produkte die ähnlich wie Crate arbeiten oder habt ihr ein Alleinstellungsmerkmal?

Bei Datenbanken gibt es aktuell sehr viele Nischen und daher sind viele Projekte auf sehr spezifische Problemstellungen fokussiert. Mit Crate wollen wir eine eher generelle SQL Datenbank für große Datenmengen und einfacher Skalierbarkeit anbieten. Hier stehen wir in Konkurrenz mit den großen Anbietern wie Oracle, Microsoft, IBM usw., die in ihren eigenen Produkten Clustering einbauen. Im Bereich Clustering sind MongoDB, Cassandra, Druid.io, etc. also gewissermaßen auch Konkurrenten, allerdings werden hier oft andere Use Cases abgedeckt.

 

Was sind die Systemvoraussetzungen für den Einsatz?

Prinzipiell kann Standardhardware verwendet werden, wodurch die horizontale Skalierbarkeit vereinfacht wird: Besser man verwendet mehrere kleine Systeme, als ein großes, da so die Kosten in Grenzen gehalten werden können. Wichtig ist, dass ein System mit mindestens vier Kernen und SSD verwendet wird. Die Hälfte des Hauptspeichers wird dann für die Datenbank als Heap verwendet, die andere Hälfte als Cache für das Filesystem durch das Betriebssystem. Als Java Anwendung machen mehr als 64GB RAM daher wenig Sinn, weil bei einem Heap von mehr als 30GB der Vorteil von Compressed OPs verloren geht und mehr CPU zur Berechnung benötigt wird.

Schlechte Erfahrungen wurden mit ARM Prozessoren gemacht, da die ARM JVM leider eine sehr schlechte Performance aufweist. Zum Beispiel haben wir mit RaspberryPIs (ARM v8) nur etwa 100 Inserts/Sec geschafft (derselbe Benchmark schaffte auf einem MacBook Pro etwa das 60-fache).

 

Wenn wir nun Crate einsetzen möchten – wie würden wir vorgehen?

Die Installation kann auf unterschiedlichste Art und Weise vorgenommen werden beispielsweise als Docker Image oder auch als Linux Repository. Das System ist mit Java entwickelt und somit Plattform unabhängig.

Nach der Installation kann Crate einfach gestartet werden und man kann sich via Web Interface zum Cluster verbinden, Tabellen anlegen und Daten importieren. Um Programme mit Crate zu verbinden, gibt es verschiedene (offizielle und community) Bibliotheken in allen möglichen Sprachen und Frameworks (JDBC, PHP, Python, Ruby, … aber auch eine Springdata, Python-Django, Ruby on Rails Adaptierung). Zukünftig soll allerdings das Postgres Wire-Protokoll die Verwendung von Postgres Bibliotheken ermöglichen (ab 0.56.0).

 

Die Datenbank selbst ist ja Open Source. Bietet ihr in irgendeiner Form Support an?

Crate’s Business Model ist genau das: Support. Aktuell bieten wir Community Support in unserem Slack Channel, via Mail und mittels eines Chat Widgets auf unserer Website bzw. direkt in der Administrationsoberfläche an, wir arbeiten aber an einem Enterprise Support mit SLA (Service Level Agreement) und garantierten Antwortzeiten. Aktuell bieten wir unseren Kunden ‘Best Effort’ SLAs an, was bisher zufrieden aufgenommen wird.

 

Wie sieht die weitere Zukunft für Crate.IO aus? Welche Weiterentwicklungen sind geplant?

Nächster großer Schritt wird die Expansion an die Westküste USA (San Francisco) sein. In Entwicklung befinden sich derzeit Outer Joins und eine Verbesserung der Unterstützung des Postgres Wire-Protokolls. Stored Procedures, Trigger, etc. sollen folgen.

 

Vielen Dank für das interessante Gespräch.

Zusammenfassend kann man sagen, dass neue Datenbanken wie Crate in Zukunft immer wichtiger werden, vor allem im analytischen Sektor, um die Herausforderung von immer größeren Datenmengen zu bewältigen. Mit dieser Idee einer hoch skalierbaren, verteilten Datenbank, wie es bereits der Ansatz der NoSQL-Datenbank ist, kombiniert mit der standardisierten SQL-Abfragesprache, liefert Crate.IO ein Werkzeug, das die Anforderungen im DWH/BI-Bereich deckt und auch in bestehenden Projekten Anwendung finden kann.