Submit Search
Upload
Масштабирование баз данных
•
3 likes
•
6,328 views
SQALab
Follow
Доклад Евгения Шишкина на конференции Application Developer Days-4. г.Минск 13 декабря 2013
Read less
Read more
Education
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
rusbase
как из трех стоек сделать две.
как из трех стоек сделать две.
Serguei Gitinsky
Cloud computing
Cloud computing
Артем Захарченко
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
solit
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015
rusbase
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
Сервисы Azure для научных исследований
Сервисы Azure для научных исследований
Microsoft
Highload++ 2015
Highload++ 2015
Shamim bhuiyan
Recommended
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
rusbase
как из трех стоек сделать две.
как из трех стоек сделать две.
Serguei Gitinsky
Cloud computing
Cloud computing
Артем Захарченко
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
solit
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015
rusbase
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
Сервисы Azure для научных исследований
Сервисы Azure для научных исследований
Microsoft
Highload++ 2015
Highload++ 2015
Shamim bhuiyan
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
Mongo Sharding: Case Study
Mongo Sharding: Case Study
Will Button
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Mikhail Kurnosov
An Integrated Solution Approach
An Integrated Solution Approach
Cees W.M. Nieboer
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
MongoDB
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
pgdayrussia
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
Concurrency
Concurrency
Biju Nair
Опыт применения Kanban для управления портфелем Agile-проектов
Опыт применения Kanban для управления портфелем Agile-проектов
SQALab
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
DevOWL Meetup
My talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Mikhail Kurnosov
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learned
La FeWeb
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
Готовим стажировку
Готовим стажировку
SQALab
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
SQALab
More Related Content
Viewers also liked
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
Mongo Sharding: Case Study
Mongo Sharding: Case Study
Will Button
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Mikhail Kurnosov
An Integrated Solution Approach
An Integrated Solution Approach
Cees W.M. Nieboer
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
MongoDB
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
pgdayrussia
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
Concurrency
Concurrency
Biju Nair
Опыт применения Kanban для управления портфелем Agile-проектов
Опыт применения Kanban для управления портфелем Agile-проектов
SQALab
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
DevOWL Meetup
My talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Mikhail Kurnosov
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learned
La FeWeb
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
Viewers also liked
(20)
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Mongo Sharding: Case Study
Mongo Sharding: Case Study
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
An Integrated Solution Approach
An Integrated Solution Approach
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
Webinar: Scaling MongoDB through Sharding - A Case Study with CIGNEX Datamatics
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Косм...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Concurrency
Concurrency
Опыт применения Kanban для управления портфелем Agile-проектов
Опыт применения Kanban для управления портфелем Agile-проектов
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
My talk on administering PostgreSQL
My talk on administering PostgreSQL
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learned
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
More from SQALab
Готовим стажировку
Готовим стажировку
SQALab
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
SQALab
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
Continuous performance testing
Continuous performance testing
SQALab
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
SQALab
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
SQALab
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
SQALab
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
SQALab
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
Стили лидерства и тестирование
Стили лидерства и тестирование
SQALab
"Давайте не будем про качество"
"Давайте не будем про качество"
SQALab
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
SQALab
Тестирование геолокационных систем
Тестирование геолокационных систем
SQALab
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
SQALab
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
More from SQALab
(20)
Готовим стажировку
Готовим стажировку
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Continuous performance testing
Continuous performance testing
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Стили лидерства и тестирование
Стили лидерства и тестирование
"Давайте не будем про качество"
"Давайте не будем про качество"
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
Тестирование геолокационных систем
Тестирование геолокационных систем
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Масштабирование баз данных
1.
МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ common sense
2.
Евгений Шишкин DBA, wargaming.net eshishki@gmail.com
3.
— We define a DBMS as a complete software system used to define, create, manage, update and query a database. © Gartner БД общего назначения, OldSQL: MySQL, PostgreSQL Специализированные, NewSQL: VoltDB, Vertica, Clustrix NoSQL: HBase, Cassandra, CouchDB, Aerospark, MongoDB
4.
SCALABILITY IS A FUNCTION Мы хотим добавить ресурсов и работать быстрее или обрабатывать больше. Amdahl's law Gustafson-Barsis' Law Neil J. Gunther's Universal Scalability Law
5.
Amdahl's law У нас есть алгоритм, который однопоточно работает за время T1. Мы хотим добавить P процессоров и решить задачу быстрее. Какое увеличение производительности S мы можем получить? «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента»
6.
Amdahl's law Ускорение ограничено той частью работы, которая не параллелизуется. Например, если сериализованная часть алгоритма составляет только 0.1%, при 2048 процессорах ускорение будет только в 672 раза.
7.
Gustafson-Barsis' Law …speedup should be measured by scaling the problem to the number of processors, not by fixing the problem size. — John Gustafson В реальности, добившись нужного времени ответа системы, нас всё устраивает. И мы уже добавляем мощности под растущий размер, а не для сокращения латенси.
8.
Gustafson-Barsis' Law Если объем данных увеличивается вместе с увеличением числа процессоров, а сериализовання часть растет медленно или фиксирована, ускорение растет пропорционально росту ресурсов.
9.
Я НИЧЕГО НЕ ПОНЯЛ Разница в том, хотите ли вы ускорения при той же нагрузке или того же времени ответа при увеличении нагрузки. В реальной жизни больше применим закон Gustafson. Но, если вам надо добиться более быстрой работы алгоритма при тех же данных, руководствуйтесь законом Амдала.
10.
ТАК КАКАЯ ЖЕ БАЗА МАСШТАБИРУЕТСЯ ЛУЧШЕ? Масштабировать надо не базу, а сервис. Бессмысленно рассматривать базу данных в отрыве от профиля нагрузки и приложения. Масштабирование это специализация. Базы данных общего назначения в общем случае не масштабируются.
11.
UNIVERSAL SCALABILITY LAW Cost of sharing resources Diminishing returns from contention Negative returns from incoherency
12.
ТИПИЧНЫЕ ПРОФИЛИ НАГРУЗКИ oltp short-request processing web olap/dwh
13.
OLTP буква T это транзакции - забыли nosql сразу же можно набить любимую базу данных до отказа памятью и ssd, но это будет печально и неэффективно как нам сделать 500k TPS на одном сервере? никак пошардили? добро пожаловать в дивный мир алгоритмов распределенного коммита Почему всё так плохо работает? Вот redis же делает 200к на одном ядре!
14.
OLTP обычная база данных
15.
OLTP Прорывной ресерч H-Store http://hstore.cs.brown.edu/ Готовый продукт VoltDB main memory database -> no buffer pool management каждому cpu свой кусочек памяти и однопоточное выполнение -> нет локов вся работа в хранимых процедурах и куча ресерча -> 2pc иногда не нужен и во время ожидания можно выполнять другие транзакции Подробнее тут http://hstore.cs.brown.edu/publications/
16.
OLTP Все основные сложности с распределенными транзакциями. Рецепт - детерминизм. Зная наперед в какой последовательности будут выполняться транзакции, у нас нет ожидания. База данных всегда делает полезную работу. Подробности тут http://cs.yale.edu/homes/thomson/publications/calvinsigmod12.pdf
17.
SHORT-REQUEST PK/INDEX LOOKUP Такая нагрузка масштабируется чем угодно. Не надо быть семи пядей во лбу, чтобы пошардить PK Речь об эффективности и удобстве. MySQL делает 200k rps, PostgreSQL 120k rps. Невероятно, но редкая nosql система покажет такие числа. Есть Mysql Cluster (NDB, не галера), есть Postgres-xc. NoSQL, которые AP, работают медленней CP.
18.
WEB short-request + joins + tons of order by + orm 95%+ чтения почти нет транзакций небольшой объем горячих данных data skew (zipfian distribution) Нам хватает одного сервера, пока у него не кончается CPU. MySQL Cluster, Postgres-xc, Pgpool и прочие шардят только по одному атрибуту.
19.
WEB Представьте себе табличку с постами create table thread_posts ( post_id bigint, thread_id bigint, user_id bigint, posted_on timestamp, contents text, primary key (thread_id, post_id), key (user_id, posted_on) ); И два популярных запроса: select * from thread_posts where thread_id = 314 order by post_id; select * from thread_posts where user_id = 546 order by posted_on desc limit 10; Хочется пошардить и по thread_id, post_id и по user_id, posted_on Выбирая только одно, далеко не уехать.
20.
WEB Нам надо: отправлять запросы только туда, где лежат наши данные избегать распределенных запросов балансировать нагрузку Хороший способ: отвязать логическую схему от физической, чтобы шардить по разным атрибутам использовать consistent hashing для балансирования данных это сделано в Clustrix
21.
WEB Советики чтобы избежать запросов на ноды, где данных нет lookup таблица bloom filter можно шардить по двум атрибутам руками, делая две таблицы можно денормализовать, помня про update, delete аномалии можно материализовывать данные при записи (push модель) для сверхпопулярных пользователей (лента)
22.
WEB Если заморочиться Проблема эффективного распределения данных по нодам это локальность данных и оверхед репликации данных. Научный подход это положить данные вместе, не по хешу, а те, которые реально запрашиваются вместе. Schism: a Workload-Driven Approach to Database Replication and Partitioning The Little Engine(s) That Could: Scaling Online Social Networks
23.
OLAP огромный объем данных огромные выборки куча сортировок и джойнов однотипные репорты хорошо шардится хорошо сжимается
24.
OLAP Можно: пошардить руками взять postgres-xc, mysql cluster, любой автоматический шардинг и даже можно использовать materialized view (аля push) и можно даже что-то денормализовать
25.
OLAP Нужно: 1. хранить данные в колонках сжатие векторизованный процессинг эффективный доступ к данным 2. оперировать над сжатыми данными в памяти 3. делать row reconstructure только когда это необходимо 4. делать join индексы или prejoin проекции 5. хранить данные уже отсортированными (merge join бесплатный)
26.
OLAP Все эти "нужно" сделаны в Vertica. Часть сделана в Cloudera Impala. Greenplum не умеет column storage. Oracle не умеет column storage. NoSQL не умеет column storage. DB2 и MSSQL умеют, но не MPP. Половина NewSQL, которые про онлайн аналитику, это просто in memory базы. Очень часто даже без dictionary компрессии и RLE.
27.
SQL VS NOSQL Представьте себе nosql базу данных, которая умеет secondary indexes умеет эффективно выполнять часть запросов у себя умеет транзакции дает гарантии, когда это необходимо Боже мой, да это же RDBMS!
28.
ВЫВОДЫ Используйте нужную базу данных для своей нагрузки Не масштабируйте базу в отрыве от приложения Если вы знаете, как решить свою проблему NoSQL базой, значит вы знаете, как решить проблему и в RDBMS Не ленитесь думать и читать
Download now