Как стать автором
Поиск
Написать публикацию
Обновить

Битва key-value хранилищ

Время на прочтение2 мин
Количество просмотров57K

Какие key-value хранилища вы используете в бою?


Позаимствовал список с сайта db-engines.com (кстати, очень любопытный сайт, рекомендую), включил все базы с ненулевой «популярностью» оттуда. Не отмечайте базы которые просто пробовали/интересно, а только те, что крутятся и приносят деньги вашей компании прямо сейчас.

Обратите внимание: MongoDB это НЕ key-value хранилище, однако за нее можно проголосовать, см. пункт «Хранилище документов в качестве key-value».

Пишите, если забыл какую-то популярную базу (т. е. забыли авторы сайта db-engines.com), добавлю в опрос.

Какие свойства key-value хранилища вам важны?


Разношерстная куча требований. Просьба вдумчиво пройтись по ним. Обратите внимание, что многие свойства противоречат друг другу, потому что половина направлена на функциональность, а другая — на производительность, которые в целом противоречат друг другу. Некоторые свойства возможны только при наличии других свойств или комбинаций, некоторые являются усиленными/ослабленными версиями друг друга, и т. д.

Пункты 2-6 описывают какие-то разумные свойства транзакций (кстати, вам могут быть вообще не нужны транзакции: (напр. простые get и put по ключу — это еще не транзакции), тогда не отмечайте ни один из этих пунктов), пункты 7-9 — уровень согласованности свойств, указанных выше.

«Нативный клиент для Java/С/С++/С#» — значит клиент для этих языков не просто формирует запрос на языке, на котором написана база, и идет в какой-нибудь IPC/JNI, а прямо работает с базой. По сути, это означает, что база написана (в том числе) на этом языке. Благодаря наличию таких штук, как Protocol Buffers, Thrift и подробных, база, вообще говоря, может быть написана на нескольких языках.

Я 100% забыл какие-то важные свойства, пишите в личку, добавлю в опрос.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какие key-value хранилища вы используете в бою?
1.48%Aerospike20
0.3%ArangoDB4
4.58%Berkeley DB62
0.74%Coherence10
1.26%DynamoDB17
2.07%Ehcache28
0.07%FoundationDB1
0.3%GridGain4
0.3%GT.M4
0.07%Hamsterdb1
1.33%Hazelcast18
0%Hibari0
0%HyperDex0
0.3%Infinispan4
0.52%Kyoto Cabinet7
3.1%LevelDB42
0.52%MapDB7
37.74%Memcached511
0.22%NCache3
0.59%Oracle NoSQL8
0.15%Project Voldemort2
53.99%Redis731
3.25%Riak44
0.52%RocksDB7
0%Scalaris0
0.3%SimpleDB4
0%Sqrrl0
0%STSdb0
1.77%Tarantool24
0.81%Tokyo Cabinet11
0.3%Tokyo Tyrant4
0%WebSphere eXtreme Scale0
0.07%XAP1
0.07%ZODB1
1.62%Другое key-value хранилище (укажу в комментариях)22
20.61%Реляционная БД в качестве key-value хранилища (Oracle, MySQL, PostgreSQL, ...)279
20.97%Хранилище документов в качестве key-value (MongoDB, CouchDB, Couchbase, ...)284
4.51%БД другого типа в качестве key-value хранилища (напр. графовая: Neo4j, wide column хранилище: Cassandra, HBase, ...)61
6.13%Самописное key-value хранилище83
8.2%Не использую key-value хранилище111
0.44%LMDB6
0.07%LedisDB1
0.15%GoLevelDB2
0.3%BoltDB4
Проголосовали 1354 пользователя. Воздержался 1101 пользователь.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какие свойства key-value хранилища вам важны?
62.37%Масштабируемость (хочу хранить больше / выдерживать большую нагрузку добавлением серверов)358
34.84%Атомарность транзакций по одному ключу (либо записать вcе изменения значения, либо ничего)200
17.6%Изолированность транзакций по одному ключу (несколько одновременных транзакций по одному ключу запрещены)101
33.28%Надежность (durability) транзакций (после окончания транзакции я точно не потеряю данные)191
12.2%Атомарность транзакций по нескольким ключам70
6.97%Изолированность транзакций по нескольким ключам (несколько одновременных транзакций, пересекающиеся по ключам, запрещены)40
6.62%Транзакции в пределах сервера (на ДЦ/всю базу изменения распространятся со временем)38
5.23%Транзакции в пределах ДЦ (на всю базу изменения распространятся со временем)30
9.41%Транзакции на всю базу54
44.43%Отказоустойчивость (сгорел сервер — продолжаем работу)255
20.21%Крутая отказоустойчивость (отключился ДЦ — продолжаем работу)116
20.21%Репликация изменений между серверами (свойство чуть слабее, чем масштабируемость)116
14.11%Упорядоченность по ключам (возможность итерироваться по ключам в отсортированном порядке, найти ближайший больший/меньший, чем данный, ключ, и т. д.)81
20.21%Гарантии максимального времени ответа (response latency)116
18.47%Подписка на события по ключу106
15.85%Логгирование (какое-нибудь, как минимум хочу иметь возможность видеть, что происходит с базой, для дебага)91
5.92%Логгирование изменений с возможностью воспроизведения34
16.38%Асинхронное API (получил future по ключу)94
40.07%Хранение данных в памяти (ходить за каждым ключом на диск — слишком медленно)230
23.87%Хранение на диске (напр. для надежности, если БД не распределенная)137
10.45%Поддержка Windows (хочу гонять базу на своей девелоперской Винде / у меня Windows сервера)60
6.1%Поддержка MacOS (хочу гонять базу на своем девелоперском Маке)35
5.92%Удаленные запросы (RPC, тонкие клиенты)34
9.23%Нативный клиент для Java53
11.32%Нативный клиент для С/С++65
9.58%Нативный клиент для С#55
11.5%Веб-интерфейс (слать CRUD запросы по HTTP)66
16.2%Веб-морда для мониторинга базы93
8.36%Бекап в реляционную БД48
28.4%Какой-нибудь бекап163
10.63%Не нужны никакие свойства, как и key-value хранилища в принципе61
Проголосовали 574 пользователя. Воздержались 1154 пользователя.
Теги:
Хабы:
Всего голосов 62: ↑46 и ↓16+30
Комментарии57

Публикации

Ближайшие события