Definition: Column Family Datenbank

Als Column Family Datenbank (auch Wide Column Datenbank) bezeichnen wir eine Art von NoSQL Datenbank, die Daten in einem spaltenorientierten Format, den Column Families, organisiert und speichert.

Column Families stellen eine Gruppierung einzelner Columns dar, die physisch gemeinsam abgespeichert werden. Ein typisches Beispiel für verschiedene Column Families ist die Versionierung von Daten.

Ein Zeile in einer Column Family Datenbank kann Einträge aus verschiedenen Column Familien und verschiedenen Columns enthalten, wobei Schemafreiheit gewährleistet ist.

Bekannte Vertreter sind:

  • Google Cloud Bigtable,
  • HBase,
  • Azure Table Storage,
  • Cassandra (Table)

Anmerkung

Primärschlüssel in Cassandra

In Cassandra ist der Primary Key in zwei Teile aufgespalten:

  • Partition Key: Einträge mit dem selben Partition Key werden gemeinsam auf dem selben Knoten abgespeichert. Eine clevere Wahl des Partition Keys sorgt dafür, dass die Daten gleichmäßig über das Cluster verteilt werden.
  • Clustering Columns: geben eine Sortierreihenfolge für die Daten innerhalb einer Partition an, es können auch mehrere Clustering Columns verwendet werden.

Als Beispiel stellen wir uns eine Bibliothek vor, in der Bücher organisiert werden. Als Partition Key kann beispielsweise das Genre genutzt werden. Als Clustering Columns würden wir das Erscheinungsjahr und die Autoren wählen.

Die Cassandra Table würden wir dann wie folgt definieren:

CREATE TABLE books (
	genre TEXT,
	year INT,
	author TEXT,
	title TEXT,
	PRIMARY KEY ((genre), year, author)
)