Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Multiple-tenants per database Single tenant per database Multiple databases per tenant Federations in SQL Azure Federations Range Partitioning member: Range [1000, 2000) SalesDB AU PK=5 Orders_federation Orders_federation fed_name Federation Root just a SQL Database instance AU PK=25 AU PK=5 AU PK=1005 Federation Members just SQL Database instances AU PK=35 AU PK=25 AU PK=35 AU PK=1025 AU PK=1035 Atomic Units Smallest granule of federation key ALTER FEDERATION Orders_Fed SPLIT AT (tenant_id=7500) SalesDB Orders_federation Orders_federation Orders_Fed [5000, 7500) & [7500, 10000) [5000, 10000) USE FEDERATION Orders_Fed(tenant_id=7500) SalesDB Orders_federation Orders_federation Orders_Fed Central Tables SalesDB CustomerFederationeration CustomerFederationeration CustomerFederation Federated Tables and Reference Tables Orders_federation Orders_federation fed_name Orders_federation Orders_federation fed_name -- Connect to Root Database USE FEDERATION CustomerFederation(customer_id = 5075) … SalesDB CustomerFederationeration CustomerFederationeration CustomerFederation Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max] FILTERING=ON Connect to an Atomic Unit Reference Data stays fully visible. Safe; No Changes allowed to the global state of the federation member: No DDL, No DML on Reference Data Good for… Most of the workload of the application: safe programming model Leakage Errors: Engine level predicate injection prevents data leakage Connection to Root - SqlClient, ODBC “Server=tcp:servername.db.windows.net;Db=salesdb;User ID=uname;Password=pword;Encrypt=True” -- THEN USE FEDERATION TO CONNECT OT THE MEMBER CONTAINING THE KEY. USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=ON GO member: Range [100,200) Uszipcodes (referece) SalesDB CustomerFederation CustomerFederation Microsoft Confidential orders (federated) Customer_id=55 Customer_id=55 orderdetails (federated) FILTERING=OFF Connects to the full member Unrestricted Access to the member: Same as connecting to the database name DDL, DML and Access to All Atomic Units within the members allowed Good for… Management Tasks: Schema Deployment Fan-out Querying – queries spanning multiple atomic units ‘Unsafe’ – i.e. can break consistency -- THEN USE FEDERATION TO CONNECT OT THE MEMBER CONTAINING THE KEY. USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=OFF GO member: Range [100,200) Uszipcodes (referece) SalesDB CustomerFederation CustomerFederation Microsoft Confidential orders (federated) Customer_id=55 orderdetails (federated) Microsoft Confidential //MEMBER QUERY //start from the first member – min value USE FED f(id=min) WHILE (nextvalue != NULL) //get results into dataset DataAdapter.Fill(ds); //get the value to navigate to the next member nextvalue = SELECT range_high FROM sys.federation_member_distributions //SUMMARY QUERY LINQ2DataSet(ds) DR simplified with Federations db1 Federations SalesDB Orders_federation Orders_federation Orders_Fed Federation Root Unavailable Federation Members DBCopy member2 @ now PITR member2 @ 6/11/2012 12:00:00 Federations SalesDB Orders_federation Orders_federation Orders_Fed Swap Out Swap Out Federations SalesDB Orders_federation Orders_federation Orders_Fed Copy Data In Drop Drop http://msdn.microsoft.com/enus/library/windowsazure/ee336279.aspx www.syringe.net.nz http://twitter.com/cauld http://blogs.msdn.com/b/cbiyikoglu/