SQL Azure Architecture
One machine
-oneSQL Server
-one"SQL DB" (physical database)
-oneLogfile one mdf file
-a lot of partitions (logical database)
user are talking to Gateway (TDS forwarder) instead of directlygoing to SQL Database
Fabric,Failover,Replication and Load Balancing
Latency
-NetworkLatency
-Userand Application ( latency 1)
-Applicationand SQL Azure DB ( latency 2)
-Optimization
-Minimizelatency 1: select data center close user
-Minimizelatency 2: put your app close to SQL Azure DB
-Minimizenetwork round trips
Latency Test
-Ping test: using "Client Statistics" +"SELECT 1"
-TestingClient Latency to SQL Azure:http://blogs.msdn.com/b/sqlazure/archive/2010/05/27/10016392.aspx
Resource Share with other user's DB
-CPU,Memory, Disk Throughput
-TempDB,work threadss, network
-Multi-tenancymanagement
-LoadBalancer
-Swap:swap secondary DB to primary DB when primary is overload
-Move:making copy of primary DB to fourth machine
-ThrottlingService
-softthrottle: throttle the busiest DBs first
-hardthrottle: throttle every DB if necessary
-Error:40501, The service is currently busy, Retry the request after 10 seconds.%d(e.g.:131075)
-Step1: Reasons=code/256=512
-Setp2: Convert Reasons to binary=1000000000
-Step3: Group every 2 digit=10,00,00,00,00
-getthrottling type: e.g.: not throttled, soft throttle, hard throttle
-getresource code: e.g.: CPU, Database Size
-ThrottlingImpact=code/4
-0:No throttling
-1:Reject Update/Insert
-2:Reject all writes
-3:Reject all
DMVs and Monitoring
-10 PerfRelated DMVs
-Exmaple
-finddb size
-findcpu intensive queries
-findIO intensive queries
-findmissing index
Leveraging Elasticity
-TraditionalCapacity Planning: Buy hardware (CPU, Memory, Good Disk)
-SQL AzureCapacity Planning: Determinate How many DBs I need
SQL Azure Federation
-3properties
-UnlimitedScalability
-RichElasticicy:
-Expandand Contract without downtime
-EfficientTenancy Models
-multiple-tenantper database
-multiple-databaseper tenant
-Schemachanges must be manually apply to each shard in the initial release
-fan-outquery is not supported in the initial release
-Aftercreate federation statement. e.g."CREATE FEDERATION Orders_Federation (CustId UNIQUEIDENTIFIER RANGE)", SQL Azurewill create a federation database as fedeartion member.
-TableTypes in Federation DB
-FederatedTable( in Federation Members)
-ReferenceTable( in Federation Members)
-CentreTable( in Federation Root)
-UsefulScript
-usefederation root with reset
-usefederation product_federation(productid=0) with reset, filtering=off
-alterfederation product_federation split at(productid=100)
-alterfederation product_federation DROP at(high productid=100)
-select* from sys.federations
-select* from sys.federation_member_distributions
-dropfederation product_federation
SQL Azure Reporting
-get start
-provisionreport server via windows azure management portal
-buildreport with reporting designer
-deployreport to report server
-renderreport with visual studio reportviewer control
-differentwith on-premise
-SSLrequired
-SQLAzure data sources only
-etc.
-unsupportingreport service feature
-subscription,schedules, caching
-reportmodels
-customextensions
-externalimage
-etc.
-deploy
- Access the SQL Azure Report Server website. To do this, in a web browser navigate to the following URL: https://[yourreportingserver].reporting.database.windows.net/ReportServer.
- Login using the following credentials you created during the provisioning.
SQL Azure Data Sync
-hub &clients
-Syncdirection:to hub (when sync, hub as read only), from hub(when sync, client asread only), bi-directional
-Syncschedule>=5min
-Dataset(supportfilter)