PgDog: Ein cleverer Postgres-Proxy für Sharding

2025-04-15
PgDog: Ein cleverer Postgres-Proxy für Sharding

PgDog ist ein Netzwerkproxy, der die gesamte Kommunikation zwischen Postgres-Clients und -Servern abfängt, SQL versteht, um Abfrageziele zu ermitteln, und keine Änderungen am Anwendungscode erfordert. Er analysiert SQL-Abfragen, extrahiert Sharding-Schlüssel, verwendet die integrierte Partitionierungs-Hash-Funktion von Postgres und leitet Abfragen an das richtige Datenbank-Shard weiter. Der Artikel beschreibt detailliert, wie PgDog einfache und erweiterte Protokolle, shardübergreifende Abfragen und verteilte COPY-Operationen verarbeitet, wodurch letztendlich Postgres-Sharding und eine linear skalierbare Dateningest-Geschwindigkeit ermöglicht werden.

Mehr lesen
Entwicklung

Vertikales Sharding: Ein Albtraum?

2025-04-13
Vertikales Sharding: Ein Albtraum?

Der Autor berichtet von seinen Erfahrungen mit vertikalem Sharding (funktionales Sharding) und hebt dessen Nachteile hervor. Es entlastet zwar die Datenbank, fragmentiert aber die Anwendung und zwingt die Anwendungsschicht, Joins und Abfragen zu verarbeiten, die eigentlich von der Datenbank erledigt werden sollten. Dies erhöht die Codekomplexität und den Wartungsaufwand deutlich und reduziert die Systemverfügbarkeit. Mit Humor und einer Formel zur Berechnung der Verfügbarkeit zeigt der Autor, wie vertikales Sharding die Systemstabilität senkt und letztendlich zu Verzögerungen im Produkt-Roadmap und zur Demoralisierung der Entwickler führt. Der Artikel endet mit der Vorstellung von PgDog, einem Open-Source-Projekt zur Lösung des Postgres-Shardings.

Mehr lesen
Entwicklung vertikales Sharding

PgDog: Open-Source-Sharding für pgvector

2025-03-26
PgDog: Open-Source-Sharding für pgvector

Die Skalierung von pgvector über eine Million Einbettungen hinaus wird aufgrund der langsamen Indexerstellung schwierig. Dieser Beitrag stellt PgDog vor, ein Open-Source-Projekt, das den pgvector-Index sharded. Durch die Nutzung der inhärenten Clustering-Funktionen von IVFFlat verteilt PgDog Vektorraumpartitionen auf mehrere Maschinen. Abfragevektoren werden basierend auf der Nähe zu den mit scikit-learn berechneten Zentroiden an die entsprechenden Shards weitergeleitet, wodurch die Suchgeschwindigkeit und der Rückruf erheblich verbessert werden. Die Implementierungsdetails umfassen die Berechnung von Zentroiden, eine benutzerdefinierte Sharding-Funktion und die SQL-Analyse mithilfe von pg_query. Experimente zeigen die Effektivität von PgDog und bieten Optimierungen wie parallele Shard-übergreifende Abfragen und eine verfeinerte Zentroidzuweisung. Zukünftige Arbeiten umfassen die Unterstützung weiterer Distanzalgorithmen und SIMD-Anweisungen für schnellere Berechnungen.

Mehr lesen
Entwicklung Sharding

PostgreSQL-Sharding: Eine spannende Geschichte von 6-facher Skalierung

2025-03-14
PostgreSQL-Sharding: Eine spannende Geschichte von 6-facher Skalierung

Ein Unternehmen stand vor der Herausforderung, die Schreibkapazität von PostgreSQL zu erhöhen, während es 100.000 Benutzer pro Sekunde bediente. Anstatt auf NoSQL umzusteigen, entschied sich das Ingenieurteam für Datenbank-Sharding. Sie teilten die Datenbank in 6 Instanzen auf und synchronisierten die Daten mit logischer Replikation. Dies beinhaltete das Schreiben von Ruby- und Python-Code zur Behandlung von Sharding-Keys und benutzerdefinierten Tools zur Lösung von Sequenzproblemen. Die erfolgreiche 6-fache Skalierung führte zur Entwicklung von PgDog, einem Open-Source-Projekt für automatisiertes PostgreSQL-Sharding. Diese Geschichte unterstreicht den Einfallsreichtum und die Entschlossenheit der Ingenieure sowie die Skalierbarkeit von PostgreSQL.

Mehr lesen
Entwicklung Datenbanksharding