Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

8,703 views

Published on

В последнее время сайты и веб-приложения растут всё быстрее, а задачи, стоящие перед БД, эволюционируют. Поэтому для (успешных) проектов традиционная реляционная СУБД часто не может удовлетворить все нужды. В ответ на эту проблему возникло большое количество разнообразных решений, очень различающихся по функциональности и характеристикам. При этом они все заносятся под один большой зонтик "NoSQL", что не способствует пониманию вещей. Запутанные веб-разработчики пытаются взять текущую модную и обсуждаемую NoSQL БД и приспособить её под свои нужды, не всегда понимая, нужную ли технологию они выбрали (референс к MongoDB is Web Scale http://www.youtube.com/watch?v=b2F-DItXtZs).

Целью доклада является упорядочение хаоса в головах разработчиков.

- Обзор популярных БД и их классификация (KV store, document store, columnar, etc).
- CAP-теорема и её применение к выбору БД (где-то параметры можно настроить, где-то подпереть сбоку костылем, где-то - увы).
- Типичные примеры применения.
- Антипаттерны применения (из личного опыта и тысяч прочитанных вопросов на stackoverflow :) ).

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

  1. 1. NoSQL - коротко о главном Сергей Туленцев
  2. 2. TextMaster • фриланс-биржа • нами пользуются... • не используем SQL
  3. 3. О чем и зачем? • Обзорный доклад • Показания к применению • Противопоказания
  4. 4. NoSQL • Была такая БД • #hashtag gone viral • ~ 150 разных БД 
 (по версии 
 http://nosql-database.org)
  5. 5. По типам данных • key/value store
 
 Redis
 Memcached
 Riak
  6. 6. По типам данных • document store
 
 MongoDB
 CouchDB
 ElasticSearch
  7. 7. По типам данных • column store
 
 HBase
 Cassandra
 Vertica
  8. 8. По типам данных • graph database
 
 Neo4j
  9. 9. По типам данных • multi-model database
 
 FoundationDB
 ArangoDB
 OrientDB
  10. 10. По способу хранения • in-memory • persistent • in-place updates • snapshots • append-only log
  11. 11. CAP теорема
  12. 12. CAP теорема • AP или CP • Eventual consistency • по времени • вручную • CRDT
  13. 13. Когда использовать?
  14. 14. Когда использовать? • Высокая масштабируемость
  15. 15. Когда использовать? • Быстрое прототипирование
  16. 16. Когда использовать? • Высокая доступность
  17. 17. Когда использовать? • Кэширование
  18. 18. Когда использовать? • Очередь заданий
  19. 19. Когда использовать? • Хранилище бинарников
  20. 20. Когда использовать? • Быстрые счетчики
  21. 21. Когда использовать? • Эффективная оценка кардинальности множеств
 
 HyperLogLog
 http://antirez.com/news/75
  22. 22. Когда использовать? • CMS
  23. 23. Когда использовать? • Полнотекстовый поиск
  24. 24. Анти-паттерны • ваши данные реляционны
  25. 25. Анти-паттерны • Излишний embedding
 
 { author: {email: '...'},
 comments: [
 { text: '...',
 author: { email: '...'}
 },
  26. 26. Анти-паттерны • недостаточный embedding
 
 { tags: ['ruby', 'nosql'] }
 
 { tag_ids: [12346, 680998]}
  27. 27. Анти-паттерны • неверно выбранный тип данных
  28. 28. Анти-паттерны • недостаточно продуманная схема данных
  29. 29. Заключение (кэп) • Знайте свою предметную область • Следите за новостями • Выбирайте БД не только по пресс-релизам.
  30. 30. Вопросы? • @stulentsev • sergei.tulentsev@gmail.com • http://tech.tulentsev.com

×