PgDog : Un proxy intelligent pour PostgreSQL avec sharding

2025-04-15
PgDog : Un proxy intelligent pour PostgreSQL avec sharding

PgDog est un proxy réseau qui intercepte toutes les communications entre les clients et les serveurs PostgreSQL, comprend le SQL pour déduire les destinations des requêtes et ne nécessite aucune modification du code de l'application. Il analyse les requêtes SQL, extrait les clés de sharding, utilise la fonction de hachage de partition intégrée de PostgreSQL et achemine les requêtes vers le shard de base de données correct. L'article détaille comment PgDog gère les protocoles simples et étendus, les requêtes multi-shards et les opérations COPY distribuées, permettant en fin de compte le sharding de PostgreSQL et une vitesse d'ingestion de données à l'échelle linéaire.

Lire plus
Développement

Le sharding vertical : un cauchemar ?

2025-04-13
Le sharding vertical : un cauchemar ?

L'auteur raconte son expérience avec le sharding vertical (sharding fonctionnel), en soulignant ses pièges. S'il soulage la charge de la base de données, il fragmente l'application, obligeant la couche application à gérer les jointures et les requêtes qui devraient être traitées par la base de données. Cela augmente considérablement la complexité du code et la surcharge de maintenance, et réduit la disponibilité du système. Avec humour et une formule de disponibilité, l'auteur montre comment le sharding vertical réduit la stabilité du système, retardant finalement les feuilles de route du produit et démoralisant les ingénieurs. L'article se termine par la présentation de PgDog, un projet open source visant à résoudre le sharding de Postgres.

Lire plus
Développement

PgDog : un projet open source de sharding pour pgvector

2025-03-26
PgDog : un projet open source de sharding pour pgvector

Mettre à l'échelle pgvector au-delà d'un million d'embeddings devient difficile en raison de la lenteur de la construction de l'index. Ce billet présente PgDog, un projet open source qui effectue le sharding de l'index pgvector. En tirant parti des capacités de clustering inhérentes à IVFFlat, PgDog distribue les partitions de l'espace vectoriel sur plusieurs machines. Les vecteurs de requête sont routés vers les shards appropriés en fonction de leur proximité avec les centroïdes, calculés à l'aide de scikit-learn, améliorant ainsi significativement la vitesse de recherche et le rappel. Les détails de l'implémentation couvrent le calcul des centroïdes, une fonction de sharding personnalisée et l'analyse SQL à l'aide de pg_query. Les expériences démontrent l'efficacité de PgDog, offrant des optimisations telles que des requêtes parallèles entre les shards et une allocation optimisée des centroïdes. Les travaux futurs incluent la prise en charge d'algorithmes de distance supplémentaires et des instructions SIMD pour des calculs plus rapides.

Lire plus
Développement

Shardage de PostgreSQL : Une histoire palpitante d’une mise à l’échelle 6x

2025-03-14
Shardage de PostgreSQL : Une histoire palpitante d’une mise à l’échelle 6x

Une entreprise a été confrontée à un défi concernant la capacité d’écriture de PostgreSQL, gérant 100 000 utilisateurs par seconde. Au lieu de migrer vers NoSQL, l’équipe d’ingénierie a choisi de fragmenter sa base de données. Elle a divisé la base de données en 6 instances, synchronisant les données avec une réplication logique. Cela a impliqué d’écrire du code Ruby et Python pour gérer les clés de fragmentation et des outils personnalisés pour résoudre les problèmes de séquence. L’expansion réussie de 6x a abouti à la création de PgDog, un projet open source pour la fragmentation automatisée de PostgreSQL. Cette histoire souligne l’ingéniosité et la détermination des ingénieurs, ainsi que la capacité d’adaptation de PostgreSQL.

Lire plus