gpt4 book ai didi

postgresql - 我应该在更新的数据模型中使用 hstore 吗?

转载 作者:行者123 更新时间:2023-11-29 11:57:07 24 4
gpt4 key购买 nike

在我的遗留数据库 (Postgres 9.1) 中,我有几个包含不同类型文档的表(假设它们是“父”表)。此外,还有一个包含这些文档的各种参数的表格:

create table params (
kind integer,
docid integer,
parname text,
parvalue text,
constraint params_pk primary key (kind, docid, parname));

一个文档可能有很多(parname, parvalue) 对。由于 kind 指向不同的表,因此不能用作外键。

它多年来一直运行良好,因为 params 仅用于打印文档。现在该表包含 500 万行,并且还需要这些数据用于其他目的。因此,现在是更新此模型的时候了。

基本上 params 为文档插入一次并且很少更新。它们将作为一个整体来阅读(对于文档)。无需搜索特定的 parname

我有三个想法:

变体 A。根据父表将表params拆成几个表,使用docid作为外键。

变体 B。将表 params 拆分为变体 A 并将 (parname, parvalue) 存储为 hstore。

变体 C。在每个父表中添加一个 hstore 字段并忘记其他表。

我没有使用 hstore 的经验。每种变体的优缺点是什么?你会选哪一个? hstore 可以用一些奇怪的东西让我感到困惑吗?

最佳答案

如果如您所说,您需要获取文档的字段,那么非规范化 hstore 变体更好,因为服务器将能够从磁盘上的单个位置获取整个文档,而不是使用多个位置来索引连接文档与领域。我看到 hstore 的唯一问题是有点不合常规的语法。使用 JSON 可能更容易。 PostgreSQL 9.4 将对 (indexed) binary JSON 提供出色的支持.使用二进制 JSON 是 recommended由 hstore 作者,顺便说一句。

所以计划可能是在 9.3 中使用 json 列,然后在 9.4 中将其转换为 jsonb

关于postgresql - 我应该在更新的数据模型中使用 hstore 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23614873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com