在PostgreSQL中表示稀疏数据
在PostgreSQL中表示稀疏数据矩阵的最好方式是什么?我看到的两个明显的方法是:
>将数据存储在单个表中,并为每个可想到的特征(可能数百万)使用单独的列,但对于未使用的功能,默认值为NULL.这在概念上很简单,但是我知道,对于大多数RDMS实现,这通常是非常低效的,因为NULL值通常占用一些空间.但是,我读了一篇文章(不幸的是找不到链接),声称PG不占用NULL值的数据,使其更适合存储稀疏数据. 我还发现了PostgreDynamic,它声称更好地支持稀疏数据,但是我不想将整个数据库服务器切换到PG分支,仅用于此功能. 还有其他解决方案吗?我应该使用哪一个?
有一些解决方案想到, 1)将功能分成通常设置在一起的组,为每个组创建与主数据具有一对一外键关系的表,只有在查询时才需要连接表 2)使用EAV反模式,从主表中创建一个带有外键字段的“功能”表,以及字段名和值列,并将功能存储在该表中的行中,而不是作为主要属性中的属性表 3)与PostgreDynamic相似,为主表中的每个“列”创建一个表(它们为这些表使用单独的命名空间),并创建函数以简化(以及有效地索引)访问和更新数据那些表 4)使用XML或VARCHAR在主数据中创建列,并在其中存储一些表示数据的结构化文本格式,通过功能索引在数据上创建索引,编写函数以更新数据(或使用XML函数,如果您正在使用该格式) 5)使用contrib / hstore模块创建一个类型为hstore的列,可以保存键值对,并且可以索引和更新 6)生活着很多空场 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 解决用xstream生成的xml字符串中间有空格的问题
- oracle 日期格式(to_char和to_date)
- 闪刀浪子教你利用JSFL制作swf素材包
- c# – 我可以等待webbrowser使用for循环完成导航吗?
- 聚合(Aggregation)和组合(Composition)区别
- PostgreSQL中的递归JSON生成
- Hikaricp Oracle连接问题
- reactjs – React Router with RefluxJS – 以编程方式从商
- Oracle Fusion Middleware Infrastructure WebLogic Server
- vb.net – 使用DataContext类和SqlConnection有什么区别?