- アトミック トランザクション: すべてのオペレーションが成功するか、またはどのオペレーションも発生しない一連のオペレーションを実行します。
- 読み取りと書き込みの高可用性: データベースは Google データセンターで実行され、冗長性を使用して障害点の影響を最小限に抑えます。
- 優れた拡張性と高いパフォーマンス: 分散アーキテクチャにより、スケーリングが自動的に管理され、負荷の高い状態でもパフォーマンスが維持されます。
- データの柔軟な保存とクエリ: ドキュメント データモデルは、オブジェクト指向言語やスクリプト言語に自然にマッピングされ、複数のクライアントを介してアプリケーションに公開されます。Firestore の Datastore 互換 API は、SQL ライクなクエリ言語も提供します。
- 強整合性: クエリは強整合性を持ちます。
- 保存時の暗号化: データはディスクに書き込まれる前に自動的に暗号化され、承認済みのユーザーが読み取りを行う際に自動的に復号されます。詳細については、サーバーサイド暗号化をご覧ください。
- 計画的なダウンタイムのないフルマネージド サービス: サービスの管理は Google が行うため、デベロッパーはアプリケーションに集中できます。サービスが予定されたアップグレードを受けるときにも、アプリケーションは引き続き Firestore を使用できます。
リレーショナル データベースとの比較
Datastore のインターフェースは、リレーショナル データベースと同様の機能を多数備えていますが、これは NoSQL データベースのため、データ オブジェクト間の関係を表現する方法は異なります。ここでは Datastore とリレーショナル データベースのコンセプトをおおまかに比較します。
| コンセプト | Datastore | Firestore | リレーショナル データベース |
|---|---|---|---|
| オブジェクトのカテゴリ | 種類 | コレクション グループ | テーブル |
| オブジェクト単体 | エンティティ | ドキュメント | 行 |
| オブジェクトの個々のデータ | プロパティ | フィールド | 列 |
| オブジェクトの一意の ID | キー | ドキュメント ID | 主キー |
リレーショナル データベースのテーブルの行とは異なり、Datastore では同じ種類のエンティティが異なるプロパティを持つ場合があります。また別々のエンティティが同じ名前のプロパティを持ちながら、値の型が異なる場合もあります。これらの独自の特徴を使用して、自動的にスケーリングするようにデータを設計、管理できます。
すべてのクエリは構築済みのインデックスによって提供されるため、Datastore API で実行できるクエリのタイプは、SQL を使用するリレーショナル データベースで許可されているものよりも制限が厳しくなります。特に Datastore では、結合オペレーションや複数のプロパティに対する不等式フィルタリング、サブクエリの結果に基づいたデータに対するフィルタリングがサポートされていません。アプリケーションで結合やサブクエリなどの高度なクエリ機能が必要な場合は、Firestore ネイティブ API または MongoDB 互換 API の使用を検討してください。
リレーショナル データベースではスキーマが強制されますが、Datastore はスキーマレスです。同じ種類のエンティティであってもプロパティ セットの一貫性は求められません(ただし、独自のアプリケーション コードでこのような要件を強制することもできます)。
ストレージとデータベースに関するその他のオプション
Firestore の Datastore 互換 API は、以前の App Engine アプリケーションをサポートすることを目的としています。新しいアプリケーション向けのドキュメント指向の NoSQL データベースを探している場合は、Datastore API ではなく Firestore API のいずれかを使用して、より高度な機能を利用することをおすすめします。オプションの詳細。
Firestore はスケーラビリティの高いドキュメント データベースですが、すべてのユースケースに適しているとは限りません。たとえば、リレーショナル データベースの最適な代替手段ではない場合があります。代替データベースを検討すべき一般的なシナリオを次に示します。
- SQL を完全にサポートするオンライン トランザクション処理(OLTP)システム向けのリレーショナル データベースが必要な場合は、Cloud SQL を検討してください。
- ACID トランザクションのサポートが不要な場合、またはデータが高度に構造化されていない場合は、Bigtable を検討してください。
- オンライン分析処理(OLAP)システムでのインタラクティブなクエリが必要な場合は、BigQuery を検討してください。
- 大容量の画像やムービーなど、大規模な不変 blob を格納する必要がある場合は、Cloud Storage を検討してください。
他のデータベース オプションについて詳しくは、データベース サービスの概要をご覧ください。