インフラ・DevOps
Neki by PlanetScale
Neki by PlanetScale (neki.dev)
要約
PlanetScaleのNekiは、Postgresを単一マシンの限界を超えてスケーリングするためのソリューションです。このサービスは、数億クエリ/秒とペタバイト級のデータに対応し、各シャードに実際のPostgresを使用します。Nekiは、ルーター、サイドカー、コントロールプレーンといったコンポーネントを追加することで、Postgresの水平スケーリングを実現し、ゼロダウンタイムでのリシャーディング、スキーマ変更、バージョンアップグレード、インポート、高可用性などを可能にします。
全文翻訳
01シャーディング
Postgresを単一マシンの限界を超えて、数億クエリ/秒とペタバイト級のデータに対応させます。
02シャード分割
ワークロードが増加するにつれて、ホットシャードを分割します。Nekiは新しいターゲットシャードを作成し、レプリケーションでそれらを追いつかせ、トポロジー変更を通じてトラフィックを移動させます。
03ゼロダウンタイムリシャーディング
データベースをオンラインのまま、新しいシャードレイアウトにデータを移動させます。アプリケーションの書き直しやメンテナンスウィンドウなしで容量を再分散します。
04リアルPostgresを大規模に
各シャードは実際のPostgresです。NekiはPostgresを水平にスケーリングするために必要なルーター、サイドカー、コントロールプレーンを追加します。
05高可用性
プラットフォームにヘルスを追跡させ、レプリカを昇格させ、ルーティングを更新させます。アプリケーションは同じPostgresエンドポイントを使用し続けます。
06オンラインスキーマ変更
シャード全体で調整されたワークフローとしてスキーマ変更を実行します。Nekiはシャードごとに適切な方法を適用し、カットオーバーまでの進捗を追跡します。
07コネクションプーリング
シャーディングされたデータベースレイヤー内で接続をプールします。Nekiはトポロジー、シャードヘルス、セッション状態を認識してルーティングします。
08シャードグループ
異なるテーブルまたはワークロードを異なるシャードグループに割り当てます。ホット、コールド、または分離されたデータを、必要なハードウェアプロファイルでスケールさせます。
09マルチAZアベイラビリティ
各シャードを、アベイラビリティゾーン全体で高可用性Postgresクラスターとして実行します。障害は可能な限り最小の単位に限定されます。
10データトポロジー
データがシャード、シャードグループ、シャードインデックスにどのようにマッピングされるかを定義します。配置は明示的で、レビュー可能で、制御されたリシャーディングのために構築されています。
11クロスシャードトランザクション
近日公開
1つのトランザクションでシャードをまたいで書き込みを行います。Nekiはコミットを調整するため、変更はアトミックになります。すべてのシャードが適用するか、どれも適用しません。
12ワークフロー
インポート、リシャーディング、スキーマ変更、カットオーバー、クリーンアップのために明示的なワークフローを使用します。Nekiは分散Postgres操作を繰り返し可能にします。
13オンラインバージョンアップグレード
同じオンライン移行モデルを通じて新しいPostgresバージョンに移行します。ターゲットシャードグループを作成し、レプリケートし、カットオーバーし、古いグループを廃止します。
14ゼロダウンタイムインポート
ソースデータベースがトラフィックを提供し続ける間、Nekiにインポートします。ターゲットが準備できたときにコピー、レプリケート、検証、カットオーバーします。
15CDC
各Nekiシャードには独自のWALと論理レプリケーションパスがあります。CDCは標準Postgresパターンおよびシャードごとのストリームと互換性を保ちます。