2017-12-10 7 views
1

私はFirestoreを使って私のアプリの最高のデータモデルを考えています。どのオプションがパフォーマンス/スケーラビリティに優れているか分かりません。 この1:Firestoreでは、オブジェクトの配列やサブコレクションのパフォーマンスが向上していますか?

[Collection] Estimates -> 
    [Document] Estimate1 = items: [{name: 'Design', price: 200}, {name: 'Development', price: 200}] 

またはこの1:

[Collection] Estimates -> 
    [Document] Estimate1 -> 
     [Collection] Items -> 
      [Document] Item 1 = {name: 'Design', price: 200} 
      [Document] Item 2 = {name: 'Development', price: 200} 

一方、もパフォーマンス上の問題以外に、私は、データモデルを選択する前に、私は別の考慮事項があります。つまり、「見積もり」ノードのすべてのコンテンツを「請求書」ノードにコピーする必要があり、両方のデータモデルでこれを実行できるかどうかはわかりません。

答えて

1

このドキュメントでは、FireStoreドキュメントモデルのいくつかの制限事項について説明します。それが依存

:あなたの質問(複数可)に

答えて https://firebase.google.com/docs/firestore/quotas

!あなたの見積もりに含めるアイテムの数によって異なります。ドキュメントは1 MBのデータを保持できるため、スケーラビリティに制限があります。

[Collection] Estimates -> 
    [Document] Estimate1 -> 
     [Collection] Items -> 
      [Document] Item 1 = {name: 'Design', price: 200} 
      [Document] Item 2 = {name: 'Development', price: 200} 

あなたは上記のオプションを使用して行けば、それは間違いなく、よりスケーラブルになります - だれでも望むようあなたは、コレクション内の事実上のように多くのドキュメントを持つことができます。

両方のオプションが機能し、どちらの方法でもデータを請求書にコピーできます。

ファイアストアは書き込みと読み取りに基づいて料金を請求するため、1つのドキュメントを使用するほうが安いかもしれません。たとえば、すべてのデータを1回の書き込みで1つのドキュメントに同時に書き込むと、すべてのデータを複数の異なるドキュメントに書き込むよりも安くなります。ただし、WriteBatchを使用してすべて同じデータを書き込んでも時間。

モデルに基づいて、あなたが構築しているものを推測して、それぞれの推定値に100個以上のアイテムが含まれていないと推測します。

+0

私はあなたの答えをupvoteするのに十分な評判がないので、ちょうどありがとうと言うためにstackoverflowルールに反対しています。 – monjo

関連する問題