Proposition: Prinzipien der Datenmodellierung für Wide Column Datenbanken

Die Prinzipien der Spaltenorientierten-Datenmodellierung unterscheiden sich deutlich von anderen Modellierungsprinzipien.

Auch wenn sie effiziente Lese- und Schreibzugriffe für verschiedene Anfragen ermöglichen, schränken sie die Flexibilität bezüglich neuer Abfragen stark ein und führen zu redundanter Datenhaltung.

Bei der Auswahl des Datenbankschemas sollte das berücksichtigt werden.

  • Eine Tabelle pro Abfrage:
    • Da spaltenorientierten Datenbanken keine Joins unterstützen, müssen alle für die Abfrage benötigten Daten bereits in der Tabelle vorhanden sein.
    • Das führt dazu, dass es für jede Art der Abfrage oft eine eigene, dedizierte Tabelle gibt.
    • Einzelne Informationen müssen daher auch an vielen Stellen redundant vorgehalten werden.
  • Wahl des Partitionsschlüssels:
    • Der Partitionsschlüssel bestimmt (unter Anwendung einer Hashfunktion), auf in welcher Partition und auf welchem Node die Daten abgespeichert werden (wobei ein Node mehrere Partitionen enthalten kann).
    • Im Sinne der Performanz ist es daher wichtig, dass gemeinsam abgerufene Daten denselben Partitionsschlüssel verwenden. (Bspw. den Vor- und Nachnamen eines Kunden - oder einfach seine customerId)
    • Abfragen ohne Partitionsschlüssel führen zu ineffizienten Scans des gesamten Clusters.
    • Die Kombination aus Partitions- und (optionalen) Clusteringschlüsseln bildet den Primärschlüssel und identifiziert die Datenpunkte eindeutig.
  • Wahl des Clusteringschlüssels:
    • Clusteringschlüssel können optional angegeben werden
    • Sie können einerseits die eindeutige Identifikation der Datenpunkte sicherstellen
    • Die Daten innerhalb einer Partition werden nach dem Clusteringschlüssel sortiert abgespeichert (bspw. das Erstelldatum eines Datenpunktes)
  • Nutzung von Static Columns:
    • Attribute (ausgenommen Partitions- und Clusteringschlüssel), die innerhalb einer Partition konstant sind, können als static column deklariert werden
    • So kann Speicherplatz gespart werden

Anmerkung

UML-Modellierung

Das folgende UML-Diagramm zeigt drei Tabellen für die Abfragen Posts eines Kunden, Kontakte eines Kunden, Kunden