在Rails中聚合数据3

时间:2011-02-18 10:12:14

标签: ruby-on-rails ruby-on-rails-3 twitter last.fm

我想汇总来自不同来源的数据,Twitter lastfm和那种。我只是无法弄清楚如何存储数据。显然在数据库中,我无法弄清楚如何使表格保持所有这些数据的抽象性,而不会影响对每列中数据的逻辑理解。 我想知道是否有其他人有这方面的经验,现在他们用铁轨来解决它。

2 个答案:

答案 0 :(得分:1)

您需要的是面向文档的数据库(我建议您使用MongoDB),然后使用一组适配器,每种类型的提供程序都有一个适配器。

Document oriented database

答案 1 :(得分:1)

如果你想坚持使用SQL,一个选项就是拥有一个模型/表,其中包含每个数据源(标题,网址,摘要)共有的字段,这些字段与包含特定字段的其他模型/表相关联个人数据源。这种关联可以是规则的或多态的。如果你想进入一些元编程,你可以使用method_missing将“共同”模型中不存在的字段的方法调用委托给相关的模型。这对于多态连接最有效。 Psudeo-代码:

class DataSource
  belongs_to :data_source_extension, :polymorphic => true

  def method_missing(method)
    if data_source_extension.responds_to? method
      data_source_extension.send(method) 
    else
      super
    end
  end
end

另一个选项是STI,所以一个包含所有字段的表和一个'type'字段告诉Rails应该包含哪个模型的记录。这取决于你有多少不同的来源以及它们各自有多少不同其他。

如果字段不需要可​​搜索,则在文本字段中存储哈希效果很好。请参阅序列化和attr_bucket gem。

或者,如果你想要时髦,NoSQL类型数据库允许生成即时字段。