introducing sql server data services
DESCRIPTION
Come learn about our new cloud-based storage service and how it addresses a number of business scenarios. This session introduces the new Microsoft SQL Server Data Services, as well as outlines business models and termsTRANSCRIPT
Introducing SQL Server Data Services (SSDS)Nigel EllisArchitectMicrosoft Corporation
Microsoft Data Platform EvolutionSQL Server Data Services
Value propositionShape of the serviceBuilding an application using the service
Release PlanCall to action
AgendaTopics we will talk about
Microsoft Data PlatformComprehensive platform for all data
Mobile andDesktop
OLAP
FILE
XML
RDBMSQuery
Analysis
Reporting Integration
Synch
Search
Server
Microsoft Data PlatformUpcoming Evolution – Data Services
Mobile andDesktop
OLAP
FILE
XML
RDBMSQuery
Analysis
Reporting Integration
Synch
Search
Server Data Services
Data Services Vision
SYNC
SYNC SYNC SYNC
ADO.Net Data Services Framework
On Premises
Internet Standard Interfaces and Protocols (SOAP/REST/APP)
Mobile andDesktop
Client Applications
Web Services
Software
SQL Server Data Services (SSDS)
ADO.Net Data Services
Windows Live Services
+ Services
DemoMicrosoft Sync Framework
Synchronizing Contacts between endpointsAccess, SSDS and Files
Each endpoint exposed for synchronization via a Sync Provider
FileProvider, AccessProvider,SSDSProvider, etc.
A Sync-Controlling ApplicationManages synchronization sessions between providers
AccessVcardFiles
SQL ServerData Services
SQL Server Data ServicesYour Data Any Place, Any Time
Scales without Limits
• Storage and processing scales without restrictions
• Businesses pay only for the resources consumed
Application Agility
• Simple, flexible data model
• REST and SOAP protocols support
Business Ready SLA
• Built using robust Microsoft SQL Server technology
• SLA for business continuity
• Highly available, reliable and secure
Microsoft® SQL Server® Data Services (SSDS) is aWeb facing data storage and processing utility
SQL Server Data ServicesHigh Level Architecture
Global Foundation Services
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
Distributed
Fabric
Mgmt.Services
SQLServices
SQL Server Data Services Platform
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
ACE Logic
Client Library
REST / SOAP
SQL Server Data Services
AuthorityUnit of geo-location and billingCollection of containers
ContainerUnit of consistency/searchCollection of entitiesNo schema required
EntityProperty bag of name/value pairsUnit of update/change
Authority
Container
Entity
The 'ACE' Concepts
Hello World on SSDS
demo
SSDS Data Browser
Code Sample: REST POSTShown as part of demo
private static void CreateEntity(string containerUri, string entityPayload){ try { // Create the request to send. WebRequest request = CreateRequest(
containerUri, HttpMethods.POST, entityPayload, "application/xml", UserName, Password);
// Get the response and read it in to a string. using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode != HttpStatusCode.Created) … } } catch (WebException ex) { …
Concepts: Entity
Flexible Entity ModelNo schema required
Property bag of name / value pairs
Smallest Unit of Storage (unit of update)
Metadata propertiesID – unique within parent containerKind – track user type ex: JobListing, Resume, etcVersion – update timestamp on each operation
Flex propertiesCan change instance type or add additional propertiesSupport for simple types: decimal, string, bool, etcAll properties are indexed
Concepts: Entity (Example)Entity properties may differ in type and
instanceProperty Type Value
Metadata
ID EntityId VWGOLF-01
Kind EntityKind
Car
FlexProps
Description
String Reliable, one owner, …
Price Numeric 12000.00
ListingDate
Datetime 01-01-2008
LocationZip
String 98052Property Type Value
Metadata
ID EntityId MINICOOPER-264
Kind EntityKind
FunCar
FlexProps
Description
String Reliable, one owner, …
Price Numeric 12000.00
ListingDate
String 1st January, 2008
LocationZip
String 98052
EngineSize
Numeric 1600
Additional property
Different instance types
Different Kinds
Concepts: ContainerStores Flexible EntitiesUnit of consistencyWidest domain of a single search and operationUnique name within parent container
Concepts: Authority
A collection of ContainersAnalog to namespaceUnit of billing and geo-locationHas DNS name
Webservice API
Consumed using SOAP or RESTEndpoint secured by SSLEach authority has single ownerSecured using single owner credentials
Operations forAuthority provisioning
Create, Update, Delete
Container provisioning and queryEntity storage, update, delete and queryQuery uses simple LINQ-like syntax
Web Service API (REST)Exposes URI for each resource
Service: https://data.sitka.microsoft.com/v1CreateAuthority (POST)
Authority: https://auth.data.sitka.microsoft.com/v1FetchAuthority (GET)QueryContainers (GET) with query “from e in … where …”CreateContainer (POST)
Container: https://auth.data.sitka.microsoft.com/v1/containerId FetchContainer (GET) QueryEntities (GET) with query “from e in … where …” UpdateContainer (PUT)DeleteContainer (DELETE)CreateEntity (POST)
Entity: https://auth.data.sitka.microsoft.com/v1/containerId/entityId FetchEntity (GET)UpdateEntity (PUT) DeleteEntity (DELETE)
Building an appliction
Concept Usage Example
Authority
Single location for Litware applications
LitwareHR
Container
Container for app runtime, one container per tenant
LiwareHR_MetadataContosoHR, …
Entity Storage for each app type – jobs, resumes and various metadata items
JobListingApplication
Litware HR – a web-based recruiting serviceMulti-tenant application
Contoso (Web Startup)AdventureWorks (Bike Store)
RolesHR Manager and Job Applicant
LitwareHR Recruiting App
demo
Demo of “finished application”
So, when can I start using it?Sign up for Invitation only beta - 3/5/08
On boarding starts within two weeks using invitation codesNo charge for use during beta periodNext step – open beta within 6 months
Service refresh every 8 weeksNew functionality based on customer feedback
Go Live in H1’09Published SLA and SLMPricing and licensing model TBD
Mar-08 Apr-08 May-08 Jun-08 Jul-08 Aug-08 Sep-08 Oct-08 Nov-08 Dec-08 Jan-09
LiveH1'09
Jul-08 - Jan-09Open Beta
Mar-08 - Jul-08Invitation Only Beta
Aug-08Refresh-3
3/5/08Registration
Begins
Jul-08Refresh-2
Jan-09Refresh-5
Oct-08Refresh-4
May-08Refresh-1
SQL Server Data ServicesKey Takeaways
This is the starting pointScale, cost and operations excellenceLearn about customer and partner usage patterns
Built on proven Windows Server and SQL Server technology
Industrial strength servers; years of experience running large scale MSN and Live servicesNovel distributed data fabric for massive scale out and lights out operation
Service will evolve based on feedback and partnerships
Rich data types and queryBlobs and full text searchRich services: reporting, analytics, caching, sync and data qualityWe are extending our data platform to the Cloud
Resources
Pre-register for beta accesshttp://www.microsoft.com/sql/dataservices Documentation, samples and more
Get more during MIXOpen spaces chalktalk – Thu 12 & Fri 11:30Open spaces theatre – 2pm Hands on lab – LDATA01Microsoft Sync Framework (T32)
Team blog: http://blogs.msdn.com/ssds [email protected]
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
APPENDIX
Services Taxonomy
Attached Service
Finished Service
Building Block Service
•Used primarily by end users• Can be used by developers to build other services• Examples: Search, Hotmail, CRM Live
• Adds value when used in conjunction with on-premises software• Used primarily by end-users• Examples: Exchange Hosted Services, Windows Update
• Foundation pieces for other services• Used by developers to build Finished, Attached or other Building Block Services• Examples: LiveID, SSDS, etc.
Query Language
Textual query language through web-service headLanguage patterned after C# LINQ syntax
from e in container where e.Kind == "CarForSale" &&
e[“Zip"] == 98053 && e["Model"] == "Mini Cooper" select e
Operator semantics handles dynamic instance typinge[“Zip”] could be number in one entity and string in another
Query supported over metadata and data propertiesLimited to simple filters using comparison operations
Web Service API (SOAP)
Endpoint exposed for service: https://data.sitka.microsoft.com/soap/v1 Authority
Authority Get(AuthorityId)IEnumerable<Container> Query(AuthorityId, query)Create(ContainerId, Container)
ContainerContainer Get(ContainerId)IEnumerable<Entity> Query(ContainerId, query) Container Update(ContainerId, Container)Delete(ContainerId)Create(EntityId, Entity)
EntityEntity Get(EntityId)Entity Update(EntityId, Entity)Delete(EntityId)
Web Service API (REST)
Exposes URI for each resourceAuthority: https://auth.data.sitka.microsoft.com/v1
GetAuthorityMetadata (GET)QueryContainers (GET) with query payload “http://a/v1/c?q={…}”CreateContainer (POST)
Container: https://auth.data.sitka.microsoft.com/v1/containerId GetContainerMetadata (GET) QueryEntities (GET/Query) – with query payload “http://a/v1/c?q={…}”UpdateContainerMetadata (PUT)DeleteContainer (DELETE)CreateEntity (POST)
Entity: https://auth.data.sitka.microsoft.com/v1/containerId/entityId GetEntity(GET)UpdateEntity (PUT) DeleteEntity (DELETE)