nosql - коротко о главном / Сергей Туленцев (textmaster)
TRANSCRIPT
NoSQL - коротко о главномСергей Туленцев
TextMaster• фриланс-биржа • нами пользуются... • не используем SQL
О чем и зачем?• Обзорный доклад • Показания к применению • Противопоказания
NoSQL• Была такая БД • #hashtag gone viral • ~ 150 разных БД
(по версии http://nosql-database.org)
По типам данных• key/value storeRedisMemcachedRiak
По типам данных• document storeMongoDB CouchDBElasticSearch
По типам данных• column storeHBaseCassandraVertica
По типам данных• graph databaseNeo4j
По типам данных• multi-model databaseFoundationDBArangoDBOrientDB
По способу хранения• 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 • [email protected] • http://tech.tulentsev.com