【发布时间】:2015-07-05 16:22:37
【问题描述】:
这是我的用例:
我使用 MySQL 作为我的主要数据存储并使用 CloudSearch 进行搜索。数据库包含表:threads、cmets、upvotes、users。
我创建了一个表达式,使用 upvotes 和 created_at 日期(Hacker News Hot 算法)根据“趋势”对搜索结果进行排序。此表达式称为“趋势”,在 CloudSearch 查询中使用如下:/search?q=Superman&sort=trend+desc
(upotes-1)/pow(floor((_time-created_at)/3600000)+2, 1.8)
现在,当用户点赞一个话题或评论时,它会存储在 MySQL 数据库中。我的问题我应该如何让投票与 CloudSearch 保持同步?
我看到的两个选项:
- 立即在 MySQL 中插入(替换)赞成票,然后更新 CloudSearch 上的分数。这涉及在每次投票时发送单个文档上传,但要确保实时准确性。
- 立即在 MySQL 中插入(替换)upvote,然后将 upvote 保存在缓存中的某个位置(Redis?)。每小时一次,将所有赞成票上传到 CloudSearch。
处理这种情况的最佳方法是什么?
【问题讨论】:
标签: mysql database amazon-web-services solr amazon-cloudsearch