【发布时间】:2015-01-01 22:56:24
【问题描述】:
我有一个使用 Rails 4、PostgreSQL 并托管在 Heroku 上的 rails 应用程序。 该应用程序围绕以下模型:用户和文章。 用户可以创建文章。一篇文章包含标题、描述、位置(纬度、经度)和图像。
我想添加一个通知系统,其工作原理如下:
- 用户可以设置他们希望订阅的关键字列表。
- 如果添加了包含其关键字之一的文章(在标题中,但可能在时间描述中),用户会收到通知。
以可扩展的方式实现这一点的最佳方法是什么?
在最简单的形式中,我可以创建一个名为 Keyword 的模型,用于存储用户希望收到通知的关键字。 然后在文章的创建操作中,检查标题(或描述)是否包含任何已保存的关键字。
这听起来不错,但一旦添加了任何合理数量的用户,可能就会失败。
显然,后台任务可以解决问题,但直接在数据库中包含基本字符串听起来仍然是错误的。
也许我可以将标题和描述标记为索引并使用后台进程来处理繁重的工作?我听说 Postgres 有一些内置的文本搜索功能——这可行吗? 我可以使用 Solr 或 Redis 之类的 Heroku 插件来处理所有这些问题,还是有点矫枉过正? (不必为附加组件付费是一个优势)。 也许有人对相同的功能有更好的实现。
我知道我可以快速实现它,我只是想确保它的实现符合标准。
谢谢, 布赖恩
【问题讨论】:
标签: ruby-on-rails postgresql heroku solr redis