бд на MMF
От: MadHuman Россия  
Дата: 07.10.19 17:12
Оценка: 7 (1)
Всем привет!

В asp.net приложении есть счетчики к которым нужен максимально быстрый доступ (как чтение так и инкримент и получение нового значения).
Сейчас они сделаны in memory с асинхронной записью в файл спустя таймаут после изменения.
Решение в целом неплохое, но — при крахе процесса, либо выгрузке домена, есть вероятность (и периодически реализуется) потери несохранённых изменений.
Хочется сделать решение на базе memory mapped files, тк при крахе процесса, то что было в эту память записано остается сохранённым.
И также потому что в этом случае нет cross-process коммуникаций и скорость доступа максимальна.
Подскажите коллеги, какую-нибудь простенькую inproc key-value store с бэкэндом на базе memory mapped file..
Re: бд на MMF
От: BlackEric http://black-eric.lj.ru
Дата: 08.10.19 08:13
Оценка: +1
Здравствуйте, MadHuman, Вы писали:

MH>Всем привет!


MH>В asp.net приложении есть счетчики к которым нужен максимально быстрый доступ (как чтение так и инкримент и получение нового значения).

MH>Сейчас они сделаны in memory с асинхронной записью в файл спустя таймаут после изменения.
MH>Решение в целом неплохое, но — при крахе процесса, либо выгрузке домена, есть вероятность (и периодически реализуется) потери несохранённых изменений.
MH>Хочется сделать решение на базе memory mapped files, тк при крахе процесса, то что было в эту память записано остается сохранённым.
MH>И также потому что в этом случае нет cross-process коммуникаций и скорость доступа максимальна.
MH>Подскажите коллеги, какую-нибудь простенькую inproc key-value store с бэкэндом на базе memory mapped file..

Redis? Он не MMF, но все остальное может.
https://github.com/BlackEric001
Re[2]: бд на MMF
От: MadHuman Россия  
Дата: 08.10.19 08:28
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Redis? Он не MMF, но все остальное может.

он же не inproc..
Re[3]: бд на MMF
От: Ночной Смотрящий Россия  
Дата: 08.10.19 09:22
Оценка: 7 (1)
Здравствуйте, MadHuman, Вы писали:

BE>>Redis? Он не MMF, но все остальное может.

MH>он же не inproc..

https://www.litedb.org/
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: бд на MMF
От: RushDevion Россия  
Дата: 08.10.19 09:23
Оценка: +1
LiteDB посмотри. По производительности, имхо, оптимальным будет.
Правда там нет MMF из коробки. Но можно сделать свой декоратор поверх дефолтного IDiskService.
Но, имхо, для такой задачи зрелая embedded база — тяжеловатое решение.

Еще есть хардкорный вариант — сделать свою реализацию (e.g. на базе LSM-дерева).
А если количество счетчиков известно заранее и принять, что имя счетчика + значение всегда имеет фиксированный размер,
то можно без LSM обойтись. Просто мапить имя счетчика на смещение в MemoryMappedFile и писать байты.
Отредактировано 08.10.2019 9:27 RushDevion . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.