2016-09-26 2 views
11

ノードが100万人の子供を持っている場合は、私があれば、パフォーマンスに影響があるでしょう:Firebaseパフォーマンス:ノードあたりの子供の数はいくつですか?

a)のクエリを、しかし10件の結果

Bには限度)のみ

私ができる子の1つを見ますデータを複数の親に分割しますが、私の場合は子への参照がありますので、直接参照することができます(複雑さが軽減されます)。インパクトがある場合、パフォーマンスが低下する前に各シナリオの最大数はいくらですか?

+2

このhttps://firebase.google.com/docs/database/web/structure-data –

+1

とhttps://firebase.google.com/docs/database/web/retrieve-data – Kato

+1

Iもお読みください。 (RecyclerViewで大きなリストを提示する)同様の問題がありました。http://stackoverflow.com/questions/36401332/firebase-android-offline-performanceここで私の解決策を見つけることができます:http://stackoverflow.com/a/37772597/6155664 – Niels

答えて

12

ノードにその子が多く含まれている場合、どのようにノードにアクセスするかは問題のレシピです。個々の子供にアクセスすることは決して問題ではありません。

子ノードのサブセットを照会するには、データベースがそれらの各子ノードを考慮する必要があります。 1億件のアイテムのうち最後の10アイテムをリクエストした場合、データベースに999,999,990個のアイテムが含まれていると思われます。

これ以上の具体的な説明がないと言うことはできませんしかし、正直言って、あなたが得る可能性が最も高いのは、経時的に変化する可能性のある大きな差異を持つ価値です。

Firebase(およびほとんどのNoSQLソリューション)では、アプリケーションがそのデータをどのように使用するかに合わせてデータをモデル化するのが最適です。たとえば、最新の10項目をユーザーに表示する必要がある場合は、最新の10項目を(別のリストに)格納します。

items 
    -K........0 
     title: "Firebase Performance: How many children per node?" 
     body: "If a node has 100 million children, will there be a performance impact if I:..." 
    -K........1 
     title: "Firebase 3x method won't working in real device but worked in simulator swift 3.0" 
     body: "Hi we are working with google firebase 3x version and we faced..." 
    . 
    . 
    . 
    -K999999998 
    -K999999999 
recent 
    -K999999990: true 
    -K999999991: true 
    -K999999992: true 
    -K999999993: true 
    -K999999994: true 
    -K999999995: true 
    -K999999996: true 
    -K999999997: true 
    -K999999998: true 
    -K999999999: true 

私はそこにナインの番号があるのか​​どうか分かりませんが、私はあなたがそのアイデアを得ることを願っています。

+2

「子供のみんなを見て」は、 'ref.child(childId).on( 'value'、...)と同じくらい簡単です。 – Kato

+0

ありがとう!特定のインデックスフィールドでクエリを実行している場合は、O(log(N))を達成できると期待しています。それはあなたが得るパフォーマンスの種類ですか? (これは100ミリのデータセットで約26回の試行になります) – CalM

+0

上記の例では、 'items'ノードの直接の読み込みがなかったとしても、' items'の増加するリストが問題になっていますか?何らかのアーカイブ機構を実装していますか? 'items/june2017'、' items/aug2017'などのように?または積極的に使用されていない場合は、すべてのアイテムを新しいノードに移動することができます。 – Atu

関連する問題