我正在研究 BigTable 如何压缩我的数据。
我已将 1,5GB 加载到 1 个表中;大约 500k 行包含 1 列,平均每个单元格包含大约 3kb。在进一步的测试中,更多的列将被添加到这些包含相似大小的相似数据的行中。
每个单元格中的数据当前是一个 JSON 序列化的字典数组 [10 elems on avg],例如:
[{
"field1": "100.10",
"field2": "EUR",
"field3": "10000",
"field4": "0",
"field5": "1",
"field6": "1",
"field7": "0",
"field8": "100",
"field9": "110.20",
"field10": "100-char field",
"dateField1": "1970-01-01",
"dateField2": "1970-01-01",
"dateTimeField": "1970-01-01T10:10:10Z"
},{
"field1": "200.20",
"field2": "EUR",
"field3": "10001",
"field4": "0",
"field5": "1",
"field6": "0",
"field7": "0",
"field8": "100",
"field9": "220.30",
"field10": "100-char field",
"dateField1": "1970-01-01",
"dateField2": "1970-01-01",
"dateTimeField": "1970-01-01T20:20:20Z"
}, ...]
BigTable 控制台向我显示集群拥有 1,2GB。因此,它将我插入的 1.5GB 压缩到原始大小的大约 80%。压缩一个典型的字符串,因为它们存储在单元格中,但是给我一个大约 20% 的压缩率。
因此,BigTable 的这种压缩性能对我来说似乎很低,因为我插入的数据包含很多重复值(例如字典键)。我了解 BigTable 以压缩换取速度,但我希望它在我的数据上表现更好。
对于上述数据,80% 的压缩率是否可以,或者是否可以预期较低的值?除了重塑我上传的数据之外,是否有任何技术可以提高压缩率?
谢谢!