Modern Databases: Polyglot Persistence und Vector DBs
Die passende Datenbank je Aufgabe schlägt die eine für alles
Die Zeit, in der eine einzelne relationale Datenbank für alle Aufgaben einer Organisation ausreichte, ist vorbei. Moderne Architekturen nutzen Polyglot Persistence: den Einsatz verschiedener Datenbank-Typen (SQL, NoSQL, Graph, Vector) für jene Zwecke, für die sie am besten geeignet sind.
Für Anwendungen mit Generativer KI braucht es oft eine Vektorindizierung, um semantische Informationen effizient zu durchsuchen. Ob dafür eine dedizierte Vector DB oder eine Erweiterung (zum Beispiel pgvector) passt, hängt von Massstab, Latenz und Betriebsmodell ab.
Anti-Patterns: Der Datenbank-Monolith
- One Size Fits All: Der Versuch, unstrukturierte Daten, Zeitreihen und Vektoren mühsam in eine klassische SQL-Datenbank zu pressen, was zu schlechter Performance und hoher Komplexität führt.
- Mangelnde Skalierbarkeit: Relationale Systeme stossen bei massiven parallelen Schreibzugriffen oft an ihre Grenzen (siehe Cloud Native).
- Keine semantische Suche: Klassische Datenbanken suchen nach exakten Begriffen (Keywords) und verstehen ohne Erweiterungen (zum Beispiel pgvector) nicht den semantischen Kontext einer Suchanfrage.
Der spezialisierte Storage
- Relational (SQL): Bleibt der Standard für strukturierte Transaktionsdaten (Bestellungen, Finanzen, Stammdaten), zum Beispiel PostgreSQL.
- Document Store (NoSQL): Für unstrukturierte, sich schnell ändernde Datenformate (zum Beispiel MongoDB).
- Vector Databases: Speicherung von mathematischen Repräsentationen (Embeddings) von Texten, Bildern oder Audio für semantische Ähnlichkeitssuche (zum Beispiel Weaviate, Pinecone, Milvus oder pgvector).
- Time Series Databases: Optimiert für die Erfassung von massiven Telemetriedaten und Logs (zum Beispiel InfluxDB, Prometheus).
- Graph Databases: Für hochvernetzte Daten wie soziale Netzwerke oder Betrugserkennung (zum Beispiel Neo4j).
Der Fokus: API-basierte Persistenz
In einer modernen Architektur greifen Microservices nicht direkt auf die Datenbanken anderer Services zu. Jeder Service verwaltet seine eigene optimale Persistenzschicht und bietet die Daten via API an.
FAQ
Erhöht Polyglot Persistence nicht den Wartungsaufwand massiv?
Ja, es erfordert mehr Know-how. Managed Database Services können den Betriebsaufwand senken, wenn Datenresidenz und Abhängigkeiten geklärt sind. Der Gewinn an Performance und Funktionsumfang für neue Anwendungen wie KI muss gegen diesen Betrieb abgewogen werden.
Kann ich nicht einfach ein Vector-Plugin für meine SQL-Datenbank nutzen?
Ja, für viele KMU-Anwendungen ist das ein hervorragender Start (zum Beispiel pgvector für PostgreSQL). Dedizierte Vector DBs sind erst bei sehr grossen Datenmengen oder komplexen KI-Workflows zwingend nötig.
Referenzen
- Martin Kleppmann Designing Data-Intensive Applications. Grundlagen moderner Datenbank-Paradigmen und Datensysteme. (2017). dataintensive.net
- Pinecone Vector Database Fundamentals. Ein Leitfaden für Einsteiger zum Thema Vektordatenbanken. (2023). www.pinecone.io/learn/vector-database/
- pgvector contributors pgvector: Open-source vector similarity search for Postgres. Vektorsuche als Erweiterung für PostgreSQL. (2023). github.com/pgvector/pgvector