масштабирование в sql azure

12
Масштабирование в SQL Azure Новый уровень Денис Резник Руководитель департамента веб-разработки Digital Cloud Technologies

Upload: -

Post on 14-Dec-2014

578 views

Category:

Documents


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: масштабирование в Sql azure

Масштабирование в SQL Azure Новый уровень

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

Page 2: масштабирование в Sql azure

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

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

Мощные сервера дорогие!

Загрузить сервер по полнойЧто делать если нагрузка меняется? Резервы для пиковой нагрузки - нерентабельно!

Scale-outРаспределить данные и нагрузку между

несколькими серверамиМаленькие сервера дешёвые! Scale linearly800 маленьких серверов работают олчень быстро

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

Page 3: масштабирование в Sql azure

Масштабирование для многопользовательских приложений

Хранить всё в одной базе? Слишком много данных…Создавать базу данных под каждого пользователя? Неплохо…Sharding Pattern: Лучше

Приложение должно быть готово к этому!T1 T2 T3 T4 T5

T6 T7 T8 T9T10

T11

T12

T13

T14

T15

T16

T17

T18

T19

T20

T1 T2 T3 T4 T5

T6 T7 T8 T9T10

T11

T12

T13

T14

T15

T16

T17

T18

T19

T20

Все мои данные

хранятся в одной БД на

одном сервере

Page 4: масштабирование в Sql azure

DIY Sharding: ПроблемыРезервирование

Рост и уменьшение размера БД

УправлениеОбновление, Высокая доступность

МаршрутизацияГде находятся мои данные?Как их масштабировать и использовать?

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

Covered by

SQL Azure today

Coming up in SQL Azure:

Federations

2011

Page 5: масштабирование в Sql azure

SQL Azure Federations: Основные понятия

Federation Представляет данные с шардов

Federation KeyЗначение, которое определяет маршрутизацию данных

Atomic UnitВсе строки с одинаковым значением federation key value: всегда вместе!

Federation Member (aka Shard)Физическое хранилище для atomic unit

Federation RootБаза данных, содержащая информацию о федерации

Root

Federation “CustData”

Member: [min, 100)AU

PK=5

AUPK=25

AUPK=35

Member: [100, 488)AU

PK=105

AUPK=23

5

AUPK=36

5Member: [488,

max)AUPK=55

5

AUPK=25

45

AUPK=35

65

(Federation Key: CustID)

Page 6: масштабирование в Sql azure

Создание Federation

Создание root базы данныхCREATE DATABASE SalesDBСодержит метаданные секцийЦентрализованное хранилище данных

Создание federation в rootCREATE FEDERATION Orders_Fed (RANGE BIGINT)Указание имени и типа ключаСоздание первого member, покрывающего все даные

SalesDB

Federation “Orders_Fed”

(Federation Key: CustID)Member: [min,

max)

Page 7: масштабирование в Sql azure

Создание схемы

Federated tablesCREATE TABLE orders (…)

FEDERATE ON (customerId)Значение federation key будет определять

то где будут находиться данныеReference tables

CREATE TABLE zipcodes (…)Отсутствие FEDERATE ON указывает на

reference tableCentralized tables

Создаются в root database

Federation “Orders_Fed”

(Federation Key: CustID)

Member: [min, max)

SalesDB

orders

Products

zipcode

Page 8: масштабирование в Sql azure

Разделение и слияниеSplitting a member

Когда слишком большие или высоконагруженныеALTER FEDERATION Orders_Fed SPLIT (100)Создаёт 2 новых членаOnline!

Merging membersКогда слишком малькиеALTER FEDERATION Orders_Fed MERGE (200)Создаёт новый член, удаляет старые

Federation “Orders_Fed”

(Federation Key: CustID)Member: [min,

max)

SalesDB

orders

Products

zipcode

Member: [min, 100)orde

rszipco

de

Member: [100, max) zipco

deorde

rs

Page 9: масштабирование в Sql azure

Соединение и операции

Connect to atomic unitUSE FEDERATION Orders_Fed (56) WITH FILTERING=ONТолько данные со значением federation key 56 видимы

+ reference data

Safe: atomic unit никогда не может быть разделён

Connect to entire federation memberUSE FEDERATION Orders_Fed (56) WITH FILTERING=OFFВсе данные члена федерации видимыDangerous: federation member может быть разделён

Member: [min, 100)AU

PK=5

AUPK=25

AUPK=56

App

zipcode

Page 10: масштабирование в Sql azure

Sharding in SQL Azure: За пределами v1

Schema ManagementПоддержка управления схемами членов федерации.

Fan-out QueriesЕдиничный запрос, который получает данные с нескольких членов федерации.

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

Multi Column Federation KeysFederate on enterprise_customer_id + account_id

Page 12: масштабирование в Sql azure

THANK YOU

Денис РезникРуководитель департамента веб-разработки, DCTTrainer, Microsoft Innovation CenterMicrosoft MVP (SQL Server)MCT, MCITP, MCPD, [email protected]://reznik.uneta.com.ua/http://twitter.com/DenisReznik