SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
Сравнительный анализ
хранилищ данных
Коринский и Царев
О чём этот доклад?
● Существует пропасть между разработчиками и DBA
Отсутствуют популярные материалы по данной теме
● Доклад является обзорным
● Авторы - не DBA!
Зачем нужны транзакции?
● Примеры:
● Оплата счёта
● Размещение поста в блоге
● Покупка билета
Транзакциии
● Транзакция - <здесь по идее нужно определение>
● Наивно: последовательность действий, со
следующими свойствами:
● Atomic
● Consistence
● Isolated
● durability
Транзакции
● Atomic: Последовательность действий
применияется целиком, либо не применяется
вообще
● Consistence: Действия оставляют базу в
непротиворечивом состоянии.
● Isolated: транзакции работают независимо
● Durability: после применения не может
потеряться
Партицирование
● Партицирование - деление данных на части между
различными файлами, разделами диска или машинами в
кластере.
● Примеры:
● Социальные сети хранят тексты постов и картинки
пользователей на различных серверах
● Информация о клиентах мобильного оператора
распределена по регионам
● Сервер для обработки пользователя выбирается по первой
букве имени
Аспекты партицирования
● Виды: способы деления данных на части
● Назначение: какие проблемы решает
● Примеры: использование в реальных проектах
● Enviroment: наличие и условия решений
● Транзакции: как партицирование влияет на
транзакции
Функциональная декомпозиция
● Суть: Данные бьются на части в соотвествии с
семантикой.
● Возможные критерии:
● Тип данных (текст, картинки, видео)
● Изменчивость данных (статический контент или
динамический?)
● Назначение данных (личные данные
пользователей, публичные сообщения)
Горизонтальное партицирование
● Суть: Множество однотипных данных разделяется на (равные) части
по некоторому критерию
● Критерии:
● Географическая рассредоточенность (в каждом регионе своя база)
● Надежность сервиса (обычные пользователи/платные аккаунты)
● Дата поступления данных (удобство поддержки, снижение
нагрузки)
● Хеш-функция: отображение большего множества в меньшее
(примеры далее)
Горизонтальное партицирование
● Примеры хеш-функций:
● Числа: остаток от деления на десять (десять
возможных значений)
● Логин пользователя: первая буква ника
(мощность алвафита - множество
возможных значений)
● "Идеальная": рабивает множество на
равные части (таблица значений функции)
Вертикальное партицирование
● Суть: Однотипные данные разделяются
группируются в части по атрибутам
● Критерии:
● Востребованность (часть колонок нужна
редко)
● Масштабируемость (равномерно
распределяем данные)
Column/Row-oriented system
● Суть: данные организуются либо по строкам, либо по
колонкам
● Row-oriented:
● Все атрибуты каждой записи лежат рядом
● Записи лежат в файле последотельно
● Column-oriented:
● Для каждого атрибута отдельный файл
● При чтении необходимо делать соединение
Enviroment
● Операционные системы
● Файловые системы
● Сеть
● Аппаратура
● Поддержка на уровне хранилища
Транзакции и партицирование
● Транзакции вносят свои проблемы:
● atomic: синхронность применения
(консистентность)
● consistence: издержки на синхронизацию
● isolated: всё хорошо
● durability: что там с
отказоустойчивостью?
Репликация
● Репликация - способ
синхронизации (приведение в
соответствие) частей данных
● Виды репликации:
● master-slave
● master-master
Master-Slave репликация
● Все изменения применяются на
master
● Slave-узлы получает обновления с
master
● Slave-узлов может быть несколько
Назначение
● Резервные копии - плохая идея
● Распределение нагрузки
● Таргетирование запросов
Таргетирование запросов
● Различные хранилища на
master/slave:
● master - OLTP, slave – OLAP
● master - SQL, slave - документо-
ориентированная база
● Скорей всего репликацию придётся писать
руками
Таргетирование запросов
● Различная схема данных:
● master содержит просто таблицы для записи
● slave имеет дополнительные индексы
● slave имеют более узкие типы данных
Таргетирование запросов
● Различная схема данных:
● master содержит просто таблицы для записи
● slave имеет дополнительные индексы
● slave имеют более узкие типы данных
Master-Master репликация
● Суть: Изменения производятся
одновременно на нескольких master
● Защищаемся от выхода из строя master-
узла
● Снижение нагрузки на master-узел
● Снижение нагрузки от slave-узлов
Транзакции и репликации
● Транзакции вносят свои проблемы
● master-slave: транзакции на slave
запаздывают
● master-master: как применять транзакции?
Consistency
● Система всегда выдает корректные,
непротиворечивые, ответы.
● Данные не могут потеряться после
завершения записи.
● Не может быть так, что один и тот же
запрос к данным (выборка данных, поиск, и
т.д.) в зависимости от узла выдавал
различные данные.
Availability
● Система обязана всегдавсегда выдавать
ответы - независимо от
аппаратных сбоев отдельных
узлов.
Partition tolerance
● Система продолжает работать
корректнокорректно при недоступности
части узлов.
Проблема CAP теоремы
Только два из трех
Про что говорим
● Voldemort, Riak, cassandra, MySQL
cluster
● MongoDB, Hbase,
memcache/memcached, berkleydb
● PostgreSQL, MySQL, Oracle, TimesTen
+Consistency +Availability -Partition tolerance
● PostgreSQL
● MySQL
● Oracle
● TimesTen
PostgreSQL
● Очень много разных индексов
● PostGIS
● Репликация внешними средствами
● Сложна
MySQL
● Привычная база
● Есть репликация
● Простота поддержки
Oracle
● Умеет все
● Дорого
TimesTen
● Быстрая in memory база
● Простота
● Цена
PostgreSQL vs MySQL vs Oracle vs TimesTen
● есть деньги oracle/timesten
● хватает – postgres
● иначе mysql
+Availability +Partition tolerance -Consistency
● Voldemort
● Riak
● Cassandra
● MySQL cluster
Voldemort
● Написан на Java, REST
● Key-value
● LinkedIn
● разные backend
Riak
● Написан на Erlang, REST
● Key-value
● разные backend
Riak vs Voldemort
● Одинаковы
Cassandra
● Написана на Java, Thrift api
● Column-oriented
● Разные датацентры
MySQL cluster
● Написана на С
● Честный SQL
● in memeory
Riak/Voldemort vs Cassandra vs MySQL cluster
● совместимость MySQL
● map reduce: Riak
+Consistency +Partiotion tolerance -Availability
● MongoDB
● Hbase
● memcache/memcached
● berkleydb
MongoDB
● Написана на C++, BSON
● Key-value
● github, sourceforge, bit.ly, disqus
Hbase
● Написана на Java, REST
● column-oriented
memcache/memcached
● Написаны на С, Простой протокол
● Key-value
● используется везде
berkleydb
● Написана на С, C-API
● Key-value
● стоит денег
MongoDB vs Hbase bs memcached vs berkleydb
● кеш memcached
● hbase как замена bigtable
● встраиваемая berkleydb
CAP Solution
● Жертвуем Consistency
● Разбиваем систему на части
● Система в разные моменты
времени находиться в разных
позициях CAP теоремы
Счастья нет
● У каждой задачи свои требования
● У каждого хранилища свои сильные и
слабые стороны
● Хранилище под задачу, а не задачу под
хранилище
● Одного хранилища мало
● Правильное решение - всегда компромис
Any question?
Oleg Tsarev
oleg.tsarev@percona.com
http://percona.com/
Kirill A. Korinskiy
kkorinsky@rooxteam.com
http://www.roox.ru/

Weitere ähnliche Inhalte

Andere mochten auch

PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovPostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovNikolay Samokhvalov
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Ontico
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Mail.ru Group
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Postgres Presentation
Postgres PresentationPostgres Presentation
Postgres Presentationgisborne
 
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Ontico
 
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...Mail.ru Group
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDAlex Chistyakov
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...Mail.ru Group
 
как сделать свой кластер на postgresql 95
как сделать свой кластер на postgresql 95как сделать свой кластер на postgresql 95
как сделать свой кластер на postgresql 95Максим Селиверстов
 

Andere mochten auch (14)

PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay SamokhvalovPostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Pgconfru 2015 kosmodemiansky
Pgconfru 2015 kosmodemianskyPgconfru 2015 kosmodemiansky
Pgconfru 2015 kosmodemiansky
 
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
Полнотекстовый поиск в PostgreSQL за миллисекунды (Олег Бартунов, Александр К...
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Get to know PostgreSQL!
Get to know PostgreSQL!Get to know PostgreSQL!
Get to know PostgreSQL!
 
Postgres Presentation
Postgres PresentationPostgres Presentation
Postgres Presentation
 
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
 
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
как сделать свой кластер на postgresql 95
как сделать свой кластер на postgresql 95как сделать свой кластер на postgresql 95
как сделать свой кластер на postgresql 95
 
Full Text Search In PostgreSQL
Full Text Search In PostgreSQLFull Text Search In PostgreSQL
Full Text Search In PostgreSQL
 

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

Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg PresentationHighLoad2009
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Ontico
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиFProg
 
11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQLRoman Brovko
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"IT Event
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Andrey Akulov
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
SECON'2017, Блохин Леонид, Колоночные БД на примере Parquet
SECON'2017, Блохин Леонид, Колоночные БД на примере ParquetSECON'2017, Блохин Леонид, Колоночные БД на примере Parquet
SECON'2017, Блохин Леонид, Колоночные БД на примере ParquetSECON
 

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

Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg Presentation
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
 
Purely practical data structures
Purely practical data structuresPurely practical data structures
Purely practical data structures
 
11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQL
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
SECON'2017, Блохин Леонид, Колоночные БД на примере Parquet
SECON'2017, Блохин Леонид, Колоночные БД на примере ParquetSECON'2017, Блохин Леонид, Колоночные БД на примере Parquet
SECON'2017, Блохин Леонид, Колоночные БД на примере Parquet
 

Mehr von Fuenteovejuna

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert JohnsonFuenteovejuna
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Fuenteovejuna
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandFuenteovejuna
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Fuenteovejuna
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинFuenteovejuna
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandFuenteovejuna
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайFuenteovejuna
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Fuenteovejuna
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Fuenteovejuna
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Fuenteovejuna
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминFuenteovejuna
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинFuenteovejuna
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоFuenteovejuna
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений ЭльцинFuenteovejuna
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковFuenteovejuna
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoFuenteovejuna
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковFuenteovejuna
 

Mehr von Fuenteovejuna (20)

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert Johnson
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice Pelland
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон Грицай
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр Лямин
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений Эльцин
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий Востриков
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav Vorozhko
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
 

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

  • 2. О чём этот доклад? ● Существует пропасть между разработчиками и DBA Отсутствуют популярные материалы по данной теме ● Доклад является обзорным ● Авторы - не DBA!
  • 3. Зачем нужны транзакции? ● Примеры: ● Оплата счёта ● Размещение поста в блоге ● Покупка билета
  • 4. Транзакциии ● Транзакция - <здесь по идее нужно определение> ● Наивно: последовательность действий, со следующими свойствами: ● Atomic ● Consistence ● Isolated ● durability
  • 5. Транзакции ● Atomic: Последовательность действий применияется целиком, либо не применяется вообще ● Consistence: Действия оставляют базу в непротиворечивом состоянии. ● Isolated: транзакции работают независимо ● Durability: после применения не может потеряться
  • 6. Партицирование ● Партицирование - деление данных на части между различными файлами, разделами диска или машинами в кластере. ● Примеры: ● Социальные сети хранят тексты постов и картинки пользователей на различных серверах ● Информация о клиентах мобильного оператора распределена по регионам ● Сервер для обработки пользователя выбирается по первой букве имени
  • 7. Аспекты партицирования ● Виды: способы деления данных на части ● Назначение: какие проблемы решает ● Примеры: использование в реальных проектах ● Enviroment: наличие и условия решений ● Транзакции: как партицирование влияет на транзакции
  • 8. Функциональная декомпозиция ● Суть: Данные бьются на части в соотвествии с семантикой. ● Возможные критерии: ● Тип данных (текст, картинки, видео) ● Изменчивость данных (статический контент или динамический?) ● Назначение данных (личные данные пользователей, публичные сообщения)
  • 9. Горизонтальное партицирование ● Суть: Множество однотипных данных разделяется на (равные) части по некоторому критерию ● Критерии: ● Географическая рассредоточенность (в каждом регионе своя база) ● Надежность сервиса (обычные пользователи/платные аккаунты) ● Дата поступления данных (удобство поддержки, снижение нагрузки) ● Хеш-функция: отображение большего множества в меньшее (примеры далее)
  • 10. Горизонтальное партицирование ● Примеры хеш-функций: ● Числа: остаток от деления на десять (десять возможных значений) ● Логин пользователя: первая буква ника (мощность алвафита - множество возможных значений) ● "Идеальная": рабивает множество на равные части (таблица значений функции)
  • 11. Вертикальное партицирование ● Суть: Однотипные данные разделяются группируются в части по атрибутам ● Критерии: ● Востребованность (часть колонок нужна редко) ● Масштабируемость (равномерно распределяем данные)
  • 12. Column/Row-oriented system ● Суть: данные организуются либо по строкам, либо по колонкам ● Row-oriented: ● Все атрибуты каждой записи лежат рядом ● Записи лежат в файле последотельно ● Column-oriented: ● Для каждого атрибута отдельный файл ● При чтении необходимо делать соединение
  • 13. Enviroment ● Операционные системы ● Файловые системы ● Сеть ● Аппаратура ● Поддержка на уровне хранилища
  • 14. Транзакции и партицирование ● Транзакции вносят свои проблемы: ● atomic: синхронность применения (консистентность) ● consistence: издержки на синхронизацию ● isolated: всё хорошо ● durability: что там с отказоустойчивостью?
  • 15. Репликация ● Репликация - способ синхронизации (приведение в соответствие) частей данных ● Виды репликации: ● master-slave ● master-master
  • 16. Master-Slave репликация ● Все изменения применяются на master ● Slave-узлы получает обновления с master ● Slave-узлов может быть несколько
  • 17. Назначение ● Резервные копии - плохая идея ● Распределение нагрузки ● Таргетирование запросов
  • 18. Таргетирование запросов ● Различные хранилища на master/slave: ● master - OLTP, slave – OLAP ● master - SQL, slave - документо- ориентированная база ● Скорей всего репликацию придётся писать руками
  • 19. Таргетирование запросов ● Различная схема данных: ● master содержит просто таблицы для записи ● slave имеет дополнительные индексы ● slave имеют более узкие типы данных
  • 20. Таргетирование запросов ● Различная схема данных: ● master содержит просто таблицы для записи ● slave имеет дополнительные индексы ● slave имеют более узкие типы данных
  • 21. Master-Master репликация ● Суть: Изменения производятся одновременно на нескольких master ● Защищаемся от выхода из строя master- узла ● Снижение нагрузки на master-узел ● Снижение нагрузки от slave-узлов
  • 22. Транзакции и репликации ● Транзакции вносят свои проблемы ● master-slave: транзакции на slave запаздывают ● master-master: как применять транзакции?
  • 23. Consistency ● Система всегда выдает корректные, непротиворечивые, ответы. ● Данные не могут потеряться после завершения записи. ● Не может быть так, что один и тот же запрос к данным (выборка данных, поиск, и т.д.) в зависимости от узла выдавал различные данные.
  • 24. Availability ● Система обязана всегдавсегда выдавать ответы - независимо от аппаратных сбоев отдельных узлов.
  • 25. Partition tolerance ● Система продолжает работать корректнокорректно при недоступности части узлов.
  • 27. Про что говорим ● Voldemort, Riak, cassandra, MySQL cluster ● MongoDB, Hbase, memcache/memcached, berkleydb ● PostgreSQL, MySQL, Oracle, TimesTen
  • 28. +Consistency +Availability -Partition tolerance ● PostgreSQL ● MySQL ● Oracle ● TimesTen
  • 29. PostgreSQL ● Очень много разных индексов ● PostGIS ● Репликация внешними средствами ● Сложна
  • 30. MySQL ● Привычная база ● Есть репликация ● Простота поддержки
  • 32. TimesTen ● Быстрая in memory база ● Простота ● Цена
  • 33. PostgreSQL vs MySQL vs Oracle vs TimesTen ● есть деньги oracle/timesten ● хватает – postgres ● иначе mysql
  • 34. +Availability +Partition tolerance -Consistency ● Voldemort ● Riak ● Cassandra ● MySQL cluster
  • 35. Voldemort ● Написан на Java, REST ● Key-value ● LinkedIn ● разные backend
  • 36. Riak ● Написан на Erlang, REST ● Key-value ● разные backend
  • 37. Riak vs Voldemort ● Одинаковы
  • 38. Cassandra ● Написана на Java, Thrift api ● Column-oriented ● Разные датацентры
  • 39. MySQL cluster ● Написана на С ● Честный SQL ● in memeory
  • 40. Riak/Voldemort vs Cassandra vs MySQL cluster ● совместимость MySQL ● map reduce: Riak
  • 41. +Consistency +Partiotion tolerance -Availability ● MongoDB ● Hbase ● memcache/memcached ● berkleydb
  • 42. MongoDB ● Написана на C++, BSON ● Key-value ● github, sourceforge, bit.ly, disqus
  • 43. Hbase ● Написана на Java, REST ● column-oriented
  • 44. memcache/memcached ● Написаны на С, Простой протокол ● Key-value ● используется везде
  • 45. berkleydb ● Написана на С, C-API ● Key-value ● стоит денег
  • 46. MongoDB vs Hbase bs memcached vs berkleydb ● кеш memcached ● hbase как замена bigtable ● встраиваемая berkleydb
  • 47. CAP Solution ● Жертвуем Consistency ● Разбиваем систему на части ● Система в разные моменты времени находиться в разных позициях CAP теоремы
  • 48. Счастья нет ● У каждой задачи свои требования ● У каждого хранилища свои сильные и слабые стороны ● Хранилище под задачу, а не задачу под хранилище ● Одного хранилища мало ● Правильное решение - всегда компромис
  • 49. Any question? Oleg Tsarev oleg.tsarev@percona.com http://percona.com/ Kirill A. Korinskiy kkorinsky@rooxteam.com http://www.roox.ru/