如何在PostgreSQL数据库中存储类似哈希的对象?

时间:2013-04-20 12:06:44

标签: ruby-on-rails ruby-on-rails-3 postgresql hstore

首先,一点信息。我的Rails应用程序有一个名为Neo的模型,该模型又具有observed_atradec属性。

但是,我现在发现我需要存储这些数据的集合(以类似Python的方式,它将是 元组列表 。)在Ruby中,可能是一份清单。

我怎样才能做到这一点?我不介意使用hstore,但我不愿意,因为那些文档很少。

2 个答案:

答案 0 :(得分:4)

您可以使用更简单的serialize,而不是hstore。

或者,您可以为这些集创建模型,然后在Neo上使用has_many,在新模型上使用belongs_to

答案 1 :(得分:3)

正如Guilherme Berger所说,1:多关系是建模“列表列表”的典型方式......或者更准确地说,是集合;给它 order 你必须在每个子表中定义某种排序键。

使用PostgreSQL时可以使用的另一个选项是使用多维数组。不幸的是,Pg的数组有点奇怪,因为二维数组更像是一个矩阵(即:固定维)而不是列表。如果您的子列表长度相同,但是如果它们是可变的且无限长度的数组阵列不是一个好的选择。

我提到这一点主要是为了完整性,并解释在数据库中序列化特定于语言的对象是正确的方法。第一次必须更新到新的主要运行时版本,更改对象结构或从其他语言或报告引擎访问数据库时,这将是非常可怕的。我真的不推荐它。