Атомно-вероятностный подсчет и набор членства в MongoDB

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

Есть ли какая-либо поддержка для использования таких структур данных и выполнения операций с ними атомарно на стороне сервера, через пользовательские функции или подобные? Или я могу добавить расширения с таким функционалом?

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

1 ответ

Я не специалист по MongoDB, но мне кажется, что вы можете хранить HyperLogLog (и Bloom Filter) в массиве внутри документа. Единственная операция, в которой они оба действительно нуждаются - это $max, то есть атомарная (я думаю).

Вам не нужно обновлять весь документ, только положение массива, затронутое одним элементом.

Другие вопросы по тегам