Upload
-
View
361
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Масштабируемость приложения стала критическим элементом дизайна после перехода от модели индивидуальных программ к серверной модели работы приложений. Масштабируемые приложения способны справиться с более активным использованием и возросшим объёмом данных. Масштабируемые приложения обладают высокой доступностью и отказоустойчивостью. Масштабируемые приложения управляемы и сопровождаемы. Всё это справедливо по отношению ко всем слоям приложения, в том числе и к базе данных. Масштабирование базы данных - процесс отнюдь не тривиальный и довольно сложный. SQL Azure, со своей концепцией моментального создания и распределения баз данных внутри ЦОД, является хорошей альтернативой одиночному серверу, а SQL Azure Federations выводят масштабирование в SQL Azure на совершенно новый уровень.
Citation preview
PBC302
Масштабирование в SQL AzureSQL Azure Federations
Денис РезникРуководитель департамента веб-разработкиDigital Cloud Technologies
Денис Резник
Руководитель департамента веб-разработки компании Digital Cloud TechnologiesТренер Microsoft Innovation CenterMicrosoft MVP (SQL Server)Microsoft Certified TrainerБлог: http://reznik.uneta.com.ua Твиттер: @DenisReznikEmail: [email protected]
Масштабирование
МасштабированиеСпособность справляться с увеличением нагрузки без влияния на производительностьВысокая доступность и отказоустойчивостьУправляемость и сопровождаемость
ZoomingScaling
Масштабирование
Scale upКупить мощный сервер
Мощные сервера дорогие!
Загрузить сервер по полнойЧто делать если нагрузка меняется? Резервы для пиковой нагрузки - нерентабельно!
Scale-outРаспределить данные и нагрузку между
несколькими серверамиМаленькие сервера дешёвые! Scale linearly800 маленьких серверов работают очень быстро
Способность противостоять пиковым нагрузкамРаспределение нагрузки внутри датацентра
Масштабирование Базы Данных (Scale Up)
Scale Up в SQL Azure нет!
32 GB RAM, 8 cores
Масштабирование Базы Данных (Scale Out)
«Сложнее всего масштабировать базу данных»
Варианты масштабирования базы данныхРепликация
Дублирование данных на серверах
ШардингРаспределение данных между серверами
DataData...
Большая гибкость
Архитектура 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
Большая гибкость
Использование модели pay-as-you-go в полной мереРасширение БД без потери времени
Возможность строить приложения, которые будут масштабироваться по мере роста нагрузкиОбработка пиковых нагрузок
Несколько БД Много БД
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
Реализация шардинга БД
Резервирование• Рост и уменьшение объёма
данных (покупка/продажа серверов)
Управление• ПО, Обновление, Высокая
доступность
Маршрутизация• Где находятся мои данные?
Управление секциями• Разбиение и слияние• Распределение данных
Шардинг
Что такое Federation?
С точки зрения базы данных это объект, который позволяет масштабировать базу данных и распределять её данные между отдельными базами данных.
С точки зрения пользователя это набор метаданных о том как распределены данные между базами данных и удобная модель работы с этими данными
Концепция Federations
Federation RootБаза данных в которой находится объект Federation
FederationFederation – объект Root базы данных, который знает как распределены данные между шардами
Federation Member (aka Шард): Отдельная база данных SQL Azure. Каждая такая база данных, хранит в себе часть общего набора данных.
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
Federation MembersFederation Root
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
Концепция 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
Маршрутизация
Приложение всегда вначале соединяется с 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) …
Маршрутизация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
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
Разделение шарда
Разделение шарда делается при помощи T-SQL команды SPLIT. Разделение шарда происходит без остановки работы приложения. Данные шарда недоступны в течении очень короткого промежутка времени.
SalesDBOrders_federationCustomerFederationerationCustomerFederation
Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max]
ALTER FEDERATION CustomerFederation SPLIT AT (tenant_id=7500)
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
SPLIT в Действии
Appmember: Range [100,200)
Customer(federated)
CustomerAddress
(federated)
PostalCode(reference)
Member: Range [100,150) Member: Range [150,200)
Пример Multi-Tenant приложения
Пример: Приложение, обрабатывающее заказы множества покупателей и обслуживающее большую базу продуктов.
Database Name = SalesDBFederations =
CustomerFederation (CustomerId int RANGE)Federation distribution key = CustomerIdFederated Tables = Customers, OrdersReference Tables = Products
Sample Scenario – Multi-Tenant App
-- День #2 – Разворачиваем системуCREATE DATABASE SalesDBGOCREATE FEDERATION CustomerFederation(CustomerId int RANGE)GO
SalesDB
member: Range [MIN, NULL)
CustomerFederation
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)
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
Демонстрация
SQL Azure Federations
Thanks To: Cihan Biyikoglu, Michael Thomassy, Slava Krasovsky and all SQL Azure Team…
Windows Azure Platform Training Kit
Multi-tenant SQL Azure Federations Sample
Multi-tenant SQL Azure Federations Sample
SQL Azure Federation Data Migration Wizard
SQL Azure Federation Data Migration Wizard
SQL Server and SQL Azure Shard Library
Масштабирование
МасштабированиеСпособность справляться с увеличением нагрузки без влияния на производительностьВысокая доступность и отказоустойчивостьУправляемость и сопровождаемость
Управление схемой данныхПоддержка управления схемами членов федерации. Больший контроль процесса обновления схемы
Эмуляция FederationsЛокальная эмуляция Federations, для того, чтобы разрабатывать приложения под Federations, не используя SQL Azure
Автоматический шардингАвтоматическое разбиение базы данных в зависимости от определённого критерия (время отклика, размер базы данных и т.п.)
Распределённые запросыПолучение данных с нескольких Federation Members одним запросом
Federations vNext
Полезные ссылкиМасштабирование в 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/
Как получить доступ?
Будет доступно до конца календарного годаСледите за анонсами на моём блоге:
http://reznik.uneta.com.ua
Мой электронный адрес:[email protected]
Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этой сессии
Обратная связь
Уважаемые участники!Ваше мнение очень важно для нас!В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладовПожалуйста, оцените доклад и сдайте анкету при выходе из зала модераторуДля участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже
Спасибо!
Спасибо!
Масштабирование в SQL AzureSQL Azure FederationsДенис Резник
Internals
SQL Azure
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
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