获得riak桶中键数的优化方法是什么?



我有一个有3台服务器的riak集群。我可以查看比特桶来确定这个集群当前使用了多少磁盘空间,但我也想知道集群中当前存储了多少项。

集群被用来存储图像,这意味着二进制数据是根据一个键存储在一组桶中。我已经尝试使用map reduce函数对HTTP接口,以返回桶中的项目数量,但他们已经超时。

从一个特定的桶中获得键数的最省时的方法是什么?

即使使用MapReduce函数,在Riak集群上计算桶中的键数也不是很有效。

我发现计算项目数量的最有效方法是通过流API在客户端上进行。下面的例子使用node-js来做这件事。

首先安装riak-js客户端

npm install riak-js@latest

然后在命令行上运行以下命令来给出您的计数。

node -e "require('riak-js').getClient({ host: 'hostname', port: 8098 }).count('bucket');"

这是我的工作-把它放在控制台,不再安装:

curl -XPOST http://localhost:8098/mapred -H 'Content-Type: application/json' -d '
{"inputs":"THE_BUKET",
 "query":[{"map":{"language":"javascript",
                  "keep":false,
                  "source":"function(riakobj) {return [1]; }"}},
          {"reduce":{"language":"javascript",
                     "keep":true,
                     "name":"Riak.reduceSum"}}]}'

在features.basho.com上也有一个开放的请求来简化这个任务(因为,正如bennetweb所指出的,这不是最直接的任务)。

http://features.basho.com/entries/20721603-efficiently-count-keys-in-a-bucket

鼓励点赞、评论等。

马克

http://docs.basho.com/riak/latest/dev/using/2i/

段落"通过$ Bucket Index计算桶对象"

$ curl -XPOST http://localhost:8098/mapred
  -H 'Content-Type: application/json'
  -d '{"inputs":{
           "bucket":"mybucket",
           "index":"$bucket",
           "key":"mybucket"
       },
       "query":[{"reduce":{"language":"erlang",
                           "module":"riak_kv_mapreduce",
                           "function":"reduce_count_inputs",
                           "arg":{"reduce_phase_batch_size":1000}
                          }
               }]
       }'
EOF

reduce index优于mapreduce data

相关内容

  • 没有找到相关文章

最新更新