HeadlinesBriefing favicon HeadlinesBriefing.com

PlanetScaleがNekiを導入:スケーラブルなワークロードのためのシャードPostgres

Hacker News •
×

Nekiは現在プラットフォームプレビューで利用可能です。Nekiは、世界最大のシャードMySQLクラスターを8年間運用した経験から学んだ教訓に基づいて構築されました。数千の本番ワークロードで毎秒数百万クエリを実行する企業向けのもので、数秒のダウンタイムですら公的なイベントとなり得る会社向けです。私たちは世界最大のティア0ワークロードを支える意味を知っています。Planet Scale Postgresを1年半前にリリースしたとき、私たちはより多くのことをする必要があると知っていました。その期間に、私たちは数千の顧客をPlanet Scaleにオンボーディングし、その中には最大のMySQL顧客と同規模の顧客もいます。時間を重ねて、単一のマシン上のPostgresの上限に達するチームを見ました。メタルは彼らに時間を与えましたが、顧客が単一のマシンができる上限に達したとき、私たちは彼らに渡すのに良いオプションを見つけられませんでした。Nekiの登場です。Nekiとは何ですか?NekiはPlanet ScaleのシャードPostgresです。アプリケーションが標準的なPostgres wireプロトコル経由でNekiルーターに接続するため、既存のドライバー、ORMs、接続文字列は変更なく動作し続けます。各シャードは、3つのアベイラビリティゾーンにまたがる1つのプライマリと少なくとも2つのレプリカを持つ完全なPostgresクラスターです。カスタムストレージエンジンはないため、拡張機能、SQLサポート、パフォーマンスはPostgresと同様の挙動を示します。シャードキーを選択し、JSONデータトポロジーを通じてテーブルをグループ化および配布する制御を行えます。スキーマ変更、バージョンアップグレード、フェイルオーバー、インポート、リシャーディングはすべて組み込みの完全オンラインワークフローとして実行されます。既に頼りにしているPlanet Scaleの機能もお使いいただけます。Insights、スキーマ推奨、ブランチ、MCPなどです。最初からシャーディングする必要はありません。単一のプライマリとレプリカとしてNekiを実行し、マシンの容量を超えたら、既存のクラスターに対して実行するワークフローとしてリシャーディングを行えます。Nekiなぜ必要ですか?高速成長するPostgresデータベースがもたらす問題はご存知でしょう: vacuumやindexでトラフィックに影響を与えずに大きすぎるテーブル、数時間かかるバックアップ、接続制限、スキーマ変更のためのメンテナンスウィンドウ、トランザクションラップアウンドなど。より大きなインスタンスに移行できますが、最終的には十分な大きさのマシンが尽き、コアとIOPSを追加しても問題は線形にスケールしません。既存の回答のそれぞれは、何かを諦めることを要求します。アプリケーションレベルのシャーディングはルーティングをコードに押し付けます。Postgres「互換性」の分散データベースはシャードキーをあなたから隠し、拡張機能を奪い、複雑さとレイテンシを追加します。これは扱ったりデバッグしたりするのが困難になります。そこでNekiを few 原則に基づいて構築しました。最大の原則は:Postgresに従い、それを囲んで作業したり、フェイクにしたり、それから遠ざかったりしないこと。Nekiはどのように機能しますか?Postgresの第一原理に基づいてNekiをアーキテクチャしました。各シャードに本物のPostgresがあります。4つの可動部品があります。NekiルーターアプリケーションはまずNekiルーターに接続します。ルーターはPostgres wireプロトコルを話すため、既存のドライバー、ORMsは単一の接続文字列で動作し続けます。ルーターは完全なPostgresクエリパーサー、分散クエリプランナー、クエリバッファリングなどを持っています。クエリを解析し、どのシャードで実行するべきかを決定するプランを構築し、作業を出して結果を1つのストリームに結合します。ルーターは垂直的および水平的にスケールできるため、単一のルーターがボトルネックになることはありません。シャーディングとシャードグループ各Nekiのシャードは、3つのアベイラビリティゾーンにまたがる1つのプライマリと少なくとも2つのレプリカを持つ本物のPostgresです。変更されたストレージエンジンはありません。拡張機能、SQLサポート、パフォーマンスはPostgresと同様に動作します。なぜならそれはPostgresだからです。シャードはシャードグループに組織されており、異なるテーブルやワークロードは異なるセットのシャードに配置できます。各シャードは、インスタンスサイズ、レプリカ数、ストレージ、Postgresパラメータ、拡張機能を定義する設定プロファイルを使用します。最初からシャーディングする必要はありません。単一のプライマリとレプリカとしてNekiを実行し、マシンの容量を超えたら、既存のクラスターに対して実行するワークフローとしてリシャーディングを行えます。Nekiの原則:高速成長するPostgresデータベースがもたらす問題: vacuumやindexでトラフィックに影響を与えずに大きすぎるテーブル、数時間かかるバックアップ、接続制限、スキーマ変更のためのメンテナンスウィンドウ、トランザクションラップアウンドなど。より大きなインスタンスに移行できますが、最終的には十分な大きさのマシンが尽き、コアとIOPSを追加しても問題は線形にスケールしません。既存の回答のそれぞれは、何かを諦めることを要求します。アプリケーションレベルのシャーディングはルーティングをコードに押し付けます。Postgres「互換性」の分散データベースはシャードキーをあなたから隠し、拡張機能を奪い、複雑さとレイテンシを追加します。これは扱ったりデバッグしたりするのが困難になります。Nekiの原則:Postgresに従い、それを囲んで作業したり、フェイクにしたり、それから遠ざかったりしないこと。