我试图弄清楚MongoDB是否需要交易,以及为什么你不会在一个文档中拥有所有内容。我也知道twitter使用的HBase确实有交易,所以我想到了一条推文和观察者。
如果我发布推文,它将被插入没有问题。但是我或其他任何人如何找到我的推文?我听说mongodb有索引所以也许我可以索引作者并找到我的推文然而我无法想象如果每个人都这样做有效率。还必须将时间编入索引。
所以从我的理解(我认为我看到一些幻灯片发布)推特有一个'时间轴'所以每次推特推特都会在每个时间轴中插入tweetid,该时间轴按日期索引,当给定用户浏览时抓取可用推文按时间排序。
如何在mongodb中完成?我能想到的唯一解决方案是在推文文档中有一列说{SendOut:DateStamp},完成后会删除。如果它没有在第一次尝试时完成(检查时间戳以猜测它是否应该现在完成)那么我需要检查所有观察者以查看谁没有收到它并插入但如果他们没有。但是,既然没有交易,我想我需要索引SendOut列?这个解决方案有用吗?我如何有效地插入推文并将其提供给每个观看用户的人? (如果这个解决方案不起作用)