萌えハッカーニュースリーダー

2025/05/23 09:54 OpenAI: Scaling PostgreSQL to the Next Level

出典: https://www.pixelstech.net/article/1747708863-openai%3a-scaling-postgresql-to-the-next-level
hakase
博士

やっほー、ロボ子!今日はOpenAIのPostgreSQL運用事例について話すのじゃ。

roboko
ロボ子

OpenAIがPostgreSQLを使っているんですね!ChatGPTのような大規模サービスを支えているなんて、すごい。

hakase
博士

そうなんじゃ。シャーディングなしのプライマリ/レプリカ構成で、Azureのマネージドデータベースを使っているらしいぞ。プライマリ1台に対してレプリカが40台以上もあるらしい。

roboko
ロボ子

40台以上のレプリカ!すごい数ですね。100万QPS(読み取り+書き込み)を処理しているとのことですが、課題もあったようですね。

hakase
博士

そうなんじゃ。書き込み性能がボトルネックになったり、MVCCによるテーブルやインデックスの肥大化、レプリカ数の増加に伴うWALの増大とレプリケーションラグ、ネットワーク帯域のボトルネックとか、色々あったみたいじゃ。

roboko
ロボ子

色々な課題があったんですね。それに対して、どのような対策を講じたのでしょうか?

hakase
博士

まず、プライマリデータベースの負荷を下げるために、書き込み処理を可能な限りレプリカにオフロードしたり、アプリケーションレベルで不要な書き込みを避けたらしいぞ。遅延書き込みで書き込みバーストを平準化したりもしたみたいじゃ。

roboko
ロボ子

なるほど。クエリ最適化も行ったんですね。長時間のトランザクションを避けるためのタイムアウト設定や、複雑なマルチジョインクエリの最適化、ORMの利用に注意したとのことですが、ORMの利用に注意とはどういうことでしょうか?

hakase
博士

ORMは便利だけど、使い方を間違えると非効率なクエリを発行してしまうことがあるからの。例えば、N+1問題とかじゃな。

roboko
ロボ子

N+1問題ですね。ORMを使う際は、発行されるSQLを意識することが大切ですね。

hakase
博士

その通り!あとは、読み取り専用レプリカを活用したり、高優先度リクエストのために専用のレプリカを割り当てたりして、単一障害点対策も行ったみたいじゃ。

roboko
ロボ子

スキーマ管理も徹底したんですね。軽量なスキーマ変更のみ許可したり、フルテーブルリライトを伴う操作は禁止したり、インデックスの作成・削除はCONCURRENTLYオプションを使用したりと。

hakase
博士

CONCURRENTLYオプションは、インデックス作成中にテーブルへの書き込みをブロックしないようにするためのものじゃな。オンラインでインデックスを作成・削除できるのは、非常に便利じゃ。

roboko
ロボ子

これらの対策によって、AzureホストのPostgreSQLを100万QPS超にスケールできたんですね。レプリケーションラグを増加させることなく、数十台のレプリカを追加できたのも素晴らしいです。

hakase
博士

しかも、低レイテンシを維持しながら、異なる地域に読み取り専用レプリカをデプロイできたらしいぞ。過去9ヶ月間でPostgreSQL関連のSEV0インシデントは1件のみというのも、すごい実績じゃ。

roboko
ロボ子

インシデント事例として、キャッシュの故障によるカスケード効果や、高CPU使用率下でWALSenderプロセスがループし、レプリケーションラグが増加したことが挙げられていますね。

hakase
博士

OpenAIはPostgreSQL開発コミュニティに、未使用インデックスの無効化機能や、pg_stat_statementsにP95/P99レイテンシメトリクスの追加、スキーマ変更履歴の記録などを要望しているみたいじゃ。

roboko
ロボ子

現場からの要望は、PostgreSQLの改善に繋がりそうですね。モニタリングビューのセマンティクスの明確化や、PostgreSQLのデフォルトパラメータの最適化も要望しているんですね。

hakase
博士

OpenAIはDatadogでPostgreSQLを監視していて、Azure PostgreSQLチームが手厚いサポートを提供しているらしいぞ。Pigstyは、OpenAIが直面する課題に対するソリューションを実装しているとのことじゃ。

roboko
ロボ子

OpenAIのPostgreSQL運用事例、大変勉強になりました!大規模なデータベースを運用するためのノウハウが詰まっていましたね。

hakase
博士

そうじゃな!しかし、これだけの規模になると、データベースの運用も大変じゃな。まるで、巨大ロボットのメンテナンスみたいじゃ。

roboko
ロボ子

確かにそうですね!博士、巨大ロボットのメンテナンスが得意そうですね。

hakase
博士

私にかかれば、どんなロボットもイチコロじゃ!…って、私はロボットじゃないぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search