概要
Neki は、PlanetScaleが提供する シャーディング対応Postgres の新サービス。 Postgresデータベースを 複数マシンに分散 しながら、標準のPostgres機能を維持。 既存のドライバやORM がそのまま利用可能。 スキーマ変更やリシャーディング などの運用もオンラインで完結。 現在は プラットフォームプレビュー として提供中、本番利用は非推奨。
Nekiとは何か
- Neki はPlanetScaleが開発した シャーディング対応のPostgresサービス
- 複数のマシン にデータベースを分散し、 各シャードが本物のPostgresクラスタ
- Postgres標準のワイヤプロトコル で接続、既存のドライバやORMをそのまま利用可能
- 各シャードは 1つのプライマリ と 最低2つのレプリカ を3つのアベイラビリティゾーンに分散配置
- カスタムストレージエンジンは不使用、Postgresの拡張機能やSQL互換性・パフォーマンスを維持
- JSON形式のデータトポロジー でシャードキーやテーブルの分散方法を柔軟に設定
- スキーマ変更、バージョンアップ、フェイルオーバー、リシャーディング などをオンラインで実現
- PlanetScaleの既存機能 (Insights、スキーマ推奨、ブランチング、MCP等)も利用可能
- 初日からシャーディング不要、単一プライマリ+レプリカ構成からスムーズにスケールアウト可能
Nekiが解決する課題
- 急成長Postgresデータベース にありがちな課題
- テーブル肥大化による VACUUMやインデックス作成の遅延
- バックアップ時間の増大
- 接続数制限 の問題
- スキーマ変更やメンテナンスに伴うダウンタイム
- トランザクションラップアラウンド 等のスケーラビリティ問題
- 大規模インスタンスにスケールアップ しても限界がある
- 既存の解決策 (アプリケーションレベルシャーディングや互換DB)は
- コードへのルーティング実装負荷
- 拡張機能やSQL互換性の制限
- 複雑性やレイテンシ増大
- NekiはPostgresの本来の機能を最大限活用 し、妥協のないスケーラビリティを実現
Nekiのアーキテクチャ
- Neki Router
- アプリケーションは Neki Router に接続
- Postgresワイヤプロトコル対応、既存の接続文字列をそのまま利用
- クエリパーサ・分散クエリプランナー・バッファリング 機能を搭載
- クエリ解析→実行シャード決定→結果集約までを一貫して処理
- 垂直・水平スケーリング 可能、ボトルネック回避
- シャーディングとシャードグループ
- 各シャードは本物のPostgres、拡張機能やパラメータを個別に設定可能
- シャードグループ単位でテーブルやワークロードを分離
- インスタンスサイズやレプリカ数、ストレージ容量等を グループごとに最適化
- コネクションプーリング
- 各Postgresインスタンス横にSidecar を配置
- Neki独自のプーリング で、PgBouncer以上に効率的な接続管理を実現
- RouterとPostgres双方を制御 し、インスタンス能力に応じたプール調整
- コントロールプレーン
- ノードのヘルスチェック、計画的スイッチオーバー・フェイルオーバーを実施
- リシャーディングやスキーマ変更、バージョンアップ 等のワークフローを統括
- データトポロジー
- JSON設定で論理テーブルと物理シャードをマッピング
- シャードインデックス(ルーティングカラムやハッシュ方法)や シャードグループ(テーブル分散先とシャード数)を指定
- Routerはトポロジーをキャッシュし、クエリごとに参照
Nekiのオンライン運用機能
- 全てのメンテナンス作業がオンラインワークフロー
- 新ノードのプロビジョニング、レプリケーションによるキャッチアップ
- __nekiメタファンクションによるトラフィックスイッチ、旧ノードのリタイア
- psql接続のまま一貫した操作
- スキーマ変更、バージョンアップ、フェイルオーバー、インポート、リシャーディング をオンラインで実施
- PlanetScaleの既存機能 (Insights、スキーマ推奨、ブランチング、MCP等)も利用可能
- 未シャーディング状態でも高機能
- コネクションプーリング、オンラインDDL、ゼロダウンタイムアップグレード、ヘルス監視
- 必要になった時点で 既存クラスタに対してリシャーディング実行
プラットフォームプレビューについて
- Nekiは現在プラットフォームプレビュー
- 本番運用は非推奨、仕様変更や互換性破壊の可能性あり
- フィードバックや質問はサポートチケットまたはDiscordで受付
- PlanetScaleにサインインし、プラットフォームプレビューに参加するとNekiクラスタ作成可能
- Nekiドキュメント でアーキテクチャやシャーディング方法を確認可能
- 大規模Postgresクラスタを運用中の場合、個別デモや設計相談も可能