在PostgreSQL中表示稀疏数据矩阵的最佳方法是什么?我看到的两种明显的方法是:
将数据存储在一个表中,每个可能的功能(可能有数百万个)都有一个单独的列,但未使用的功能的默认值为NULL.这在概念上非常简单,但我知道在大多数RDMS实现中,这通常非常低效,因为空值通常会占用some个空间.然而,我读了一篇文章(不幸的是找不到它的链接),声称PG不占用空值的数据,这使它更适合存储稀疏数据.
创建单独的"行"和"列"表,以及一个中间表来链接它们,并将列的值存储在该行.我相信这是更传统的RDMS解决方案,但与之相关的复杂性和开销更大.
我还找到了PostgreDynamic,它声称可以更好地支持稀疏数据,但我不想为了这个功能而将整个数据库服务器切换到PG fork.
还有其他解决方案吗?我应该用哪一个?