49
Сравнительный анализ хранилищ данных Коринский и Царев

Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Сравнительный анализ хранилищ данных

Коринский и Царев

Page 2: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

О чём этот доклад?● Существует пропасть между разработчиками и DBA

Отсутствуют популярные материалы по данной теме

● Доклад является обзорным

● Авторы - не DBA!

Page 3: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Зачем нужны транзакции?

● Примеры:● Оплата счёта● Размещение поста в блоге● Покупка билета

Page 4: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Транзакциии● Транзакция - <здесь по идее нужно определение>

● Наивно: последовательность действий, со следующими свойствами:

● Atomic

● Consistence

● Isolated

● durability

Page 5: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Транзакции● Atomic: Последовательность действий

применияется целиком, либо не применяется вообще

● Consistence: Действия оставляют базу в непротиворечивом состоянии.

● Isolated: транзакции работают независимо

● Durability: после применения не может потеряться

Page 6: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Партицирование● Партицирование - деление данных на части между

различными файлами, разделами диска или машинами в кластере.

● Примеры:

● Социальные сети хранят тексты постов и картинки пользователей на различных серверах

● Информация о клиентах мобильного оператора распределена по регионам

● Сервер для обработки пользователя выбирается по первой букве имени

Page 7: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Аспекты партицирования● Виды: способы деления данных на части

● Назначение: какие проблемы решает

● Примеры: использование в реальных проектах

● Enviroment: наличие и условия решений

● Транзакции: как партицирование влияет на транзакции

Page 8: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Функциональная декомпозиция● Суть: Данные бьются на части в соотвествии с

семантикой.

● Возможные критерии:

● Тип данных (текст, картинки, видео)

● Изменчивость данных (статический контент или динамический?)

● Назначение данных (личные данные пользователей, публичные сообщения)

Page 9: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Горизонтальное партицирование● Суть: Множество однотипных данных разделяется на (равные) части

по некоторому критерию

● Критерии:

● Географическая рассредоточенность (в каждом регионе своя база)

● Надежность сервиса (обычные пользователи/платные аккаунты)

● Дата поступления данных (удобство поддержки, снижение нагрузки)

● Хеш-функция: отображение большего множества в меньшее (примеры далее)

Page 10: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Горизонтальное партицирование● Примеры хеш-функций:

● Числа: остаток от деления на десять (десять возможных значений)

● Логин пользователя: первая буква ника (мощность алвафита - множество возможных значений)

● "Идеальная": рабивает множество на равные части (таблица значений функции)

Page 11: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Вертикальное партицирование● Суть: Однотипные данные разделяются

группируются в части по атрибутам

● Критерии:

● Востребованность (часть колонок нужна редко)

● Масштабируемость (равномерно распределяем данные)

Page 12: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Column/Row-oriented system● Суть: данные организуются либо по строкам, либо по

колонкам

● Row-oriented:

● Все атрибуты каждой записи лежат рядом

● Записи лежат в файле последотельно

● Column-oriented:

● Для каждого атрибута отдельный файл

● При чтении необходимо делать соединение

Page 13: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Enviroment● Операционные системы● Файловые системы● Сеть● Аппаратура● Поддержка на уровне хранилища

Page 14: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Транзакции и партицирование● Транзакции вносят свои проблемы:

● atomic: синхронность применения (консистентность)

● consistence: издержки на синхронизацию● isolated: всё хорошо● durability: что там с

отказоустойчивостью?

Page 15: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Репликация● Репликация - способ

синхронизации (приведение в соответствие) частей данных

● Виды репликации:● master-slave● master-master

Page 16: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Master-Slave репликация● Все изменения применяются на

master● Slave-узлы получает обновления с

master● Slave-узлов может быть несколько

Page 17: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Назначение● Резервные копии - плохая идея● Распределение нагрузки● Таргетирование запросов

Page 18: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Таргетирование запросов● Различные хранилища на

master/slave:● master - OLTP, slave – OLAP● master - SQL, slave - документо-

ориентированная база● Скорей всего репликацию придётся писать

руками

Page 19: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Таргетирование запросов● Различная схема данных:

● master содержит просто таблицы для записи● slave имеет дополнительные индексы● slave имеют более узкие типы данных

Page 20: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Таргетирование запросов● Различная схема данных:

● master содержит просто таблицы для записи● slave имеет дополнительные индексы● slave имеют более узкие типы данных

Page 21: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Master-Master репликация● Суть: Изменения производятся

одновременно на нескольких master

● Защищаемся от выхода из строя master-узла

● Снижение нагрузки на master-узел

● Снижение нагрузки от slave-узлов

Page 22: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Транзакции и репликации● Транзакции вносят свои проблемы

● master-slave: транзакции на slave запаздывают

● master-master: как применять транзакции?

Page 23: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Consistency● Система всегда выдает корректные,

непротиворечивые, ответы.

● Данные не могут потеряться после завершения записи.

● Не может быть так, что один и тот же запрос к данным (выборка данных, поиск, и т.д.) в зависимости от узла выдавал различные данные.

Page 24: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Availability● Система обязана всегдавсегда выдавать

ответы - независимо от аппаратных сбоев отдельных узлов.

Page 25: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Partition tolerance● Система продолжает работать корректнокорректно при недоступности части узлов.

Page 26: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Проблема CAP теоремыТолько два из трех

Page 27: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Про что говорим● Voldemort, Riak, cassandra, MySQL

cluster● MongoDB, Hbase,

memcache/memcached, berkleydb● PostgreSQL, MySQL, Oracle, TimesTen

Page 28: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

+Consistency +Availability -Partition tolerance

● PostgreSQL● MySQL● Oracle● TimesTen

Page 29: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

PostgreSQL● Очень много разных индексов● PostGIS● Репликация внешними средствами● Сложна

Page 30: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

MySQL● Привычная база● Есть репликация● Простота поддержки

Page 31: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Oracle● Умеет все● Дорого

Page 32: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

TimesTen● Быстрая in memory база● Простота● Цена

Page 33: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

PostgreSQL vs MySQL vs Oracle vs TimesTen

● есть деньги oracle/timesten● хватает – postgres● иначе mysql

Page 34: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

+Availability +Partition tolerance -Consistency

● Voldemort● Riak● Cassandra● MySQL cluster

Page 35: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Voldemort● Написан на Java, REST● Key-value● LinkedIn● разные backend

Page 36: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Riak● Написан на Erlang, REST● Key-value● разные backend

Page 37: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Riak vs Voldemort● Одинаковы

Page 38: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Cassandra● Написана на Java, Thrift api● Column-oriented● Разные датацентры

Page 39: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

MySQL cluster● Написана на С● Честный SQL● in memeory

Page 40: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Riak/Voldemort vs Cassandra vs MySQL cluster

● совместимость MySQL● map reduce: Riak

Page 41: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

+Consistency +Partiotion tolerance -Availability

● MongoDB● Hbase● memcache/memcached● berkleydb

Page 42: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

MongoDB● Написана на C++, BSON● Key-value● github, sourceforge, bit.ly, disqus

Page 43: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Hbase● Написана на Java, REST● column-oriented

Page 44: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

memcache/memcached● Написаны на С, Простой протокол● Key-value● используется везде

Page 45: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

berkleydb● Написана на С, C-API● Key-value● стоит денег

Page 46: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

MongoDB vs Hbase bs memcached vs berkleydb

● кеш memcached● hbase как замена bigtable● встраиваемая berkleydb

Page 47: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

CAP Solution● Жертвуем Consistency● Разбиваем систему на части● Система в разные моменты

времени находиться в разных позициях CAP теоремы

Page 48: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Счастья нет● У каждой задачи свои требования

● У каждого хранилища свои сильные и слабые стороны

● Хранилище под задачу, а не задачу под хранилище

● Одного хранилища мало

● Правильное решение - всегда компромис

Page 49: Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский

Any question?

Oleg [email protected]

http://percona.com/

Kirill A. [email protected]

http://www.roox.ru/