Масштабирование
Авдеев Андрей
Баз Данных
1 Cуть, разновидности и стратегии масштабирования.
2 Партиционирование
3 Репликация
4 Шардинг
5 Sql и NoSQL решения
СУТЬ, РАЗНОВИДНОСТИ
И СТРАТЕГИИ МАСШТАБИРОВАНИЯ
Что это? Зачем? Когда?
МАСШТАБИРУЕМОСТЬ
Способность системы справляться с увеличивающимися
нагрузками (обычно — путем наращивания аппаратных
ресурсов)
(scalability)
МАСШТАБИРОВАНИЕ
вертикальное горизонтальное
ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ
увеличение производительности каждого компонента
системы с целью повышения общей производительности.
Vertical scaling
ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ
разбиение системы на более мелкие структурные компоненты и
разнесение их по отдельным физическим машинам, и увеличение
количества серверов, параллельно выполняющих одну и ту же
функцию.
Horizontal scaling
КОГДА МАСШТАБИРОВАТЬ?
Когда возникает вопрос повышения производительности
приложения.*
Проблемы масштабирования возникают не сразу – они появляются внезапно
и в определенный момент. Если вы к этому не готовы, то вас ждут большие
проблемы.
*
ЧТО ТАКОЕ “БОЛЬШОЙ” ПРОЕКТ?
Сотни тысяч, миллионы, десятки миллионов хитов*
Бесперебойная работа
Сложная структура: серверный парк, большое
количество кода
Большое количество данных
Хит — обращение к веб-странице, исключая запросы к файлам, содержащим
графические изображения, служебные запросы и т. д.
*
INSTAGRAM
Пример
*
Instagrám — бесплатное приложение обмена фотографиями и видеозаписями,
позволяющее пользователям снимать фотографии и видео, а также распространять
их через свой сервис и ряд других социальных сетей.
*
Начало:
• 1 сервер слабее Macbook Pro
• 25к регистраций в первый день
• 2 разработчика
2012г. :
• 40+ миллионов пользователей
• 100+ виртуальных серверов в EC2, в том числе:
• Проект куплен Facebook за 1 млрд. долл
• 1 миллион регистраций за 12 часов после запуска
Android-версии
• 5 разработчиков
YOUTUBE
Пример
*
YouTube — сервис, предоставляющий услуги видеохостинга.
*
• 4 млрд. просмотров страниц в день
• 60 часов видео загружается каждую минуту
• 350 миллионов устройств подключено к YouTube
• На февраль 2012 года в США по данным comScore:
• 147,4 млн. уникальных зрителей
• 16,7 млрд. просмотров видео (в октябре 2011 было
больше 20 млрд.)
• Каждый зритель посмотрел в среднем 7 часов видео
за месяц
• 1.1 млрд. просмотров видео рекламы, суммарной
длительностью в 10.8 млн. часов
СТРАТЕГИИ МАСШТАБИРОВАНИЯ
ПАРТИЦИОНИРОВАНИЕ
РЕПЛИКАЦИЯ
ШАРДИНГ
ПАРТИЦИОНИРОВАНИЕ
ПАРТИЦИОНИРОВАНИЕ
это разбиение больших таблиц на логические части по
выбранным критериям.
(partitioning)
ТИПЫ ПАРТИЦИОНИРОВАНИЯ
По диапазону
По списку значений
По хешу
По ключу
*
Типизация на примере СУБД MySQL ( версия >= 5.1 )
*
ПО ДИАПАЗОНУ
каждая партиция содержит данные принадлежащие
указанному диапазону значений колонки.
PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN (21)
);
Партиционирование
ПО СПИСКУ ЗНАЧЕНИЙ
каждая партиция содержит данные содержащие
определенное значение в колонке.
PARTITION BY LIST (store_id) (
PARTITION p0 VALUES IN (1,5,9,13),
PARTITION p1 VALUES IN (2,6,10,14),
PARTITION p2 VALUES IN (3,7,11,15),
PARTITION p3 VALUES IN (4,8,12,16)
);
Партиционирование
ПО ХЕШУ
Таблица разбивается по хешу значения некоторой колонки.
Партиционирование
ПО КЛЮЧУ
Таблица разбивается по хешу значения некоторой колонки.
Партиционирование
РЕПЛИКАЦИЯ
РЕПЛИКАЦИЯ
— это синхронное/асинхронное копирование данных с
ведущих серверов на ведомые (или возможно тоже
ведущие) сервера.
(replication)
— это наращиваемое решение. Если одного слейва не
хватает — ставится второй, третий и т.д.
Доминируют запросы на
получение информациии
Слабым местом является
операция чтения и именно
ее нужно масштабировать.
Кроме того, репликация используется для
географического распределения серверов
(например один сервер в Америке, другой в Европе).
КОГДА?
ПРИНЦИП РЕПЛИКАЦИИ
Мастер сервер при выполнении модификаций пишет все
сделанные изменения в лог, slave сервера с некоторой
периодичностью проверяют лог на предмет появления
новых данных и если они есть - выполняют аналогичные
действия со своими данными.
РЕПЛИКАЦИОННЫЕ СХЕМЫ
1 мастер, много слейвов
Цепочка мастер серверов
2 мастера, много слейвов
1 МАСТЕР, МНОГО СЛЕЙВОВ
Схема обычно используется в приложениях с
доминирующими запросами на чтение - все запросы на
изменение базы направляются мастер серверу, тогда как
запросы на чтение распределяются между слейвами.
НЕДОСТАТОК
При выходе из строя мастер сервера, все
запросы на модификацию и добавление
данных не будут выполняться.
ЦЕПОЧКА МАСТЕР СЕРВЕРОВ
Очень удобна для географического распределения данных.
Например, ставим сервера в Европе, Азии и Америке,
настраиваем их в цепочку и учим приложение выбирать
сервер в зависимости от региона. Таким образом получаем
выигрыш за счет уменьшения пути путешествия запроса к
серверу.
НЕДОСТАТОК
Тот же, что и в предыдущей схеме.
2 МАСТЕРА, МНОГО СЛЕЙВОВ
Схема является цепочкой из двух мастер серверов. Оба
мастера выполняют запросы на модификацию данных и
имеют равное количество слейвов. Таким образом при
выходе из строя одного мастера, приложение продолжит
работать со вторым и его слейвами.
ПРЕИМУЩЕСТВА / НЕДОСТАТКИ
+ Решает проблему нагрузки.
-
Усложнение программной архитектуры – например,
чтение данных с слейва, до которого не докатились
изменения.
При большом количестве слейвов усложняется схема
распространения изменений, которая в дальнейшем
становится узким местом.
-
ШАРДИНГ
ШАРДИНГ
— развитие партиционирования - разбиение данных на
группы и хранение каждой группы на отдельном сервере
(шарде). В данном случае группа не обязательно включает
одну таблицу, это может быть несколько таблиц
содержащих одно целое.
ШАРДИНГ
Вертикальный шардинг Горизонтальный шардинг
КРИТЕРИЙ ШАРДИНГА
— какой-то параметр, который позволит определять, на
каком именно сервере лежат те или иные данные.
КРИТЕРИИ ШАРДИНГА
ID поля таблицы
Хеш-таблица с соответствиями «пользователь=сервер»
(Тогда, при определении сервера, нужно будет выбрать сервер из этой таблицы. В этом случае
узкое место — это большая таблица соответсвия, которую нужно хранить в одном месте.)
Определять имя сервера с помощью числового
(буквенного) преобразования.
(Например, можно вычислять номер сервера, как остаток от деления на
определенное число (количество серверов, между которыми Вы делите
таблицу). В этом случае узкое место — это проблема добавления новых
серверов — Вам придется делать перераспределение данных между новым
количеством серверов.)
ПРЕИМУЩЕСТВА / НЕДОСТАТКИ
+ Решает проблему нагрузки.
- Ограничение в возможности выборок, которые требуют
пересмотра всей таблицы.
Приходится отказаться от триггеров, хранимых процедур.
+ Бесконечно масштабируем.
Принципиально невозможно без
изменения кода
-
SQL or NoSQL
SQL | MySQL
NDB Cluster – движок на основе синхронных репликаций и
автоматического разделения данных по нодам. Он ведет себя адекватно
для небольших наборов данных и простых запросов.
SQL | PostgreSQL
1.Slony-I – асинхронная (master to multiple slaves) репликация:
http://slony.info/.
2.Pgpool-II – синхронный мульти-мастер
репликации: http://pgfoundry.org/projects/pgpool/.
3.Pgcluster – синхронный мульти-мастер
репликации: http://pgfoundry.org/projects/pgcluster/.
4.PL/Proxy – прокси от компании Skype: http://pgfoundry.org/projects/plproxy/.
5.PgBouncer – менеджер соединений для
PostgreSQL: https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer.
NoSQL
Преимущества:
Эластичное масштабирование
NoSQL-системы разрабатываются с возможностью прозрачного
расширения с целью использования таких преимуществ, как
возможность добавления любого количества новых узлов.
Уменьшение объема администрирования
В общем случае базы данных типа NoSQL проектируются для поддержки
таких возможностей, как автоматическое исправление и более простая
модель данных, которые снижают потребности в администрировании и
настройке.
NoSQL
Преимущества:
Улучшение экономических показателей
Чтобы справиться с взрывным ростом объемов информации и
транзакций, базы данных типа NoSQL обычно используют кластеры
из недорогих массовых серверов.
Гибкие модели данных
Базы данных типа NoSQL имеют более слабые ограничения на модели
данных (или вообще не имеют ограничений), что позволяет более плавно
вносить изменения в приложения и в схемы базы данных.
NoSQL
Недостатки:
Управление транзакциями является одной из мощных функций
реляционных СУБД. Нынешняя – ограниченная или вообще
отсутствующая — поддержка понятия транзакции в NoSQL-системах
управления базами данных рассматривается как препятствие для
применения этих систем при реализации ответственных решений.
Поддержка транзакций
Модели программирования
Базы данных типа NoSQL предлагают не слишком много средств для
запросов и оперативного анализа. Даже простой запрос требует
значительной квалификации в области программирования.
Степень зрелости
Системы реляционных СУБД хорошо известны высокой стабильностью и
обширной функциональностью.
NoSQL
Недостатки:
Поддержка
Почти каждый разработчик NoSQL-системы действует в режиме обучения. Не
вызывает сомнения, что со временем эта ситуация изменится. Однако в
настоящее время гораздо легче найти опытных программистов или
администраторов по реляционным СУБД, чем специалистов по NoSQL.
Компетентность
Поставщики реляционных СУБД тратят много сил на то, чтобы обеспечить столь
высокий уровень поддержки. Многие NoSQL-системы, напротив, являются
проектами с открытым исходным кодом и не обеспечивают подобного уровня
поддержки.
NoSQL
Масштабирование баз данных. (Database Scalability)
Вопросы?

More Related Content

PDF
PostgreSQL в высоконагруженных проектах
PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
PostgreSQL в высоконагруженных проектах
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...

What's hot (20)

PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PPTX
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
PPTX
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
PDF
Архитектура HAWQ / Алексей Грищенко (Pivotal)
PPTX
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
PDF
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
PDF
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Архитектура HAWQ / Алексей Грищенко (Pivotal)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Ad

Viewers also liked (13)

PDF
Масштабирование баз данных
PDF
Масштабирование базы данных через шардирование и партиционирование — Денис Ив...
PPTX
SQL Rally 2012 - масштабируемость SQL Server и SQL Azure
PPTX
Mongo Sharding: Case Study
PPT
Опыт применения Kanban для управления портфелем Agile-проектов
PDF
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
PDF
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
PDF
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
PPTX
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo)
PDF
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
PDF
Презентация новой налоговой системы Украины
Масштабирование баз данных
Масштабирование базы данных через шардирование и партиционирование — Денис Ив...
SQL Rally 2012 - масштабируемость SQL Server и SQL Azure
Mongo Sharding: Case Study
Опыт применения Kanban для управления портфелем Agile-проектов
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo)
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Презентация новой налоговой системы Украины
Ad

Similar to Масштабирование баз данных. (Database Scalability) (20)

PDF
Максим Богук. Postgres-XC
PPTX
Что такое Postgresql (Максим Богук)
PPTX
PostgreSQL. Стильно. Модно. Молодёжно
PPT
hl++ Rubtsov
PPT
распределенная архитектура Lamp приложений петр зайцев
PPT
MySQL для высоконагруженных проектов
PPTX
DBD lection 4. Big Data, NoSQL. In Russian.
PPTX
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
ODP
PPTX
Оптимизации скорости выполнения запросов
PPTX
#PostgreSQLRussia в банке Тинькофф, доклад №1
PPTX
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
PPTX
05 db server_deployment_ru
PPTX
DATA CLUSTER
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PPTX
как из трех стоек сделать две.
PDF
ERP-системы в облаке: разбор кейсов DataLine
PDF
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
PDF
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
Максим Богук. Postgres-XC
Что такое Postgresql (Максим Богук)
PostgreSQL. Стильно. Модно. Молодёжно
hl++ Rubtsov
распределенная архитектура Lamp приложений петр зайцев
MySQL для высоконагруженных проектов
DBD lection 4. Big Data, NoSQL. In Russian.
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Оптимизации скорости выполнения запросов
#PostgreSQLRussia в банке Тинькофф, доклад №1
СХД DEPO Storage 4600 для консолидации данных в современной IT-инфраструктуре
05 db server_deployment_ru
DATA CLUSTER
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
как из трех стоек сделать две.
ERP-системы в облаке: разбор кейсов DataLine
Что нового в MySQL 8.0? / Дмитрий Ленев (Oracle)
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...

Масштабирование баз данных. (Database Scalability)

  • 2. 1 Cуть, разновидности и стратегии масштабирования. 2 Партиционирование 3 Репликация 4 Шардинг 5 Sql и NoSQL решения
  • 3. СУТЬ, РАЗНОВИДНОСТИ И СТРАТЕГИИ МАСШТАБИРОВАНИЯ Что это? Зачем? Когда?
  • 4. МАСШТАБИРУЕМОСТЬ Способность системы справляться с увеличивающимися нагрузками (обычно — путем наращивания аппаратных ресурсов) (scalability)
  • 6. ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ увеличение производительности каждого компонента системы с целью повышения общей производительности. Vertical scaling
  • 7. ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ разбиение системы на более мелкие структурные компоненты и разнесение их по отдельным физическим машинам, и увеличение количества серверов, параллельно выполняющих одну и ту же функцию. Horizontal scaling
  • 8. КОГДА МАСШТАБИРОВАТЬ? Когда возникает вопрос повышения производительности приложения.* Проблемы масштабирования возникают не сразу – они появляются внезапно и в определенный момент. Если вы к этому не готовы, то вас ждут большие проблемы. *
  • 9. ЧТО ТАКОЕ “БОЛЬШОЙ” ПРОЕКТ? Сотни тысяч, миллионы, десятки миллионов хитов* Бесперебойная работа Сложная структура: серверный парк, большое количество кода Большое количество данных Хит — обращение к веб-странице, исключая запросы к файлам, содержащим графические изображения, служебные запросы и т. д. *
  • 10. INSTAGRAM Пример * Instagrám — бесплатное приложение обмена фотографиями и видеозаписями, позволяющее пользователям снимать фотографии и видео, а также распространять их через свой сервис и ряд других социальных сетей. * Начало: • 1 сервер слабее Macbook Pro • 25к регистраций в первый день • 2 разработчика 2012г. : • 40+ миллионов пользователей • 100+ виртуальных серверов в EC2, в том числе: • Проект куплен Facebook за 1 млрд. долл • 1 миллион регистраций за 12 часов после запуска Android-версии • 5 разработчиков
  • 11. YOUTUBE Пример * YouTube — сервис, предоставляющий услуги видеохостинга. * • 4 млрд. просмотров страниц в день • 60 часов видео загружается каждую минуту • 350 миллионов устройств подключено к YouTube • На февраль 2012 года в США по данным comScore: • 147,4 млн. уникальных зрителей • 16,7 млрд. просмотров видео (в октябре 2011 было больше 20 млрд.) • Каждый зритель посмотрел в среднем 7 часов видео за месяц • 1.1 млрд. просмотров видео рекламы, суммарной длительностью в 10.8 млн. часов
  • 14. ПАРТИЦИОНИРОВАНИЕ это разбиение больших таблиц на логические части по выбранным критериям. (partitioning)
  • 15. ТИПЫ ПАРТИЦИОНИРОВАНИЯ По диапазону По списку значений По хешу По ключу * Типизация на примере СУБД MySQL ( версия >= 5.1 ) *
  • 16. ПО ДИАПАЗОНУ каждая партиция содержит данные принадлежащие указанному диапазону значений колонки. PARTITION BY RANGE (store_id) ( PARTITION p0 VALUES LESS THAN (6), PARTITION p1 VALUES LESS THAN (11), PARTITION p2 VALUES LESS THAN (16), PARTITION p3 VALUES LESS THAN (21) ); Партиционирование
  • 17. ПО СПИСКУ ЗНАЧЕНИЙ каждая партиция содержит данные содержащие определенное значение в колонке. PARTITION BY LIST (store_id) ( PARTITION p0 VALUES IN (1,5,9,13), PARTITION p1 VALUES IN (2,6,10,14), PARTITION p2 VALUES IN (3,7,11,15), PARTITION p3 VALUES IN (4,8,12,16) ); Партиционирование
  • 18. ПО ХЕШУ Таблица разбивается по хешу значения некоторой колонки. Партиционирование
  • 19. ПО КЛЮЧУ Таблица разбивается по хешу значения некоторой колонки. Партиционирование
  • 21. РЕПЛИКАЦИЯ — это синхронное/асинхронное копирование данных с ведущих серверов на ведомые (или возможно тоже ведущие) сервера. (replication) — это наращиваемое решение. Если одного слейва не хватает — ставится второй, третий и т.д.
  • 22. Доминируют запросы на получение информациии Слабым местом является операция чтения и именно ее нужно масштабировать. Кроме того, репликация используется для географического распределения серверов (например один сервер в Америке, другой в Европе). КОГДА?
  • 23. ПРИНЦИП РЕПЛИКАЦИИ Мастер сервер при выполнении модификаций пишет все сделанные изменения в лог, slave сервера с некоторой периодичностью проверяют лог на предмет появления новых данных и если они есть - выполняют аналогичные действия со своими данными.
  • 24. РЕПЛИКАЦИОННЫЕ СХЕМЫ 1 мастер, много слейвов Цепочка мастер серверов 2 мастера, много слейвов
  • 25. 1 МАСТЕР, МНОГО СЛЕЙВОВ Схема обычно используется в приложениях с доминирующими запросами на чтение - все запросы на изменение базы направляются мастер серверу, тогда как запросы на чтение распределяются между слейвами. НЕДОСТАТОК При выходе из строя мастер сервера, все запросы на модификацию и добавление данных не будут выполняться.
  • 26. ЦЕПОЧКА МАСТЕР СЕРВЕРОВ Очень удобна для географического распределения данных. Например, ставим сервера в Европе, Азии и Америке, настраиваем их в цепочку и учим приложение выбирать сервер в зависимости от региона. Таким образом получаем выигрыш за счет уменьшения пути путешествия запроса к серверу. НЕДОСТАТОК Тот же, что и в предыдущей схеме.
  • 27. 2 МАСТЕРА, МНОГО СЛЕЙВОВ Схема является цепочкой из двух мастер серверов. Оба мастера выполняют запросы на модификацию данных и имеют равное количество слейвов. Таким образом при выходе из строя одного мастера, приложение продолжит работать со вторым и его слейвами.
  • 28. ПРЕИМУЩЕСТВА / НЕДОСТАТКИ + Решает проблему нагрузки. - Усложнение программной архитектуры – например, чтение данных с слейва, до которого не докатились изменения. При большом количестве слейвов усложняется схема распространения изменений, которая в дальнейшем становится узким местом. -
  • 30. ШАРДИНГ — развитие партиционирования - разбиение данных на группы и хранение каждой группы на отдельном сервере (шарде). В данном случае группа не обязательно включает одну таблицу, это может быть несколько таблиц содержащих одно целое.
  • 32. КРИТЕРИЙ ШАРДИНГА — какой-то параметр, который позволит определять, на каком именно сервере лежат те или иные данные.
  • 33. КРИТЕРИИ ШАРДИНГА ID поля таблицы Хеш-таблица с соответствиями «пользователь=сервер» (Тогда, при определении сервера, нужно будет выбрать сервер из этой таблицы. В этом случае узкое место — это большая таблица соответсвия, которую нужно хранить в одном месте.) Определять имя сервера с помощью числового (буквенного) преобразования. (Например, можно вычислять номер сервера, как остаток от деления на определенное число (количество серверов, между которыми Вы делите таблицу). В этом случае узкое место — это проблема добавления новых серверов — Вам придется делать перераспределение данных между новым количеством серверов.)
  • 34. ПРЕИМУЩЕСТВА / НЕДОСТАТКИ + Решает проблему нагрузки. - Ограничение в возможности выборок, которые требуют пересмотра всей таблицы. Приходится отказаться от триггеров, хранимых процедур. + Бесконечно масштабируем. Принципиально невозможно без изменения кода -
  • 36. SQL | MySQL NDB Cluster – движок на основе синхронных репликаций и автоматического разделения данных по нодам. Он ведет себя адекватно для небольших наборов данных и простых запросов.
  • 37. SQL | PostgreSQL 1.Slony-I – асинхронная (master to multiple slaves) репликация: http://slony.info/. 2.Pgpool-II – синхронный мульти-мастер репликации: http://pgfoundry.org/projects/pgpool/. 3.Pgcluster – синхронный мульти-мастер репликации: http://pgfoundry.org/projects/pgcluster/. 4.PL/Proxy – прокси от компании Skype: http://pgfoundry.org/projects/plproxy/. 5.PgBouncer – менеджер соединений для PostgreSQL: https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer.
  • 38. NoSQL Преимущества: Эластичное масштабирование NoSQL-системы разрабатываются с возможностью прозрачного расширения с целью использования таких преимуществ, как возможность добавления любого количества новых узлов. Уменьшение объема администрирования В общем случае базы данных типа NoSQL проектируются для поддержки таких возможностей, как автоматическое исправление и более простая модель данных, которые снижают потребности в администрировании и настройке.
  • 39. NoSQL Преимущества: Улучшение экономических показателей Чтобы справиться с взрывным ростом объемов информации и транзакций, базы данных типа NoSQL обычно используют кластеры из недорогих массовых серверов. Гибкие модели данных Базы данных типа NoSQL имеют более слабые ограничения на модели данных (или вообще не имеют ограничений), что позволяет более плавно вносить изменения в приложения и в схемы базы данных.
  • 40. NoSQL Недостатки: Управление транзакциями является одной из мощных функций реляционных СУБД. Нынешняя – ограниченная или вообще отсутствующая — поддержка понятия транзакции в NoSQL-системах управления базами данных рассматривается как препятствие для применения этих систем при реализации ответственных решений. Поддержка транзакций Модели программирования Базы данных типа NoSQL предлагают не слишком много средств для запросов и оперативного анализа. Даже простой запрос требует значительной квалификации в области программирования. Степень зрелости Системы реляционных СУБД хорошо известны высокой стабильностью и обширной функциональностью.
  • 41. NoSQL Недостатки: Поддержка Почти каждый разработчик NoSQL-системы действует в режиме обучения. Не вызывает сомнения, что со временем эта ситуация изменится. Однако в настоящее время гораздо легче найти опытных программистов или администраторов по реляционным СУБД, чем специалистов по NoSQL. Компетентность Поставщики реляционных СУБД тратят много сил на то, чтобы обеспечить столь высокий уровень поддержки. Многие NoSQL-системы, напротив, являются проектами с открытым исходным кодом и не обеспечивают подобного уровня поддержки.
  • 42. NoSQL