Datenbanken & das relationale Modell
- Codd's tables, keys, and relational algebranoch nicht geprüft
- SQL as the declarative query languagenoch nicht geprüft
- ACID guarantees on every transactionnoch nicht geprüft
- CAP, NoSQL, and the NewSQL returnnoch nicht geprüft
Edgar F. Codd, ein britischer Informatiker bei IBM Research in San Jose, hatte 1969 bereits jahrelang zugesehen, wie Anwendungsprogrammierer sich durch die Zeigernavigation hierarchischer und Netzwerkdatenbanken quälten — IBMs IMS, der CODASYL-Standard —, wo eine Änderung der physischen Speicherung stillschweigend funktionierenden Code zerbrach. Seine Antwort war ein elfseitiger Aufsatz in den Communications of the ACM vom Juni 1970, A Relational Model of Data for Large Shared Data Banks: Daten als Relationen — Mengen von Tupeln, Tabellen aus Zeilen und Spalten —, Abfragen deklarativ formuliert, den Zugriffsplan überlässt man einem Abfrageoptimierer in der Engine. Die logische Struktur war damit vollständig von der physischen Speicherung entkoppelt. IBM blieb zunächst reserviert; Codd setzte die Arbeit gegen den Widerstand des Hauses durch und erhielt 1981 den Turing Award.
Das relationale Modell kommt mit wenigen Abstraktionen aus. Eine Relation ist eine Menge von Tupeln über einem Schema; der Primärschlüssel identifiziert jede Zeile eindeutig, ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle. Den formalen Kern bildet die relationale Algebra: Selektion, Projektion, Verbund, Vereinigung, Schnitt, kartesisches Produkt, Umbenennung. Codds Normalformen — von der ersten bis zur Boyce-Codd-Normalform — räumen Datenredundanz und Änderungsanomalien aus. SQL, Mitte der 1970er von Chamberlin und Boyce bei IBM entwickelt und 1986 von ANSI standardisiert, ist die beherrschende deklarative Sprache jeder relationalen Datenbank; der Abfrageoptimierer, der SQL anhand von Tabellenstatistiken, Kardinalitätsschätzung und dem Durchprobieren von Verbundreihenfolgen in einen Ausführungsplan übersetzt, gehört zum Tiefsten, was die praktische Informatik zu bieten hat. Die Korrektheitsgarantien heißen ACID — Atomarität, Konsistenz, Isolation, Dauerhaftigkeit: Eine Transaktion wird ganz festgeschrieben oder ganz zurückgerollt, nebenläufige Transaktionen verhalten sich, als liefen sie nacheinander, und was festgeschrieben ist, übersteht jeden Absturz. Jim Gray führte diesen Rahmen 1981 in The Transaction Concept zusammen; 1998 erhielt Gray den Turing Award. Das CAP-Theorem — 2000 von Eric Brewer vermutet, 2002 von Gilbert und Lynch bewiesen — zeigte, dass ein verteiltes System von Konsistenz, Verfügbarkeit und Partitionstoleranz höchstens zwei haben kann; weil Partitionen unvermeidlich sind, tauschen reale Systeme Konsistenz gegen Verfügbarkeit. Die NoSQL-Bewegung der späten 2000er — MongoDB, Redis, Cassandra, DynamoDB — entstand für Workloads im Web-Maßstab, bei denen ACID unbezahlbar war; über NewSQL-Systeme wie Spanner und CockroachDB, die horizontale Skalierbarkeit mit vollem ACID verbinden, ist das Feld seither weitgehend zu SQL zurückgekehrt.