Einordnung
Was ist NoSQL
- Eindeutige Definition schwierig
- Alles, was nicht dem relationalen Datenmodell entspricht
- Not only SQL
- Verteilung
- Keine vollständige Transaktionsunterstützung (ACID)
Warum NoSQL
- Unterstützung großer Datenmengen verwaltet durch Computer-Cluster
- Horizontale Skalierbarkeit
- Flexibler Umgang mit Schemata
- Bessere Anpassung an Datenstrukturen in Anwendungen
- Polyglot Persistence
NoSQL vs SQL
- Relationale Systeme integrieren immer mehr nicht-relationale Strukturen
- Realisieren ebenfalls Verteilung
- NoSQL-Syteme unterstützen vermehrt SQL und Transaktionen
- Die Grenze verschwimmt immer weiter
Aspekte der Verteilung
- Zugriffstransparenz: Von wo erfolgt der Zugriff
- Partitionierungsstransparenz: Wo liegen die Daten
- Replikationstransparenz: An welchen Stellen werden Kopien gespeichert
- Migrationstransparenz: Repartionierung der Daten
Key Value Store
- Bekannter Vertreter: Redis
- Nur Schlüssel-Wert-Paare
- Keine Abfragesprache
- Werte sind "Black Box"
- Strukturierte Datentypen möglich, z.B. Listen, Mengen, Hashes, Blobs
Wide Column Store
- Bekannter Vertreter: Cassandra
- Ist kein spaltenorientiertes Datenbanksystemen
- Zeilenweise Speicherung
- Zeilen haben kein festes Schema
- Keine Joins, keine Aggregation
- Partitionierung / Replikation
- Schnelles Schreiben, LSM Tree
- Verschiedene Konistenzmodelle
Document Database
- Bekannter Vertreter: MongoDB
- Fokus auf JSON als Dokumente
- Geschachtete Strukturen
- Ansonsten ähnlich zu Wide Column Stores
Graph Database
- Bekannter Vertreter: neo4j
- Knoten, Kanten, Property Graph
- Spezielle Abfragesprache, z.B. Cypher
- Graphalgorithmen, z.B. Shortest Path