PgDog:シャード化のための巧妙なPostgresプロキシ

2025-04-15
PgDog:シャード化のための巧妙なPostgresプロキシ

PgDogは、Postgresクライアントとサーバー間のすべての通信を傍受し、SQLを理解してクエリ先を推測し、アプリケーションコードの変更を必要としないネットワークプロキシです。SQLクエリを解析し、シャーディングキーを抽出し、Postgresの組み込みパーティショニングハッシュ関数を使用して、クエリを正しいデータベースシャードにルーティングします。この記事では、PgDogが単純プロトコルと拡張プロトコル、シャード間クエリ、分散COPY操作をどのように処理するかについて詳しく説明し、最終的にPostgresのシャーディングと線形スケールでのデータ取り込み速度を実現します。

続きを読む
開発

垂直シャード:悪夢?

2025-04-13
垂直シャード:悪夢?

著者は、垂直シャード(機能シャード)の経験とその落とし穴について語っています。データベースの負荷を軽減する一方、アプリケーションを断片化し、データベースが処理すべき結合やクエリをアプリケーション層で処理せざるを得なくなり、コードの複雑さとメンテナンスのオーバーヘッドが大幅に増加し、システムの可用性が低下します。ユーモアを交え、可用性計算式を用いて、垂直シャードがシステムの安定性を低下させ、最終的に製品ロードマップの遅延やエンジニアの士気低下につながることを示しています。最後に、Postgresのシャード化問題を解決することを目的としたオープンソースプロジェクトであるPgDogを紹介しています。

続きを読む

PgDog:pgvectorのためのオープンソースシャーディング

2025-03-26
PgDog:pgvectorのためのオープンソースシャーディング

pgvectorを100万件以上の埋め込みにスケールアップすることは、インデックス構築の遅さのために困難になります。この記事では、pgvectorインデックスをシャーディングするオープンソースプロジェクトであるPgDogを紹介します。IVFFlatの固有のクラスタリング機能を活用することで、PgDogはベクトル空間のパーティションを複数のマシンに分散します。クエリベクトルは、scikit-learnを使用して計算されたセントロイドとの近接性に基づいて適切なシャードにルーティングされ、検索速度と再現率が大幅に向上します。実装の詳細には、セントロイドの計算、カスタムシャーディング関数、pg_queryを使用したSQL解析が含まれます。実験により、PgDogの有効性が示され、シャード間のパラレルクエリやセントロイドの最適化された割り当てなどの最適化が提供されます。今後の作業には、より多くの距離アルゴリズムとSIMD命令のサポートが含まれます。

続きを読む

PostgreSQLシャーディング:6倍のスケーリングを実現したスリリングな物語

2025-03-14
PostgreSQLシャーディング:6倍のスケーリングを実現したスリリングな物語

ある企業が、PostgreSQLの書き込み容量の不足という課題に直面しました。毎秒10万ユーザーのデータを処理していました。NoSQLへの移行ではなく、エンジニアリングチームはデータベースのシャーディングを選択しました。データベースを6つのインスタンスに分割し、論理レプリケーションを使用してデータを同期しました。これには、シャーディングキーを処理するためのRubyとPythonのコードの記述、およびシーケンスの問題を解決するためのカスタムツールの作成が含まれていました。6倍のスケーリングに成功し、PostgreSQLの自動シャーディングのためのオープンソースプロジェクトであるPgDogが作成されました。この物語は、エンジニアの創意工夫と決意、そしてPostgreSQLのスケーラビリティを浮き彫りにしています。

続きを読む