Ruby on rails 在Ruby中存储在数据库中使用自定义类的哈希

Ruby on rails 在Ruby中存储在数据库中使用自定义类的哈希,ruby-on-rails,database,serialization,data-structures,hash,Ruby On Rails,Database,Serialization,Data Structures,Hash,有人能为这个用例推荐一个好的数据结构/方法吗?我在MySQL中使用Ruby/Rails 我有一个包含数万种产品的产品提要(包括价格、url、产品代码等)。我每天访问一次提要,并希望在程序停止运行后将产品信息存储到一个可快速访问的散列中,该散列保存在数据库中 这个(可能非常大)散列应该是它自己的类,还是产品类的序列化属性 我的伪代码: 将产品提要数据保存到哈希并存储在数据库中: 正在检索哈希内容(不确定如何从数据库检索哈希): 散列的键是product.url。我是否正确初始化哈希?非常感谢你的建

有人能为这个用例推荐一个好的数据结构/方法吗?我在MySQL中使用Ruby/Rails

我有一个包含数万种产品的产品提要(包括价格、url、产品代码等)。我每天访问一次提要,并希望在程序停止运行后将产品信息存储到一个可快速访问的散列中,该散列保存在数据库中

这个(可能非常大)散列应该是它自己的类,还是产品类的序列化属性

我的伪代码:

将产品提要数据保存到哈希并存储在数据库中: 正在检索哈希内容(不确定如何从数据库检索哈希):
散列的键是product.url。我是否正确初始化哈希?非常感谢你的建议

我想这就是你想要的,但是如果我错了,你可能需要详细说明这个问题

hash = {}
result = ActiveRecord::Base.connection.execute('YOUR QUERY HERE')
while((r = result).present?)
  hash[r.url] = r
end
或者(但缓慢地)

假设该表包含id、url、代码和价格;应该是这样的:

{
'www.whatever.com' => {id: 1, url: 'www.whatever.com', code:'123', price: '123'}
'www.whatever2.com' => {id: 2, url: 'www.whatever2.com', code:'321', price: '321'}
}

不要使用散列。您可以将SQLite与文件存储一起使用,这也将允许您进行查询、基本索引等。如果您关心内存与文件存储性能,请阅读

作为ruby sqlite连接器,您可以使用


希望有帮助。

这取决于散列的数据结构。我们谈论的是非常复杂的结构(嵌入式结构)还是简单的键/值

如果复杂,请取出关键信息并将其存储在列(id、sku、名称、说明..)中。如果足够大,其余部分可以存储在varchar字段中。然后您可以将其序列化/反序列化为一个hash/json字符串


如果它是一个简单的结构,我会创建一个模型来表示它。

你能详细说明为什么它需要是散列吗?我建议将每个产品存储为ActiveRecord模型。您如何使用提要?您真的想将提要保存为数据库中的散列,还是这真的是一个关于如何缓存api响应的问题?
hash = {}
result = ActiveRecord::Base.connection.execute('YOUR QUERY HERE')
while((r = result).present?)
  hash[r.url] = r
end
hash = {}
Product.all.each do |p|
  hash[p.url] = p.attributes
end
{
'www.whatever.com' => {id: 1, url: 'www.whatever.com', code:'123', price: '123'}
'www.whatever2.com' => {id: 2, url: 'www.whatever2.com', code:'321', price: '321'}
}