あなたのコメントを考慮して:
私は同意しますが、問題は速度にあり、MongoDB のシャーディング/レプリケーションは、たとえば MySQL よりも優れています...そして、小さな注文要素 (数百万単位) がたくさんあり、ここで RDBS には欠点があります。 .. :(
あなたはこれを間違って見ていると思います。MongoDB は、高速化するような方法でシナリオに適合する場合にのみ、RDBMS よりも高速になります。
数百万の行は、ほとんどのデータベースでシャードに値するものではなく、コモディティ サーバーでさえ、少なくとも数テラバイトの情報を処理できます。シャーディングは、必ずしもデータのサイズからではなく、RDBMS テクノロジの場合と同様に、書き込み容量を増やす必要があるためです。
ただし、スキーマの質問に答えると、注文を削除してクライアント内で置き換えることを除いて、現時点ではそのままにしておきます。
{
_id: ObjectId(),
name: 'sammaye',
orders: [
{oid:{},bid:{},cid:{},pid:{}},
{ //etc }
]
}
これは小さくて貧弱なオブジェクトであり、あまり多くの問題を引き起こすことはなく、毎日 100 ほど増加することはないため、重くて即時の断片化を引き起こすことはありません。
トラフィックと注文率で断片化が発生することがわかった場合は、いつでも 2 のべき乗のサイズ割り当て ( http://docs.mongodb.org/manual/reference/command/collMod/ ) を使用して解決できますが、私はすべきです。これは実際には短期的にはパフォーマンスが低下するため、このオプションを必要とせずに適用しないでください。
つまり、あなたが私たちに与えた情報で。そのスキーマをどのように設計するか。