Comments 57
Я там графики на сайте не понял, лучше — меньше или больше? Redis у всех побеждает или всем проигрывает?
Redis выигрывает у всех бекендов, так как сидит непосредственно в памяти.
Mnesia — хранилище документов, согласно сайту db-engines.
DETS то же самое on disk.
Mnesia это бд построенная поверх ETS+DETS. Можно использовать как key-value реплицируемое с транзакциями и поэтэссами.
Если оно «хранилище документов» потому, что к одному ключу можно привязать сложные value?
Видимо неделя «тупых опросов на Хабре»?
Второй опрос, может быть, имеет не очень большой смысл для пользователей, но огромный для меня, как разработчика key-value базы :)
Что дальше?
— кол-во компаний, использующих в проде;
— кол-во людей, использующих в проде (этот опрос);
— кол-во проектов;
— кол-во отдельных баз;
— суммарное кол-во запросов ко всем отдельным базам.
И нет одного единственно правильного. Этот опрос — наиболее близкое приближение по второй метрике, которое реально можно собрать.
- Memcached — потому что PHP
- Redis — потому что лучше Memcached
- Реляционная база — потому что уже есть и в нашем проекте всем плевать на производительность
- Mongo — потому что уже есть и в нашем проекте всем плевать на различия документных и key-value баз
Дальше идут 35 ответов в духе «А кто все эти люди?»
И давно ли?
И насколько часто получается так, что сделали проект на MySQL, а когда пошла нагрузка, то поняли, что существующую модель данных на Mongo не перевести?
Или это к пункту: Реляционная БД в качестве key-value хранилища (Oracle, MySQL, PostgreSQL, ...)?
Я программирую в основном на С#, а основной дивжок данной библиотеки является частью Windows. Поэтому работает очень нативно. Кстати, ESENT используется как механизм хранения данных в RavenDB и Outlook. В целом, очень простая и быстрая библиотека.
Активно используем Oracle Coherence в силу специфики задач (обьектный кеш данных на высоконагруженной базе, большие обьемы данных).
Проектируется и планируется к использованию Oracle NoSQL (продакшен в следующем году) в силу наличия у данного NoSQL решения удачного сочетания масштабируемой архитектуры, задаваемой пользователем уровня consistency полиси при коммитах и поддержки транзакционной целостности (возможно группировать транзакции в группы по major-ключу). В последней версии имеется поддержка табличной формы данных с возможностью индексирования (сделано в форме API abstraction layer), табличное API поддерживает транзакционную целостность между индексами и содержимым таблиц.
В качестве кандидатов рассматривались Hbase, Cassandra и MongoDB, сделали выбор в пользу Oracle NoSQL по причине отсутствия одной или нескольких опций, часть из которых заявлена выше.
Вместо второго опроса лучше всего поставить картинку с классическим определением CAP theorem.
В контексте статьи уместно упомянуть о libmdbx и libfpta.
libmdbx — легковесный встраиваемый key-value движок хранения. В промышленной эксплуатации с 2015 года (продукты Петер-Сервис, инфраструктура МегаФон):
- не LSM, а B+Tree с отображением всех данных в память.
- рой процессов может читать и обновлять данные с выполнением ACID.
- wait-free для чтения, параллельно на каждом ядре CPU, без использования атомарных операций и/или примитивов синхронизации.
- стоимость всех операций Olog(N) при минимальном overhead.
- serializability изменений и согласованность данных после аварий.
На самом деле libmdbx — это существенно переработанная легендарная LMDB. Доработок много, все перечислены в README. Устранен либо смягчен ряд архитектурных проблем. В частности, движок обеспечивает динамическое изменения размера БД "на ходу" даже для Windows (эта мега-проблема для исходной LMDB).
libfpta — это надстройка над libmdbx, которая поверх key-value реализует таблицы со схемой, колонками, NIL-значениями и всяческими индексами, в том числе составными. В целом libfpta выполняет много рутины и предлагает более развитую модель данных. В промышленной эксплуатации libmdbx с весны 2017 года (продукты Positive Technologies).
Битва key-value хранилищ