使用Bitcask后端的Riak每键开销是多少?

时间:2013-03-05 07:53:04

标签: nosql riak overhead

这是一个简单的问题,显然有很多答案。

调查结果的范围从:

一个。根据Basho的文档22个字节: http://docs.basho.com/riak/latest/references/appendices/Bitcask-Capacity-Planning/

湾这里450~字节: http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-August/005178.html http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-May/004292.html

℃。并且轶事记录表明在45到200字节范围内的任何地方都有开销。

为什么没有直接答案呢?我知道这是一个复杂的问题 - 上面的一个邮件列表条目清楚地说明了! - 但是甚至想出一个一致的球场如此困难?为什么Basho的文档没有明确这个呢?


我有另外一组问题与我如何根据关键开销构建我的逻辑(存储大量小值而不是在较大结构中“收集”它们),但我想这是另一个问题。

2 个答案:

答案 0 :(得分:1)

静态开销在我们的容量规划器中声明为22个字节,因为这是C结构的大小。如该页面所述,容量规划人员只是提供粗略估计以进行大小调整。

你链接到的Nico邮件列表上的旧帖子可能是你会发现并且准确的bitcask内部最完整的会计。在8字节中查找指向条目的指针和在桶/密钥对上的13字节的erlang开销,在64位系统上得到43字节。

至于没有直接答案......实际上要求我们(通过电子邮件,邮件列表,IRC,信鸽等)将始终产生实际答案。

答案 1 :(得分:0)

Bitcask要求所有密钥都保存在内存中。据我所知,a)中引用的开销是在估计由于此要求而在整个集群中需要的RAM总量时所使用的开销。

将数据写入磁盘时,Riak会将实际值与各种元数据一起存储,例如:矢量时钟。提及b)中列出的450字节的帖子似乎是对磁盘上存储开销的估计,因此可能也适用于其他后端。

Nico的帖子似乎包含了一个很好而准确的解释。