Riak: безопасно ли ведро в производстве? - PullRequest
1 голос
/ 15 апреля 2020

Мне нужно почистить несколько ведер в массивной базе данных riak. Для некоторых сегментов, поскольку у нас были индексы, я просто запросил их и удалил ключи. Но сейчас я имею дело с двумя сегментами, которые не имеют индексов. Поскольку я читаю много раз, я не должен использовать keys?keys=true или keys?keys=stream в производственных системах, однако другой способ получить все ключи - это использовать индекс $bucket, как предложено в документации, который не предупреждает о неиспользовании этого в производстве. Я считаю, что это также было известно как $keys ранее. Похоже, что наша система работает с любым из них.

Однако, непосредственно перед запуском этого в производстве я поиграл и обнаружил, что индекс $bucket возвращает ключи, которые были удалены, как keys?keys=true / * 1011. * хотя это был не тот случай, когда я использовал индексы, которые мы сами поддерживали.

Безопасен ли индекс $ bucket для использования в производстве?

Обратите внимание, что наша система работает на * Мне сказали, что бэкэнд 1016 * LevelDB имеет объем сегмента, и поэтому было бы безопасно даже запустить на нем keys?keys=true / stream. Это правда?

1 Ответ

2 голосов
/ 15 апреля 2020

Реальность такова, что нет никаких гарантий при использовании $ bucket или $ key, особенно если вы комбинируете с Map / Reduce, что они не повлияют на стабильность кластера. Однако, если вы знаете, что в корзине содержится относительно небольшое количество ключей, или если вы используете max_results в своем запросе - тогда $ bucket должен быть относительно безопасным (безусловно, намного лучше, чем использование ключей списка).

В Riak KV 2.9.1 есть более безопасные способы стирания масс ключей, которые доступны независимо от серверной части (при условии использования Ticta c AAE).

Что касается запросов $ bucket или $ key, возвращающих удаленные ключи, я подозреваю, что это вполне может быть правдой из-за того, что это «внутренний» запрос leveldb и внутри leveldb он не сможет различить guish между объектом Риака и надгробной плитой Риака. Улучшения в Riak 2.9.x справляются с этой ситуацией и не возвращают удаленные ключи (если вы не ищете надгробные камни, чтобы пожинать).

...