NoSQL -
коротко о
главном
Сергей Туленцев
TextMaster
• фриланс-биржа
• нами пользуются...
• не используем SQL
О чем и зачем?
• Обзорный доклад
• Показания к применению
• Противопоказания
NoSQL
• Была такая БД
• #hashtag gone viral
• ~ 150 разных БД 

(по версии 

http://nosql-database.org)
По типам данных
• key/value store



Redis

Memcached

Riak
По типам данных
• document store



MongoDB

CouchDB

ElasticSearch
По типам данных
• column store



HBase

Cassandra

Vertica
По типам данных
• graph database



Neo4j
По типам данных
• multi-model database



FoundationDB

ArangoDB

OrientDB
По способу хранения
• in-memory
• persistent
• in-place updates
• snapshots
• append-only log
CAP теорема
CAP теорема
• AP или CP
• Eventual consistency
• по времени
• вручную
• CRDT
Когда использовать?
Когда использовать?
• Высокая
масштабируемость
Когда использовать?
• Быстрое
прототипирование
Когда использовать?
• Высокая доступность
Когда использовать?
• Кэширование
Когда использовать?
• Очередь заданий
Когда использовать?
• Хранилище бинарников
Когда использовать?
• Быстрые счетчики
Когда использовать?
• Эффективная оценка
кардинальности
множеств



HyperLogLog

http://antirez.com/news/75
Когда использовать?
• CMS
Когда использовать?
• Полнотекстовый поиск
Анти-паттерны
• ваши данные реляционны
Анти-паттерны
• Излишний embedding



{ author: {email: '...'},

comments: [

{ text: '...',

author: { email: '...'}

},
Анти-паттерны
• недостаточный embedding



{ tags: ['ruby', 'nosql'] }



{ tag_ids: [12346, 680998]}
Анти-паттерны
• неверно выбранный тип
данных
Анти-паттерны
• недостаточно
продуманная схема
данных
Заключение (кэп)
• Знайте свою предметную
область
• Следите за новостями
• Выбирайте БД не только
по пресс-релизам.
Вопросы?
• @stulentsev
• sergei.tulentsev@gmail.com
• http://tech.tulentsev.com

NoSQL - коротко о главном / Сергей Туленцев (TextMaster)