PostgreSQL中的易因子/枚举类型

时间:2014-11-25 16:05:59

标签: postgresql

我对大型单列数据集进行数据分析,其中包含大量“枚举”。例如,列可能包含Not,很少,中性,有时,始终或NA /空。另一栏可能包含男/女。我可能有50万行,50列。我正在研究存储和使用这些数据的不同选项,并且对使用Postgres感兴趣。我看到有一个枚举类型,但必须预先定义,并且扩展困难/昂贵。我习惯于使用内部使用整数和查找表来处理R中的因子,这些因子正常工作。

我刚刚在Postgres进行了一次快速实验,包括19000行和40列,所有微小因素,但作为varchars导入。该表占用了10MB空间。与仅生成的生成表相比,占用了2MB空间。

是否有对Postgres的扩展或某种自动获取此功能的方法?我当然可以创建大量的外国专栏,但这似乎是很多程序。我可以静态定义枚举,或者我甚至可以将查找表保留在R / Python脚本中 - 但所有这些看起来都容易出错,开销很大,或者可移植性差......

1 个答案:

答案 0 :(得分:0)

据我所知,没有自动解决方案。

在大多数应用程序中,磁盘空间并不重要。

当磁盘空间 关键时,使用整数作为外键进行数据压缩非常简单,易于扩展,可靠且可移植。 (枚举是SQL数据库管理系统中最少可移植功能之一。)

如果您有50行50列,并且每列都是整数代理键,那么您只需要谈论100 MB加上引用的表和索引的大小。五倍即500 MB。在数据库方面,这是一个小型数据库。哎呀,在我回答问题之前,我有时会加载50行百万行进行测试。

如果我在你的位置,我只需要在需要时读取数据(列和参考表),并使用R将数据转换为因子。