Riak и память Backend: обработка истечения срока и сокращения - PullRequest
0 голосов
/ 17 ноября 2018

Мне интересно, какова лучшая стратегия для управления сроком действия связанных с сеансом данных, хранящихся в памяти типа Riak Bucket.

Похоже, что этот бэкэнд поддерживает ttl (http://docs.basho.com/riak/kv/2.2.3/setup/planning/backend/memory/#ttl и http://docs.basho.com/riak/kv/2.2.3/configuring/backend/#memory-backend),, однако документация по второй ссылке гласит:

"Как только время этого объекта истекло, оно будет удалено при следующем чтении его ключ. " Что если объект больше никогда не будет прочитан? Это останется в памяти? Однако я предполагаю, что в конечном итоге он будет уничтожен при достижении предела memory_backend.max_memory_per_vnode.

Сохраняет ли метка времени истечения еще один важный вариант? В этом случае сокращение будет выполняться процессом, периодически ищущим «старые» временные метки:

:riakc_pb_socket.search(pid, "expirable_token", "exp_counter:[* TO 1542468475]")
# then we delete them

Я проверил это, сохранив отметку времени в счетчике, поскольку невозможно запросить регистры диапазона, которые проиндексированы как строки:

iex(34)> :riakc_counter.increment(System.system_time(:second), :riakc_counter.new())
{:counter, 0, 1542468373}

Однако я не уверен, что счетчики предназначены для хранения целых чисел. Как лучше хранить целые числа в типах данных Riak? Пользовательская схема с правильным объявленным типом int?

1 Ответ

0 голосов
/ 23 ноября 2018

Я бы порекомендовал использовать другой бэкэнд.Истечение срока действия Bitcask очень эффективно и может быть настроено очень точно.leveldb expiration работает достаточно хорошо.

...