33
NoSQL Опыт применения NoSQL решений в проектах Thumbtack Анатолий Никулин

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

Embed Size (px)

DESCRIPTION

NoSQL, типы, виды, и решения

Citation preview

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

NoSQL

Опыт применения NoSQL решений в проектах Thumbtack

Анатолий Никулин

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

1. О задачах

2. О разновидностях (по структуре)

3. О разновидностях (CAP)

4. Об особенностях (транзакции, агрегаты)

5. Беглый обзор NoSQL решений

6. О проектном использовании

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

Sharding

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

Replication

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

Map-Reduce

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

О задачах

Конкретное, эффективней чем абстрактное.

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

Разновидности NoSQL (по типу данных)

● KV

● Колоночные

● Документо-ориентированные

● Графовые

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

INFO HISTORY

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

Разновидности NoSQL (CAP)

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

Consistency

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

System availability

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

Partition tolerance

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

● AC

Гибкие запросы, отличная согласованность, но отсутствие горизонтального масштабирования: MySQL, MS SQL Server, Oracle DB

● APГеографическая доступность: Cassandra*, MongoDB*,Couchbase

● CPАналитика, распределенные вычисления: HBase, MongoDB*

Назначение

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

Redis

● Open-source, НЕ распределенное, быстрое Key-Value хранилище

● In-memory с сохранением на диск (append only log / dump)

● Master-slave репликация (backup).● Возможно хранить как простые примитивы, так и

сложные структуры (списки, словари, множества) ● Поддерживает сложные операции (работа с битовыми

масками, счетчики)

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

Redis

● Встроенный язык Lua

● TTL

● Реализован механизм Pub/Sub

● Транзакции

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

Aerospike

● Proprietary, распределенное, быстрое Key-Value

хранилище

● In-memory, SSD

● Шардинг

● Возможно хранить как простые примитивы, так и

сложные структуры

● Поддерживает вторичные индексы

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

Aerospike

● Встроенный язык Lua

● CP в CAP теореме

● Поддерживает репликацию между дата центрами

● Поддерживает сложные операции (compare and set,

set if unmodified, set if unique)

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

Couchbase

● Open-source, распределенное, документо-

ориентированное хранилище, может использоваться

как быстрое KV (кеш).

● Memcache - совместимое, с сохранением на диск.

● Protocol: memcached + extensions

● Язык запросов N1QL

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

Couchbase

● Все ноды равноценны (master-master replication)

● Отличный web интерфейс для управления

кластером

● Инкрементальный map/reduce

● Репликация между-дата центрами

● Вторичные индексы

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

MongoDB

● Open-source, распределенное, документо-

ориентированное хранилище

● Не равнозначные ноды Master/slave replication

● Протокол: Custom, binary (BSON)

● Javascript используется в качестве языка запросов

● Функции на стороне сервера. Инкрементальный

map/reduce

● Вторичные индексы

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

HBase● Open-source, распределенная, версионная,

колоночная

● Хранит миллионы колонок, миллиарды записей.

● Работает по верх HDFS

● Используется для аналитики данных

● CP в CAP теореме

● Не поддерживает классический update

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

HBase

● Поддерживает:

○ Hadoop MapReduce

○ Random, fast read and write access

○ Запросы по диапазонам, с использованием фильтров

○ Атомарный compare and set

○ Strong consistent reads and writes

● Не поддерживает:

○ ACID транзакции

○ Вторичные индексы

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

Cassandra

● Open-source, распределенная, колоночная

● Хранит миллионы колонок, миллиарды записей.

● Самодостаточна (в отличии от HBase которая

работает по верх HDFS)

● AP/CP в CAP теореме

● Очень хороша для репликации данных между дата

центрами

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

Cassandra● Поддерживает:

○ Язык CQL (без JION)

○ Конфигурируемая consistency

○ Random, fast read and write access

○ Атомарный compare and set, counters

○ MapReduce (нужен Hadoop)

○ Вторичные индексы*

● Не поддерживает: ○ ACID транзакции

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

HBase vs Cassandra

Это братья, а не конкуренты

Cassandra - AP (доступность)

HBase - CP (аналитика)

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

Neo4J

● Open-source, графовое хранилище

● Persistent disk-based storage written in Java

● ACID транзакции

● Миллиарды вершин на одном хосте.

● Индексы и атрибуты связи.

● Мощный поиск по графу через API и язык запросов

по графу Cypher

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

Транзакции, агрегаты, JOIN

● Транзакции не всегда нужны.

● Когда есть самодостаточные агрегаты.

● Блокировки на уровне агрегатов.

● JOIN -> Map-Reduce

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

В проектах: Tinkoff digital

● HBase - аналитика (сортированные данные, рандомный доступ, в

сравнении с логами)

● MongoDB - купились на шардинг и индексы (плохая идея)

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

Tinkoff: Data Management Platform

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

В проектах: Thumbtack RTB Bidder

● Redis Быстрое KV хранилище для оперативного

доступа к статистике

● HBase аналитика и распределенные вычисления

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

Thumbtack RTB Bidder

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

РезюмеНужен быстрый доступ к данным?Redis, Aerospoke, Couchbase

BigData? HBase, Cassandra

Разно-структурированные данные и гибкая система запросов?MongoDB

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

Вопросы?