Google Cloudは、グローバルに分散されたフルマネージド・データベースであるSpannerにジオ・パーティショニング機能の追加を発表した。同社によると、この新機能は、地理的に分散したアプリケーションやユーザーのパフォーマンスとユーザー体験を向上させるとともに、運用コストの最適化を目的としている。
Spannerのジオ・パーティショニングは現在プレビュー中である。Spannerのユーザーは、世界中のさまざまな場所でテーブルデータを行レベルでパーティショニングできる。データが異なるパーティションに分割されているにもかかわらず、Spannerはクエリーやミューテーションのために単一のまとまったテーブルを維持し、シームレスなデータ管理を保証する。
Googleのシニア・エンジニアリング・マネージャーであるJerene Yang氏は、LinkedInの投稿でこう書いている。
これは何年もかけて作られたものです。行がさまざまな地理的な場所に存在でき、列の値だけで場所を指定でき、しかもトランザクションや複雑なクエリを実行できるデータベースを想像してみてください。
メリットとしては、ジオ・パーティショニングは、データをユーザーの近くに配置することでネットワークのレイテンシーを改善し、レスポンスタイムを高速化する。また、データベースの構成をカスタマイズすることで、コストを実際の使用量に合わせられるため、例えば、より多くのユーザーにサービスを提供するパーティションにより多くのリソースを割り当てるなど、コストを削減できる。
内部的には、この機能は次のように機能する。
- ジオ・パーティショニングは、1つのテーブルを複数のコンフィギュレーションに分散させることで、一元化されたテーブルの利点を維持しつつ、データをユーザーの近くに配置する。
- ユーザーは、一部またはすべてのテーブルをパーティショニングし、行レベルで特定の配置ルールを設定できる。
- アプリケーション・リクエストは、リクエストされたデータを含む関連パーティションにルーティングされる。
シニア・プロダクト・マネージャーのNitin Sagar氏は、Googleブログのジオ・パーティショニング機能に関する投稿で例を示している。
下の図に示すように、異なるデータパーティションは、パーティションが提供するデータの特定の要件(読み取り、書き込み、ストレージ)に基づいて、異なるノード数で構成できる。これにより、プレーヤーの非対称的な分布に対するコストを最適化できる。
ジオ・パーティショニングの例(出典:Googleブログ記事)
Googleのチーフ・エバンジェリスト、Richard Seroter氏はこうツイートしている。
Spannerのジオ・パーティショニングによって、テーブル・データを行レベルでパーティショニングし、世界中のユーザーに近い場所でデータを提供できます。Spannerは、分散されたすべてのデータを単一のまとまったテーブルとして維持し、クエリーやミューテーションをします。
最後に、Spannerのようなグローバル分散データベースも、同様のジオ・パーティショニング機能を提供している。例えば、CockroachDBはデータベースの同じ論理インスタンス内でのジオ・パーティショニングをサポートしており、Yugabyteは低レイテンシーでクラウドネイティブのジオ分散SQLアプリケーションを構築するテクニックを備えている。どちらのデータベースも、ユーザーにもっとも近いリージョンでデータを保存・処理できるため、非対称なグローバル・ワークロードのコストを最適化し、書き込みや堅牢な読み取りレイテンシーを削減できる。