2017-02-26 19 views
0

組織のメンバーと支払いを処理するアプリケーションを作成しています。 私は、次のエンティティを持っている:Firebaseデータベースデザインの推奨事項

Organization---+ 
       | 
       +---Members-----+ 
       |    | 
       |    +---Children 
       +---Accounts 
       | 
       +---Payments 

>は10万1組織あたりの支払い、わずか数のメンバーとのアカウントが存在する場合があります。 会員がログインすると、彼の支払いのみを見ることができます。 adminにログインすると、彼はすべてのデータにアクセスできるはずです。

質問は次のとおりです。

  1. 私は、組織の階層構造を維持する必要がありますか私は、各エンティティを平らにする必要がありますか?私は、階層構造を維持したい場合には
  2. 、それは

おかげで一部のみのサブコレクション(すべてではないメンバーではなく、すべての支払い)と組織を得ることが可能です。

+0

近似/モデルではなく、今後の質問で実際のJSONを共有してください。今あなたは2つの答えが正しいかもしれないが、私たちはあなたを助ける代わりに、他の何が意味するものかを理解しようと時間を費やしている。 –

答えて

1

構造をフラットにし、可能な限り非正規化しておく必要があります。親ノードを照会すると、すべての子ノードとデータがロードされます。

はい、引き続き利用可能なSDKを使用してクエリ/フィルタを使用できます。

+1

私はすぐに同意していませんが、あなたは理由を説明することができます*なぜ*あなたは、データを平準の支払いリストとして保管すべきだと思いますか? –

+0

firebase nosqlデータベースを設計するためのリンクがあります。https://firebase.google.com/docs/database/web/structure-data – alltej

+1

私はそのドキュメントに精通しています。しかし、私はここにあなたが当てはまると思う部分が何かを理解していません。単一の階層で異なるデータ型を組み合わせることは、ほぼ間違いです。しかし、私が見る限り、それはここには適用されません。コレクションのネストは、Firebaseのリアルタイムデータベースでは非常によくあります。 –

5

Firebaseのリアルタイムデータベースには、取得しているデータの量とデータベースのデータ量を考慮する必要があります。

データベースに100Kの支払いを考慮して、現在のユーザーに対して<の支払いを10回表示すると、多くのリソースが無駄になりました。私はここでこれについて詳しく書いた:Firebase Scalability LimitFirebase Performance: How many children per node?

各ユーザーの支払いを個別にモデル化すると、サーバーが考慮する必要があるデータ量が大幅に削減されます。もちろん、スケーラビリティは向上しますが、もちろん直線的ではありません。

管理者ユーザーがすべてのデータを参照する必要がある場合は、最初にユーザーを選択することをお勧めします。その後、通常のユーザーと同じアクセスパターンに従います。

関連する問題