ݺߣ

ݺߣShare a Scribd company logo
NoSQL
Опыт применения NoSQL решений в
проектах Thumbtack
Анатолий Никулин
1. О задачах
2. О разновидностях (по структуре)
3. О разновидностях (CAP)
4. Об особенностях (транзакции, агрегаты)
5. Беглый обзор NoSQL решений
6. О проектном использовании
Sharding
Replication
Map-Reduce
О задачах
Конкретное, эффективней чем абстрактное.
Разновидности NoSQL (по типу данных)
● KV
● Колоночные
● Документо-ориентированные
● Графовые
INFO HISTORY
Разновидности NoSQL (CAP)
Consistency
System availability
Partition tolerance
● AC
Гибкие запросы, отличная согласованность, но отсутствие
горизонтального масштабирования: MySQL, MS SQL Server, Oracle DB
● AP
Географическая доступность: Cassandra*, MongoDB*,Couchbase
● CP
Аналитика, распределенные вычисления: HBase, MongoDB*
Назначение
Redis
● Open-source, НЕ распределенное, быстрое Key-Value
хранилище
● In-memory с сохранением на диск (append only log /
dump)
● Master-slave репликация (backup).
● Возможно хранить как простые примитивы, так и
сложные структуры (списки, словари, множества)
● Поддерживает сложные операции (работа с битовыми
масками, счетчики)
Redis
● Встроенный язык Lua
● TTL
● Реализован механизм Pub/Sub
● Транзакции
Aerospike
● Proprietary, распределенное, быстрое Key-Value
хранилище
● In-memory, SSD
● Шардинг
● Возможно хранить как простые примитивы, так и
сложные структуры
● Поддерживает вторичные индексы
Aerospike
● Встроенный язык Lua
● CP в CAP теореме
● Поддерживает репликацию между дата центрами
● Поддерживает сложные операции (compare and set,
set if unmodified, set if unique)
Couchbase
● Open-source, распределенное, документо-
ориентированное хранилище, может использоваться
как быстрое KV (кеш).
● Memcache - совместимое, с сохранением на диск.
● Protocol: memcached + extensions
● Язык запросов N1QL
Couchbase
● Все ноды равноценны (master-master replication)
● Отличный web интерфейс для управления
кластером
● Инкрементальный map/reduce
● Репликация между-дата центрами
● Вторичные индексы
MongoDB
● Open-source, распределенное, документо-
ориентированное хранилище
● Не равнозначные ноды Master/slave replication
● Протокол: Custom, binary (BSON)
● Javascript используется в качестве языка запросов
● Функции на стороне сервера. Инкрементальный
map/reduce
● Вторичные индексы
HBase
● Open-source, распределенная, версионная,
колоночная
● Хранит миллионы колонок, миллиарды записей.
● Работает по верх HDFS
● Используется для аналитики данных
● CP в CAP теореме
● Не поддерживает классический update
HBase
● Поддерживает:
○ Hadoop MapReduce
○ Random, fast read and write access
○ Запросы по диапазонам, с использованием
фильтров
○ Атомарный compare and set
○ Strong consistent reads and writes
● Не поддерживает:
○ ACID транзакции
Cassandra
● Open-source, распределенная, колоночная
● Хранит миллионы колонок, миллиарды записей.
● Самодостаточна (в отличии от HBase которая
работает по верх HDFS)
● AP/CP в CAP теореме
● Очень хороша для репликации данных между дата
центрами
Cassandra
● Поддерживает:
○ Язык CQL (без JION)
○ Конфигурируемая consistency
○ Random, fast read and write access
○ Атомарный compare and set, counters
○ MapReduce (нужен Hadoop)
○ Вторичные индексы*
● Не поддерживает:
○ ACID транзакции
HBase vs Cassandra
Это братья, а не конкуренты
Cassandra - AP (доступность)
HBase - CP (аналитика)
Neo4J
● Open-source, графовое хранилище
● Persistent disk-based storage written in Java
● ACID транзакции
● Миллиарды вершин на одном хосте.
● Индексы и атрибуты связи.
● Мощный поиск по графу через API и язык запросов
по графу Cypher
Транзакции, агрегаты, JOIN
● Транзакции не всегда нужны.
● Когда есть самодостаточные агрегаты.
● Блокировки на уровне агрегатов.
● JOIN -> Map-Reduce
В проектах: Tinkoff digital
● HBase - аналитика (сортированные данные, рандомный доступ, в
сравнении с логами)
● MongoDB - купились на шардинг и индексы (плохая идея)
Tinkoff: Data Management Platform
В проектах: Thumbtack RTB Bidder
● Redis Быстрое KV хранилище для оперативного
доступа к статистике
● HBase аналитика и распределенные вычисления
Thumbtack RTB Bidder
Резюме
Нужен быстрый доступ к данным?
Redis, Aerospoke, Couchbase
BigData?
HBase, Cassandra
Разно-структурированные данные и гибкая
система запросов?
MongoDB
Вопросы?

More Related Content

NoSQL thumbtack experience, Анатолий Никулин

  • 1. NoSQL Опыт применения NoSQL решений в проектах Thumbtack Анатолий Никулин
  • 2. 1. О задачах 2. О разновидностях (по структуре) 3. О разновидностях (CAP) 4. Об особенностях (транзакции, агрегаты) 5. Беглый обзор NoSQL решений 6. О проектном использовании
  • 7. Разновидности NoSQL (по типу данных) ● KV ● Колоночные ● Документо-ориентированные ● Графовые
  • 13. ● AC Гибкие запросы, отличная согласованность, но отсутствие горизонтального масштабирования: MySQL, MS SQL Server, Oracle DB ● AP Географическая доступность: Cassandra*, MongoDB*,Couchbase ● CP Аналитика, распределенные вычисления: HBase, MongoDB* Назначение
  • 14. Redis ● Open-source, НЕ распределенное, быстрое Key-Value хранилище ● In-memory с сохранением на диск (append only log / dump) ● Master-slave репликация (backup). ● Возможно хранить как простые примитивы, так и сложные структуры (списки, словари, множества) ● Поддерживает сложные операции (работа с битовыми масками, счетчики)
  • 15. Redis ● Встроенный язык Lua ● TTL ● Реализован механизм Pub/Sub ● Транзакции
  • 16. Aerospike ● Proprietary, распределенное, быстрое Key-Value хранилище ● In-memory, SSD ● Шардинг ● Возможно хранить как простые примитивы, так и сложные структуры ● Поддерживает вторичные индексы
  • 17. Aerospike ● Встроенный язык Lua ● CP в CAP теореме ● Поддерживает репликацию между дата центрами ● Поддерживает сложные операции (compare and set, set if unmodified, set if unique)
  • 18. Couchbase ● Open-source, распределенное, документо- ориентированное хранилище, может использоваться как быстрое KV (кеш). ● Memcache - совместимое, с сохранением на диск. ● Protocol: memcached + extensions ● Язык запросов N1QL
  • 19. Couchbase ● Все ноды равноценны (master-master replication) ● Отличный web интерфейс для управления кластером ● Инкрементальный map/reduce ● Репликация между-дата центрами ● Вторичные индексы
  • 20. MongoDB ● Open-source, распределенное, документо- ориентированное хранилище ● Не равнозначные ноды Master/slave replication ● Протокол: Custom, binary (BSON) ● Javascript используется в качестве языка запросов ● Функции на стороне сервера. Инкрементальный map/reduce ● Вторичные индексы
  • 21. HBase ● Open-source, распределенная, версионная, колоночная ● Хранит миллионы колонок, миллиарды записей. ● Работает по верх HDFS ● Используется для аналитики данных ● CP в CAP теореме ● Не поддерживает классический update
  • 22. HBase ● Поддерживает: ○ Hadoop MapReduce ○ Random, fast read and write access ○ Запросы по диапазонам, с использованием фильтров ○ Атомарный compare and set ○ Strong consistent reads and writes ● Не поддерживает: ○ ACID транзакции
  • 23. Cassandra ● Open-source, распределенная, колоночная ● Хранит миллионы колонок, миллиарды записей. ● Самодостаточна (в отличии от HBase которая работает по верх HDFS) ● AP/CP в CAP теореме ● Очень хороша для репликации данных между дата центрами
  • 24. Cassandra ● Поддерживает: ○ Язык CQL (без JION) ○ Конфигурируемая consistency ○ Random, fast read and write access ○ Атомарный compare and set, counters ○ MapReduce (нужен Hadoop) ○ Вторичные индексы* ● Не поддерживает: ○ ACID транзакции
  • 25. HBase vs Cassandra Это братья, а не конкуренты Cassandra - AP (доступность) HBase - CP (аналитика)
  • 26. Neo4J ● Open-source, графовое хранилище ● Persistent disk-based storage written in Java ● ACID транзакции ● Миллиарды вершин на одном хосте. ● Индексы и атрибуты связи. ● Мощный поиск по графу через API и язык запросов по графу Cypher
  • 27. Транзакции, агрегаты, JOIN ● Транзакции не всегда нужны. ● Когда есть самодостаточные агрегаты. ● Блокировки на уровне агрегатов. ● JOIN -> Map-Reduce
  • 28. В проектах: Tinkoff digital ● HBase - аналитика (сортированные данные, рандомный доступ, в сравнении с логами) ● MongoDB - купились на шардинг и индексы (плохая идея)
  • 30. В проектах: Thumbtack RTB Bidder ● Redis Быстрое KV хранилище для оперативного доступа к статистике ● HBase аналитика и распределенные вычисления
  • 32. Резюме Нужен быстрый доступ к данным? Redis, Aerospoke, Couchbase BigData? HBase, Cassandra Разно-структурированные данные и гибкая система запросов? MongoDB