如何指定包含 RocksDB 列中所有内容的范围?

How do I specify a Range including everything in a RocksDB column?

我想发布关于我的 RocksDB 实例的指标,包括随着时间的推移每列的磁盘大小。我遇到了一种可能的 API 方法来计算列的磁盘大小:

GetApproximateSizes():

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 作为前缀的整个键空间。