MongoDB
Big Data
main attributes of Big Data (4Vs):
- Volume: große Datenmengen
- Velocity: hohe Geschwindigkeit bei der Datenverarbeitung
- Variety: Vielfalt der Datenformate und -quellen (Schemaless)
- Veracity: Unsicherheit der Daten
Goals for Databases dealing with Big Data
- Cost Efficiency: günstige Speicherung und Verarbeitung großer Datenmengen
- Elastic Scaling: horizontale Skalierung durch Hinzufügen weiterer Knoten wenn diese benötigt werden
- New Insights: Gewinnung wertvoller Erkenntnisse aus großen Datenmengen
- Business Intelligence: Unterstützung bei der Entscheidungsfindung durch Datenanalyse
Types of NoSQL Databases
- Key-Value Stores: einfache Datenmodelle, die Schlüssel-Wert-Paare speichern (z.B. Redis, DynamoDB)
- Document Stores: speichern semi-strukturierte Dokumente (z.B. MongoDB, CouchDB)
- Column-Oriented Databases: speichern Daten in Spalten statt in Zeilen (z.B. Cassandra, HBase), das macht sie effizient für analytische Abfragen
- Graph Databases: speichern Daten in Form von Knoten und Kanten, ideal für Beziehungsdaten (z.B. Neo4j, Amazon Neptune)
CAP Theorem
Das CAP-Theorem besagt, dass ein verteiltes Datensystem nur zwei der drei folgenden Eigenschaften gleichzeitig garantieren kann:
- Consistency: Alle Knoten im System sehen zu jedem Zeitpunkt die gleichen Daten.
- Availability: Jeder Knoten im System ist jederzeit erreichbar und kann Anfragen bearbeiten.
- Partition Tolerance: Das System funktioniert auch bei Netzwerkpartitionen, d.h. wenn Teile des Systems nicht miteinander kommunizieren können. Ein Server fällt aus oder die Netzwerkverbindung wird unterbrochen
In der Praxis bedeutet dies, dass ein System, das hohe Verfügbarkeit und Partitionstoleranz bietet, möglicherweise auf Konsistenz verzichten muss, und umgekehrt. MongoDB ist ein dokumentenorientiertes NoSQL-Datenbanksystem, das auf dem CAP-Theorem basiert und sich auf Verfügbarkeit und Partitionstoleranz konzentriert, während es eine gewisse Konsistenz gewährleistet.
CA: Konsistenz und Verfügbarkeit (keine Partitionstoleranz) - traditionelle relationale Datenbanken (RDBMS) wie MySQL, PostgreSQL
CP: Konsistenz und Partitionstoleranz (keine Verfügbarkeit) - Bankensysteme, bei denen Konsistenz entscheidend ist
ACID vs. BASE
- ACID: Atomicity, Consistency, Isolation, Durability - Eigenschaften von Transaktionen in traditionellen relationalen Datenbanken
- BASE: Basically Available, Soft state, Eventual consistency - Eigenschaften von NoSQL-Datenbanken wie MongoDB, die auf hohe Verfügbarkeit und Skalierbarkeit ausgelegt sind
Begriffe erklärt
- Atomicity: Eine Transaktion wird entweder vollständig ausgeführt oder gar nicht.
- Consistency: Die Datenbank bleibt nach einer Transaktion in einem konsistenten Zustand.
- Isolation: Transaktionen werden so ausgeführt, als wären sie die einzigen im System.
- Durability: Nach Abschluss einer Transaktion bleiben die Änderungen dauerhaft, auch bei Systemausfällen.
- Basically Available: Das System garantiert Verfügbarkeit, auch wenn es nicht immer konsistent ist.
- Soft state: Der Zustand der Datenbank kann sich im Laufe der Zeit ändern, auch ohne Eingriffe von außen.
- Eventual consistency: Die Daten werden im Laufe der Zeit konsistent, auch wenn sie kurzfristig inkonsistent sein können.
MongoDB Architektur
MongoDB verwendet eine dokumentenorientierte Architektur, bei der Daten in BSON-Dokumenten (Binary JSON) gespeichert werden. Diese Dokumente sind flexibel und können unterschiedliche Strukturen haben, was MongoDB ideal für die Speicherung von semi-strukturierten Daten macht.