名前と価格の商品があります。
ユーザーは、購入した製品についてログに記録します。
# option 1: embed logs
product = { id, name, price }
user = { id,
name,
logs : [{ product_id_1, quantity, datetime, comment },
{ product_id_2, quantity, datetime, comment },
... ,
{ product_id_n, quantity, datetime, comment }]
}
私はこれが好き。しかし、製品 ID の長さが 12 バイトで、数量と日時が 32 ビット (4 バイト) の整数で、コメントが平均 100 バイトの場合、1 つのログのサイズは 12+4+4+100 = 120 バイトになります。ドキュメントの最大サイズは 4MB であるため、ユーザーあたりのログの最大量は 4MB/120 バイト = 33,333 です。ユーザーが 1 日あたり 10 回の購入を記録すると仮定すると、33,333/10 = 3,333 日 ~ 9 年で 4MB の制限に達します。まあ、おそらく 9 年は問題ありませんが、さらに多くのデータを保存する必要がある場合はどうでしょうか? ユーザーが 1 日あたり 100 回の購入を記録した場合はどうなりますか?
ここで他のオプションは何ですか?これを完全に正規化する必要がありますか?
# option 2: normalized
product = { id, name, price }
log = { id, user_id, product_id, quantity, datetime, comment }
user = { id, name }
うーん。リレーショナルに戻ります。