在PostgreSQL中表示稀疏数据

在PostgreSQL中表示稀疏数据,第1张

概述在PostgreSQL中表示稀疏数据矩阵的最好方式是什么?我看到的两个明显的方法是: >将数据存储在单个表中,并为每个可想到的特征(可能数百万)使用单独的列,但对于未使用的功能,默认值为NULL.这在概念上很简单,但是我知道,对于大多数RDMS实现,这通常是非常低效的,因为NULL值通常占用一些空间.但是,我读了一篇文章(不幸的是找不到链接),声称PG不占用NULL值的数据,使其更适合存储稀疏数据 在Postgresql中表示稀疏数据矩阵的最好方式是什么?我看到的两个明显的方法是:

>将数据存储在单个表中,并为每个可想到的特征(可能数百万)使用单独的列,但对于未使用的功能,默认值为NulL.这在概念上很简单,但是我知道,对于大多数RDMS实现,这通常是非常低效的,因为NulL值通常占用一些空间.但是,我读了一篇文章(不幸的是找不到链接),声称PG不占用NulL值的数据,使其更适合存储稀疏数据.
>创建单独的“行”和“列”表,以及一个中间表来链接它们并存储该行的列的值.我相信这是更传统的RDMS解决方案,但是与此相关的更多复杂性和开销.

我还发现了PostgreDynamic,它声称更好地支持稀疏数据,但是我不想将整个数据库服务器切换到PG分支,仅用于此功能.

还有其他解决方案吗?我应该使用哪一个?

有一些解决方案想到,

1)将功能分成通常设置在一起的组,为每个组创建与主数据具有一对一外键关系的表,只有在查询时才需要连接表

2)使用EAV反模式,从主表中创建一个带有外键字段的“功能”表,以及字段名和值列,并将功能存储在该表中的行中,而不是作为主要属性中的属性表

3)与PostgreDynamic相似,为主表中的每个“列”创建一个表(它们为这些表使用单独的命名空间),并创建函数以简化(以及有效地索引)访问和更新数据那些表

4)使用XML或VARCHAR在主数据中创建列,并在其中存储一些表示数据的结构化文本格式,通过功能索引在数据上创建索引,编写函数以更新数据(或使用XML函数,如果您正在使用该格式)

5)使用contrib / hstore模块创建一个类型为hstore的列,可以保存键值对,并且可以索引和更新

6)生活着很多空场

总结

以上是内存溢出为你收集整理的在PostgreSQL中表示稀疏数据全部内容,希望文章能够帮你解决在PostgreSQL中表示稀疏数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存