Vorbemerkung - SQL Forever
Viele Aspekte von Datenbanksystemen sind alt, aber heutzutage immer
noch relevant
Immer mal wieder wird ein Ersatz für SQL vorgeschlagen.
Nach einiger Zeit stellt sich heraus, das dieser nicht wirklich besser ist
Stattdessen werden sinnvolle Ideen dieser Ersatztvorschläge in SQL übernommen
Hinweis
- Dieser Überblick basiert auf Folien von Andy Pavlo
(link)
- History of Databases
(link)
1960er Jahre - Die Welt vor den relationalen Systemen
Einzeltupel-Verarbeitung
Programmorientierter Zugriff
Keine deklarative Abfragesprache
Vertreter
- Netzwerk-Datenmodell
- Hierachisches Datenmodell
Noch in Großrechnersystemen im Einsatz
Keine Neuentwicklung auf deren Basis
1970er Jahre - Das relationale Datenmodell
Konzepte
- Tabellen
- Referenzen zwischen Tabellen
- Normalisierung
Theoretische Grundlagen
- Ted Codd: A relational Model of Data
for Large Shared Data Banks
- Reines Konzept
- Implementierbarkeit effizienter Systeme unklar
Erste Implementierungen:
- System R - IBM Research
- INGRES - U.C. Berkeley
- Oracle - Larry Ellison
1980er Jahre - Siegeszug des relationalen Modells
Das relationale Modell setzt sich durch
SQL-Standard
Bekannte kommerzielle Anbieter
- Oracle
- IBM DB2
- Sybase
- Informix
- Terradata
Oracle setzt sich durch
Stonebraker entwickelt Postgres als objektrelationales DBMS
1980er Jahre - Aufkommen und Niedergang objekt-orientierter Datenbanksysteme
Vermeidung des "relational-object impedance mismatch"
Direkte Umsetzung von Konzepten objektorientierter Sprachen in der Datenbank
Führen nur noch ein Nischendasein
- ObjectStore, letztes Update 2014, Rank 141 in DB Engines
1990er Jahre - Konsolidierung relationaler Datenbanksysteme
Keine großen Veränderungen/Fortschritte im Bereich Datenbanksysteme
Kommerzielle Anbieter beherrschen den Markt
Neue Systeme:
- Microsoft SQL Server
- MySQL
- SQLite
Aufkommen dedzierter OLAP-Systeme - Data Cubes
2000er Jahre - Internet Boom
Kommerzielle Anbieter zu schwergewichtig und teuer
Open-Source-Systemen fehlen wichtige Funktionen
Viele Unternehmen bauen eigene Middleware zur horizontalen
Skalierung von Datenbanksysteen (scale out statt scale up)
2000er Jahre - Data-Warehouse-Systeme
Aufkommen spezieller OLAP-Systeme
- Verteilt / Shared-Nothing
- Relational / SQL
- Kommerziell
Entscheidende Leistungsgewinne durch Spaltenorientierung
Systeme:
- Netezza
- Greenplum
- Vertica
- MonetDB
2000er Jahre - Map-Reduce-Systeme
Big Data
- Analyse sehr großer Datenmengen
- Verteiltes Programmier- und Ausführungsmodell
- Google entwickelt erste Lösung - für seine Suchmaschine
- Yahoo - Hadoop - Open Source, Java
- Kein explizites Datenmodell - steckt in den Analysefunktionen
- kein SQL
- Programmorientierte Sprachen: Pig
Situation
- Großer Hype
- Große Probleme
- Einführung von SQL in dieses Modell, keine gute Idee
System:
2000er Jahre - NoSQL-Systeme
Fokus auf hoher Verfügbarkeit und großer Skalierbarkeit
- Nichtrelational
- Schemalos
- Keine Transaktionen
- Kein SQL
- Open Source
Systeme:
2010er Jahre - New-SQL- / Distributed-SQL-Systeme
Vereinigung der Vorteile von SQL- und NoSQL-Systeme
- Verteilt
- Hohe Verfügbarkeit
- Horizontale Skalierbarkeit
- Relational
- SQL
- Transaktionen
Systeme:
- TiDB
- YugabyteDB
- Singlestore
- CockroachDB
2010er Jahre - Cloud-Systeme
Datenbanken als Service
Containerbasiert
Cloud-Native, komplett neues Design
Systeme (OLTP):
- Amazon DynamoDB
- Amazon Aurora
- Azure SQL Server
- Google AlloyDB
Systeme (OLAP):
- Snowflake
- Amazon Redshift
- Google Big Query
2010er Jahre - Shared-Disk
Trennung von Ausführungs- und Speichermaschine
Disaggregation
Uanhängige Skalierung der beiden Komponenten
Log Structured Storage
2010er Jahre - Graph-Systeme
Graph-Strukturen - Knoten und Kanten
Abfragesprache Cypher
SQL:2023 ergänzt SQL um Graph Query Syntax
Native Graph Databases - Direkt Speicherung von Referenzen
- Behauptete bessere Performance als relationale Systeme
- Neuere Forschung zeigt, dass relationale Systeme vergleichbare
bzw. besser Performance bringen können als native Systeme
Systeme:
- Neo4j
- TigerGraph
- Amazon Neptune
2010er Jahre - Timeseries Systems
Spezialisierte Systeme für Zeitreihen- bzw. Ereignisdaten
Systeme:
- influxdb
- Timescale
- Clickhousee
- Prometheus
Neue Entwicklungen
Composable Data Systems
Apache Arrow
DuckDB
...
Db-Sites
Database of Databases (link)
DB-Engines (link)