Heute hatte ich mal wieder Zeit einen neuen Blog Beitrag zu schreiben. Ich möchte euch mehr über die NoSQL (Not Only SQL) Welt zeigen. Habt ihr euch schon mal gefragt, wie Facebook ihre Big Data speichert ? Wie Amazon ihre Produkte und Einkäufe handelt ? Wie die Google Suche durch mehrere tausend Terrabyte Daten joined – Und im Millisekunden Bereich Ergebnisse liefert ? Mit einer standard relationalen Datenbank ist dies schon lange nicht mehr möglich. Das NoSQL Prinzip ist im Grunde simpel. Diese Datenspeicher benötigen keine festgelegten Tabellenschemata und versuchen, Joins zu vermeiden. Noch dazu skalieren Sie dabei horizontal.

Meine favourite NoSQL Database ist Apache Cassandra. Heute läuft diese Datenbank in mehreren verteilten Facebook Data Centers verteilt in einem Cluster mit über 50000 tausend Servern und ist performant. Der große Vorteil von Apache Cassandra ist

  • Eignung für schnelle verteilte und horizontale Skalierung
  • keine Single Point of Failures
  • Automatische Replikation zwischen Data Centers
  • schemafrei oder nur schwache Schemarestriktionen
  • Key-Value Stores
  • Open Source
  • einfache Datenreplikation zur Unterstützung der verteilten Architektur
  • direkte REST API – JSON, XML auf Keyspaces (Datenbanken), Column Familys (Tables)

Apache Cassandra hat unterm Strich gegenüber einer relationalen Datenbank like MySQL oder Oracle einen Geschwindigkeitszuwachs von etwa Faktor 1.000 (überprüft auf meinem Server durch 1TB free GEO location data auf einem Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz, 4 Cores und 16 Gigbyte RAM) !

MySQL vs. Cassandra

Was sollen Unternehmen machen, welche einen enormen Datenzuwachs redundant stand halten müssen ? Was sollen Unternehmen machen, welche direkt mehrere Gigabyte/Terrabyte/Petabyte Daten durch analytische Algorithmen und Funktionen analysieren wollen?

Mir würden zu diesem Use Case 3 intelligent Wege einfallen:

  • Direktes Data + Type Mapping mit MariaDB (MySQL Nachfolger – down kompatibel) zum Cassandra Cluster
    Die Keyspaces (=Datenbanken in einem NoSQL System) können als Tabelle (View) in SQL gemappt werden und man kann in Real-Time zwischen den Daten joinen und SQL Funktionen anwenden. Verwendung Cassandra als Storage Engine.
  • Direkte Analyse der Daten durch Apache Hadoop, Hive mit direktem Zugriff auf das Cassandra Cluster
  • Kopierung der Daten in eine relationale Datenbank MySQL, Oracle (nicht wirklich sinnvoll!)

Keine Kommentare möglich.