オープンソースのVitessデータベースクラスタリングシステムを支援するPlanetScaleは先頃、既存のパブリッククラウドアカウントから同社のデータベースと管理機能を実行するオプションのPlanetScale Managed Cloudを発表した。
今年初めにPlanetScaleは、異なる組織のデータベースが計算リソースを共有する共有テナンシモデル(shared tenancy model)をローンチしたが、これには規制上の要件や法的制約のある企業向けの単一テナント管理オプションが提供されていなかった。PlanetScaleのサイトリライアビリティエンジニアであるJames Cunningham氏は、新たなアプローチを次のように説明している。
PlanetScale Managed Cloudはパッケージ化されたデータプレーンです。VitessとKubernetesの上に構築されており、ユーザが所有し運用するAWSのサブアカウントにデプロイされます。当社がホストプロダクトを提供していないリージョンを含む、任意のAWSリージョンが選択できます (...) データベースの操作は、当社の他のホストプロダクトと同様、app.planetscale.comを通じて行います。pscaleツールやCIワークフローを変更する必要はありません。
PlanetScaleは、大量のデータを処理可能な、クラウドスケーラブルなMySQLデータベースを、特定のクラウドプロバイダにロックインされたり、データベースクラスタリングアプローチによる水平スケーリングに依存することなく構築するための支援をする。
PlanetScaleは2018年、Vitessオープンソースプロジェクトの開発者でメンテナのJiten Vaidya、Sugu Sougoumarane両氏によって設立された。2011年からYouTubeのデータベースインフラストラクチャのコアコンポーネントとして使用されているVitessは、汎用シャーディング(generalized sharding)によってMySQLの水平スケーリングを行うデータベースクラスタリングシステムである。シャーディングされたデータベースを単一インスタンスであるかのようにユーザに見せ続けるため、Vitessは、MySQLの大きな3つの制約 — 大規模クラスタの管理、クラウドでのネイティブ実行、NewSQLスケーラビリティの提供 — に対処するように設計されている。
出典: https://planetscale.com/blog/introducing-planetscale-managed-cloud
マネージドNewSQLデータベースをパブリッククラウド環境で提供する企業は、PlanetScaleだけではない。その他の選択肢として、PostgreSQL上に構築されたマネージド分散SQLデータベースのYugabyte Cloudや、CockroachDBのサポートするCockroachCloudなどがある。Googleも先頃、Cloud SpannerのPostgreSQLインターフェースを発表しており、専門家たちは、PostgreSQLが最新SQLデータベースの標準になることを示唆している。Sougoumarane氏はQCon 2019で"Massively Scaling MySQL Using Vitess"と題したセッションを行い、同オープンソースプロジェクトの背景となった考えについて説明した。
Vitesseは基本的にシャーディングミドルウェアです。現在はMySQLを対象としていますが、他のデータベースにも対応可能です。数万ノード、数百万QPSというように、事実上無制限のスケーリングを実現してくれます。
GitHubのアプリケーションセキュリティエンジニアであるBrian Anglin氏は、標準的なMySQLからVitessとPlanetScaleに移行することによるメリットと課題を、次のように説明している。
数多くの優秀なGitHubエンジニアたちが最終的にPlanetScaleを選んだ結果、シンプルなマイグレーションを成功させたプロセスを目の当たりにした私たちは、同じサービスを使用する選択をしました (...) PlantScale、より具体的にはVitessでひとつ奇異なのは、外部キーのサポートがないことです。外部キーは基本的に、オンライン・スキーママイグレーションとは相容れません。"オンライン・スキーママイグレーション"とは、要は何もロックしないでデータベースのスキーマを変えることだからです。といっても大したことではありません。回避策はいくらでもあります。ただし、外部キーがないことの結果のひとつとして、インデックスの自動生成はできません。
別の記事ではGitHubが、同社がリレーショナルデータベースをパーティショニングしてスケールアップに対応した方法について説明している。PlanetScale Managed Cloudは現時点ではAWSで使用可能だが、Google Cloud Platformも近々サポートされる予定である。