gpt4 book ai didi

mongodb - 你将如何在 MongoDB 中对此进行建模?

转载 作者:可可西里 更新时间:2023-11-01 10:08:06 25 4
gpt4 key购买 nike

有些产品有名称和价格。

用户记录他们购买的产品。

# 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 }]
}

我喜欢这个。但是如果product ids是12bytes,quantity和datetime是32位(4bytes)整数,comments平均100bytes,那么一个log的大小就是12+4+4+100 = 120bytes。文档的最大大小为 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 }

嗯。我们回到了关系。

最佳答案

如果大小是主要问题,您可以使用 mongo DbRef 继续选项 2| .

     logs : [{ product_id_1, quantity, datetime, comment },
{ product_id_2, quantity, datetime, comment },
... ,
{ product_id_n, quantity, datetime, comment }]

并使用 Dbref 将此日志嵌入用户内部,类似于

       var log = {product_id: "xxx", quantity:"2", comment:"something"}
db.logs.save(log)
var user= { id:"xx" name : 'Joe', logs : [ new DBRef('logs ', log._id) ] }
db.users.save(user)

关于mongodb - 你将如何在 MongoDB 中对此进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com