# CrateDB

CrateDB ist ein verteiltes Datenbanksystem, das SQL-Abfragen mit dem NoSQL-Ansatz einer dokumentorientierten Datenbank verbindet und im Volltext durchsuchbar ist. Es ist Open Source, in der Programmiersprache Java geschrieben, basiert auf einer Shared Nothing Architecture und ist darauf ausgelegt zu skalieren. Durch die Skalierbarkeit und die hohe Aufnahmemenge an Daten eignet sich die Datenbank besonders gut für IoT-Anwendungen und Maschinendaten. CrateDB basiert auf Komponenten anderer Open Source Projekte wie Apache Lucene und Netty.

## Geschichte

CrateDB wurde als Projekt von Jodok Batlogg, einem Mitglied der Open-Source-Initiative Vorarlberg, in Dornbirn gestartet. Die Datenbank ist eine verteilte SQL-Datenbank, die sich für schnelle Volltextsuche und Analysen eignet.
Das Start-up-Unternehmen Crate.io entwickelt und vertreibt CrateDB. Es wurde im Juni 2013 von Jodok Batlogg, Bern Dorn und Christian Lutz in Dornbirn gegründet. Die erste Finanzierungsrunde erhielt das Unternehmen im April 2014.
Im Juni desselben Jahres gewann Crate.io den Judges’s Choice Award bei der GigaOm Structure Launchpad competition. Im Oktober gewann das Unternehmen bei der TechCrunch Disrupt Europe in London.
Crate.io absolvierte im März 2016 eine Finanzierungsrunde in der Höhe von 4 Millionen US-Dollar. Im Dezember desselben Jahres wurde CrateDB in der Version 1.0 veröffentlicht und wurde mehr als eine Million Mal heruntergeladen.
Im Mai 2017, nach einer erneuten Finanzierungsrunde in der Höhe von 2,5 Millionen US-Dollar durch Dawn Capital, Draper Esprit, Speedinvest und Sunstone Capital, wurde CrateDB in der Version 2.0 veröffentlicht.
Ein Jahr später, im 2018 wurde CrateDB 3.0 veröffentlicht. Im selben Jahr wurde die Series-A-Finanzierungsrunde in der Höhe von 11 Millionen US-Dollar abgeschlossen.
CrateDB 4.0 wurde im Juni 2019 veröffentlicht. CrateDB wird von Crate.io auch als Cloud-Lösung vermarktet.
Einer der Gründer, Jodok Batlogg, hat das Unternehmen im Oktober 2020 verlassen. Seit März 2023 ist Lars Färnström als CEO bei Crate.io tätig.
Wurde einige Zeit ein Ansatz erfolgt, bei der die Community Edition Open Source ist und andere Funktionalitäten nur mit einer Enterprise-Lizenz verfügbar sind, wurde die erneute volle Freigabe des Quelltext für Version 4.5 angekündigt, die im März 2021 veröffentlicht wurde.

## Aufbau

Architektur
CrateDB basiert auf einer Shared-Nothing-Architektur, die einzelne Ausfallspunkte (Single Point of Failure) vermeidet, und arbeitet in einem Cluster von identisch konfigurierten Server (Knoten). Die Knoten koordinieren sich automatisch, um die Schreib- und Abfragezugriffe über den Cluster zu verteilen.
Abfragen
Die SQL Syntax von CrateDB beinhaltet JOINS, Aggregat-Funktionen, Indizes, Sub-Abfragen, benutzerdefinierte Funktionen und Sichten. Auch die Volltextsuche, Geodaten-Abfragen und verschachtelte JSON Objekt-Spalten werden unterstützt.
Schemas
CrateDB unterstützt Schemas der folgenden Typen „strict“, „dynamic“, oder „ignored“
* Strict Schema: Wenn eine INSERT-Anweisung eine Spalte enthält, die nicht in der Tabelle definiert war, erzwingt CrateDB das ursprüngliche Schema, indem es die INSERT-Anweisung zurückweist und einen Fehler ausgibt.
* Dynamic Schema: CrateDB aktualisiert das Schema automatisch durch Indizierung der neuen Spalte.
* Ignored Schema: CrateDB indiziert die Spalte nicht, sondern speichert den JSON-Wert.
Konsistenz
CrateDB verwendet ein Konsistenzmodell, das als Eventual Consistency bezeichnet wird. Es beinhaltet eine Datensatz-Versionierung und Optimistic Concurrency sowie eine Einstellung für die Aktualisierungsfrequenz auf Tabellenebene, die CrateDB-Daten dazu zwingt, alle n Millisekunden konsistent zu werden.