非リレーショナル ワークロード向けの Spanner

Spanner は、信頼性に優れたフルマネージド データベース システムです。Spanner はリレーショナル データベース管理システムへと進化しましたが、そのルーツは非リレーショナルの Key-Value ストレージ システムであり、そのようなシステムの基本的な特性を受け継いでいます。そのため、非リレーショナル(NoSQL)データベースとして Spanner を使用し、他の非リレーショナル データベースから Spanner に移行できます。このドキュメントは、Spanner が非リレーショナル ワークロードに適しているかどうかを判断するのに役立ちます。

NoSQL データベースは、従来のリレーショナル データベースに、高いス拡張性、可用性、コンピューティングの弾力性を必要とする新しいアプリケーションをサポートする機能が欠けていた時代に使用され始めました。これらは、トランザクション、一貫性、アドホック クエリなど、データ管理に不可欠なことが多い機能のいくつかを犠牲にして実現されたものです。Spanner は、高可用性アプリケーションの厳しい要求と、従来のリレーショナル データベースが提供する機能の両方をサポートするように構築されており、その両方の機能を活用できます。

Spanner を使用すると、シンプルな非リレーショナル ストレージのニーズから開始して、必要に応じてアプリケーションを拡張できます。

Spanner が NoSQL データベースの基準を満たす仕組み

Spanner は、NoSQL ワークロードの次の主要な基準を満たしています。

規模とパフォーマンス

NoSQL データベースは、読み取りと書き込みを水平方向にスケーリングできるため、人気が高まっています。Spanner なら、スケールやパフォーマンスを心配する必要がありません。Key-Value スタイルの Spanner データベースは水平方向に拡張でき、1 秒あたり数億件の読み取り / 書き込みリクエスト、ペタバイト単位のデータに対応できます。Spanner のコンピューティング容量はワークロードに合わせてスケーリングされます。アプリケーションが数桁単位でスケーリングされたとしても、一貫した低レイテンシ プロファイルを維持できます。

NoSQL API

従来のリレーショナル データベースには通常、SQL を使用してアクセスしますが、リレーショナル データベースに慣れていないデベロッパーにとって、SQL の習得には時間がかかります。通常は、これらのデータベースのクライアントも永続的な接続に依存しており、拡張するには接続プール インフラストラクチャをデプロイする必要があります。一方で Spanner API は、接続の障害を自動的に処理する gRPC/HTTP2 リクエストおよびレスポンス モデル上に構築されています。Spanner は、SQL の知識を必要としない、シンプルで言語ネイティブ、かつ効率的な NoSQL 読み取りおよび書き込み API を提供します。さらに、Spanner クライアントはスケーリングのための接続プールを必要としません。

フルマネージド

NoSQL データベースの大きな魅力は、管理が容易であることです。Spanner はフルマネージド サービスであるため、顧客に運用上の負担が行くことはありません。Spanner は、下位互換性を維持しながら、バックグラウンドでゼロダウンタイムのソフトウェアとハードウェアの更新を行います。Spanner API とセマンティクスは、操作が単一のマシン データベースで実行されている場合と同じであり、Spanner の内部アーキテクチャに関する知識は必要ありません。Spanner は、10 分の 1 ノードから数万ノードまでのデプロイで実行され、マネージド オートスケーラーにより自動的かつレスポンシブにスケーリングされます。

半構造化データ

Spanner は、半構造化データや非構造化データの保存に使用される JSON や BYTES などの柔軟なデータ型をサポートしています。他の NoSQL データベースと同様に、これらのデータ型を使用すると、すべてのストレージ スキーマを事前に指定する必要がなくなります。

アクセス制御

他の NoSQL データベースと同様に、Spanner では IAM ベースのアクセス制御がサポートされています。管理者は、ユーザー名とパスワードをデータベースに保存せずに、アクセス制御ポリシーを構成および管理できます。

Spanner と従来の NoSQL データベースの違い

Spanner には、従来の NoSQL データベースにはない次の利点があります。

トランザクション

アプリケーションの複雑さが増すに従い、データベースに対する複数行および複数テーブルのトランザクション操作を実行する必要性が生じることがよくあります。Spanner では、読み取り / 書き込みトランザクションが完全にサポートされるため、データベースが拡大してもトランザクション データストアに移行する必要がありません。ACID 準拠のデータベースである Spanner は、規模に関係なく、データベースのトランザクションの一貫性を常に維持します。

データ モデリング

NoSQL データベースのスキーマ設計では不自然になる可能性があり、その理由は、すべてのデータを 1 つのテーブルに収める必要があり、また、結合を実行できないためにデータを強制的に非正規化する必要があるためです。Spanner を使用すると、単一のテーブルや非正規化に頼ることなくスキーマを指定できます。複数のテーブルにアクセスするアクセス パターンを最適化するために、テーブル インターリーブを使用できます。テーブル間で結合を行うこともできます。

アドホック クエリ

NoSQL API を主に使用している場合でも、デバッグや分析の目的でアドホック クエリを実行することが役立つ場合がよくあります。Spanner は SQL 標準クエリ言語に準拠しています。リクエストの優先順位付けを使用して、アドホックの低優先度トラフィックをオンライン トラフィックから分離したり、Spanner の Data Boost を使用して、オンライン データベース トラフィックから完全に分離されたコンピューティング リソースに対して分析クエリを実行したりできます。

強整合性のセカンダリ インデックス

多くの場合、アプリケーションでは、低レイテンシのルックアップをサポートするためにセカンダリ インデックスが必要です。一般的な NoSQL データベースでは、最終的に一貫性のあるセカンダリ インデックスが提供されるか、インデックスがどれだけ大きくできるかについての制約が課されます。そのため、これらの制約を回避する必要があるアプリ ロジックが複雑になる可能性があります。Spanner は、強整合性のセカンダリ インデックスを大規模に、サイズ制約なしで提供します。そのため、一貫性の問題を心配することなく、アプリケーション ロジックに集中できます。

強整合性のセカンダリ インデックス

Spanner は、SQL と NoSQL の両方のユースケースをサポートする柔軟なデータ ストレージ システムです。最初にシンプルなストレージ ニーズから開始したが、複雑さが増すに従い、トランザクション、一貫性のあるセカンダリ インデックス、柔軟なクエリ言語など、NoSQL データベースでは通常提供されない機能が一部のアプリケーションで必要になることがあります。Spanner では、これらの制限に縛られることなく、必要に応じてアプリケーションを拡張できます。

ほとんどの非リレーショナル ワークロードは Spanner に適しています。Spanner は、シンプルな NoSQL 読み取り/書き込み API を提供するだけでなく、高可用性、高信頼性、低レイテンシ、コンピューティングの弾力性、きわめて高い拡張性も備えています。Spanner を使用すると、多様なワークロードを単一の柔軟なプラットフォームに統合できます。