我正在使用Google App Engine的数据存储区,并寻找一种针对用户状态的“喜欢”功能的设计解决方案(similair to Facebook“赞”)
我已经完成了Sharding Counters的概念(https://developers.google.com/appengine/articles/sharding_counters)并发现它很好并适合计算你可以增加或减少计数的喜欢数量。但我想存储喜欢该状态的userId。所以我尝试了相同的分片概念来存储userIds但面对以下问题, *首先,像计数一样shard userId列表是好的吗? *如果用户不喜欢它,我已从共享列表中删除用户ID。为此,我需要遍历所有分片数据存储区并执行userId检查并删除
有关这个或替代解决方案的任何建议吗?
答案 0 :(得分:0)
Sharding不适用于该情况。分片是为了避免在短时间内对同一对象进行多次写入。因为许多人喜欢同一个帖子,所以对“喜欢”的计数器有意义。当喜欢谁喜欢什么时,不一样。这些对象仅按用户更改,许多用户不共享同一对象。只需将它们存储在非分片表中,就像在sql中一样。