2

我正在研究 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% 的压缩率是否可以,或者是否可以预期较低的值?除了重塑我上传的数据之外,是否有任何技术可以提高压缩率?

谢谢!

4

1 回答 1

5

较低的值肯定是意料之中的。我们发现并修复了与 Cloud Bigtable 中使用压缩相关的错误,该错误现已投入生产。

对于您发布的示例等数据,您现在应该看到更高的压缩率和更低的磁盘使用率!

于 2015-07-09T17:14:01.393 回答