Какой оптимизированный способ получить количество ключей в корзине? - PullRequest
2 голосов
/ 21 ноября 2011

У меня есть кластер riak с 3 серверами.Я могу взглянуть на битовую корзину, чтобы определить, сколько дискового пространства в данный момент использует этот кластер, но я также хотел бы узнать, сколько элементов в настоящее время хранится в кластере.

Кластер используется для храненияизображения, означающие, что двоичные данные хранятся на ключе в наборе сегментов.Я попытался использовать функции карты редукции для интерфейса HTTP, чтобы вернуть количество элементов в корзине, как бы они ни истекли.

Какой самый оптимальный по времени способ получить счетчик количестваключи от конкретного ведра?

Ответы [ 4 ]

3 голосов
/ 13 февраля 2013

Вот что у меня сработало - поместите его в консоль, дальнейшая установка не производится:

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"}}]}'
3 голосов
/ 24 ноября 2011

Подсчет количества ключей в корзине в кластере Riak не очень эффективен, даже с использованием функций MapReduce.

Самый эффективный способ подсчета количества элементов - этосделайте это на клиенте через потоковый API.В следующем примере для этого используются node-js.

Сначала установите клиент riak-js

npm install riak-js@latest

Затем выполните следующую команду в командной строке, чтобы подсчитать ваш счет.

node -e "require('riak-js').getClient({ host: 'hostname', port: 8098 }).count('bucket');"
2 голосов
/ 04 декабря 2011

Существует также открытый запрос на features.basho.com, чтобы сделать это проще (потому что, как указал bennettweb, это не самая простая задача).

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

Приветствуются комментарии, комментарии и т. Д.

Марка

0 голосов
/ 12 марта 2014

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

абзац «Подсчет объектов Bucket через индекс $ bucket»

$ 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

уменьшить индекс лучше, чем данные mapreduce

...