我正在用MongoDB构建一个Hacker-News或Reddit风格的社交新闻站点。假设我想存储每个链接点击了多少人,以便将点击次数计入链接的流行分数。我应该如何整理我的数据?我可以:存储在MongoDB中点击链接的用户列表
A)存储点击每个链接对象中链接的用户数组。
B)存储的链接阵列中的每个用户对象
C)做既
d)做点其他的...(但什么?)
A的优势)是点击获取每个链接的点击次数是微不足道的。另一方面,B)的优点是您可以轻松地向用户显示他们点击的链接的历史记录。当然C)可以让你做到这一点,但是以复制数据为代价。
那么我应该选择哪种解决方案以获得最佳性能?有没有一种“正确”的方法来解决这个问题?
文件的最大尺寸将不会是一个问题 – Serdar
好方法。如果你想进一步推动它,你可以看看:http://github.com/danlucraft/presentations/raw/master/denormalizing.pdf - Songkick实际上只使用MongoDB进行非规范化,并保持其数据在SQL中保持标准化D B。这保持目的分开。顺便说一句,你可以只对MongoDB做同样的事情。只是区分你的规范化和非规范化(缓存)集合。 – jbescoyez