有名称和价格的产品。
用户记录他们购买的产品。
# 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字节,那么一篇日志的大小是12+4+4+100=120字节。文档的最大大小为 4MB,因此每个用户的最大日志量为 4MB/120bytes = 33,333。如果假设用户每天记录 10 次购买,则在 33,333/10 = 3,333 天 ~ 9 年内达到 4MB 限制。好吧,9 年可能没问题,但如果我们需要存储更多数据怎么办?如果用户每天记录 100 次购买会怎样?
这里的其他选择是什么?我必须完全正常化吗?
# option 2: normalized
product = { id, name, price }
log = { id, user_id, product_id, quantity, datetime, comment }
user = { id, name }
嗯。我们回到了关系。