Upload
anatoliy-nikulin
View
457
Download
4
Embed Size (px)
DESCRIPTION
NoSQL, типы, виды, и решения
Citation preview
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
Вопросы?