1

我需要将mysql中的业务数据存储到bolt中。数据是map[string]string这样的:

{"id": "<uuid>", "shop_id":"12345678", "date": "20181019"... }

由于数据量会很大并且会不断增加,除了将数据拆分成独立的文件(比如201810.db),我想让最终的文件尽可能的小。所以我打算自己对数据进行编码,通过使用“查找表”,即因为所有数据项的所有键都是相同的,我映射 id=1,shop_id=2,... 这样键只会消耗 1~ 2 个字节。对于值,我也进行相同的编码,这样高度冗余的列(即选择不同的只返回几个结果)将在螺栓文件中消耗更少的空间。

现在我的问题是:bolt 如何存储键和值?如果我使用上述方法,是否会“每页”存储更多对象,从而最终提高空间效率?

或者,因为它使用“页面”,所以即使存储一个字节的数据也会消耗一整页?如果是这种情况,我是否必须手动对一堆对象进行分组,直到它们的组合大小大于螺栓页面才能使其“完全填充”?当然,这会损害随机访问,但对于我的应用程序,这可以通过增加编码复杂性来克服。

4

0 回答 0