【问题标题】:GAE datastore design to store "like" mechanism for user's status (like Facebook's "likes")GAE 数据存储设计用于存储用户状态的“点赞”机制(如 Facebook 的“点赞”)
【发布时间】:2013-10-11 13:38:33
【问题描述】:

我正在使用 Google App Engine 的数据存储区并为用户状态的“点赞”功能寻找设计解决方案(类似于 Facebook 的“点赞”)

我浏览了分片计数器的概念 (https://developers.google.com/appengine/articles/sharding_counters),发现它很好,适合计算喜欢的次数,您可以在其中增加或减少计数。但我想存储喜欢该状态的用户 ID。所以我尝试了相同的分片概念来存储 userId,但面临以下问题, * 首先,像计数一样对 userId 列表进行分片好吗? * 如果是这样,当用户不喜欢它时,我已经从共享列表中删除了用户 ID。为此,我需要遍历所有分片数据存储并执行 userId 检查和删除

对此或替代解决方案有何建议?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore sharding


    【解决方案1】:

    分片不适用于这种情况。分片是为了避免在短时间内对同一个对象进行多次写入。因为很多人都喜欢同一个帖子,所以对于“点赞”计数器来说是有意义的。搜索谁喜欢什么时不一样。这些对象仅根据每个用户更改,许多用户不共享相同的对象。只需将它们存储在非分片表中,就像在 sql 中一样。

    【讨论】:

    • 好的。所以我们需要另一个表,其结构类似于“用户 ID”-“帖子 ID”。但是我们如何才能有效地统计帖子的点赞数以及如何获得按点赞排序的帖子呢?
    • 对于大数据,您将需要基于或类似于 mapreduce 的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多