如何在 Aerospike 中获取 bin 的大小?
How to get the size of a bin in Aerospike?
在 aerospike 中,当我们执行 show sets
时,我们会看到如下内容:
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
| disable-eviction | ns | objects | stop-writes-count | set | memory_data_bytes | device_data_bytes | truncate_lut | tombstones |
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
| "false" | "test" | "310" | "0" | "byteData" | "25663706" | "25680736" | "358239062044" | "0" |
| "false" | "test" | "310" | "0" | "kwString" | "1076835" | "1092352" | "0" | "0" |
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
这让我们知道集合 byteData
占用大约 25MB。现在,假设集合 byteData
有两个 bin,即。 binA
和binB
,那我怎么才能得到这两个bin的大小呢?
我找不到直接的方法,但有一个解决方法。解决方法,因为这无法从 aql 提示中获知。我正在使用 Aerospike JAVA 客户端,并且能够使用相同的客户端找到垃圾箱的大小。
假设你在bin中插入字符串,那么你需要做的就是:
Value value = new Value.StringValue(someString);
value.estimateSize(); //Store it in a list, and then sum up the sizes for
//all the strings inserted in that bin to find the size of the bin
答案参考 - https://discuss.aerospike.com/t/how-to-get-record-size-in-aeropsike/2639
除了 StringValue
之外的其他可能的子 类 已列出 here
Aerospike 存储记录 - 每条记录都可以将名称设置为标签或元数据,并且它可以存储 bin。架构处于记录级别,它将是用户在每条记录的基础上创建的任何内容。因此,估计“集合中垃圾箱的大小”是一种错误的要求。例如,在命名空间 n1 中,在集合 s1 中,我可以添加两条记录 r1 和 r2。 r1 可以有 bins b1 和 c1,r2 可以有 bins b2 和 c2。 b1、c1、b2、c2 可以是彼此完全不同的数据类型。现在,实际上,在给定的集合中,用户将在所有记录中遵循某种类似的模式。
您可以根据存储的数据计算任何记录的大小,包括开销。有关详细信息,请参阅此 link:https://docs.aerospike.com/docs/operations/plan/capacity/index.html 但无法直接从 Aerospike 获取“集合中垃圾箱的大小”。
在 aerospike 中,当我们执行 show sets
时,我们会看到如下内容:
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
| disable-eviction | ns | objects | stop-writes-count | set | memory_data_bytes | device_data_bytes | truncate_lut | tombstones |
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
| "false" | "test" | "310" | "0" | "byteData" | "25663706" | "25680736" | "358239062044" | "0" |
| "false" | "test" | "310" | "0" | "kwString" | "1076835" | "1092352" | "0" | "0" |
+------------------+--------+---------+-------------------+------------+-------------------+-------------------+----------------+------------+
这让我们知道集合 byteData
占用大约 25MB。现在,假设集合 byteData
有两个 bin,即。 binA
和binB
,那我怎么才能得到这两个bin的大小呢?
我找不到直接的方法,但有一个解决方法。解决方法,因为这无法从 aql 提示中获知。我正在使用 Aerospike JAVA 客户端,并且能够使用相同的客户端找到垃圾箱的大小。
假设你在bin中插入字符串,那么你需要做的就是:
Value value = new Value.StringValue(someString);
value.estimateSize(); //Store it in a list, and then sum up the sizes for
//all the strings inserted in that bin to find the size of the bin
答案参考 - https://discuss.aerospike.com/t/how-to-get-record-size-in-aeropsike/2639
除了 StringValue
之外的其他可能的子 类 已列出 here
Aerospike 存储记录 - 每条记录都可以将名称设置为标签或元数据,并且它可以存储 bin。架构处于记录级别,它将是用户在每条记录的基础上创建的任何内容。因此,估计“集合中垃圾箱的大小”是一种错误的要求。例如,在命名空间 n1 中,在集合 s1 中,我可以添加两条记录 r1 和 r2。 r1 可以有 bins b1 和 c1,r2 可以有 bins b2 和 c2。 b1、c1、b2、c2 可以是彼此完全不同的数据类型。现在,实际上,在给定的集合中,用户将在所有记录中遵循某种类似的模式。
您可以根据存储的数据计算任何记录的大小,包括开销。有关详细信息,请参阅此 link:https://docs.aerospike.com/docs/operations/plan/capacity/index.html 但无法直接从 Aerospike 获取“集合中垃圾箱的大小”。