设计便宜的每日大数据文件下载&数据库提供工作

时间:2014-02-24 22:52:32

标签: database heroku architecture cron

我目前正在使用我的网络应用程序中的Heroku,我目前面临以下设计挑战:

每天一次,我必须下载大型产品数据文件(如果是GZip,则最多10到20个文件,最多10 MB,否则最多50 MB)并将它们提供给数据库,然后我会查询产品搜索我的应用的功能,使用用户关键字。

注意:可以在每次运行作业时清除/清除产品数据库,不需要保留数据。我甚至认为它可能应该被丢弃,以避免巨大的存储成本......

所以我需要建议如何设计一个能够做到这一点的系统,使用Heroku附加组件,并且这将保持"经济实惠"。我很感激建议:

  • 运行下载/数据库馈送作业的方法(即 相对较长的任务)

  • 数据库引擎本身,允许执行快速关键字 对Web应用程序的查询是" snappy"

1 个答案:

答案 0 :(得分:1)

您可以使用以下组件构建此系统:

您需要在Postgres数据库中添加表格,以获取您将要存储的产品信息,这是权威的记录系统。您需要使用Tire gem将Rails ActiveRecord模型连接到ElasticSearch索引。您的Web应用程序可以使用ActiveRecord模型和Tire gem集成对您的ElasticSearch搜索引擎进行产品搜索,并从Postgres数据库中提取所有详细信息。

您可以使用Rake将批处理作业更正为使用产品目录的最新副本更新您的应用程序:

  1. 在本地下载产品目录源文件
  2. 为产品架构中的每个表创建表的新副本
  3. 使用新产品目录填充临时表
  4. 删除现有产品表,使用最新产品替换新表
  5. 重建新产品目录的ElasticSearch索引
  6. 此产品更新佣金任务可以安排在非高峰时间(例如当地时区凌晨3点)每天运行。