МАСШТАБИРУЕМОСТЬ SQL SERVER И SQL AZURE Теория и практика Денис Резник reznik@dct.ua.

Презентация:



Advertisements
Похожие презентации
Типовые расчёты Растворы
Advertisements


Разработка высоконагруженных проектов Олег Бунин.
DocsVision 4.0 DocsVision 4.0 универсальная система управления документами и бизнес-процессами.
Resource Governor: управление ресурсами в SQL Server 2008 Denis Reznik LPP Soft.Net Team Lead MCTS – SQL Server 2008 Database development MCTS – SQL Server.
Масштабирование, резервируемость, диагностика, репликация и резервное хранение данных СКЗИ «Шифр-Х.509» ООО «Сайфер ЛТД», к.т.н. Влад Ковтун.
1 Основы надежности ЛА Надежность сложных систем.
Разработка высоконагруженных проектов (например – сайтов для сообществ) Олег Бунин.
Школьная форма Презентация для родительского собрания.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
SQL Server 2012 Deep Dive Денис Резник Database Architect at The Frayman Group.
Рассматриваемые темы Введение в кластеринг Кластеринг Stateless session beans Кластеринг Stateful session beans Конфигурация кластеринга 2-1.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
К. Поляков, Исполнитель Водолей Урок 0. Знакомство с исполнителем Водолей.
Новинки и обновления платформы, октябрь 2012 Владимир Юнев, Microsoft Вебинар начнется в (Москва)
Маршрутный лист «Числа до 100» ? ? ?
Windows Azure Boot CampWindowsAzureBootCamp.com. Windows Azure Boot CampWindowsAzureBootCamp.com.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Транксрипт:

МАСШТАБИРУЕМОСТЬ SQL SERVER И SQL AZURE Теория и практика Денис Резник

О себе Track # – Session #2 Руководитель департамента веб-разработки компании Digital Cloud Technologies Тренер Microsoft Innovation Center Microsoft MVP (SQL Server) Microsoft Certified Trainer USSUG Lead Блог: Твиттер:

v v Масштабирование Possible text here

Масштабирование Способность справляться с увеличением нагрузки без влияния на производительность Высокая доступность и отказоустойчивость Управляемость и сопровождаемость Track # – Session #4

Вертикальное масштабирование Scale Up Купить мощный сервер Добавлять серверу ресурсы Есть потолок масштабируемости Track # – Session #5

Вертикальное масштабирование SQL Server Горячее добавление памяти и процессоров Поддержка до 256 ядер Track # – Session #6

Вертикальное масштабирование SQL Azure Track # – Session #7 Scale Up в SQL Azure нет! 32 GB RAM, 8 cores

Горизонтальное масштабирование Scale Out Распределить данные и нагрузку между несколькими серверами Способность противостоять пиковым нагрузкам Не имеет границ масштабирования Track # – Session #8

Горизонтальное масштабирование SQL Server Распределить данные и нагрузку между несколькими серверами Способность противостоять пиковым нагрузкам Не имеет границ масштабирования Track # – Session #9

Горизонтальное масштабирование База данных Track # – Session #10 Варианты масштабирования базы данных Репликация Дублирование данных на серверах Шардинг Распределение данных между серверами

v v Репликация

Master-Slave репликация Track # – Session #12 Пишем на Master, читаем со Slave-ов Масштабирование чтения Запись не масштабируюется Блокировки на всех серверах

Peer-to-Peer репликация Track # – Session #13 Пишем на все сервера Читаем со всех серверов Синхронизация данных

AlwaysOn Track # – Session #14 Переключение нескольких баз (концепция Availability Groups) Автоматическое переключение Несколько копий базы Чтение с копий Перенаправление соединения пользователя в случае отказа основной базы Оптимизированный алгоритм работы

AlwaysOn – Механизм работы Track # – Session #15 Commit Запись в локальный Log Передача данных Запись в log Log Подтверждение Сохранено в локальном log Запись данных в базу Подтверждение DB DB Log

AlwaysOn Track # – Session #16 AA AA AA AA

AlwaysOn Track # – Session #17 Процесс восстановления после сбоя Availability Group Listener

v v Шардинг SQL Server

Track # – Session #19 Резервирование Рост и уменьшение объёма данных (покупка/продажа серверов) Управление ПО, Обновление, Высокая доступность Маршрутизация Где находятся мои данные? Управление секциями Разбиение и слияние Распределение данных Шардинг

Способы шардинга данных Диапазон – разбиение диапазона на секции Диапазоны могут иметь разный размер Хороший выбор для запросов по диапазону Может не выдержать большой нагрузки Хеширование – использование хэша в качестве ключа Отличное решение для распределения данных Плохое для запросов по диапазону Необходимо точно оценивать требования к нагрузке Track # – Session #20

Управление схемой Дизайн схемы должен исключать взаимодействие между базами данных Процесс обновление схемы должен быть устойчивым Код приложения должен: Поддерживать несколько схем при обновлении Останавливать обработку запросов во время обновления Track # – Session #21

Распределённые запросы Задумайтесь можно ли обойтись без них Запускайте запросы к разным базам параллельно и агрегируйте результаты Используйте несколько соединений и многопоточность для увеличения производительности Track # – Session #22

SQL Server and SQL Azure shard library Track # – Session #23

v v Шардинг SQL Azure

SQL Azure Federations С точки зрения базы данных это объект, который позволяет масштабировать базу данных и распределять её данные между отдельными базами данных. С точки зрения пользователя это набор метаданных о том как распределены данные между базами данных и удобная модель работы с этими данными Track # – Session #25

Концепция Fеderations Federation Root База данных в которой находится объект Federation Federation Federation – объект Root базы данных, который знает как распределены данные между шардами Federation Member (aka Шард): Отдельная база данных SQL Azure. Каждая такая база данных, хранит в себе часть общего набора данных. Track # – Session #26 SalesDB CustomerFederationeration CustomerFederation Federation Members Federation Root Federations

Концепция Fеderations Federation Distribution Key Ключ, используемый для распределения данных внутри федерации. Он определяет тип данных ключа (uniqueidentifier, int, bigint, varbinary), и способ распределения данных (range). Его значение определяет Federation Member, на котором будут находиться данные. Atomic Unit Все данные имеющие одинаковый Federation Distribution Key. Например это все строки федеративных таблиц, которые имеют один федеративный ключ. Эта коллекция данных гарантированно будет находиться на одном и том-же шарде (federation member). Track # – Session #27 SalesDB CustomerFederationeration CustomerFederation Federation Root Federations member: Range [1000, 2000) AU PK=5 AU PK=25 AU PK=35 AU PK=5 AU PK=25 AU PK=35 AU PK=1005 AU PK=1025 AU PK=1035 Atomic Units

Концепция Fеderations Federated Tables Содержат кусочек распределённых данные. Federated tables создаются в federation members и содержат federation distribution key. Reference Tables Содержат данные необходимые для lookup запросов. Создаются в Federation Member. Данные таблиц реплицируются между всеми Federation Members. Central Table Таблицы, созданные в federation root базе данных. Используются в основном как набор метаданных. Track # – Session #28 SalesDB CustomerFederationeration CustomerFederation Federation members User Database and Federation root Federations Federated Tables Central Tables Reference Tables

Маршрутизация Приложение всегда вначале соединяется с ROOT database USE FEDERATION – переключает в контекст конкретного federation member Данные с одинаковым значением federation key (atomic unit) всегда находятся в пределах одного federation member Track # – Session #29 SalesDB CustomerFederationeration CustomerFederation Range Distribution [min,1000, 2000, 3000 … , 10000, Max] USE FEDERATION CustomerFederation(customer_id = 5075) …

Маршрутизация – Member Connection FILTERING=OFF Работаем с данными всего Federation member Неограниченный доступ к данным базы: Всё равно что соединиться по имени БД DDL, DML и доступ ко всем Atomic Units внутри Federation Member Хорошо для… Management Tasks: Обновление схемы данных Fan-out Querying – получение данных нескольких atomic units Track # – Session #30 Microsoft Confidential SalesDB member: Range [100,200) Customers (federated) CustomerFederation Orders (federated) Products (referece) CustomerFederation Customer_id=55 USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=OFF GO

Маршрутизация – Filtering connection FILTERING=ON Работаем с данными одного Atomic Unit Полностью доступны данные Reference Tables Запрещены любые изменения глобального состояния Federation Member Хорошо для… Безопасной модели разработки Предотвращения утечки данных Track # – Session #31 Microsoft Confidential SalesDB member: Range [100,200) Customers (federated) CustomerFederation Orders (federated) Products (referece) CustomerFederation Customer_id=55 USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=ON GO

Разделение шарда Разделение шарда делается при помощи T-SQL команды SPLIT. Разделение шарда происходит без остановки работы приложения. Данные шарда недоступны в течении очень короткого промежутка времени. Track # – Session #32 SalesDB Orders_federation CustomerFederationeration CustomerFederation Range Distribution [min,1000, 2000, 3000 … , 10000, Max] ALTER FEDERATION CustomerFederation SPLIT AT (CustomerId=7500)

Сценарий применения Приложение, обрабатывающее заказы множества покупателей и обслуживающее большую базу продуктов. Database Name = SalesDB Federations = CustomerFederation (CustomerId int RANGE) Federation distribution key = CustomerId Federated Tables = Customers, Orders Reference Tables = Products Track # – Session #33

v v Демонстрация SQL Azure Federations

БД размером 75 Тб Track # – Session #35

SQL Azure Federations vNext Управление схемой данных Поддержка управления схемами членов федерации. Больший контроль процесса обновления схемы Эмуляция Federations Локальная эмуляция Federations, для того, чтобы разрабатывать приложения под Federations, не используя SQL Azure Автоматический шардинг Автоматическое разбиение базы данных в зависимости от определённого критерия (время отклика, размер базы данных и т.п.) Распределённые запросы Получение данных с нескольких Federation Members одним запросом Track # – Session #36

Масштабирование Масштабирование в SQL Azure – Шардинг Знакомимся с SQL Azure Federations SQL Azure - Your Data in the Cloud (Cihan Biyikoglu) Video: Building Scale-Out Database Solutions on SQL Azure Windows Azure Platform Training Kit - October Update Multi-tenant SQL Azure Federations Sample SQL Azure Federation Data Migration Wizard SQL Server and SQL Azure Shard Library Track # – Session #37

Масштабирование Способность справляться с увеличением нагрузки без влияния на производительность Высокая доступность и отказоустойчивость Управляемость и сопровождаемость Track # – Session #38

v v Спасибо!