インフラ・DevOps
Neki
要約
PlanetScaleは、大規模なPostgresクラスターの課題に対応する新しいソリューション「Neki」を発表しました。Nekiは、単一マシンの限界を超えるPostgresのスケーリングを目的としており、各シャードに実際のPostgresを使用し、ルーター、サイドカー、コントロールプレーンといったコンポーネントを組み合わせて水平スケーリングを実現します。これにより、ゼロダウンタイムでのスキーマ変更、アップグレード、リシャーディングなどのオンラインオペレーションが可能になります。
全文翻訳
Nekiの紹介
Nick Van Wiggeren [@NickVanWig] | 2026年9月10日
Nekiがプラットフォームプレビューで利用可能になりました。
Nekiは、世界最大級のシャーディングMySQLクラスターを8年間運用してきた経験から得られた教訓に基づいて構築されています。数百万クエリ/秒のプロダクションワークロードを、数秒のダウンタイムでさえ非常に公になるような企業のために処理してきました。私たちは、世界最大のティア0ワークロードを支えることの意味を知っています。
1年半前にPlanetScale Postgresをリリースしたとき、私たちはもっとやる必要があることを知っていました。その間、私たちは数千もの顧客をPlanetScaleにオンボードしましたが、その中には当社の最大のMySQL顧客に匹敵する規模のものもありました。何度も、チームがPostgresの単一マシンの限界に達するのを見てきました。メタル(高性能ハードウェア)は時間稼ぎにはなりましたが、顧客が単一マシンの能力の限界に達したとき、彼らに提供できる良い選択肢がないことがわかりました。そこでNekiが登場しました。
なぜNekiなのか?
急速に成長するPostgresデータベースに伴う問題は、すでに皆さんもご存知でしょう。バキュームやインデックス作成に時間がかかりトラフィックに影響が出るテーブル、数時間かかるバックアップ、接続制限、スキーマ変更のためのメンテナンスウィンドウ、トランザクションラップアラウンドなど、数多くあります。
より大きなインスタンスに移行することもできますが、最終的には十分な大きさのマシンがなくなります。そして、コア数やIOPSを増やしても、問題は線形にスケールしません。
既存の解決策は、それぞれ何かを犠牲にするよう求めてきます。アプリケーションレベルのシャーディングは、ルーティングをコードに押し込みます。Postgres互換の分散データベースは、シャードキーを隠し、拡張機能を削除し、扱いにくくデバッグが困難な複雑さとレイテンシを追加します。
そこで私たちはいくつかの原則に基づいてNekiを構築しました。最も重要な原則は、「Postgresに忠実であること、それを回避したり、偽ったり、背を向けたりしないこと」です。
Nekiはどのように機能しますか?
私たちはNekiを第一原理からPostgresのために設計しました。各シャードには実際のPostgresが搭載されています。4つの可動部品があります。
Nekiルーター
アプリケーションはまずNekiルーターに接続します。ルーターはPostgresワイヤプロトコルを話すため、既存のドライバーやORMは単一の接続文字列で引き続き機能します。ルーターには、完全なPostgresクエリパーサー、分散クエリプランナー、クエリバッファリングなどが搭載されています。クエリを解析し、どのシャードがそれを実行すべきかを決定するプランを構築し、作業を送信し、結果を1つのストリームにまとめて返します。ルーターは垂直的および水平的にスケールできるため、単一のルーターがボトルネックになることはありません。
シャーディングとシャードグループ
Nekiの各シャードは、1つのプライマリと少なくとも2つのレプリカを持ち、アベイラビリティゾーンに分散された実際のPostgresです。変更されたストレージエンジンはありません。拡張機能、SQLサポート、パフォーマンスはPostgresの動作通りに動作します。なぜなら、それはPostgresだからです。
シャードはシャードグループに編成されるため、異なるテーブルやワークロードは異なるシャードセットに配置できます。各シャードは、インスタンスサイズ、レプリカ数、ストレージ、Postgresパラメータ、および拡張機能を定義する構成プロファイルを使用するため、各グループを個別のトラフィックに合わせてサイジングできます。
コネクションプーリング
サイドカーは、各Postgresインスタンスと並行して実行されます。これは、Nekiの接続処理を、単にPgBouncerをデータベースの前に置くよりも大幅に改善する部分です。Nekiは接続の両端(ルーター側とPostgres側)を制御するため、各インスタンスが実際に処理できるプールのサイズを、プロセスの外部から推定するのではなく、正確に設定できます。
コントロールプレーン
コントロールプレーンは、各ノードのヘルスを追跡し、計画されたスイッチオーバーと計画外のフェイルオーバーを実行し、データをリシャードし、スキーマ変更を適用し、バージョンアップグレードを実行するワークフローを調整します。
データトポロジー
これらをまとめるのがデータトポロジーです。これは、論理テーブルを物理シャードにマッピングするJSON構成です。シャードインデックス(Nekiがルーティングする列と、その値がどのようにハッシュされるかを指定します)と、テーブルセットがいくつのシャードに分散されるか、およびそれらのシャードがどれであるかを制御するシャードグループを定義します。ルーターはトポロジーをキャッシュし、すべてのプランでそれを参照します。
シャーディング以外に得られるもの
通常、メンテナンスウィンドウをスケジュールするすべての操作が、Nekiでは組み込みワークフローとして実行されます。ワークフローは新しいターゲットノードをプロビジョニングし、レプリケーションでそれらを追いつかせ、__nekiメタ関数を通じてトラフィックを切り替え、古いノードを廃止します。すべて、アプリケーションが使用するのと同じpsql接続を通じて行われます。
このオンラインオペレーションモデルは、スキーマ変更、バージョンアップグレード、計画的および計画外のフェイルオーバー、インポート、リシャーディングをカバーします。
Nekiには、PlanetScaleで使い慣れたすべての機能も含まれています。インサイト、スキーマ推奨、ブランチング、MCPなどです。
Nekiをシャーディングなしで、レプリカを持つ単一プライマリとして実行することもできます。シャーディングが必要になる前に、改善されたコネクションプーリング、オンラインDDL、ゼロダウンタイムアップグレード、およびヘルスモニタリングを利用できます。必要になったとき、リシャーディングは既存のクラスターに対して実行するワークフローになります。
プラットフォームプレビューとは何ですか?
Nekiをできるだけ早く皆様にお届けしたいと考えました。プラットフォームプレビュー中は、Nekiで本番ワークロードを実行しないでください。製品はまだ変更されており、その変更の一部は破壊的なものになります。
プラットフォームプレビュー中にフィードバック、質問、または問題が発生した場合は、お知らせください。サポートチケットに記入するか、Discordに参加してください。
今日Nekiを試す
PlanetScaleにサインインし、プラットフォームプレビューをオプトインして、Nekiクラスターを作成してください。Nekiのアーキテクチャ、シャーディング方法などについては、Nekiのドキュメントをお読みください。
大規模なPostgresクラスターをお持ちで、Nekiが適しているかどうか疑問に思っている場合は、お問い合わせください。チームのためにプライベートデモを行い、スキーマとクエリパターンを詳しく調べ、シャーディングに関する具体的な提案をさせていただきます。