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

Preview:

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

Вопросы?