gpt4 book ai didi

java - 如何解决MongoDB中的 "Digg"问题

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

不久前,一位 Digg 开发人员发布了这个博客“http://about.digg.com/blog/looking-future-cassandra”,其中他描述了 MySQL 中未得到最佳解决的问题之一。这被认为是他们转向 Cassandra 的原因之一。

我一直在玩 MongoDB,我想了解如何

为这个问题实现 MongoDB 集合

从文章中,MySQL 中此信息的架构:

CREATE TABLE `Diggs` (
`id` INT(11),
`itemid` INT(11),
`userid` INT(11),
`digdate` DATETIME,
PRIMARY KEY (`id`),
KEY `user` (`userid`),
KEY `item` (`itemid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `Friends` (
`id` INT(10) AUTO_INCREMENT,
`userid` INT(10),
`username` VARCHAR(15),
`friendid` INT(10),
`friendname` VARCHAR(15),
`mutual` TINYINT(1),
`date_created` DATETIME,
PRIMARY KEY (`id`),
UNIQUE KEY `Friend_unique` (`userid`,`friendid`),
KEY `Friend_friend` (`friendid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个问题在社交场景实现中普遍存在。人们与很多人交 friend ,他们反过来又挖掘了很多东西。快速向用户展示他/她的 friend 在做什么非常重要。

据我所知,从那时起,一些博客就此问题提供了带有索引的纯 RDBMs 解决方案;但是我很好奇如何在 MongoDB 中解决这个问题。

最佳答案

一种方法是在每个帖子中添加一组“ friend ”。

{
date: Date(...)
friends: ['me', 'you', 'thatguy']
...
}
db.posts.ensureIndex({friends:1, date:-1})

然后你可以通过这样做轻松地显示我的页面:db.posts.find({friends:'me'}).sort({date:-1})

只要每个用户的 friend 少于 200,000 个,这就可以工作;您可能需要特殊情况下来自用户的帖子不止于此。一种方法是将 friend 列表分成多个 100,000 个 block ,每个 block 创建一个帖子条目

关于java - 如何解决MongoDB中的 "Digg"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2823165/

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