背景
RDBMSデータベースからMongoDBへの変換のプロトタイプを作成しています。非正規化している間、2つの選択肢があるように見えます。1つは数百万の小さなドキュメントにつながるか、もう1つは少数(数十万)の大きなドキュメントにつながるかです。
それを単純なアナログにまとめることができれば、次のような顧客ドキュメントが少ないコレクションとの違いになります(Javaの場合)。
クラス顧客{
プライベート文字列名。
プライベートアドレスアドレス;
//各CreditCardには数百のPaymentインスタンスがあります
プライベートセット<CreditCard>クレジットカード;
}
または、次のような多数の支払いドキュメントを含むコレクション:
クラス支払い{
個人顧客顧客;
プライベートクレジットカードクレジットカード;
プライベート日付payDate;
プライベートフロートpayAmount;
}
質問
MongoDBは、多数の小さなドキュメントを優先するように設計されていますか、それとも少数の大きなドキュメントを優先するように設計されていますか?答えは、実行する予定のクエリに大きく依存しますか?(つまり、顧客Xは何枚のクレジットカードを持っていますか?vsすべての顧客が先月支払った平均金額はいくらでしたか?)
私はよく調べましたが、質問に答えるのに役立つMongoDBスキーマのベストプラクティスに出くわすことはありませんでした。