1

API を構築していて、いくつかのデータを保存する必要があります。XML ではなく JSON を応答形式として使用していますが、データを保存する方法が本当にわかりません。たとえば、これがあります

 {users: [
  user: "name",
  products: [Array with more than 100 products],
  etc: "other items"], etc...
 }

問題は、ユーザー内に多くの配列があるため、データベースのパフォーマンスに影響を与える可能性があるため、NoSQL またはリレーショナル DB を選択するかどうかわからないことです。だから私の質問は本当に、オブジェクト内に多くの項目を持つネストされた配列が多すぎると、データベースのパフォーマンスに影響しますか? または、データを保存する別の方法を選択する必要があります

4

1 に答える 1

1

NoSQL db を使用している場合、複数の行にデータを保存 (または正規化) すると、NoSQL の最良の目的の 1 つが効果的に無視されます。すべてをまとめて保存すると、IO が少なくなるため、ソフトウェアが高速になります。

私のプロジェクトでは、ユーザー データとプロパティ (サード パーティのアプリが OAuth 経由で設定できるもの) 全体を 1 つのドキュメントに格納しています。MongoDB には 16MB のドキュメント サイズ制限があり、これはソフト リミットです。

この状況では、どのフィールドがすべてに共通であるか (id、name など) を判断し、これらの共通フィールドの最大サイズを設定できます (name は 128 文字とします)。MongoDB 文字列は UTF-8 です。これらの静的フィールドがすべてのドキュメントの X バイトを占めると判断できるようになりました。残りの 16MB - X バイトは、配列やカスタム プロパティなどに割り当てるために、すべてのドキュメントにあります。

最大サイズ M をこれらの値に設定すると、上限値 N=(16MB - X バイト)/M を設定して、ドキュメント データが制限を超えてオーバーフローするのを効果的に防ぐことができます。

于 2012-09-20T04:48:45.557 に答える