はじめに
前回に続いて、2023年に公開された論文「Firestore: The NoSQL Serverless Database for the Application Developer」に基づいて、Google Cloudで提供されるNoSQLデータベースサービス「Firestore」のアーキテクチャーを解説していきます。今回は、データの検索・書き込みの詳細を解説します。
検索処理の仕組み
前回の記事で説明したように、Firestoreの検索処理は、すべてインデックスを用いて行われます。特に、ドキュメントに含まれるキー・バリューペアのそれぞれのキーについて、1次インデックスが自動的に用意されます。この際、特定のキーに対するインデックスには、固有のindex-idが割り当てられて、バリューの値から逆に、その値を持つドキュメントを逆引きする仕組みが用意されます。この部分の仕組みはとてもシンプルで、新たなキー・バリューペアが保存されるごとに、SpannerのIndexEntriesテーブルに、(index-id, value, name) のタプルをキーとするレコードが保存されます。valueとnameは、それぞれバリューとドキュメント名をバイト値にエンコードしたものです。FirestoreのドキュメントとSpannerのIndexEntriesテーブルの対応関係は、図1のようなイメージになります。
この続きは以下をご覧ください
(リンク »)
お問い合わせにつきましては発表元企業までお願いいたします。

