Pull to refresh

Comments 57

UFO just landed and posted this here
Когда последний раз (пару лет назад) я сравнивал производительность couchbase и redis, couchbase показал лучшие результаты. Плюс удобнейший интерфейс администрирования кластера подкупает. Потому используем его и memcached тоже через него.
Третья версия, имхо, вообще прекрасна. Вообще, очень нравится его концепция вьюх. Хотя map-reduce немного может сломать мозг, особенно rereduce.
Ну и к минусам стоит отнести нежелание устанавливаться по умолчанию, если памяти меньше 4-х Гб
LMDB куда потеряли? Говард Чу, я люблю тебя!
У вас ссылка на MongoDB теперь показывает не на тот элемент списка.
Хорошая штука. Но недоотлаженная.
Кто-нибудь может объяснить, почему минуса?
Наверное, ненавистники key-value хранилищ. Даже такие есть!

image
Просто перепись ЛОРа на хабре
LedisDB, схожесть с API Redis очень высокая.
Это для тех, кто планирует использовать Redis, но не уверен насчёт памяти.
В смысле «не уверен насчёт памяти»?

Я там графики на сайте не понял, лучше — меньше или больше? Redis у всех побеждает или всем проигрывает?
В том смысле, что LedisDB является фронтендом для LMDB/RocksDB/LevelDB/итд, то есть размер данных ограничен лишь вместительностью диска, а не объёмом оперативной памяти.

Redis выигрывает у всех бекендов, так как сидит непосредственно в памяти.
Мне кажется проблема не в том, что памяти мало, а в сохранности данных? Потому что 100 Гб это не проблема, и чтобы хранить какие-то мелкие поля по идентификатору, столько даже не надо, если ты не Гугл/Фейсбук. А если хранить в значениях медиа, так тут уже и никакого диска не хватит.
Довольно сомнительные результаты бенчмарков. На set/get из redis можно получить cтолько через один сокет, и есть ощущуние что все бенчмарки проводились с одним сокетом. В реальности на тех же set/get без pipeline из redis можно выжать и 250Krps. А сколько может ledis в разными бекендами не ясно.
Etc — что это такое?

Mnesia — хранилище документов, согласно сайту db-engines.
ETS это эрланговое хранилище туплов, где первое = ключ, in-memory.
DETS то же самое on disk.
Mnesia это бд построенная поверх ETS+DETS. Можно использовать как key-value реплицируемое с транзакциями и поэтэссами.

Если оно «хранилище документов» потому, что к одному ключу можно привязать сложные value?
Используем в одном из ерланговских проектов Mnesia, Riak, DETS, ETS. Стараемся использовать сильные стороны каждого из хранилищ.
данные очень легко размазываются по нодам, высокая отказоустойчивость, возможность писать mapred jobs довольно просто с riakKV
в смысле шардинга или реплекация?
ХЗ почему. Возможно, авторы сайта сами не разобрались.
Я вот тут в разных внутренних поделках ElasticSearch как key-value использую %-)
Так и знал, что кто-нибудь так извращается :)
Там не HighLoad. Поэтому вообще на скорость не обращаю внимания. Хотя достаточно быстро на самом деле, вон github не жалуются на скорость вроде. В основном подкупает быстрая индексация и json на выходе.
Я не хочу голосовать. Опрос какой-то бессмысленный. Не показывает ровным счетом ни-че-го.
Видимо неделя «тупых опросов на Хабре»?
Первый опрос имеет смысл чтобы определить _реальную_ популярность баз. Тут та же петрушка что и с ЯП — рейтинги меряют непонятно что. Рейтинг, собственно, с db-engines показал только самое основное: Redis — «первая орбиталь» по Воложу, Memcached — вторая. Все остальное, фактически, мимо.

Второй опрос, может быть, имеет не очень большой смысл для пользователей, но огромный для меня, как разработчика key-value базы :)
Только и Redis и Memcached решают одну из задач, стоящими перед KV-хранилищами: хранение в памяти. Вы узнали только то, что узнали, что наиболее частая задача, решаемая KV-хранилищем — хранение данных в памяти.
Что дальше?
Я узнал больше, статистику использования десятка самых популярных key-value хранилищ. Из нее можно сделать ваш вывод, в том числе.
такую статистику не «опросами на Хабре» собирают. Вы не узнали ничего!
В теории — количеством скачиваний, инсталляций, деинсталляций, и аптаймом перечисленных средств на серверах. На практике — никак. В любом случае это надо собирать с ДЦ а не жмаканием очередных «лайков».
Стоит начать с того, что есть много способов мерить популярность баз:
— кол-во компаний, использующих в проде;
— кол-во людей, использующих в проде (этот опрос);
— кол-во проектов;
— кол-во отдельных баз;
— суммарное кол-во запросов ко всем отдельным базам.

И нет одного единственно правильного. Этот опрос — наиболее близкое приближение по второй метрике, которое реально можно собрать.
все верно, этот опрос — примерно как посчитать сколько раз в городе на заборе написано слово "...". Ну Вы поняли.
Или Вы всерьез считаете что вся аудитория использующая например монгу целиком находится и голосует на Хабре за монгу?
Ну в общем-то ответы закономерны:
  • Memcached — потому что PHP
  • Redis — потому что лучше Memcached
  • Реляционная база — потому что уже есть и в нашем проекте всем плевать на производительность
  • Mongo — потому что уже есть и в нашем проекте всем плевать на различия документных и key-value баз

Дальше идут 35 ответов в духе «А кто все эти люди?»
Aerospike, Berkley DB, DynamoDB, Ehcache, Hazelcast, LevelDB, Riak и Tarantool, выясняется, не такие уж ноунеймы. Тут довольно интересно, как реальное использование соотносится с их собственными заявлениями и хайпом в тусовке.
Насчет Монги — с точки зрения «вам шашечки или ехать», действительно, должно быть плевать на различие типов баз. Как и с реляционными БД — тут проблема в том, что Монга
… медленнее на порядок нормальной key-value базы. Хотя вот выше пишут, что Couchbase сделала Redis, интересно, за счет чего.
> Redis — потому что лучше Memcached
И давно ли?
Кстати, интересно, что сейчас чаще используют в качестве хранилищ для хайлоада в вебе (PHP, Python, Ruby)? Просто берут Mongo и не парятся или пытаются масштабироваться на реляционных базах через master-slave репликацию и шардинг?
И насколько часто получается так, что сделали проект на MySQL, а когда пошла нагрузка, то поняли, что существующую модель данных на Mongo не перевести?
Не нашел handlersocket и расстроился
Или это к пункту: Реляционная БД в качестве key-value хранилища (Oracle, MySQL, PostgreSQL, ...)?
По описанию, которое я нашел, это плагин, который делает из MySQL NoSQL. Поэтому да, в точности попадает под обозначенный пункт.
ESENT Managed Interface

Я программирую в основном на С#, а основной дивжок данной библиотеки является частью Windows. Поэтому работает очень нативно. Кстати, ESENT используется как механизм хранения данных в RavenDB и Outlook. В целом, очень простая и быстрая библиотека.
DynamoDb это Amazon DynamoDb? Если да, то я его использую для хранения сессий.
Не указан opens source аналог Oracle Coherence, известный под именем Hazelcast.

Активно используем Oracle Coherence в силу специфики задач (обьектный кеш данных на высоконагруженной базе, большие обьемы данных).
Проектируется и планируется к использованию Oracle NoSQL (продакшен в следующем году) в силу наличия у данного NoSQL решения удачного сочетания масштабируемой архитектуры, задаваемой пользователем уровня consistency полиси при коммитах и поддержки транзакционной целостности (возможно группировать транзакции в группы по major-ключу). В последней версии имеется поддержка табличной формы данных с возможностью индексирования (сделано в форме API abstraction layer), табличное API поддерживает транзакционную целостность между индексами и содержимым таблиц.

В качестве кандидатов рассматривались Hbase, Cassandra и MongoDB, сделали выбор в пользу Oracle NoSQL по причине отсутствия одной или нескольких опций, часть из которых заявлена выше.

Вместо второго опроса лучше всего поставить картинку с классическим определением CAP theorem.
Почему не указан, указан Hazelcast.
Elliptics, если на уровне распределенный сторадж.
Если разговор о бэкендах для хранения аля RocksDB (улучшенный LevelDB), то Eblob.
Да уж, серьезное упущение. Не жалуют db-engines.com русских, напишите им, чтобы добавили Elliptics на сайт.

В контексте статьи уместно упомянуть о 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).

Sign up to leave a comment.

Articles