根据rails 5上ruby中的条件动态创建mysql表

时间:2018-02-06 17:04:41

标签: mysql ruby-on-rails ruby database

我是Rails的新手,我正在尝试创建一个Web应用程序,您可以从页面中抓取一些html并将其存储到数据库中,以便将其与不同的版本进行比较,例如产品的价格发生变化。我想让它发挥作用的方式是每次从一个新的域中删除某些内容时创建一个新表。

所以基本上每个域都有自己的变更表。我知道如何使用迁移创建表,但是如何在添加新域时动态创建表?

1 个答案:

答案 0 :(得分:0)

推荐的"关系数据库"这样做的方法是使用单个表并将该表与源相关联。对于页面快照,您通常可以对内容进行哈希处理以测试重复数据,并且内容哈希上的UNIQUE索引可以自动阻止这些类型的插入。

如果页面的某些部分更新但您对它们不感兴趣,例如广告块,则可以使用Nokogiri之类的工具在散列和保存之前预处理和删除该内容。< / p>

现在,如果这只是您正在捕获页面的一部分,并且明确意图稍后提取价格信息,那么您可能根本不需要数据库来处理该部分流程。您可以将原始页面数据汇集到像RabbitMQ这样的队列中,让工作人员对其进行处理,然后将其归结为价格数据,这就是您在数据库中插入的全部内容。

如果出于诊断或历史原因需要保留页面快照,则表格将起作用。要节省大小,您可以使用ARCHIVE类型表进行探索。这些只是附加的,您无法编辑它们,但它们非常紧凑且性能良好。

您可以定期TRUNCATE这种表格来清除旧数据,这样您就不会永远保持垃圾。