※このブログは2024年9月19日に公開された英語ブログ「Scaling to the Cloud:TiDB Serverless vs. PlanetScale 」の拙訳です。
今日、アプリが世界中いつでも、どこにいても利用できることが当たり前となっています。しかし、その期待に応えるためには、インフラストラクチャが需要に応じて拡張でき、障害を回避し、一貫したパフォーマンスを維持できることが必要です。
幸いなことに、そのような要件を満たすデータベースプラットフォームがいくつかあります。しかし、競合する製品の中から選ぶのは簡単ではありません。
本比較では、選択を容易にするために、MySQL互換の分散データベースプラットフォームであるTiDB ServerlessとPlanetScaleの2つを取り上げます。
クイック・サマリー:TiDB Serverless vs PlanetScale
それでは、比較の本質に入っていきましょう。最適な選択は、最終的にあなたの優先事項によって決まります。
- スケーラビリティ:TiDB Serverlessは需要に応じて自動的にスケールしますが、PlanetScaleの自動スケーリングはエンタープライズプランに限定されます。
- 信頼性:TiDB Serverlessはデフォルトでmulti-region support に対応していますが、PlanetScaleはこの機能をエンタープライズ顧客向けに限定しています。
- 追加機能:TiDB Serverlessは、vector searchやクエリ最適化などのAI駆動のツールを備えています。一方、PlanetScaleはコアのMySQL機能に重点を置いていますが、AIを活用した機能拡張はありません。
- コスト:TiDB Serverlessは従量課金モデルで運営されており、変動するワークロードに対してよりコスト効率が良くなっています。一方、PlanetScaleは、非エンタープライズプランの場合、リソースを事前に予約する必要があります。
柔軟性、容易なスケーリング、そして高度な機能を求めているのであれば、TiDB Serverlessがより良い選択かもしれません。さらに詳しい比較分析をご覧ください。
TiDB Serverlessの概要
TiDB Serverlessは、MySQL互換のサーバレスデータベースシステムで、常時稼働するアプリケーションを開発するために必要なデータベースインフラを非常に簡単に設定・管理できます。オープンソースのTiDB上に構築されており、開発者がシャーディングやレプリケーションといった詳細について考える必要がないように設計されています。
TiDB Serverlessは、アプリケーションが必要とするリソースをオンデマンドで利用できるようにします。これは、基盤となるクラウドリソースを最大限に効率的に活用するために、一から構築された真のクラウドネイティブアーキテクチャのおかげです。このアーキテクチャは、異なるマイクロサービスから構成されており、それぞれが特定の役割を担っています。たとえば、メモリ集約型のワークロードは十分なメモリを持つインスタンスにデプロイされ、計算集約型のマイクロサービスはより多くの計算能力を得ることができます。
データベースプラットフォームを探している開発者にとって、これを考慮する理由は何でしょうか?TiDB Serverlessのアーキテクチャは、すべてのサーバが全く同じである場合よりも、リソースをはるかに効率的に割り当てることを可能にします。そのメリットは、低価格とより高いスケーラビリティの2つの形で現れます。
アーキテクチャに加えて、TiDB ServerlessはMySQLとの互換性の上に構築されているため、以下のようなメリットもあります:
- グラフベースのRAGを構築するためのVector searchにより、AIアプリケーションが可能
- AI支援によるSQL query editing
- 開発中にデータベースのコピーを迅速に作成できるDatabase branching機能
- データベースへのREST API アクセス
- スロークエリ、リソースのボトルネック、および潜在的な問題を特定するための一連の可観測性ツール
PlanetScaleの概要
PlanetScaleは、従来のMySQLデータベースのスケーラビリティと可用性の限界を克服するために設計された、マネージドMySQL互換のDatabase-as-a-Service (DBaaS) です。この機能は、MySQLをスケーラブルでクラウドネイティブなデータベースに変換するオープンソースプロジェクトである、Vitessによって提供されています。PlanetScaleは、以下の特徴を持ちます:
- シェアードナッシングアーキテクチャ
- コネクションプーリングとエッジインフラストラクチャ
- 非同期スキーマ変更とデータ損失なしでのスキーマロールバック
- データベースブランチングによる実データを使った簡単な開発
おそらくこれらの中で最も影響力が大きいのは「シェアードナッシングアーキテクチャ」で、これによりPlanetScaleはスケーリングと高可用性を実現しています。このアーキテクチャは、NoSQLデータベースやApache Kafkaなどのシステムでは一般的ですが、従来のMySQLの密結合型アーキテクチャとは大きな違いです。シェアードナッシングとは、すべてのノードが対等であることを意味します。ルーティング、クエリ、ストレージを担当するノードが分離されておらず、仮に1つのノードに問題が発生しても、全体のシステムはサービスに大きな影響を与えることなくスムーズに動作し続けることができます。
しかし、通常プランとエンタープライズプランのどちらを利用するかによって、使い勝手は異なります。通常プランの場合、クラウドのリージョンは1つに限定されてしまいます。自動水平スケーリングとデータのマルチリージョン配信を利用できるのは、月額3000ドルからのエンタープライズプランの契約が必要です。
マネージド vs サーバレス
TiDB ServerlessとPlanetScaleのアーキテクチャの違いは、それぞれの運用方法にも影響を与えます。すでに「マネージド・データベース」と「サーバレス」いう用語を使いましたが、これらは互換性があるわけではないことを理解しておく必要があります。
では、これらの違いがデータベースの運用や考え方にどう影響するのかを見ていきましょう。
マネージド・データベース:マネージド・サービスは、データベースの運用に関連する日々のDevOpsタスクを考慮する必要をなくしてくれます。その代わりに、アプリケーションの構築と保守にリソースを割くことができるという考え方です。
しかし実際には、メモリ、CPU、ストレージの適切な仕様をニーズに合わせて選択するなど、インフラに関する決定を下す必要があります。PlanetScaleのPro Scalerプランの場合、データベースに必要と思われるメモリとCPUを指定する必要があります。そして、これらのリソースを使用するかどうかにかかわらず、その指定したリソースに対して料金を支払うことになります。エンタープライズ・プランを選ぶと、PlanetScaleは自動的にスケーリングを行います。
サーバレスデータベース:サーバレスデータベースは異なるアプローチを取ります。サーバレスデータベースは、基盤となるインフラを全く考慮する必要がありません。その代わりに、アプリケーションがその時々で必要とするものに応じて、メモリとCPUを自動的に割り当てます。
そのため、リソースを確保するために料金を支払うのではなく、実際に使用した分だけ料金を支払います。開発者としては、データベースを常に利用可能なユーティリティとして扱うことができるため、アプリケーションの開発に集中することができるのです。
徹底比較
TiDB Serverlessと、PlanetScaleのアーキテクチャ的な違いを見てきましたが、ではデータベースとしてのパフォーマンスはどうでしょうか?
その疑問に答えるために、これらのカテゴリーを使って比較していきます:
- 基本的なデータベース機能:MySQL互換性を超えて、TiDB ServerlessとPlanetScaleは基本的な機能においてどのようにパフォーマンスを発揮するのでしょうか?例えば、クエリ処理、ACID準拠、インデックス作成などについて比較します。
- 追加機能:他にどのような追加機能があるのでしょうか?例えば、ベクトル検索を通じてAIアプリケーションのサポートは提供されているのでしょうか?
- パフォーマンスとスケーラビリティ:需要の変化に対して、どのように応答するのでしょうか?負荷がかかっても問題なく動作するでしょうか?また、トラフィックが落ち着いた時には自動的にスケールダウンすることができるのでしょうか?
- 回復力と信頼性:何か問題が発生した場合、どのように対応するのでしょうか?障害を回避し、アプリケーションが常に高い稼働率を維持できるように運用できるのでしょうか?
- 開発者体験と使いやすさ:これらのデータベースは開発者にとって使いやすいのでしょうか?SDKは提供されていますか?ドキュメントは充実していますか?また、コミュニティやサポートオプションはどのようになっていますか?
- 価格とコスト効率:価格モデルはどのように設定されており、それが実際に支払う金額にどのように影響しますか?
1.基本的なデータベース機能
MySQL互換のシステムとして、PlanetScale と TiDB Serverless はどちらも、現代のリレーショナルデータベースに期待される基本的な機能を提供しています。
PlanetScale | TiDB Serverless | |
MySQLの互換性 | MySQL 8とVitessクラスタリングサービス上で動作します。良好な互換性を提供しますが、いくつかの制限があります。 | MySQL5.7との優れた互換性を持ち、MySQLの遅れを取っている部分で改善が施されています。 |
ACIDトランザクション | 対応しています | 対応しています |
インデックス作成 | プライマリーキー ユニークキー 全文検索 B+ツリー 空間インデックス 降順インデックス その他のMySQLインデックスタイプ | プライマリーキー ユニークキー セカンダリインデックス 複合インデックス 不可視インデックス |
データタイプ | すべてのMySQLデータタイプ | 空間データ型を除くMySQLのすべてのデータ型 |
2.AIへの対応と効率性を追求した機能
標準的なリレーショナルデータベース機能を超えて、PlanetScale と TiDB Serverless は革新的なアプリケーションの構築を支援するためにどのような機能を提供しているのでしょうか?
PlanetScale | TiDB Serverless | |
AIアプリケーション向けのベクトル検索 | 提供していません | 提供しています |
データベースブランチング | 提供しています | 提供しています |
REST APIs | 提供しています。一般的なデータベース管理用です | データへのアクセスを提供しています |
AI支援型SQLクエリエディタ | 提供していません | 提供しています |
3.スケーラビリティ
データベースがどのようにスケーリングされるかは、需要の急増にうまく対応できるか、重要な時期にサービスの復旧に追われるような深刻な障害に直面するかを決定づける要因となります。
PlanetScaleとTiDB Serverlessがどのようにスケーリングを処理するかについては、水平スケーリングが利用可能かどうかを考慮する必要があります。
PlanetScaleでは、どのプランを選択するかが重要です。Pro Scalerレンジの通常プランでは、需要に対応するためにデータベースにどれだけの初期容量が必要かを計画する必要があります。つまり、常に容量が必要でなくても、必要な容量を確保しなければならない場合があります。これは、PlanetScaleが自動的な垂直スケーリングを提供せず、水平スケーリングが月額3,000ドルからのエンタープライズプランでのみ利用可能なためです。
TiDB Serverlessは、アプリケーションのワークロード需要に合わせて、シームレスにスケールすることで異なるアプローチを取ります。これにより、十分な容量があるかどうかを心配することなく、実際に使用した分だけを支払うことができます。
PlanetScale(non-enterprise plans) | TiDB Serverless | |
自動スケーリング | ストレージのみ | シームレスかつオンデマンドで可能です |
垂直スケーリング | 手動でプランを調整した場合のみ | |
水平スケーリング | エンタープライズプランのみ | |
ゼロへのスケール | 不可 | 可能 |
分散トランザクション | 可能 | 可能 |
4.信頼性と回復力
データベースの可用性特性を理解することは、アプリケーションをオンラインの状態に保つために非常に重要です。データベースは障害をどのように処理するのでしょうか?ダウンタイムなしでデータベースのスキーマを変更することは可能ですか?アップグレードのためにデータベースをオフラインにする必要がありますか?
ある意味で、信頼性はスケーラビリティとはコインの裏表のようなものです。スケーリングを可能にするアーキテクチャの選択が、同時に信頼性も高めることに繋がります。PlanetScaleでは、水平スケーリングをエンタープライズプランのユーザーに限定しているため、Pro Scalerプランはその性質上、提供できる信頼性が低くなります。
PlanetScale | TiDB Serverless | |
複数リージョン | エンタープライズ顧客専用 | TiDB Cloudでは可能です |
自動フェイルオーバー | Pro Scaler顧客には2つのレプリカに制限されています | TiDB Cloudでは可能です |
自動的なノンブロッキングスキーマ変更 | 可能です | 可能です |
ゼロダウンタイムのアップグレード | メジャーバージョン間のアップグレードには、ダウンタイムが必要な可能性があります | 可能です |
5.ユーザビリティと開発者体験
いかに早くユーザーに機能を届けることができるかは、どちらのデータベースが自分にとって最適かを決める大きな要因です。
PlanetScaleもTiDB ServerlessもMySQLとの強力な互換性を提供しており、幅広いツールや学習教材、専門知識にアクセスできます。しかし、それに加えて、これらのサービスは何を提供しているのでしょうか?
PlanetScale | TiDB Serverless | |
無料プラン | なし | あり (25GiBの無料ストレージ) |
オープンソース | オープンソースのMySQLとVitessに基づいたもの | オープンソースのTiDBに基づいたもの |
ドライバとORM | MySQLドライバおよびORMをサポートしています。また、PlanetScale専用のサーバレスJavaScriptドライバも提供しています。 | 主要なプログラミング言語向けのドライバを提供しています。またHibernate、などのORM、Spring Data、jOOQ、JDBCなどもサポートしています。 |
CLI (コマンドラインインターフェース) | あり | あり |
25GiBの無料リソースでサーバレスデータベースを立ち上げてみよう。
6.料金プラン:月額39ドルから vs 無料スタート
マネージドプランとサーバレスプランの価格の違いは、データベースの全体的なコストに大きな影響を与える可能性があります。どのように異なるのか見てみましょう。
- PlanetScale:Pro Scalerプランは月額$39から開始され、必要とするデータベースのメモリとCPUを選択し、使用したストレージ分だけを支払います。エンタープライズプランは月額$3000からで、ほとんどの開発者にとっては妥当ではない場合が多いです。
- TiDB Serverless:TiDB Serverlessでは、事前に必要なメモリや処理能力を推定する代わりに、従量課金モデルを採用しています。書き込みや読み取り、SQLクエリ処理に費やしたCPU時間など、実際の使用量に基づいてのみ料金が発生します。基準となるインスタンス価格はなく、実際に使用した分だけを支払うことになります。TiDB Serverlessの効率化にどのように取り組んだかについて、さらに詳しくはこちらをご覧ください。
選択ガイド:最適な選択肢を選ぶ方法
データベースは、おそらくアプリケーション・アーキテクチャの中で最も重要なコンポーネントです。個々のマイクロサービスや外部ツールは変化するかもしれませんが、データベースは長期的な選択であり、そのパフォーマンス特性、開発者の経験、価格設定が、最終的にエンドユーザーにどれだけ良いサービスを提供できるかを決定します。
では、2つの異なるデータベースの選択肢の間で、どのように決めるべきでしょうか?その答えは、何を最も重視するかにかかっています。TiDB ServerlessとPlanetScaleを比較してみましょう:
- マネージド vs サーバレス:データベースの容量計画や管理ではなく、アプリケーションに集中したいのであれば、TiDB Serverlessがより適した選択肢と言えるでしょう。PlanetScaleのエンタープライズプランは自動スケーリング機能を備えていますが、その機能を活用するには本格的な投資の準備が必要となります。
- MySQL互換性:もしMySQLと100%の互換性が必要であれば、PlanetScaleもTiDB Serverlessも完全には対応できません。どちらも、レプリケーション、スケーリング、ブランチングなどの機能を実現するために、必要な機能の大部分をカバーしていますが、それを実現するためにいくつかの制約があります。
- コア機能:PlanetScale、TiDB Serverlessとも、基本的なリレーショナルデータベース機能に関して必要な項目をすべて満たしています。ただし、TiDB Serverlessのみが、クエリの改善をサポートするAIアシスタントやベクトル検索機能を提供しています。
- スケーラビリティと信頼性:もし費用を支払う準備ができていれば、PlanetScaleのエンタープライズプランは需要の急増に対応し、グローバルなユーザーへのサービス提供をサポートできます。しかしPro Scalerプランだけが必要なのであれば、PlanetScaleとTiDB Serverlessの間には比較の余地がほとんどありません。PlanetScaleのPro Scalerプランは、実際にはスケーリング機能がなく、手動でスケーリングしない限り、スケールできないからです。また、単一のクラウドリージョンに限定され、水平スケーリングのオプションがないため、信頼性の面で劣っています。一方、TiDB Serverlessは最初から分散型のトランザクショナルデータベースとして設計されており、個々のノードに障害が発生してもオンラインの状態を維持します。そして、TiDB Serverlessではスケーリングについて心配する必要はなく、アプリケーションの需要に自動的に合わせてスケールし、必要に応じてゼロにまでスケールダウンすることもできます。
- 開発者体験:どちらのデータベースも良好な開発者体験を提供しており、使い慣れたツールに加えて、データベースブランチングやゼロダウンタイムでのスキーマアップグレードといった機能があります。しかし、TiDB ServerlessのみがSQLクエリの最適化を支援するAIアシスタントを提供しています。
- コスト効率:PlanetScaleは使用量ではなく容量に対して料金を請求するため、実際に使用しなくても予想される容量分を支払うことになります。一方、TiDB Serverlessは実際に使用した分に対して料金を請求します。この違いは、特に負荷が変動しやすい場合に重要です。
信頼性やスケーラビリティ、NoOps体験を求めているなら、TiDB Serverlessはまさに最適な選択です。無料プランで、今すぐその利便性を実感してみませんか?
無料でサインアップTiDB Cloud Dedicated
TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。
TiDB Cloud Serverless
TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。