Масштабирование в sql azure - sql azure federations

44

Upload: -

Post on 12-Dec-2014

373 views

Category:

Technology


2 download

DESCRIPTION

Масштабируемость приложения стала критическим элементом дизайна после перехода от модели индивидуальных программ к серверной модели работы приложений. Масштабируемые приложения способны справиться с более активным использованием и возросшим объёмом данных. Масштабируемые приложения обладают высокой доступностью и отказоустойчивостью. Масштабируемые приложения управляемы и сопровождаемы. Всё это справедливо по отношению ко всем слоям приложения, в том числе и к базе данных. Масштабирование базы данных - процесс отнюдь не тривиальный и довольно сложный. SQL Azure, со своей концепцией моментального создания и распределения баз данных внутри ЦОД, является хорошей альтернативой одиночному серверу, а SQL Azure Federations выводят масштабирование в SQL Azure на совершенно новый уровень.

TRANSCRIPT

Page 1: Масштабирование в SQL Azure - SQL Azure Federations
Page 2: Масштабирование в SQL Azure - SQL Azure Federations

PBC302

Масштабирование в SQL AzureSQL Azure Federations

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

Page 3: Масштабирование в SQL Azure - SQL Azure Federations

Денис Резник

Руководитель департамента веб-разработки компании Digital Cloud TechnologiesТренер Microsoft Innovation CenterMicrosoft MVP (SQL Server)Microsoft Certified TrainerБлог: http://reznik.uneta.com.ua Твиттер: @DenisReznikEmail: [email protected]

Page 4: Масштабирование в SQL Azure - SQL Azure Federations

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

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

ZoomingScaling

Page 5: Масштабирование в SQL Azure - SQL Azure Federations

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

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

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

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

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

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

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

Page 6: Масштабирование в SQL Azure - SQL Azure Federations

Масштабирование Базы Данных (Scale Up)

Scale Up в SQL Azure нет!

32 GB RAM, 8 cores

Page 7: Масштабирование в SQL Azure - SQL Azure Federations

Масштабирование Базы Данных (Scale Out)

«Сложнее всего масштабировать базу данных»

Варианты масштабирования базы данныхРепликация

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

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

DataData...

Page 8: Масштабирование в SQL Azure - SQL Azure Federations

Большая гибкость

Page 9: Масштабирование в SQL Azure - SQL Azure Federations

Архитектура TicketDirect

SQL Azure

Castellan

Castellan Venue DB

Castellan Venue DB’sVenue 1

Partition(s)

Castellan Venue DB

Castellan Venue DB’sVenue 2

Partition(s)

Castellan Venue DB

Castellan Venue DB’sVenue N

Partition(s)

One application DB, many venue DB’s – each partitioned in to many parts (40+)

...

Windows Azure Roles

http:// TicketDirect .* Dynamic Worker(tasks uploaded

as blobs)

Partitioner Worker

Windows Azure StorageQueues for communication between clients and roles

-- - --- - -

-- - --- - -

Tables to record server & partition information

Blobs to store web and worker role resources

Client Applications

Castellan.old (VB6)

Service Bus

WCF

On PremisesSQL Server

Castellan Venue

Distributed Cache Worker

Castellan.Azure• Box Office sales• Ticket Printing • System Administration • Venue/Event Management• Partitioning

Page 10: Масштабирование в SQL Azure - SQL Azure Federations

Большая гибкость

Использование модели pay-as-you-go в полной мереРасширение БД без потери времени

Возможность строить приложения, которые будут масштабироваться по мере роста нагрузкиОбработка пиковых нагрузок

Несколько БД Много БД

Page 11: Масштабирование в SQL Azure - SQL Azure Federations

Multi-Tenancy Приложения

Tenancy Models:Single tenant per database

Multiple-tenants per database Multiple databases per tenant

Tenant_id =55 Tenant_id =55

Tenant_id =55

Tenant_id =56

Tenant_id =57

Page 12: Масштабирование в SQL Azure - SQL Azure Federations

Реализация шардинга БД

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

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

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

доступность

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

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

Шардинг

Page 13: Масштабирование в SQL Azure - SQL Azure Federations

Что такое Federation?

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

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

Page 14: Масштабирование в SQL Azure - SQL Azure Federations

Концепция Federations

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

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

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

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation MembersFederation Root

Federations

Page 15: Масштабирование в SQL Azure - SQL Azure Federations

Концепция Federations

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

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

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation MembersFederation 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 16: Масштабирование в SQL Azure - SQL Azure Federations

Концепция Federations

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

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

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

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Federation membersUser Database and Federation root

Federations

Federated Tables

Central Tables

Reference Tables

Page 17: Масштабирование в SQL Azure - SQL Azure Federations

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

Приложение всегда вначале соединяется с ROOT databaseUSE 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 18: Масштабирование в SQL Azure - SQL Azure Federations

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

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

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

Хорошо для…Management Tasks: Обновление схемы данныхFan-out Querying – получение данных нескольких atomic units

Microsoft ConfidentialMicrosoft 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 19: Масштабирование в SQL Azure - SQL Azure Federations

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

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

Хорошо для…Безопасной модели разработкиПредотвращения утечки данных

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

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 20: Масштабирование в SQL Azure - SQL Azure Federations

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

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

SalesDBOrders_federationCustomerFederationerationCustomerFederation

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

ALTER FEDERATION CustomerFederation SPLIT AT (tenant_id=7500)

Page 21: Масштабирование в SQL Azure - SQL Azure Federations

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

SPLIT в Действии

Appmember: Range [100,200)

Customer(federated)

CustomerAddress

(federated)

PostalCode(reference)

Member: Range [100,150) Member: Range [150,200)

Page 22: Масштабирование в SQL Azure - SQL Azure Federations

Пример Multi-Tenant приложения

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

Database Name = SalesDBFederations =

CustomerFederation (CustomerId int RANGE)Federation distribution key = CustomerIdFederated Tables = Customers, OrdersReference Tables = Products

Page 23: Масштабирование в SQL Azure - SQL Azure Federations

Sample Scenario – Multi-Tenant App

-- День #2 – Разворачиваем системуCREATE DATABASE SalesDBGOCREATE FEDERATION CustomerFederation(CustomerId int RANGE)GO

SalesDB

member: Range [MIN, NULL)

CustomerFederation

Page 24: Масштабирование в SQL Azure - SQL Azure Federations

CREATE TABLE Products( ProductId int NOT NULL, SupplierId int NOT NULL, ProductName nvarchar(50) NOT NULL, Price decimal(12,2) NOT NULL, PRIMARY KEY(ProductId) )GO

Sample Scenario – Multi Tenant App

-- Соедняемся с federation memberUSE FEDERATION CustomerFederationeration(CustomerId = 0) WITH FILTERING = OFF, RESETGOCREATE TABLE Customers( CustomerId int NOT NULL, … PRIMARY KEY (CustomerId) )FEDERATED ON (CustomerId = CustomerId)GOCREATE TABLE Orders ( CustomerId int NOT NULL, OrderId uniqueidentifier NOT NULL, … PRIMARY KEY (OrderId, CustomerId))FEDERATED ON (CustomerId = CustomerId)GO

SalesDB

member: Range [MIN, NULL)

CustomerFederationCustomerFederation Customer(federated)

Orders(federated)

Products(reference)

Page 25: Масштабирование в SQL Azure - SQL Azure Federations

Sample Scenario – Multi Tenant App

-- День #2 Трафик растёт!ALTER FEDERATION CustomerFederation SPLIT AT(CustomerId = 1000)GO-- День #3 ПЯТНИЦЦО! Трафик взлетает до небес! (future)ALTER FEDERATION CustomerFederation SPLIT AT(CustomerId = 100,200,300,…900)GO-- День #4 Наплыв трафика спадает! (future)ALTER FEDERATION CustomerFederation MERGE AT(CustomerId = 100,200,300,…900)GO

SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation

Page 26: Масштабирование в SQL Azure - SQL Azure Federations

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

SQL Azure Federations

Thanks To: Cihan Biyikoglu, Michael Thomassy, Slava Krasovsky and all SQL Azure Team…

Page 27: Масштабирование в SQL Azure - SQL Azure Federations

Windows Azure Platform Training Kit

Page 28: Масштабирование в SQL Azure - SQL Azure Federations

Multi-tenant SQL Azure Federations Sample

Page 29: Масштабирование в SQL Azure - SQL Azure Federations

Multi-tenant SQL Azure Federations Sample

Page 30: Масштабирование в SQL Azure - SQL Azure Federations

SQL Azure Federation Data Migration Wizard

Page 31: Масштабирование в SQL Azure - SQL Azure Federations

SQL Azure Federation Data Migration Wizard

Page 32: Масштабирование в SQL Azure - SQL Azure Federations

SQL Server and SQL Azure Shard Library

Page 33: Масштабирование в SQL Azure - SQL Azure Federations

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

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

Page 34: Масштабирование в SQL Azure - SQL Azure Federations
Page 35: Масштабирование в SQL Azure - SQL Azure Federations
Page 36: Масштабирование в SQL Azure - SQL Azure Federations

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

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

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

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

Federations vNext

Page 37: Масштабирование в SQL Azure - SQL Azure Federations

Полезные ссылкиМасштабирование в SQL Azure – Шардинг

http://reznik.uneta.com.ua/post/2011/05/16/sql-azure-federations-sharding-in-sql-azure.aspx

Знакомимся с SQL Azure Federationshttp://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/

Windows Azure Customer Advisory Teamhttp://windowsazurecat.com/

Video: Building Scale-Out Database Solutions on SQL Azurehttp://player.microsoftpdc.com/Session/591d586f-3732-4bff-8ee2-857f27d74df4

Windows Azure Platform Training Kit - October Updatehttp://www.microsoft.com/download/en/details.aspx?id=8396

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

SQL Azure Federation Data Migration Wizardhttp://sqlazurefedmw.codeplex.com/

SQL Server and SQL Azure Shard Libraryhttp://enzosqlshard.codeplex.com/

Page 38: Масштабирование в SQL Azure - SQL Azure Federations

Как получить доступ?

Будет доступно до конца календарного годаСледите за анонсами на моём блоге:

http://reznik.uneta.com.ua

Мой электронный адрес:[email protected]

Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этой сессии

Page 39: Масштабирование в SQL Azure - SQL Azure Federations

Обратная связь

Уважаемые участники!Ваше мнение очень важно для нас!В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладовПожалуйста, оцените доклад и сдайте анкету при выходе из зала модераторуДля участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже

Спасибо!

Page 40: Масштабирование в SQL Azure - SQL Azure Federations

Спасибо!

Масштабирование в SQL AzureSQL Azure FederationsДенис Резник

Page 41: Масштабирование в SQL Azure - SQL Azure Federations
Page 42: Масштабирование в SQL Azure - SQL Azure Federations

Internals

SQL Azure

Page 43: Масштабирование в SQL Azure - SQL Azure Federations

Gateway Gateway Gateway Gateway Gateway Gateway

Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to CloudDB

SQL Azure Network Topology Application

InternetAzure Cloud

LB

TDS (tcp)

TDS (tcp)

TDS (tcp)

Applications use standard SQL client libraries: ODBC, ADO.Net, PHP, …

Load balancer forwards ‘sticky’ sessions to TDS protocol tier

Security Boundary

SQL SQL SQL SQL SQLSQL

Scalability and Availability: Fabric, Failover, Replication, and Load balancing

Page 44: Масштабирование в SQL Azure - SQL Azure Federations

SQL Azure Database provisioning

TDS GatewayFront-end Node

Protocol Parser

Gateway Logic

Master Cluster

Master Node

Master Node Components

1

2

3

5 67

Scalability and Availability: Fabric, Failover, Replication, and Load balancingScalability and Availability: Fabric, Failover, Replication, and Load balancing

4

8

TDS Session

Backend Node 1SQL Instance

SQL DB

Backend Node 2SQL Instance

SQL DB

Backend Node 3SQL Instance

SQL DB