質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Q&A

解決済

1回答

413閲覧

Cloud Firestoreのクエリのパフォーマンスがデータセットではなく、結果セットのサイズに比例するのはなぜですか?

kazutom

総合スコア8

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

0グッド

0クリップ

投稿2019/07/06 08:12

以下のドキュメントではCloud Firestoreでは結果セットのサイズにパフォーマンスが影響すると記載されています。

どのような検索アルゴリズムの場合、データセットではなく結果セットのサイズにパフォーマンスが依存するのか興味があり質問しました。
ご存知の方がいらっしゃれば教えていただきたいです。

Firestoreドキュメント

クエリはデフォルトでインデックス付きになります。クエリのパフォーマンスは、データセットではなく、結果セットのサイズに比例します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご質問

Cloud Firestoreのクエリのパフォーマンスがデータセットではなく、結果セットのサイズに比例するのはなぜですか?

回答

その理由は、引用されてる文の中に記載されています。以下です。

クエリはデフォルトでインデックス付きになります

Firestoreはすべてのクエリにインデックスを使用することで(良くクエリが弱いと言われるようにクエリに制約をもうけている点もありますがここでは触れません)、優れたスケーラビリティと高いパフォーマンスを実現しています。
以下の部分も参照してみてください。
https://firebase.google.com/docs/firestore/query-data/index-overview?hl=ja

クエリを実行する際にインデックスが存在しないと、ほとんどのデータベースではアイテムごとにデータベースのコンテンツ全体をクロールすることになるため、データベースが大きくなるにつれて処理が大幅に遅くなります。Cloud Firestore では、すべてのクエリにインデックスを使用することで、クエリの高パフォーマンスを確保します。その結果、クエリのパフォーマンスは結果セットのサイズに依存することになり、データベース内のアイテム数には依存しません。

また、Firestoreは独自の分散アーキテクチャを使用して自動的にスケーリング管理するので、データはあちこちに散らばっています。

極端な例で説明すると、あちこちに散らばっているデータ100のうち50を要求するよりも、インデックスを使って10,000のうち1を要求する方がパフォーマンスが良いということです。

これ以上の情報は一般公開されてないと思うので、もう少し深くGoogle独自の分散アーキテクチャについて知りたければBigTableSpannerの論文等も読み漁ってみると良いかもしれません。

投稿2019/07/06 09:24

編集2019/07/06 11:56
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazutom

2019/07/06 11:14

回答を拝見した後、ドキュメントを読み返し理解しました。 私の日本語の理解が誤っており、 本来は「データセットのサイズより結果セットのサイズの方がサイズの増大に対してパフォーマンス劣化が激しい」という意味合いにもかかわらず 「クエリのパフォーマンスはデータセットのサイズによらない」と認識してしまい今回の質問を投稿してしまいました。 申し訳ないです。 BigTableやSpannerといった言葉は初めて耳にしましたので少し調べてみようと思います。 丁寧なご回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問