如何指定包含 RocksDB 列中所有内容的范围?
How do I specify a Range including everything in a RocksDB column?
我想发布关于我的 RocksDB 实例的指标,包括随着时间的推移每列的磁盘大小。我遇到了一种可能的 API 方法来计算列的磁盘大小:
Status s = GetApproximateSizes(options, column_family, ranges.data(), NUM_RANGES, sizes.data());
这是一个不错的 API,但我不知道如何提供一个 Range
来指定我的整个专栏。有没有办法在不在列中找到 min/max 键的情况下这样做?
对于整个数据库,您可以使用0x00
或空字节字符串和任意大的键作为结尾来近似它,例如0xFFFFFF
。
否则,如果列共享一个公共前缀,则使用以下函数计算结束键:
def strinc(key):
key = key.rstrip(b"\xff")
return key[:-1] + int2byte(ord(key[-1:]) + 1)
strinc
将计算下一个不是键前缀的字节字符串,它们一起描述了以 KEY
作为前缀的整个键空间。
我想发布关于我的 RocksDB 实例的指标,包括随着时间的推移每列的磁盘大小。我遇到了一种可能的 API 方法来计算列的磁盘大小:
Status s = GetApproximateSizes(options, column_family, ranges.data(), NUM_RANGES, sizes.data());
这是一个不错的 API,但我不知道如何提供一个 Range
来指定我的整个专栏。有没有办法在不在列中找到 min/max 键的情况下这样做?
对于整个数据库,您可以使用0x00
或空字节字符串和任意大的键作为结尾来近似它,例如0xFFFFFF
。
否则,如果列共享一个公共前缀,则使用以下函数计算结束键:
def strinc(key):
key = key.rstrip(b"\xff")
return key[:-1] + int2byte(ord(key[-1:]) + 1)
strinc
将计算下一个不是键前缀的字节字符串,它们一起描述了以 KEY
作为前缀的整个键空间。