LINUX.ORG.RU

In-memory хранилище с развитыми блокировками

 , ,


0

2

Очень нужно некое гибридное хранилище данных. Изначально это кеш медленных данных, получаемых из БД Zabbix'а Но в процессе работы приложения, запускаемого под hypnotoad (all glory to Mojolicious в первую очередь, но hypnotoad тоже молодец :)) - AnyEvent'ом запускается целая куча процессов под разные задачи:

1) Расчёт состояния IT-подсистем на разных уровнях иерархии

2) Выдача текущего слепка данных пользователю по запросу

3) Обновление структуры данных (иерархии объектов инфраструктуры мониторинга) из БД Zabbix'а

Все эти процессы весьма конкурентны, особенно конечно расчёт состояния и выдача текущего слепка: если рассчитывать состояние наживую, не принимая в расчёт то, что эти же данные будут отданы пользователю - получим настоящий хаос в конечном веб-приложении.

В общем, я как человек осторожный, чрезвычайно люблю блокировки, неделимые транзакции и проч. подобные вещи.

С этим нет проблем, например, у Cache::FastMmap. Я потестил его - на 700-ах конкурирующих процессах блокировки отлично работают, процессы по сути «выстраиваются в беспорядочную очередь», с минииальными накладными расходами. Модуль мне очень понравился, но... мне ужасно неудобно то, что я в этот кеш должен запихивать json-строки. Потому что это кеш, а мне нужно именно хранилище двойного назначения, позволяющее обращаться непосредственно к РСУБД раз в минуту за совсем небольшими порциями данных и раз в час - за относительно крупными.

Вопрос: есть ли что-то подобное Cache::FastMmap, но позволяющее хранить не строки и числа, а структуры данных Perl? При этом работающее достаточно быстро. Мне было бы достаточно какого-нибудь XS-ного аналога упомянутого кеш-движка, внутри хранящего всё в BSON (Binary JSON), но отдающего всё-таки структуры данных Perl.

Заранее спасибо за советы!

★★★★★

мне ужасно неудобно то, что я в этот кеш должен запихивать json-строки

не вижу в доке ничего про JSON. Возьми любой сериализатор, который нравится (BSON, скорее всего, худший вариант, так как это по сути формат хранения монги и ничего более), и выдачу сохраняй в кэш

annulen ★★★★★ ()

Кстати, автор CBOR::XS тебе уже знаком

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.