Firestore の概要
Firestore は、Firebase と Google Cloud からのモバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルなデータベースです。 リアルタイム リスナーを介してクライアント アプリ間でデータを同期し、モバイルとウェブのオフライン サポートを提供します。これにより、ネットワーク レイテンシやインターネット接続に関係なく機能するレスポンシブ アプリを構築できます。Firestore は、その他の Firebase および Google Cloud プロダクト(Cloud Run 関数など)とのシームレスな統合も実現します。
主な機能
柔軟性 | Firestore データモデルは、柔軟な階層型データ構造に対応しています。データはドキュメントに格納され、ドキュメントはコレクションにまとめられます。ドキュメントには、サブコレクションの他に複雑なネスト オブジェクトを含めることができます。 |
高機能なクエリ処理 | Firestore では、個別のドキュメントを取得する場合や、クエリ パラメータに一致するすべてのドキュメントをコレクションで取得する場合に、クエリを使用できます。クエリには複数の連鎖フィルタを使用でき、またフィルタ処理と並べ替え処理を組み合わせることができます。デフォルトではクエリにはインデックスが付いているので、クエリのパフォーマンスは、データセットではなく結果セットのサイズに比例します。 |
スケーラビリティのある設計 | Firestore では、自動マルチリージョン データ レプリケーション、強整合性クエリ、アトミック バッチ オペレーション、トランザクション サポートが提供されています。 |
リアルタイム アップデート | Firestore はデータ同期を使用して、すべての接続済みデバイスのデータを更新します。ただし、シンプルな 1 回限りの取得クエリを効率的に実行するようにも設計されています。 |
オフライン サポート | アプリが頻繁に使用するデータがキャッシュに保存されるため、デバイスがオフラインの場合でも、アプリはデータの書き込み、読み取り、リッスン、クエリを実行できます。デバイスがオンラインに戻ると、ローカルでの変更が Firestore に同期されます。 |
仕組み
Firestore は、REST API と RPC API に加えて、Node.js、Java、Python、Unity、C++、Go のクライアント ライブラリでも利用可能なクラウドホスト型 NoSQL データベースです。Apple、Android、ウェブアプリも、クライアント ライブラリを使用してデータベースに直接アクセスできます。
Firestore の NoSQL データモデルに従い、値に対応するフィールドを含むドキュメントにデータを格納します。これらのドキュメントはコレクションに格納されます。コレクションは、データの編成とクエリの作成に使用できるドキュメントのコンテナです。ドキュメントでは、単純な文字列や数値から複雑なネスト オブジェクトまで、さまざまなデータタイプがサポートされています。また、ドキュメント内にサブコレクションを作成し、データベースの拡大に合わせて拡張できる階層型データ構造を構築できます。Firestore データモデルでは、アプリに最適なあらゆるデータ構造がサポートされています。
また、Firestore でのクエリ処理は機能性、効率性、柔軟性に優れています。層が少ないクエリを作成することで、コレクション全体またはネスト サブコレクションを取得することなくドキュメント レベルでデータを取得できます。クエリまたはカーソルに並べ替え、フィルタ、制限を追加して、結果をページ処理できます。更新が発生するたびにデータベース全体を取得することなく、アプリ内のデータを最新の状態に保つには、リアルタイム リスナーを追加します。リアルタイム リスナーをアプリに追加すると、クライアント アプリがリッスンしているデータが変更されるたびに、アプリからデータ スナップショットにより通知され、新しい変更だけが取得されます。
サーバーサイドの Identity and Access Management(IAM)によって Firestore のデータへのアクセスを保護します。Android、Apple プラットフォーム、JavaScript では、Firebase Authentication と Firestore セキュリティ ルールによってデータを保護します。
次のステップ
- Firestore を使ってみる - データベースを設定してデータを追加し、データの読み取りを開始する。
- Firestore データモデルの詳細をご覧ください。
- データベースを作成して管理する。