0

我想汇总来自不同来源的数据,Twitter lastfm 和那种。我只是不知道如何存储数据。显然在数据库中,但我无法弄清楚在不影响对每列中数据的逻辑理解的情况下如何使表保持所有这些数据的抽象。我想知道是否有其他人有这方面的经验,现在他们在 Rails 中解决了这个问题。

4

2 回答 2

1

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

面向文档的数据库

于 2011-02-18T10:46:43.660 回答
1

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

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,所以一个表包含所有字段和一个“类型”字段,它告诉 Rails 记录应该包含在哪个模型中。这取决于您拥有多少不同的来源以及它们彼此之间的差异。

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

或者,如果您想流行一个 NoSQL 类型的数据库,则允许生成动态字段。

于 2011-02-18T17:02:07.177 回答