sql rally 2012 - масштабируемость sql server и sql azure

Post on 16-Jun-2015

694 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Презентация к докладу Резника Дениса (MVP (SQL Server), руководитель департамента веб-разработки в DCT). В докладе будут рассмотрены основные принципы и техники масштабирования баз данных и возможности SQL Server и SQL Azure, которые упрощают этот процесс.

TRANSCRIPT

МАСШТАБИРУЕМОСТЬ SQL SERVER И SQL AZURE

Денис Резникreznik@dct.ua

2Track # – Session #

О себе

Руководитель департамента веб-разработки компании Digital Cloud Technologies

Тренер Microsoft Innovation Center

Microsoft MVP (SQL Server)

Microsoft Certified Trainer

USSUG Lead

Блог: http://reznik.uneta.com.ua

Твиттер: @DenisReznik

Email: DenisReznik@live.ru

v

Масштабирование

4Track # – Session #

Масштабирование

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

Высокая доступность и отказоустойчивость

Управляемость и сопровождаемость

5Track # – Session #

Вертикальное масштабированиеScale Up

Купить мощный сервер

Добавлять серверу ресурсы

Есть потолок масштабируемости

6Track # – Session #

Вертикальное масштабированиеSQL Server

Горячее добавление памяти и процессоров

Поддержка до 256 ядер

7Track # – Session #

Вертикальное масштабированиеSQL Azure

Scale Up в SQL Azure нет! 32 GB RAM, 8 cores

8Track # – Session #

Горизонтальное масштабированиеScale Out

Распределить данные и нагрузку между несколькими серверами

Не имеет границ масштабирования

9Track # – Session #

Горизонтальное масштабированиеБаза данных

Варианты масштабирования базы данных

Репликация

Дублирование данных на серверах

Шардинг

Распределение данных между серверами

DataData...

v

Техники горизонтального масштабирования

11Track # – Session #

Shared Databases

Общий SAN с базой данных

До восьми инстансов SQL Server

База данных – только для чтения

12Track # – Session #

Partitioned Tables

Таблица разбивается на секции

В пределах одной физической машины

13Track # – Session #

Distributed Partitioned Views

Секционированное представление

Linked Server

v

Репликация

15Track # – Session #

Master-Slave репликация

Пишем на Master, читаем со Slave-ов

Масштабирование чтения

Запись не масштабируюется

Блокировки на всех серверах

16Track # – Session #

Peer-to-Peer репликация

Пишем на все сервера

Читаем со всех серверов

Синхронизация данных

17Track # – Session #

AlwaysOn

A

A

A

A

18Track # – Session #

AlwaysOn – Механизм работы

Commit

Запись в локальный Log

Передача данных

Запись в log

Log

Подтверждение

Сохранено в локальном log

Запись данных в базу

Подтверждение

DBDB Log

1

2

2

3

4

5

6

7

19Track # – Session #

AlwaysOn

Переключение нескольких баз (концепция Availability Groups)

Автоматическое переключение

Несколько копий базы

Чтение с копий

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

v

ШардингSQL Server

21Track # – Session #

Резервирование• Рост и уменьшение объёма

данных (покупка/продажа серверов)

Управление• ПО, Обновление, Высокая

доступность

Маршрутизация• Где находятся мои данные?

Управление секциями• Разбиение и слияние• Распределение данных

Шардинг

22Track # – Session #

Варианты шардинга данных

Диапазон – разбиение диапазона на секции

Диапазоны могут иметь разный размер

Хороший выбор для запросов по диапазону

Может не выдержать большой нагрузки

Хеширование – использование хэша в качестве ключа

Отличное решение для распределения данных

Хорошее решение для выборки по ключу

23Track # – Session #

Управление схемой

Дизайн схемы должен исключать взаимодействие между базами данных

Процесс обновление схемы должен быть устойчивым

24Track # – Session #

Распределённые запросы

Задумайтесь можно ли обойтись без них

Запускайте запросы к разным базам параллельно и агрегируйте результаты

Используйте несколько соединений и многопоточность для увеличения производительности

25Track # – Session #

SQL Server and SQL Azure shard library

v

ШардингSQL Azure

27Track # – Session #

SQL Azure Federations

С точки зрения базы данных это объект, который позволяет масштабировать базу данных и распределять её данные между отдельными базами данных.

С точки зрения пользователя это набор метаданных о том как распределены данные между базами данных и удобная модель работы с этими данными

28Track # – Session #

Концепция Fеderations

Federation Root

База данных в которой находится объект Federation

Federation

Federation – объект Root базы данных, который знает как распределены данные между шардами

Federation Member (aka Шард):

Отдельная база данных SQL Azure. Каждая такая база данных, хранит в себе часть общего набора данных.

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation MembersFederation Root

Federations

29Track # – Session #

Концепция Fеderations

Federation Distribution Key

Ключ, используемый для распределения данных внутри федерации. Он определяет тип данных ключа (uniqueidentifier, int, bigint, varbinary), и способ распределения данных (range). Его значение определяет Federation Member, на котором будут находиться данные.

Atomic Unit

Все данные имеющие одинаковый Federation Distribution Key. Например это все строки федеративных таблиц, которые имеют один федеративный ключ. Эта коллекция данных гарантированно будет находиться на одном и том-же шарде (federation member).

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation Root

Federations member: Range [1000, 2000)

AUPK=5

AUPK=25

AUPK=35

AUPK=5

AUPK=25

AUPK=35

AUPK=1005

AUPK=1025

AUPK=1035

Atomic Units

30Track # – Session #

Концепция Fеderations

Federated Tables

Содержат кусочек распределённых данные. Federated tables создаются в federation members и содержат federation distribution key.

Reference Tables

Содержат данные необходимые для lookup запросов. Создаются в Federation Member. Данные таблиц реплицируются между всеми Federation Members.

Central Table

Таблицы, созданные в federation root базе данных. Используются в основном как набор метаданных.

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation members

User Database and Federation root

Federations

Federated Tables

Central Tables

Reference Tables

31Track # – Session #

Маршрутизация

Приложение всегда вначале соединяется с ROOT database

USE FEDERATION – переключает в контекст конкретного federation member

Данные с одинаковым значением federation key (atomic unit) всегда находятся в пределах одного federation member

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max]

USE FEDERATION CustomerFederation(customer_id = 5075) …

32Track # – Session #

Маршрутизация – Member Connection

FILTERING=OFF

Работаем с данными всего Federation member

Неограниченный доступ к данным базы: Всё равно что соединиться по имени БД

DDL, DML и доступ ко всем Atomic Units внутри Federation Member

Хорошо для…

Management Tasks: Обновление схемы данных

Fan-out Querying – получение данных нескольких atomic units

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=OFFGO

33Track # – Session #

Маршрутизация – Filtering connection

FILTERING=ON

Работаем с данными одного Atomic Unit

Полностью доступны данные Reference Tables

Запрещены любые изменения глобального состояния Federation Member

Хорошо для…

Безопасной модели разработки

Предотвращения утечки данных

Microsoft Confidential

SalesDB

member: Range [100,200)

Customers(federated)

CustomerFederation Orders(federated)

Products(referece)

CustomerFederationCustomer_id=55

Customer_id=55

USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=ONGO

34Track # – Session #

Разделение шарда

Разделение шарда делается при помощи T-SQL команды SPLIT.

Разделение шарда происходит без остановки работы приложения. Данные шарда недоступны в течении очень короткого промежутка времени.

SalesDBOrders_federationCustomerFederationerationCustomerFederation

Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max]

ALTER FEDERATION CustomerFederation SPLIT AT (CustomerId=7500)

35Track # – Session #

Сценарий применения

Приложение, обрабатывающее заказы множества покупателей и обслуживающее большую базу продуктов.

Database Name = SalesDB

Federations = CustomerFederation (CustomerId int RANGE)

Federation distribution key = CustomerId

Federated Tables = Customers, Orders

Reference Tables = Products

v

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

37Track # – Session #

БД размером 75 Тб

38Track # – Session #

SQL Azure Federations vNext

Управление схемой данных

Поддержка управления схемами членов федерации. Больший контроль процесса обновления схемы

Эмуляция Federations

Локальная эмуляция Federations, для того, чтобы разрабатывать приложения под Federations, не используя SQL Azure

Автоматический шардинг

Автоматическое разбиение базы данных в зависимости от определённого критерия (время отклика, размер базы данных и т.п.)

Распределённые запросы

Получение данных с нескольких Federation Members одним запросом

39Track # – Session #

Масштабирование

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

Высокая доступность и отказоустойчивость

Управляемость и сопровождаемость

40Track # – Session #

МасштабированиеМасштабирование в SQL Azure – Шардинг http://reznik.uneta.com.ua/post/2011/05/16/sql-azure-federations-sharding-in-sql-azure.aspx

Знакомимся с SQL Azure Federations http://reznik.uneta.com.ua/post/2011/05/25/introducing-to-sql-azure-federations.aspx

SQL Azure - Your Data in the Cloud (Cihan Biyikoglu) http://blogs.msdn.com/b/cbiyikoglu/

Peer-to-Peer Replication http://www.sql-server-performance.com/2008/peertopeer-replication-in-sql-server-2008/

How to setup Availability Groups http://www.brentozar.com/archive/2011/07/how-set-up-sql-server-denali-availability-groups/

Multi-tenant SQL Azure Federations Sample http://shard.codeplex.com/

SQL Azure Federation Data Migration Wizard http://sqlazurefedmw.codeplex.com/

SQL Server and SQL Azure Shard Library http://enzosqlshard.codeplex.com/

v

Спасибо!

top related