Startseite > Azure > TechEd Europe 2012; SQL Database Federation (Sharding)

TechEd Europe 2012; SQL Database Federation (Sharding)

Mit der Einführung von SQL Database Federation im Dezember 2011 hat Microsoft eine Funktionalität im Bereich der Azure SQL Database eingeführt, die so aktuell im on-premise Release Candidat von SQL 2012 nicht zu finden ist. Auch in der RTM Version des SQL Server 2012 wird sich die Funktionalität aller Wahrscheinlichkeit nach nicht finden.

Scott Klein hat in seinem Vortrag “Tips & Tricks for Microsoft SQL Azure Federations: How to Build Cross-Federation Queries and Other Tips” einen gelungenen Überblick über die Funktionalität gegeben. SQL Database Federation erlaubt es, bei hoher Last auf der Datenbank, diese in beliebig viele SQL Datenbanken aufzuteilen. Neben der Skalierung von Web-, und Worker Roles ergibt sich dadurch auch die Möglichkeit auf Ebene der Datenbank (theoretisch ohne Einschränkung) zu skalieren.

TechEd_SQLFederation_1

Letztendlich werden ausgewählte Tabellen einer Datenbank in eigene SQL Database Instanzen verlagert.  Der große Vorteil für den Entwickler ergibt sich aus der Tatsache, dass man sich nicht um die Verwaltung der jeweiligen DB Connections kümmern muss. Auch können Aufteilungen in verschiedene Datenbankinstanzen zur Laufzeit ohne Unterbrechung der Datenverfügbarkeit durchgeführt werden. Auch das Löschen von Instanzen kann ohne Down-Time der Datenbank als ganzes durchgeführt werden.

Die Anlage eines sog. Federation Members kann bei der Anlage einer Tabelle via T-SQL Erweiterung durchgeführt werden:

— create Federated tables, named CustomerAddress …
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CustomerAddress](
[AddressID] [int] NOT NULL,
[CustomerID] [bigint] NOT NULL,
[AddressType] [nvarchar](50) NULL,
[AddressLine1] [nvarchar](60) NOT NULL,
[AddressLine2] [nvarchar](60) NULL,
[City] [nvarchar](30) NOT NULL,
[StateProvince] [nvarchar](30) NOT NULL,
[CountryRegion] [nvarchar](30) NOT NULL,
[PostalCode] [nvarchar](15) NOT NULL,
CONSTRAINT [PK_CustomerAddress] PRIMARY KEY CLUSTERED
(
[CustomerID],[AddressID] ASC
)
)FEDERATED ON (cid = CustomerID)
GO

Ein Beispiel wie eine SQL Federation Datenbank mit C# und ADO.NET angesprochen wird kann hier geladen werden.

Entity Framework kann zwar verwendet werden um die SQL Federation Datenbank anzusprechen. Jedoch erscheint die Verwendung zusätzlicher SQL Statements um die richtige Federation auszuwählen zumindest ungewöhnlich.

string strCmd = String.Format(„USE FEDERATION {0}({1}={2}) WITH RESET, FILTERING={3}“,
CONST_FEDERATION_NAME,
CONST_DISTRIBUTION_NAME,
lFederationKey,
(bFilteringOn ? „ON“ : „OFF“));

using (AWEFEntities dc = new AWEFEntities())
{
dc.Connection.Open();
dc.ExecuteStoreCommand(strCmd, null);
dataCustomer = dc.Customers.ToList();
dataCustomerAddress = dc.CustomerAddresses.ToList();
dc.Connection.Close();
}

 

Auf Nachfrage hat Scott Klein erwähnt, dass das Entity Framework Team an einer besseren Integration von EF mit SQL Database Federation mit Nachdruck arbeitet. Aus meiner Sicht empfiehlt es sich zum jetzigen Zeitpunkt SQL Federation Datenbanken mit ADO.NET anstelle eines O/R Mappers anzusprechen.

Zum Abschluss der Session hat Scott Klein noch einen Ausblick auf die kommenden Featuers gegeben.

TechEd_SQLFederation_2

Als besonders interessant erscheint die Möglichkeit eine Datensynchronisation zwischen Federation Members mit Hilfe des “Data Sync Service” zu konfigurieren.

Kategorien:Azure Schlagwörter: ,
  1. Es gibt noch keine Kommentare.
  1. No trackbacks yet.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: