私は効率的なクエリのためにほとんどどこでもFirebase Database
を構造化していますが、私はまだ2つの選択肢の間で少し混乱しています。Firebase - 効率的なインデックス作成のためのデータ構造
たとえば、過去7日間ほどのユーザーのすべての「maxBenchPressSessions」を取得したいとします。
私はこれら二つの構造の間で選ぶの間にこだわっている:最初の配列で
、私はどうか真か偽のインデックスの属性として、ユーザーのIDを使用します。 2番目の例では、値NAMEのユーザーIDとなるNAME属性としてuserId
を使用します。
どちらか一方が速いのですか、比較的同じようにインデックスが付けられますか?私はデータベース設計に新しいことがあるので、私は正しいプラクティスに従っていることを確認したい。
PROGRESSは
私は両方の私のデータベースを平らにし、私は一度だけorderBy
を使用してListenerForSingleValueEvent
追加できるようになります解決策が出ているが、私は確認したい場合にのみ、ユーザーが持っている場合セッションは特定の日に保存されます。
私は、各maxBenchPressSession
オブジェクトがuserId_dateString
の形式のキーを持つことができます。しかし、私が最後の7日間のすべてのユーザーのセッションを取得したい場合、私は1つのクエリでそれを行う方法がわかりません。
アイデア?
本質的に速いか遅いはデータ構造がありません。違いは、コードからデータにアクセスする方法によって異なります。あなたが書きたい質問を表示すると、助けがより簡単になります。一般的には、あなたのアプリがそれにアクセスする方法のデータをモデル化します。 [NoSQLデータモデリング](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)についての記事を参照してください。 –
私は単一の値のイベントリスナーを使って1つのクエリを作成します。私はすべての 'maxBenchPressSessions'を過去7日間のユーザーから取得します。 – Rafi