+ All Categories
Home > Technology > SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

Date post: 16-Jun-2015
Category:
Upload: uneta
View: 689 times
Download: 1 times
Share this document with a friend
Description:
Презентация к докладу Резника Дениса (MVP (SQL Server), руководитель департамента веб-разработки в DCT). В докладе будут рассмотрены основные принципы и техники масштабирования баз данных и возможности SQL Server и SQL Azure, которые упрощают этот процесс.
Popular Tags:
41
МАСШТАБИРУЕМОСТЬ SQL SERVER И SQL AZURE Денис Резник [email protected]
Transcript
Page 1: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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

Денис Резник[email protected]

Page 2: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

2Track # – Session #

О себе

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

Тренер Microsoft Innovation Center

Microsoft MVP (SQL Server)

Microsoft Certified Trainer

USSUG Lead

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

Твиттер: @DenisReznik

Email: [email protected]

Page 3: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

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

Page 4: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

4Track # – Session #

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

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

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

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

Page 5: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

5Track # – Session #

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

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

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

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

Page 6: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

6Track # – Session #

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

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

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

Page 7: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

7Track # – Session #

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

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

Page 8: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

8Track # – Session #

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

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

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

Page 9: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

9Track # – Session #

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

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

Репликация

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

Шардинг

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

DataData...

Page 10: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

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

Page 11: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

11Track # – Session #

Shared Databases

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

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

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

Page 12: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

12Track # – Session #

Partitioned Tables

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

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

Page 13: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

13Track # – Session #

Distributed Partitioned Views

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

Linked Server

Page 14: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

Репликация

Page 15: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

15Track # – Session #

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

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

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

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

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

Page 16: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

16Track # – Session #

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

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

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

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

Page 17: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

17Track # – Session #

AlwaysOn

A

A

A

A

Page 18: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

18Track # – Session #

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

Commit

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

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

Запись в log

Log

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

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

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

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

DBDB Log

1

2

2

3

4

5

6

7

Page 19: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

19Track # – Session #

AlwaysOn

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

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

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

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

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

Page 20: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

ШардингSQL Server

Page 21: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

21Track # – Session #

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

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

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

доступность

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

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

Шардинг

Page 22: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

22Track # – Session #

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

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

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

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

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

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

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

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

Page 23: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

23Track # – Session #

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

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

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

Page 24: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

24Track # – Session #

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

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

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

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

Page 25: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

25Track # – Session #

SQL Server and SQL Azure shard library

Page 26: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

ШардингSQL Azure

Page 27: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

27Track # – Session #

SQL Azure Federations

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

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

Page 28: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

28Track # – Session #

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

Federation Root

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

Federation

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

Federation Member (aka Шард):

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

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation MembersFederation Root

Federations

Page 29: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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

Page 30: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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

Page 31: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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) …

Page 32: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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

Page 33: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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

Page 34: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

34Track # – Session #

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

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

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

SalesDBOrders_federationCustomerFederationerationCustomerFederation

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

ALTER FEDERATION CustomerFederation SPLIT AT (CustomerId=7500)

Page 35: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

35Track # – Session #

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

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

Database Name = SalesDB

Federations = CustomerFederation (CustomerId int RANGE)

Federation distribution key = CustomerId

Federated Tables = Customers, Orders

Reference Tables = Products

Page 36: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

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

Page 37: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

37Track # – Session #

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

Page 38: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

38Track # – Session #

SQL Azure Federations vNext

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

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

Эмуляция Federations

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

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

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

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

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

Page 39: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

39Track # – Session #

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

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

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

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

Page 40: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

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/

Page 41: SQL Rally 2012 - масштабируемость SQL Server и SQL Azure

v

Спасибо!


Recommended