【发布时间】:2012-11-02 08:53:50
【问题描述】:
我是 postgres 的新手,正在尝试使用 hstore 扩展。寻求一些指导。我需要支持我们销售的各种产品的时间序列数据的基本报告。对于每种产品,我都有大量“时间戳,值”格式的数据。该数据在每个产品的 csv 文件中可用。
我正在考虑使用 hstore 以键值格式存储这些数据。假设单个产品的所有时间序列数据都可以存储在单个 hstore 对象中。我需要能够在特定时间查询这些数据,比如在给定时间产品的价值是多少?还需要运行简单的查询,例如检索产品价格超过 100 美元的时间。 我打算有一个包含产品 id 列和 hstore 列的表。但我不太清楚如何使这项工作:
- 需要从 csv 中存在的数千个时间戳、值记录加载 hstore 列。每当我们获得新的 csv 时,都应该附加 hstore。
- 该表需要存储productId和对应的Timeseries数据。 您能否告知使用 hstore 是否有帮助?如果是,那么我如何从 csv 加载数据,如上所述。此外,如果随着数据的增长对 hstore 中的插入/更新性能有任何影响,请分享您的经验。
【问题讨论】:
-
我同意 Edmnud 的观点。
hstore不是这份工作的好选择。如果时间值在 hstore 中,您将无法有效地对时间值使用 b-tree 索引。更重要的是,更新 hstore 将需要在新的行版本中重写整个 hstore,与仅在子表中插入/更新/删除单个值相比,这是非常昂贵的。如果值在 hstore 中,则不能使用排除约束来防止时间重叠。我认为没有理由在这里使用 hstore,也没有理由不使用。
标签: postgresql hstore