Was ist eine Datenbank?
Eine Datenbank ist eine geordnete Sammlung von Daten auf einem Computer, in der Programme Daten schnell und sicher finden, hinzufügen, ändern und löschen können. Sie wird von einer Software namens Datenbankmanagementsystem (DBMS) verwaltet, etwa PostgreSQL, MySQL, SQLite oder MongoDB.
Aktualisiert am 24. September 2026
Wenn du dich auf einer Website anmeldest, muss die Seite dein Konto unter Millionen anderen finden, dein Passwort prüfen und deine Einstellungen laden, und das alles in wenigen Millisekunden. Sie öffnet dafür keine Textdatei und liest sie Zeile für Zeile. Sie schickt eine Anfrage wie SELECT * FROM users WHERE email = 'ana@example.com' an eine Datenbank, und die Datenbank springt über einen Index direkt zur richtigen Zeile, ganz ähnlich wie das Register hinten in einem Buch.
Wie eine Datenbank funktioniert
Zwei Teile arbeiten zusammen. Die Datenbank sind die Daten, in einer festen Struktur geordnet. Das Datenbankmanagementsystem (DBMS) ist das Programm, das diese Daten in Dateien speichert, sie konsistent hält und Anfragen beantwortet. PostgreSQL, MySQL und SQLite sind DBMS; deine Kundenliste ist die Datenbank.
In einer relationalen Datenbank liegen die Daten in Tabellen. Jede Tabelle hat Spalten (Name, Land, Punkte) und Zeilen (eine pro Nutzer). Eine Anfrage durchläuft diese Schritte:
- Dein Programm schickt eine Abfrage, meist in SQL (Structured Query Language) geschrieben.
- Das DBMS parst die Abfrage und plant, wie es sie beantwortet: welche Tabellen es liest und ob ein Index die meisten Zeilen überspringen kann.
- Es liest die Daten in Seiten fester Größe von der Festplatte (standardmäßig 4.096 Bytes in SQLite, 8 KB in PostgreSQL) und hält häufig genutzte Seiten im Arbeitsspeicher.
- Es filtert, sortiert und kombiniert Zeilen und gibt dann das Ergebnis zurück.
Python bringt SQLite mit, also kannst du gleich hier eine echte Datenbank ausführen:
Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5
Das Programm sagt nirgends, wie gesucht werden soll. Es beschreibt das Ergebnis, das es haben will, und das DBMS entscheidet, wie es dahin kommt. Das ist der Hauptunterschied zwischen einer Anfrage an eine Datenbank und einer Schleife über eine Liste.
Arten von Datenbanken
| Art | Speichert Daten als | Beispiele | Typischer Einsatz |
|---|---|---|---|
| Relational (SQL) | Tabellen aus Zeilen und Spalten, über Schlüssel verknüpft | PostgreSQL, MySQL, SQLite, Oracle, SQL Server | Nutzer, Bestellungen, Zahlungen: die meisten Anwendungen |
| Dokument | JSON-ähnliche Dokumente | MongoDB, Firestore, CouchDB | Datensätze, deren Felder sich von einem zum nächsten unterscheiden |
| Key-Value | Ein Wert, der über einen Schlüssel gefunden wird | Redis, DynamoDB | Caches, Sessions, Zähler |
| Wide-Column | Zeilen mit flexiblen Spalten, verteilt auf viele Server | Cassandra, HBase | Sehr hohe Schreiblast |
| Graph | Knoten und die Beziehungen zwischen ihnen | Neo4j | Soziale Netzwerke, Empfehlungen |
| Zeitreihen | Messwerte, nach Zeit indiziert | InfluxDB, TimescaleDB | Metriken, Sensorwerte |
| Vektor | Listen von Zahlen (Embeddings) | pgvector, Pinecone, Milvus | Ähnlichkeitssuche für KI-Funktionen |
Alles, was nicht relational ist, wird oft unter NoSQL zusammengefasst. Relationale Datenbanken bleiben für die meisten Anwendungen die Standardwahl, weil Tabellen, Constraints und SQL eine große Bandbreite an Problemen gut abdecken. Viele Produkte kombinieren auch Arten: PostgreSQL speichert JSON-Dokumente, und pgvector ergänzt es um Vektorsuche.
Transaktionen: alles oder nichts
Geld von Ana an Ben zu überweisen braucht zwei Änderungen: bei Ben dazurechnen, bei Ana abziehen. Stürzt das Programm dazwischen ab, entsteht Geld aus dem Nichts. Eine Transaktion fasst Änderungen so zusammen, dass entweder alle gespeichert werden oder keine. Hier verletzt die zweite Änderung eine Regel (ein Kontostand darf nicht unter null fallen), also macht die Datenbank auch die erste rückgängig:
transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}
Bens 40 wurden gutgeschrieben und wieder zurückgenommen, also gehen die Summen weiterhin auf. Relationale Datenbanken versprechen für Transaktionen vier Eigenschaften, bekannt als ACID: atomar (alles oder nichts), konsistent (Regeln wie CHECK gelten immer), isoliert (zwei Nutzer, die gleichzeitig Transaktionen ausführen, sehen nicht die halbfertige Arbeit des anderen) und dauerhaft (eine einmal gespeicherte Änderung übersteht einen Absturz oder Stromausfall).
Datenbank, Tabellenkalkulation oder Datei
| Text- oder CSV-Datei | Tabellenkalkulation | Datenbank | |
|---|---|---|---|
| Größe | So viel, wie dein Programm laden kann | 1.048.576 Zeilen pro Blatt in Excel | Milliarden von Zeilen |
| Viele Schreiber gleichzeitig | Nein | Eingeschränkt | Ja, mit Sperren und Transaktionen |
| Einen Datensatz finden | Die ganze Datei lesen | Filtern oder suchen | Suche über einen Index |
| Regeln für die Daten | Keine | Optionale Validierung | Typen, Constraints, Fremdschlüssel |
| Fragen stellen | Eigenen Code schreiben | Formeln | SQL oder eine Abfrage-API |
Eine Tabellenkalkulation ist ein gutes Werkzeug für eine Person, die sich ein paar tausend Zeilen ansieht. Sobald mehrere Programme oder Nutzer gleichzeitig Daten schreiben oder die Daten Regeln folgen müssen, ist eine Datenbank das richtige Werkzeug.
Wie Datenbanken Daten schützen
Ein DBMS schreibt jede Änderung in ein Protokoll, bevor es die Datendateien anfasst (das Write-Ahead-Log), und kann nach einem Absturz unfertige Arbeit wiederholen oder rückgängig machen. PostgreSQL kann auf jeder 8-KB-Seite eine Prüfsumme speichern und einen Prüfsummenfehler melden, wenn eine defekte Festplatte beschädigte Daten liefert. Nutzer und Berechtigungen legen fest, wer welche Tabellen lesen oder ändern darf, und Replikation hält Kopien auf anderen Servern. Programme müssen Nutzereingaben außerdem als Parameter übergeben, wie die Platzhalter ? oben, und nie in den SQL-Text einfügen, denn genau so entstehen SQL-Injection-Angriffe.
Häufige Missverständnisse
- "SQL ist eine Datenbank." SQL ist die Sprache. PostgreSQL, MySQL und SQLite sind Datenbanken, die sie verstehen.
- "NoSQL heißt überhaupt kein SQL." Der Begriff wird meist als "not only SQL" gelesen, und mehrere NoSQL-Datenbanken haben Abfragesprachen, die wie SQL aussehen, etwa CQL von Cassandra.
- "Eine Datenbank ist immer ein großer Server." SQLite ist eine einzelne Datei, die ein Programm direkt öffnet, ganz ohne Server. Sie läuft in jedem Android- und iOS-Handy.
- "Daten in einer Datenbank sind für immer sicher." Eine Datenbank schützt vor Abstürzen, nicht davor, dass jemand versehentlich
DELETEausführt. Backups braucht man trotzdem.
Wie es weitergeht
Der SQL-Kurs bringt dir Abfragen ab dem ersten SELECT bei. Die SQLite-Doku deckt die nächsten Schritte ab: was SQLite ist, eine Tabelle anlegen, Indizes und SQL-Injection verhindern. Wie die Daten auf der Festplatte liegen, erklärt was ist ein Byte, und die Seite zur Prüfsumme zeigt, wie beschädigte Seiten erkannt werden.