gpt4 book ai didi

ruby-on-rails - 使用 MongoDB (Rails) 时我应该如何设计 Users 和 Friends 表

转载 作者:可可西里 更新时间:2023-11-01 09:32:01 26 4
gpt4 key购买 nike

我正在从事社交网络类项目,建议的数据库是 MongoDB。

我之前参与过各种项目,并在关系数据库系统中设计过数据库,但由于我是 NoSQL 数据库 (MongoDB) 的新手。我坚持设计东西。

考虑下面的例子,

1) 该应用程序将有 Users 和 Friends 表来保存用户和用户的 friend 的数据。

现在,下面的设计是否正确?

用户:

_id       username password other_fields
----------------------------------------
2gsyexej2 balan adsfasf ..

用户 friend :

_id user_id friends
--------------------
1 2gsyexej2 friends
- 0
- friend_user_id = asdfdf23adfsasdf
- 1
- friend_user_id = efex89sdfsw0dfssf
etc.,

在上面的模型中,我使用了“手动引用”,从用户表中获取用户 ID并将其用作 user_friends 表中的引用。

这种方法正确吗?如果不是,请提出更好的方法。

谢谢,

巴兰

最佳答案

One user has 30 000 000 friends.

是认真的吗?中国版 Twitter 上最大的追随者新浪微博,其人均追随者数量超过 Facebook 和 Twitter 的总和,一个人大约有 2000 万。然而,这种情况很少见。

话虽这么说,将 friend 关系放在根文档中作为文档 ( http://docs.mongodb.org/manual/core/data-modeling/ ) 和@jorscas 建议根本不明智。

我可以很容易地想象,随着用户在网站上花费更多时间访问更多 friend 关系,文档会以持续快速的速度增长。出于几个原因,这会很糟糕,一个是因为 MongoDB 范围内的空间碎片,两个是因为快速增长的文档可能需要在磁盘上移动,这本身就是一个缓慢而密集的操作。还有更多原因,但这就足够了。

您还必须考虑 16 兆的限制,即使 8,000 个连接也会达到该限制。

所以我已经说过不要嵌入。您知道在关系模型中设计它的方式吗?我会这样做,在需要时进行非规范化,同时规范化用户之间的关系。

关于ruby-on-rails - 使用 MongoDB (Rails) 时我应该如何设计 Users 和 Friends 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358306/

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