2013-10-11 26 views
0

我正在使用Google App Engine的数据存储并寻找用于用户状态的“喜欢”功能的设计解决方案(喜欢facebook) “)GAE数据存储设计存储用户状态的“喜欢”机制(如Facebook的“喜欢”)

我已经通过了Sharding Counters的概念(https://developers.google.com/appengine/articles/sharding_counters),发现它很好,适用于计数可以递增或递减计数的喜欢数。但我想存储喜欢这个状态的userId。所以我尝试了相同的分片概念来存储userId,但是面临以下问题, *首先将userId分割为count这样很好? *如果是这样,当用户不喜欢它,我已经从共享列表中删除用户标识。为了实现这一点,我需要遍历所有分片数据存储并执行userId检查并删除

对此解决方案或其他解决方案有何建议?

谢谢!

回答

0

Sharding不适用于这种情况。分片是为了避免在短时间内对同一个对象进行多次写入。因为许多人喜欢同一个帖子,所以对'喜欢'的计数器有意义。当他们喜欢什么的时候不一样。这些对象只会改变每个用户,许多用户不会共享同一个对象。只需将它们存储在非分片表中,就像在sql中一样。

+0

好的。所以我们需要另外一张具有“user id” - “post id”结构的表格。但是,我们如何才能有效地计算帖子喜欢以及如何获得喜欢的帖子? –

+0

对于大数据,您需要基于或类似于mapreduce的内容 –

相关问题