Daten sind alles. Und damit auch die Datenbanken. Hier finden Sie einige fantastische Open-Source-Optionen für Ihr nächstes großartiges Projekt.
In einer Welt, die so lange von Datenbankkonzernen wie Oracle und SQL Server beherrscht wurde, scheint es jetzt eine endlose Flut von Lösungen zu geben. Das liegt zum einen an der Innovation, die durch Open Source angeheizt wird – wirklich talentierte Entwickler, die etwas schaffen wollen, das ihnen Spaß macht.
Der andere Teil ist das Aufkommen neuer Geschäftsmodelle, bei denen Unternehmen eine Community-Version ihres Produkts unterhalten, um sich einen Namen zu machen und gleichzeitig ein kommerzielles Zusatzangebot bereitzustellen.
Das Ergebnis?
Mehr Datenbanken, als man bewältigen kann. Es gibt keine offizielle Statistik dazu, aber ich bin mir ziemlich sicher, dass wir heute mehr als hundert Optionen zur Verfügung haben, wenn Sie alles zusammenzählen, von stapelspezifischen Objektdatenbanken bis hin zu nicht so beliebten Projekten von Universitäten.
Ich weiß; das macht mir auch Angst. Zu viele Optionen – zu viel Dokumentation, die man durchgehen muss – und ein Leben, das so kurz ist 🙂
Deshalb habe ich mich entschlossen, diesen Artikel zu schreiben, in dem ich Ihnen zehn der besten Datenbanken vorstelle, mit denen Sie Ihre Lösungen verbessern können, ob Sie nun für sich selbst oder für andere entwickeln.
Kein MySQL
Bitte beachten Sie: MySQL wird in dieser Liste nicht vorkommen, obwohl es die wohl populärste Open-Source-Datenbanklösung ist, die es gibt.
Und warum?
Ganz einfach, weil MySQL allgegenwärtig ist – es ist das, was jeder als erstes lernt, es wird von praktisch jedem CMS oder Framework unterstützt und ist für die meisten Anwendungsfälle sehr, sehr gut geeignet. Mit anderen Worten: MySQL muss nicht “entdeckt” werden 🙂
Bitte beachten Sie jedoch, dass die folgenden Produkte nicht unbedingt Alternativen zu MySQL sind. In einigen Fällen könnten sie es sein, während sie in anderen Fällen eine völlig andere Lösung für einen völlig anderen Bedarf darstellen. Machen Sie sich keine Sorgen, denn ich werde auch auf ihre Einsatzmöglichkeiten eingehen.
Besonderer Hinweis: Kompatibilität
Bevor wir beginnen, muss ich noch erwähnen, dass Sie die Kompatibilität im Auge behalten müssen. Wenn Sie ein Projekt haben, das, aus welchen Gründen auch immer, nur eine bestimmte Datenbank-Engine unterstützt, sind Ihre Möglichkeiten ziemlich eingeschränkt.
Wenn Sie beispielsweise mit WordPress arbeiten, ist dieser Artikel für Sie nutzlos 🙂 Ebenso werden diejenigen, die statische Websites mit JAMStack betreiben, nichts davon haben, wenn sie zu ernsthaft nach Alternativen suchen.
Es liegt an Ihnen, die Kompatibilitätsgleichung herauszufinden. Wenn Sie jedoch ein unbeschriebenes Blatt haben und die Architektur Ihnen überlassen bleibt, finden Sie hier ein paar nette Empfehlungen.
PostgreSQL
Wenn Sie aus dem PHP-Land kommen (WordPress, Magento, Drupal usw.), dann wird PostgreSQL für Sie ein Fremdwort sein. Diese relationale Datenbanksoftware gibt es jedoch schon seit 1997 und ist die erste Wahl in Communities wie Ruby, Python, Go usw.
In der Tat “steigen” viele Entwickler schließlich auf PostgreSQL um, sei es wegen der angebotenen Funktionen oder einfach wegen der Stabilität. Es ist schwer, jemanden in einem kurzen Artikel wie diesem zu überzeugen, aber betrachten Sie PostgreSQL als ein durchdachtes Produkt, das Sie nie im Stich lässt.
Es gibt viele gute SQL-Clients, mit denen Sie sich für die Verwaltung und Entwicklung mit der PostgreSQL-Datenbank verbinden können.
Einzigartige Funktionen
PostgreSQL verfügt im Vergleich zu anderen relationalen Datenbanken (insbesondere MySQL) über mehrere faszinierende Funktionen, wie z.B.:
- Eingebaute Datentypen für Array, Range, UUID, Geolocation, usw.
- Native Unterstützung für die Speicherung von Dokumenten (im JSON-Stil), XML und Schlüsselwerten (Hstore)
- Synchrone und asynchrone Replikation
- Skriptfähig in PL, Perl, Python und mehr
- Volltextsuche
Meine persönlichen Favoriten sind die Geolocation-Engine (die die Arbeit mit standortbasierten Anwendungen erleichtert – versuchen Sie einmal, alle nahegelegenen Punkte manuell zu finden, und Sie werden wissen, was ich meine) und die Unterstützung von Arrays (viele MySQL-Projekte sind mangels Arrays gescheitert und haben sich stattdessen für die berüchtigten kommagetrennten Strings entschieden).
Wann Sie PostgreSQL verwenden sollten
PostgreSQL ist immer eine bessere Wahl als jede andere relationale Datenbank-Engine. Das heißt, wenn Sie ein neues Projekt beginnen und schon einmal von MySQL gebissen wurden, ist es ein guter Zeitpunkt, um PostgreSQL in Betracht zu ziehen. Ich habe Freunde, die es aufgegeben haben, gegen die mysteriösen Transaktionssperren von MySQL anzukämpfen, und sich endgültig für PostgreSQL entschieden haben. Wenn Sie sich genauso entscheiden, werden Sie nicht überreagieren.
PostgreSQL hat auch einen klaren Vorteil, wenn Sie partielle NoSQL-Funktionen für ein hybrides Datenmodell benötigen. Da Dokumenten- und Key-Value-Speicher nativ unterstützt werden, müssen Sie sich nicht auf die Suche nach einer weiteren Datenbanklösung machen und diese installieren, erlernen und pflegen.
Wenn Sie PostgreSQL nicht verwenden
PostgreSQL ist nicht sinnvoll, wenn Ihr Datenmodell nicht relational ist und/oder wenn Sie sehr spezifische architektonische Anforderungen haben. Denken Sie zum Beispiel an Analytics, wo ständig neue Berichte aus vorhandenen Daten erstellt werden. Solche Systeme sind sehr leseintensiv und leiden darunter, wenn ihnen ein strenges Schema aufgezwungen wird. Natürlich verfügt PostgreSQL über eine Dokumentenspeicher-Engine, aber wenn Sie es mit großen Datenmengen zu tun haben, wird es unübersichtlich.
Mit anderen Worten: Verwenden Sie immer PostgreSQL, es sei denn, Sie wissen zu 100%, was Sie tun! 🙂
Schauen Sie sich diesen Kurs SQL & PostgreSQL für Anfänger an, wenn Sie mehr erfahren möchten.
MariaDB
MariaDB wurde als Ersatz für MySQL von der gleichen Person entwickelt, die auch MySQL entwickelt hat.
Verwirrt?
Nun, nachdem MySQL im Jahr 2010 von Oracle übernommen wurde (durch die Übernahme von Sun Microsystems, wodurch Oracle übrigens auch die Kontrolle über Java erlangte), startete der Schöpfer von MySQL ein neues Open-Source-Projekt namens MariaDB.
Warum sind all diese langweiligen Details wichtig, fragen Sie? Weil MariaDB auf der gleichen Code-Basis wie MySQL erstellt wurde (in der Open-Source-Welt nennt man das “forking” eines bestehenden Projekts). Folglich wird MariaDB als “Drop-in”-Ersatz für MySQL angeboten.
Das heißt, wenn Sie MySQL verwenden und zu MariaDB migrieren möchten, ist der Prozess so einfach, dass Sie es kaum glauben werden.
Leider ist eine solche Migration eine Einbahnstraße. Eine Rückkehr von MariaDB zu MySQL ist nicht möglich, und sollten Sie versuchen, die Migration zu erzwingen, ist eine dauerhafte Beschädigung der Datenbank garantiert!
Einzigartige Eigenschaften
MariaDB ist zwar im Wesentlichen ein Klon von MySQL, aber das ist nicht ganz richtig. Seit der Einführung der Datenbank sind die Unterschiede zwischen den beiden immer größer geworden. Zum jetzigen Zeitpunkt muss die Entscheidung für MariaDB gut durchdacht sein. Abgesehen davon gibt es in MariaDB viele Neuerungen, die Ihnen den Umstieg erleichtern könnten:
- Wirklich frei und offen: Da MariaDB nicht von einem einzigen Unternehmen kontrolliert wird, sind Sie frei von plötzlichen Lizenzierungs- und anderen Sorgen.
- Mehrere weitere Optionen für Speicher-Engines für spezielle Anforderungen: z.B. die Spider-Engine für verteilte Transaktionen, ColumnStore für massive Data Warehousing, die ColumnStore-Engine für parallele, verteilte Speicherung und viele, viele mehr.
- Geschwindigkeitsverbesserungen gegenüber MySQL, insbesondere durch die Aria-Speicher-Engine für komplexe Abfragen.
- Dynamische Spalten für verschiedene Zeilen in einer Tabelle.
- Bessere Replikationsmöglichkeiten (z.B. Multi-Source-Replikation)
- Mehrere JSON-Funktionen
- Virtuelle Spalten
. . . Und viele, viele mehr. Es ist anstrengend, mit all den MariaDB-Funktionen Schritt zu halten 🙂
Wann Sie MariaDB verwenden sollten
Wenn Sie einen echten Ersatz für MySQL suchen, sollten Sie MariaDB verwenden, denn MariaDB will auf der Innovationskurve bleiben und hat nicht vor, wieder zu MySQL zurückzukehren. Ein hervorragender Anwendungsfall ist die Verwendung von neuen Speicher-Engines in MariaDB, um das bestehende relationale Datenmodell Ihres Projekts zu ergänzen.
Wann Sie MariaDB nicht verwenden sollten
Die Kompatibilität mit MySQL ist hier die einzige Sorge. Allerdings wird dies immer weniger zu einem Problem, da Projekte wie WordPress, Joomla, Magento usw. begonnen haben, MariaDB zu unterstützen. Mein Rat wäre, MariaDB nicht zu verwenden, um ein CMS auszutricksen, das es nicht unterstützt, da viele datenbankspezifische Tricks das System leicht zum Absturz bringen können.
Sehen Sie sich den Unterschied zwischen MariaDB und MySQL und die MariaDB-Installationsanleitung an.
CockroachDB
Das Team hinter CockroachDB scheint aus Masochisten zu bestehen. Mit einem Produktnamen wie diesem wollen sie sicherlich alle Chancen gegen sich aufbringen und trotzdem gewinnen?
Nun, nicht ganz.
Die Idee hinter “cockroach” ist, dass es sich um ein Insekt handelt, das zum Überleben gebaut wurde. Egal, was passiert – Raubtiere, Überschwemmungen, ewige Dunkelheit, verrottendes Essen, Bombenangriffe – die Kakerlake findet einen Weg zu überleben und sich zu vermehren.
Die Idee ist, dass das Team hinter CockroachDB (bestehend aus ehemaligen Google-Ingenieuren) frustriert war über die Grenzen herkömmlicher SQL-Lösungen, wenn es um große Datenmengen geht. Das liegt daran, dass SQL-Lösungen in der Vergangenheit auf einem einzigen Rechner gehostet werden sollten (die Daten waren nicht so groß). Lange Zeit gab es keine Möglichkeit, einen Cluster von Datenbanken mit SQL zu erstellen, weshalb MongoDB so viel Aufmerksamkeit erregte.
Selbst als Replikation und Clustering in MySQL, PostgreSQL und MariaDB aufkamen, war dies bestenfalls mühsam. CoackroachDB will das ändern und bringt mühelos Sharding, Clustering und Hochverfügbarkeit in die Welt von SQL.
Wann Sie CockroachDB verwenden sollten
CockroachDB ist der wahr gewordene Traum eines Systemarchitekten. Wenn Sie auf SQL schwören und mit den Skalierungsmöglichkeiten von MongoDB geliebäugelt haben, werden Sie CockroachDB lieben. Jetzt können Sie schnell einen Cluster einrichten, ihn mit Abfragen bewerfen und nachts ruhig schlafen 🙂
Wann Sie CockroachDB nicht verwenden sollten
Besser den Teufel, den Sie kennen, als den, den Sie nicht kennen. Damit meine ich, wenn Ihr bestehendes RDBMS für Sie gut funktioniert und Sie glauben, dass Sie die damit verbundenen Skalierungsprobleme bewältigen können, sollten Sie dabei bleiben. CockroachDB ist ein neues Produkt für alle beteiligten Genies, und Sie möchten sich später nicht damit herumschlagen müssen. Ein weiterer wichtiger Grund ist die SQL-Kompatibilität – wenn Sie exotische SQL-Sachen machen und sich bei kritischen Dingen darauf verlassen, wird CockroachDB für Ihren Geschmack zu viele Randfälle aufweisen.
Von nun an werden wir Nicht-SQL (oder NoSQL, wie es genannt wird) Datenbanklösungen für hochspezialisierte Anforderungen in Betracht ziehen.
ClickHouse
Suchen Sie ein schnelles, quelloffenes OLAP-Datenbanksystem?
Entscheiden Sie sichfür ClickHouse.
Es nutzt jede Hardware bis zum Maximum aus, um jede Abfrage schneller zu bearbeiten. Die Spitzenleistung bei der Verarbeitung einer Abfrage liegt in der Regel bei mehr als zwei Terabyte pro Sekunde. Um erhöhte Latenzzeiten zu vermeiden, werden die Lesevorgänge automatisch auf die gesunden Replikate verteilt.
Es unterstützt die asynchrone Multi-Master-Replikation und Sie können es in verschiedenen Rechenzentren einsetzen. Da die Knoten gleich gehalten werden, können Sie sogar einzelne Ausfallpunkte vermeiden. Der Ausfall eines einzelnen Knotens oder des gesamten Rechenzentrums hat keinerlei Auswirkungen auf die Systemverfügbarkeit in Bezug auf Schreib- und Lesevorgänge.
ClickHouse ist sehr leicht zu bedienen und einfach. Es rationalisiert die Datenverarbeitung, stellt all Ihre Daten in organisierter Form in einem System bereit und ist sofort verfügbar, um Berichte zu erstellen. Darüber hinaus hilft der SQL-Dialekt dabei, das Ergebnis auszudrücken, ohne eine nicht standardisierte API zu verwenden, die Sie in alternativen Systemen erhalten können.
Sie können sich auf dieses Datenbankmanagementsystem verlassen, wenn Sie es als verteiltes System konfigurieren, das sich auf separaten Knoten ohne Fehlerpunkte befindet. Darüber hinaus sind die Sicherheitsfunktionen robust, einschließlich der Sicherheit auf Unternehmensniveau und der Ausfallsicherheitsmechanismen im Falle menschlicher Fehler.
ClickHouse kann Abfragen im Vergleich zu zeilenorientierten Systemen mit derselben CPU-Kapazität und demselben E/A-Durchsatz schneller verarbeiten. Sein spaltenorientiertes Datenspeicherformat trägt dazu bei, mehr Daten im RAM zu halten, was zu kürzeren Antwortzeiten führt.
Die Gesamtbetriebskosten können durch Commodity-Hardware mit rotierenden Festplattenlaufwerken anstelle von NVMe/SSD gesenkt werden, ohne dass die Latenzzeit für die Abfragen beeinträchtigt wird. Es strebt nach CPU-Effizienz, optimiert den Zugriff auf das Festplattenlaufwerk und minimiert die Datenübertragungen.
Darüber hinaus können Sie dank der funktionsreichen SQL-Datenbank Ihre Abfragen in kürzester Zeit effizient bearbeiten, gemeinsam genutzte und verteilte Daten zusammenführen, denormalisierte Informationen effizient verwalten und vieles mehr. ClickHouse ist horizontal und vertikal skalierbar und lässt sich problemlos auf einem einzelnen Server oder in Clustern mit Tausenden von Knoten ausführen.
Verwenden Sie ClickHouse für Web- und Anwendungsanalysen, Telekommunikation, Werbenetzwerke, Online-Spiele, IoT, Business Intelligence, Finanzen, eCommerce, Überwachung und mehr.
Es lässt sich mit Hadoop, Postgres und MySQL integrieren.
Wenn Sie nicht bereit sind, einen Server zu installieren und einzurichten, können Sie Kamatera ausprobieren, das ClickHouse mit einem Klick anbietet.
Neo4j
Eine der wichtigsten Entwicklungen des letzten Jahrzehnts sind vernetzte Daten. Die Welt um uns herum ist nicht mehr in Tabellen, Zeilen und Kästchen aufgeteilt – sie ist ein einziges riesiges Durcheinander, in dem alles mit fast allem verbunden ist.
Soziale Netzwerke sind ein Paradebeispiel dafür, und der Aufbau eines ähnlichen Datenmodells mit SQL oder sogar dokumentenbasierten Datenbanken ist ein Alptraum.
Das liegt daran, dass die ideale Datenstruktur für diese Lösungen der Graph ist, der ein völlig anderes Wesen ist. Und dafür brauchen Sie eine Graphdatenbank wie Neo4j.
Das obige Beispiel stammt direkt von der Neo4j-Website und zeigt, wie die Studenten einer Universität mit ihren Abteilungen und Kursen verbunden sind. Ein solches Datenmodell ist mit SQL schlichtweg unmöglich, da es schwierig sein wird, Endlosschleifen und Speicherüberläufe zu vermeiden.
Einzigartige Merkmale
Graphdatenbanken sind in sich einzigartig, und Neo4j ist so ziemlich die einzige Option für die Arbeit mit Graphen. Folglich sind die Funktionen, die es bietet, einzigartig 🙂
- Unterstützung für transaktionale Anwendungen und Graph-Analysen.
- Datentransformationsfähigkeiten für die Umwandlung umfangreicher tabellarischer Daten in Graphen.
- Spezialisierte Abfragesprache (Cypher) für die Abfrage der Graphdatenbank
- Visualisierungs- und Entdeckungsfunktionen
Es ist müßig zu diskutieren, wann Sie Neo4j verwenden sollten und wann nicht. Wenn Sie graphenbasierte Beziehungen zwischen Ihren Daten benötigen, brauchen Sie Neo4j. 🙂
MongoDB
MongoDB war die erste nicht-relationale Datenbank, die in der Tech-Branche große Wellen schlug und auch heute noch einen großen Teil der Aufmerksamkeit auf sich zieht.
Im Gegensatz zu relationalen Datenbanken ist MongoDB eine “Dokumentendatenbank”, die Daten in Chunks speichert, wobei zusammengehörige Daten im selben Chunk zusammengefasst werden. Dies lässt sich am besten verstehen, wenn Sie sich eine Ansammlung von JSON-Strukturen wie diese vorstellen:
Im Gegensatz zu einer tabellenbasierten Struktur befinden sich hier die Kontaktinformationen des Benutzers und die Zugriffsrechte im selben Objekt. Wenn Sie das Benutzerobjekt abrufen, werden die zugehörigen Daten automatisch abgerufen, und es gibt kein Konzept für eine Verknüpfung. Hier finden Sie eine ausführlichere Einführung in MongoDB.
Einzigartige Merkmale
MongoDB verfügt über einige ernstzunehmende Funktionen (ich möchte fast “Wahnsinn” schreiben, um die Wirkung zu vermitteln, aber das wäre auf einer öffentlichen Website vielleicht nicht angemessen), die einige erfahrene Architekten dazu gebracht haben, das relationale Land für immer zu verlassen:
- Ein flexibles Schema für spezielle/unvorhersehbare Anwendungsfälle.
- Lächerlich einfaches Sharding und Clustering. Sie müssen nur die Konfiguration für einen Cluster einrichten und können ihn dann vergessen.
- Das Hinzufügen oder Entfernen eines Knotens zu einem Cluster ist denkbar einfach.
- Verteilte transaktionale Sperren. Diese Funktion fehlte in den früheren Versionen, wurde aber schließlich eingeführt.
- Sie ist für sehr schnelle Schreibvorgänge optimiert und eignet sich daher hervorragend für Analysedaten als Caching-System.
Falls ich mich wie ein Sprecher von MongoDB anhöre, bitte ich um Entschuldigung, aber es ist schwer, die Vorteile von MongoDB überzubewerten. Sicher, die Modellierung von NoSQL-Daten ist anfangs ungewohnt, und manche kommen damit nie zurecht, aber für viele Architekten ist es fast immer besser als ein tabellenbasiertes Schema.
Wann Sie MongoDB verwenden sollten
MongoDB ist eine großartige Brücke zwischen der strukturierten, strengen Welt von SQL und der amorphen, fast verwirrenden Welt von NoSQL. MongoDB eignet sich hervorragend für die Entwicklung von Prototypen, da Sie sich nicht um ein Schema kümmern müssen und wenn Sie wirklich skalieren müssen. Ja, Sie können einen Cloud-SQL-Dienst nutzen, um die DB-Skalierungsprobleme loszuwerden, aber das ist ganz schön teuer!
Schließlich gibt es Anwendungsfälle, in denen SQL-basierte Lösungen einfach nicht ausreichen. Wenn Sie beispielsweise ein Produkt wie Canva entwickeln, bei dem der Benutzer beliebig komplexe Entwürfe erstellen und diese später bearbeiten kann, dann haben Sie mit einer relationalen Datenbank kein Glück!
Wann Sie MongoDB nicht verwenden sollten
Das völlige Fehlen eines Schemas, das MongoDB bietet, kann für diejenigen, die nicht wissen, was sie tun, wie eine Teergrube wirken. Datenabweichungen, tote Daten, leere Felder, die nicht leer sein sollten – all das und noch viel mehr ist möglich. MongoDB ist im Wesentlichen ein “dummer” Datenspeicher, und wenn Sie sich dafür entscheiden, muss der Anwendungscode einen Großteil der Verantwortung für die Wahrung der Datenintegrität übernehmen.
Wenn Sie ein Entwickler sind, dann werden Sie dies nützlich finden.
RethinkDB
Wie der Name schon sagt, “überdenkt” RethinkDB die Idee und die Fähigkeiten einer Datenbank, wenn es um Echtzeitanwendungen geht.
Wenn eine Datenbank aktualisiert wird, gibt es keine Möglichkeit für die Anwendung, dies zu erfahren. Der übliche Ansatz besteht darin, dass die Anwendung eine Benachrichtigung auslöst, sobald es eine Aktualisierung gibt, die über eine komplexe Brücke (PHP -> Redis -> Node -> Socket.io ist ein Beispiel) an das Frontend weitergeleitet wird.
Aber was wäre, wenn die Aktualisierungen direkt von der Datenbank an das Frontend übertragen werden könnten?!
Ja, das ist das Versprechen von RethinkDB. Wenn Sie also eine echte Echtzeitanwendung (Spiel, Marktplatz, Analyse usw.) entwickeln wollen, ist Rethink DB einen Blick wert.
Redis
Wenn es um Datenbanken geht, ist es fast zu einfach, die Existenz von Redis zu übersehen. Das liegt daran, dass Redis eine In-Memory-Datenbank ist und hauptsächlich für unterstützende Funktionen wie Caching verwendet wird.
DasErlernen dieser Datenbank ist ein Zehn-Minuten-Job (buchstäblich!), und es handelt sich um einen einfachen Key-Value-Speicher, der Strings mit einer Verfallszeit speichert (die natürlich auf unendlich eingestellt werden kann). Was Redis an Funktionen einbüßt, macht es durch Nutzen und Leistung wieder wett. Da Redis vollständig im Arbeitsspeicher lebt, sind Lese- und Schreibvorgänge wahnsinnig schnell (einige hunderttausend Operationen pro Sekunde sind keine Seltenheit).
Redis verfügt außerdem über ein ausgeklügeltes Pub-Sub-System, das diese “Datenbank” doppelt so attraktiv macht.
Mit anderen Worten: Wenn Sie ein Projekt haben, das von Caching profitieren könnte oder einige verteilte Komponenten enthält, ist Redis die erste Wahl.
SQLite
Ja, ich habe versprochen, dass wir mit relationalen Datenbanken fertig sind, aber SQLite ist zu niedlich, um es zu ignorieren.
SQLite ist eine leichtgewichtige C-Bibliothek, die eine relationale Datenbank-Speicher-Engine bereitstellt. Alles in dieser Datenbank befindet sich in einer einzigen Datei (mit der Erweiterung .sqlite), die Sie irgendwo in Ihrem Dateisystem ablegen können. Und das ist alles, was Sie brauchen, um sie zu benutzen! Ja, Sie müssen keine “Server”-Software installieren und sich nicht mit einem Dienst verbinden.
Nützliche Funktionen
Auch wenn SQLite eine leichtgewichtige Alternative zu einer Datenbank wie MySQL ist, hat es doch einiges zu bieten. Einige der schockierenden Funktionen sind:
- Volle Unterstützung für Transaktionen mit COMMIT, ROLLBACK und BEGIN.
- Unterstützung für 32.000 Spalten pro Tabelle
- JSON-Unterstützung
- unterstützung von 64-way JOINs
- Unterabfragen, Volltextsuche, usw.
- Maximale Datenbankgröße von 140 Terabyte!
- Maximale Zeilengröße von 1 Gigabyte!
- 35% schneller als Datei-I/O
Wann sollte man SQLite verwenden?
SQLite ist eine extrem spezialisierte Datenbank, die sich auf einen nüchternen Ansatz konzentriert, bei dem alles sofort erledigt wird. Wenn Ihre Anwendung relativ einfach ist und Sie sich den Aufwand einer ausgewachsenen Datenbank ersparen wollen, ist SQLite ein ernsthafter Kandidat. Es ist vor allem für kleine bis mittelgroße CMS und Demo-Anwendungen sinnvoll.
Wenn Sie SQLite nicht verwenden
SQLite ist zwar beeindruckend, deckt aber nicht alle Funktionen von Standard-SQL oder Ihrer bevorzugten Datenbank-Engine ab. Clustering, gespeicherte Prozeduren und Skripterweiterungen fehlen. Außerdem gibt es keinen Client zum Verbinden, Abfragen und Erkunden der Datenbank. Und schließlich nimmt die Leistung mit zunehmender Größe der Anwendung ab.
Cassandra
Während viele verkünden, dass das Ende von Java nahe ist, lässt die Community hin und wieder eine Bombe platzen und bringt die Kritiker zum Schweigen. Cassandra ist ein solches Beispiel.
Cassandra gehört zur so genannten “spaltenorientierten” Familie der Datenbanken. Die Speicherabstraktion in Cassandra ist eine Spalte und nicht eine Zeile. Die Idee dabei ist, alle Daten in einer Spalte physisch zusammen auf der Festplatte zu speichern und so die Suchzeit zu minimieren.
Einzigartige Funktionen
Cassandra wurde mit Blick auf einen bestimmten Anwendungsfall entwickelt, nämlich die Bewältigung von hohen Schreiblasten und die Vermeidung von Ausfallzeiten. Dies sind seine einzigartigen Verkaufsargumente.
- Extrem schnelle Schreibleistung. Cassandra ist wohl die schnellste Datenbank, die es gibt, wenn es um die Bewältigung hoher Schreiblasten geht.
- Lineare Skalierbarkeit. Das heißt, Sie können einem Cluster so viele Knoten hinzufügen, wie Sie wollen, ohne dass die Komplexität oder Brüchigkeit des Clusters zunimmt.
- Unerreichte Partitionstoleranz. Das heißt, selbst wenn mehrere Knoten in einem Cassandra-Cluster ausfallen, ist die Datenbank so konzipiert, dass sie ohne Verlust der Integrität weiterarbeitet.
- Statische Typisierung
Wann Sie Cassandra verwenden sollten
Logging und Analysen sind zwei der besten Anwendungsfälle für Cassandra. Aber das ist noch nicht alles – die beste Lösung ist, wenn Sie wirklich große Datenmengen verarbeiten müssen (Apple hat eine Cassandra-Installation, die 400 Petabytes an Daten verarbeitet, während bei Netflix 1 Billion Anfragen pro Tag bearbeitet werden), und zwar buchstäblich ohne Ausfallzeiten. Die hohe Verfügbarkeit ist eines der Markenzeichen von Cassandra.
Wann Sie Cassandra nicht verwenden sollten
Das Spalten-Speicherschema von Cassandra hat auch seine Nachteile. Das Datenmodell ist eher flach, und wenn Sie Aggregationen benötigen, ist Cassandra nicht geeignet. Außerdem wird eine hohe Verfügbarkeit auf Kosten der Konsistenz erreicht (erinnern Sie sich an das CAP-Theorem für verteilte Systeme), was es für Systeme, die eine hohe Lesegenauigkeit erfordern, weniger geeignet macht.
Zeitskala
Neue Entwicklungen erfordern neue Arten von Datenbanken, und das Internet der Dinge (IoT) ist ein solches Phänomen. Eine der besten Open-Source-Datenbanken dafür ist Timescale.
Timescale ist eine so genannte “Zeitreihen”-Datenbank. Sie unterscheidet sich von einer herkömmlichen Datenbank dadurch, dass die Zeit die wichtigste Achse ist und die Analyse und Visualisierung riesiger Datensätze oberste Priorität hat. In Zeitreihen-Datenbanken ändern sich die vorhandenen Daten nur selten. Ein Beispiel dafür sind die von einem Sensor in einem Gewächshaus gesendeten Temperaturwerte – jede Sekunde werden neue Daten gesammelt, die für Analysen und Berichte von Interesse sind.
Warum also nicht einfach eine herkömmliche Datenbank mit einem Zeitstempelfeld verwenden? Nun, dafür gibt es zwei Hauptgründe:
- Allzweckdatenbanken sind nicht für die Arbeit mit zeitbasierten Daten optimiert. Für die gleichen Datenmengen ist eine Allzweckdatenbank viel langsamer.
- Die Datenbank muss riesige Datenmengen verarbeiten, da ständig neue Daten hinzukommen, und ein späteres Entfernen von Daten oder Ändern des Schemas ist keine Option.
Einzigartige Funktionen
Timescale DB verfügt über einige aufregende Funktionen, die sie von anderen Datenbanken der gleichen Kategorie abheben:
- Sie basiert auf PostgreSQL, der wohl besten relationalen Open-Source-Datenbank, die es gibt. Wenn Ihr Projekt bereits mit PostgreSQL arbeitet, lässt sich Timescale problemlos einbinden.
- Die Abfrage erfolgt über die vertraute SQL-Syntax, was die Lernkurve reduziert.
- Lächerlich schnelle Schreibgeschwindigkeiten – Millionen von Einfügungen pro Sekunde sind keine Seltenheit.
- Milliarden von Zeilen oder Petabytes an Daten – für Timescale ist das kein großes Problem.
- Echte Flexibilität beim Schema – wählen Sie je nach Bedarf zwischen relationalem oder schemalosem Schema.
Es macht nicht viel Sinn, darüber zu sprechen, wann Sie Timescale DB verwenden oder nicht verwenden sollten. Wenn IoT Ihre Domäne ist oder Sie nach ähnlichen Datenbankeigenschaften suchen, ist Timescale einen Blick wert.
CouchDB
CouchDB ist eine nette kleine Datenbanklösung, die still und leise in einer Ecke sitzt und eine kleine, aber engagierte Anhängerschaft hat. Sie wurde entwickelt, um mit den Problemen eines Netzwerkausfalls und der eventuellen Auflösung der Daten fertig zu werden. Dieses Problem ist so unschön, dass Entwickler lieber den Job wechseln, als sich damit zu beschäftigen.
Im Wesentlichen können Sie sich einen CouchDB-Cluster als eine verteilte Ansammlung von großen und kleinen Knoten vorstellen, von denen einige voraussichtlich offline sein werden. Sobald ein Knoten online ist, sendet er Daten an den Cluster zurück, die langsam und sorgfältig verdaut werden und schließlich dem gesamten Cluster zur Verfügung stehen.
Einzigartige Eigenschaften
CouchDB ist so etwas wie ein Unikat unter den Datenbanken.
- Offline-Fähigkeit bei der Datensynchronisierung
- Spezialisierte Versionen für mobile Geräte und Webbrowser (PouchDB, CouchDB Lite usw.)
- Absturzsichere, kampferprobte Zuverlässigkeit
- Einfaches Clustering mit redundanter Datenspeicherung
Wann Sie CouchDB verwenden sollten
CouchDB wurde für die Offline-Toleranz entwickelt und bleibt in dieser Hinsicht unübertroffen. Ein typischer Anwendungsfall sind mobile Anwendungen, bei denen ein Teil Ihrer Daten auf einer CouchDB-Instanz auf dem Telefon des Benutzers gespeichert ist (weil sie dort erzeugt wurden). Das Spannende daran ist, dass Sie sich nicht darauf verlassen können, dass das Gerät des Benutzers ständig verbunden ist. Das bedeutet, dass die Datenbank opportunistisch sein muss und bereit sein muss, widersprüchliche Aktualisierungen zu einem späteren Zeitpunkt aufzulösen. Dies wird durch das beeindruckende Couch Replication Protocol erreicht.
Wann Sie CouchDB nicht verwenden sollten
Der Versuch, CouchDB außerhalb des vorgesehenen Anwendungsfalls zu verwenden, führt zu einer Katastrophe. CouchDB verbraucht viel mehr Speicherplatz als alle anderen Systeme auf dem Markt, weil es redundante Kopien von Daten und Konfliktlösungsergebnissen vorhalten muss. Infolgedessen sind auch die Schreibgeschwindigkeiten schmerzhaft langsam. Und schließlich ist CouchDB nicht als universelle Schema-Engine geeignet, da es sich nicht gut mit Schemaänderungen verträgt.
FerretDB
FerretDB ist eine innovative Open Source-Plattform, die auf Postgres basiert und eine Alternative zu MongoDB darstellt. MongoDB ist die am einfachsten zu bedienende, gut unterstützte Datenbank, die es Entwicklern ermöglicht, Anwendungen schneller zu erstellen als relationale Datenbanken.
Allerdings hat MongoDB seine Open-Source-Wurzeln aufgegeben, die Server-Side Public License geändert und ist damit für viele Open-Source- und kommerzielle Projekte unbrauchbar geworden; an dieser Stelle kommt FerretDB ins Spiel. Mit FerretDB können Benutzer dieselben Abfragen des MongoDB-Protokolls ausführen, ohne eine neue Sprache oder einen neuen Befehl lernen zu müssen.
FerretDB ist eine Open-Source-Dokumentendatenbank mit eingebauter MongoDB-Kompatibilität, die es PostgreSQL und anderen Datenbank-Backends ermöglicht, MongoDB-Workloads auszuführen. So können Sie die vorhandene MongoDB-Syntax und -Befehle mit Ihrer in PostgreSQL gespeicherten Datenbank verwenden.
PostgreSQL, auf dem FerretDB aufbaut, ist ein robustes relationales Open-Source-Datenbankmanagementsystem (RDMS). Es ist eine kostengünstige Option für die Erstellung skalierbarer, unternehmenstauglicher Datenbanken. PostgreSQL verfügt über alle Fähigkeiten und Funktionen, die eine relationale Datenbank braucht. Es speichert Daten als strukturierte Objekte mit Zeilen und Spalten, die sich perfekt für umfangreiche komplexe Suchen und Transaktionen eignen.
FerretDB ist eine Dokumentendatenbank, die für die Speicherung von Daten ähnliche Befehle, Treiber und Tools wie MongoDB verwendet.
Im Gegensatz zu relationalen Datenbanken, die die Datenbankstruktur mit Hilfe von Tabellen, Zeilen und Spalten spezifizieren, speichert FerretDB die Informationen als JSON-Dokumente, was eine nahtlose Integration mit modernen Online- und mobilen Anwendungen ermöglicht.
Die Fähigkeit von FerretDB, riesige Datenbanken schnell und effizient zu durchsuchen, ist eine seiner herausragendsten Eigenschaften. Außerdem ist die Plattform äußerst anpassungsfähig, so dass Sie sie an die Bedürfnisse Ihres Unternehmens anpassen können.
Es ist eine erstaunliche Datenbanklösung sowohl für Profis als auch für Anfänger. Es handelt sich um eine vollständig dezentralisierte Blockchain-App-Suchmaschine.
Ferretdb ist ein robustes Datenbankverwaltungstool, mit dem Entwickler und Datenbankadministratoren Code suchen, testen und bereitstellen können.
Fazit
Ich musste viele interessante Kandidaten wie Riak auslassen, daher ist diese Liste eher als Leitfaden denn als Gebot zu verstehen. Ich hoffe, dass ich mein Ziel mit diesem Artikel erreicht habe – nicht nur eine Sammlung von Empfehlungen für Datenbanksoftware zu präsentieren, sondern auch kurz zu erörtern, wo und wie sie eingesetzt (und vermieden!) werden sollten.
Wenn Sie neugierig darauf sind, Datenbanken zu lernen, finden Sie bei Udemy einige hervorragende Online-Kurse.