我检查了不同的面向列的数据库系统,例如 InfiniDB、InfobrightDB 和 MonetDB。它们都不支持无符号整数作为数据存储类型。为什么?一种解决方案是将所有 4 字节无符号整数存储到 8 字节有符号整数(Link)中,但是我认为这会浪费太多空间。是否有任何支持无符号整数的开源面向列的数据库系统?我已经检查了这个(链接)没有运气。非常感谢您的宝贵时间。
埃默
我在Infobright.org的“如何从 SQL Server 迁移”(第 4 页)找到了一个答案:
无符号整数——DBA 和数据库设计人员历来选择无符号整数,以便为给定整数字段提供比有符号整数更大的最大值的容量。在数据中不存在或不允许负值的情况下,选择无符号整数的方法允许容纳较大的值,同时在传统的面向行的技术中选择较小的数据类型。在 Infobright 的案例中,当特定整数值存在不需要的字节时,它们会被固有的压缩算法“挤出”。出于这个原因,Infobright 建议选择下一个更大的整数数据类型——例如,BIGINT 而不是 INTEGER,或 MEDIUMINT over SMALLINT - 这样最大列值仍然可以容纳在所选数据类型中。Infobright 不会遭受“过度键入”列所造成的空间浪费后果。
MySQL 支持无符号整数作为列类型