sql summit clr, service broker and xml

47

Upload: david-truxall

Post on 13-Jan-2015

1.987 views

Category:

Technology


0 download

DESCRIPTION

Presentation from the SQL Summit in Grand Rapids for the launch of SQL Server 2005

TRANSCRIPT

Page 1: Sql Summit   Clr, Service Broker And Xml
Page 2: Sql Summit   Clr, Service Broker And Xml

SQL Server 2005 for SQL Server 2005 for DevelopersDevelopers

David TruxallDavid TruxallNuSoft SolutionsNuSoft Solutions

Drew RobbinsDrew RobbinsMicrosoft CorporationMicrosoft Corporation

Page 3: Sql Summit   Clr, Service Broker And Xml

AgendaAgenda

XML Enhancements XML Enhancements CLR in SQL Server CLR in SQL Server Service BrokerService Broker

Page 4: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseOverviewOverview XML has become widely adoptedXML has become widely adopted XML is ubiquitous, extensible, and a XML is ubiquitous, extensible, and a

platform independent transport formatplatform independent transport format Supports structured and semi-Supports structured and semi-

structured datastructured data Limited support in SQL Server 2000Limited support in SQL Server 2000 First class support in SQL Server 2005First class support in SQL Server 2005

Page 5: Sql Summit   Clr, Service Broker And Xml

XML In the DatabaseXML In the DatabaseBusiness OpportunityBusiness Opportunity The majority of all data transmitted The majority of all data transmitted

electronically between organizations is electronically between organizations is now in XML. now in XML.

By storing XML natively, SQL Server By storing XML natively, SQL Server 2005 helps eliminate the friction of data 2005 helps eliminate the friction of data transfer between organizations.transfer between organizations.

With the improved XML support in VS With the improved XML support in VS 2005, building e-business applications 2005, building e-business applications is radically simplified.is radically simplified.

Page 6: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML Data TypeXML Data Type

SQL Server 2005 adds native XML SQL Server 2005 adds native XML storage with XML data typestorage with XML data type

Stores both well-formed and validated Stores both well-formed and validated XMLXML

ImplementationImplementation Markup documentsMarkup documents Tree-structured data where re-assembly Tree-structured data where re-assembly

costs should be minimalcosts should be minimal Semi-structured dataSemi-structured data

Page 7: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML Data TypeXML Data Type

An alternative to storing XML on diskAn alternative to storing XML on disk Supports column, variable, or parameterSupports column, variable, or parameter Can represent Version 1.0 documents or Can represent Version 1.0 documents or

fragmentsfragments Methods on XML data typeMethods on XML data type

query(), value(), exist(), modify(), and query(), value(), exist(), modify(), and nodes()nodes()

Page 8: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML Schema SupportXML Schema Support

Validation and typing provided by XSDValidation and typing provided by XSD W3C recommendationW3C recommendation Mechanism for type definitionsMechanism for type definitions Validation constraintsValidation constraints

Typed DataTyped Data Guarantees the Guarantees the shapeshape of the data of the data Allows storage and query optimizationsAllows storage and query optimizations

Page 9: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML Schema CollectionsXML Schema Collections

Creating an XML Schema CollectionCreating an XML Schema CollectionCREATE XML SCHEMA COLLECTION ResumeSchema ASCREATE XML SCHEMA COLLECTION ResumeSchema AS

'<xs:schema '<xs:schema

targetNameSpace='http://schemas.ms.com/emp" …/>'targetNameSpace='http://schemas.ms.com/emp" …/>'

Constraining XML documentsConstraining XML documentsCREATE TABLE Employee (..., Resume XML(ResumeSchema))CREATE TABLE Employee (..., Resume XML(ResumeSchema))

Retrieving XML Schema CollectionsRetrieving XML Schema CollectionsSELECT NameSELECT Name

FROM AdventureWorks.sys.xml_schema_collectionsFROM AdventureWorks.sys.xml_schema_collections

Page 10: Sql Summit   Clr, Service Broker And Xml

XML Data TypeXML Data Type

Page 11: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML IndexesXML Indexes

Create XML index on XML columnCreate XML index on XML columnCREATE PRIMARY XML INDEX IDX1 ON JobCandidate (Resume)CREATE PRIMARY XML INDEX IDX1 ON JobCandidate (Resume)

Creates a secondary, B-tree index onCreates a secondary, B-tree index on Path, Property, or ValuePath, Property, or Value

Speeds up queriesSpeeds up queries Results can be served directly from indexResults can be served directly from index Uses SQL Server's cost based optimizerUses SQL Server's cost based optimizer

Full-Text Indexing/Searching supports Full-Text Indexing/Searching supports XMLXML

Page 12: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML IndexesXML Indexes

PATH IndexPATH Index When querying by path and valueWhen querying by path and value

/ItemList/Item[@ProductID="1"]/ItemList/Item[@ProductID="1"]

PROPERTY IndexPROPERTY Index When retrieving node values by pathWhen retrieving node values by path

(/ItemList/Item/@ProductID)[1](/ItemList/Item/@ProductID)[1]

VALUE IndexVALUE Index When querying imprecisely, like for existenceWhen querying imprecisely, like for existence

//Item[@ProductID="1"]//Item[@ProductID="1"]

Page 13: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML IndexesXML Indexes

RequirementsRequirements A clustered PK must exist in the tableA clustered PK must exist in the table If XML index exists, the PK may not be If XML index exists, the PK may not be

alteredaltered Only one primary XML index per columnOnly one primary XML index per column Many secondary XML indexes per columnMany secondary XML indexes per column

PATH, PROPERTY, and VALUEPATH, PROPERTY, and VALUE

All index names must be unique per tableAll index names must be unique per table

Page 14: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXQueryXQuery

Query XML documents and dataQuery XML documents and data Based on W3C working draftBased on W3C working draft FLWOR - For, Let, Where, Order by, ReturnFLWOR - For, Let, Where, Order by, Return

XQuery methodsXQuery methods .query() – returns XML data type instance.query() – returns XML data type instance .value() – returns a single (scalar) value.value() – returns a single (scalar) value .exist() – returns 1 if expression returns .exist() – returns 1 if expression returns

item(s)item(s) .nodes() – returns a row per selected node.nodes() – returns a row per selected node

Page 15: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseXML Data Manipulation LanguageXML Data Manipulation Language

Inefficient to UPDATE the entire columnInefficient to UPDATE the entire column XML sub-tree modification XML sub-tree modification

using using .modify().modify() Three actions: Three actions: InsertInsert, , DeleteDelete, or , or ReplaceReplace

UPDATE xmlTable SET xmlColumn.modify('insert UPDATE xmlTable SET xmlColumn.modify('insert

<section num="2"><section num="2">

<heading>Background</heading><heading>Background</heading>

</section></section>

after (/doc/section[@num=1])[1]')after (/doc/section[@num=1])[1]')

Page 16: Sql Summit   Clr, Service Broker And Xml

XQueryXQuery

Page 17: Sql Summit   Clr, Service Broker And Xml

XML in the DatabaseXML in the DatabaseFOR XML ImprovementsFOR XML Improvements

Support for XSD schemasSupport for XSD schemas Support for NULL valuesSupport for NULL values Support for XML data typeSupport for XML data type Nested FOR XMLNested FOR XML Can be assigned to an XML data typeCan be assigned to an XML data type FOR XML PATHFOR XML PATH

Page 18: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseOverviewOverview Enhanced programming modelEnhanced programming model Enhanced safety and securityEnhanced safety and security User defined types and aggregatesUser defined types and aggregates Common development environmentCommon development environment Performance and scalabilityPerformance and scalability

Page 19: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseBusiness OpportunityBusiness Opportunity Leverage .NET productivity and the Leverage .NET productivity and the

BCLBCL Better way to encapsulate your IPBetter way to encapsulate your IP A new world of ways to extend SQL A new world of ways to extend SQL

ServerServer User-defined types to fit your domainUser-defined types to fit your domain User-defined aggregates to fit your User-defined aggregates to fit your

domaindomain

Go over the wall you hit with T-SQLGo over the wall you hit with T-SQL Replace Extended Procedures (XPs)Replace Extended Procedures (XPs)

Page 20: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseArchitectureArchitecture Common Language Runtime (CLR) Common Language Runtime (CLR)

AssembliesAssemblies Can write stored procedures, triggers, Can write stored procedures, triggers,

UD functions, UD types, and aggregate UD functions, UD types, and aggregate functionsfunctions

Any CLR languageAny CLR language Great replacement for Extended Stored Great replacement for Extended Stored

Procedures (XPs)Procedures (XPs)

Supported in SQL ExpressSupported in SQL Express

Page 21: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the Database

Microsoft® Visual

Studio® .NET Project

VB, C#

Microsoft®SQL Server™

SQL Queries: select sum(tax(sal,state) ) from Emp where county = ‘King’

Runtime hosted inside

SQL

Assembly: “TaxLib.dll”

build

SQL Data Definition: create assembly … create function … create procedure … create trigger … create type …

deploy

Page 22: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseSecuritySecurity

Managed Code running in CLRManaged Code running in CLR Type safety, application domains, CASType safety, application domains, CAS More secure than XPsMore secure than XPs

Reliability and safety design goalsReliability and safety design goals User code can't compromise SQL engineUser code can't compromise SQL engine User code can't overwrite SQL engine User code can't overwrite SQL engine

memory buffers or internal data memory buffers or internal data structuresstructures

User code must be authenticated and User code must be authenticated and authorized before being allowed accessauthorized before being allowed access

Page 23: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseSecuritySecurity Permission SetsPermission Sets

SAFESAFE EXTERNAL_ACCESSEXTERNAL_ACCESS UNSAFEUNSAFE

Page 24: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseT-SQL or Managed Code?T-SQL or Managed Code? T-SQL is superior whenT-SQL is superior when

Code mostly performs data accessCode mostly performs data access Code has little or no procedural logicCode has little or no procedural logic

Managed Code is superior whenManaged Code is superior when Code has CPU-intensive methodsCode has CPU-intensive methods Code has complex logicCode has complex logic Code can make use of the .NET BCLCode can make use of the .NET BCL

Page 25: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged Database ObjectsManaged Database Objects

T-SQL (SQL 2000)T-SQL (SQL 2000) .NET (SQL 2005).NET (SQL 2005)

Stored ProceduresStored Procedures XX XX

TriggersTriggers XX XX

User Defined FunctionsUser Defined Functions XX XX

User Defined TypesUser Defined Types XX

Aggregate FunctionsAggregate Functions XX

Page 26: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged Stored ProceduresManaged Stored Procedures

Stored ProceduresStored Procedures Public, static methods on a classPublic, static methods on a class Returns a void or intReturns a void or int SqlPipe.Execute() and SqlPipe.Send() SqlPipe.Execute() and SqlPipe.Send()

public static void ExecuteToClient() {public static void ExecuteToClient() {SqlConnection conn = SqlConnection conn = new new SqlConnection("context connection=true");SqlConnection("context connection=true");

SqlCommand cmd = conn.CreateCommand();SqlCommand cmd = conn.CreateCommand();cmd.CommandText = "select @@version";cmd.CommandText = "select @@version";SqlContext.GetPipe().Execute(cmd);SqlContext.GetPipe().Execute(cmd);

}}

Page 27: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged TriggersManaged Triggers

TriggersTriggers Similar to stored proceduresSimilar to stored procedures Determine which columns have been modifiedDetermine which columns have been modified Reference INSERTED and DELETED tablesReference INSERTED and DELETED tables

SqlConnection conn = SqlConnection conn = new new SqlConnection("context connection=true");SqlConnection("context connection=true");

sqlCommand sqlComm = conn.CreateCommand()sqlCommand sqlComm = conn.CreateCommand()

sqlComm.CommandText = "SELECT column_1 from sqlComm.CommandText = "SELECT column_1 from INSERTED";INSERTED";

Page 28: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged User Defined FunctionsManaged User Defined Functions

Two types of User Defined FunctionsTwo types of User Defined Functions Scalar-valued function (SVF)Scalar-valued function (SVF)

Returns a single value, such as string or integerReturns a single value, such as string or integer Class methods determine return typeClass methods determine return type

Table-valued function (TVF)Table-valued function (TVF) Data returned through an ISqlReader objectData returned through an ISqlReader object

public static ISqlReader ReadLog(String logname) public static ISqlReader ReadLog(String logname) {{

return (ISqlReader)new MySqlReader(logname);return (ISqlReader)new MySqlReader(logname);

}}

Page 29: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged User Defined TypesManaged User Defined Types

When the built-in SQL Server types won't doWhen the built-in SQL Server types won't do Create custom, complex structured typesCreate custom, complex structured types BenefitsBenefits

Strong encapsulation (both at client and server)Strong encapsulation (both at client and server) Deep integration support with SQL ServerDeep integration support with SQL Server

RequirementsRequirements SqlUserDefinedTypeAttribute, Serializable, SqlUserDefinedTypeAttribute, Serializable,

INullable, Parse(), ToString()INullable, Parse(), ToString() Read() and Write() to support custom Read() and Write() to support custom

serializationserialization OthersOthers

Drew Robbins
Reword
Drew Robbins
Check on whether or not you can create complex types vs scalar types
Page 30: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseManaged Aggregate FunctionsManaged Aggregate Functions

Perform a calculation on a set of values Perform a calculation on a set of values and return a single value, such as SUM and return a single value, such as SUM or MAXor MAX SqlUserDefinedAttributeSqlUserDefinedAttribute Must implement these methods so the Must implement these methods so the

Query Processor can use your aggregate Query Processor can use your aggregate functionfunction Init(), Accumulate(), Merge(), Terminate()Init(), Accumulate(), Merge(), Terminate()

Page 31: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the DatabaseAssembliesAssemblies .NET Assemblies.NET Assemblies

Self-describing, metadata, dependenciesSelf-describing, metadata, dependencies Unit of deployment, CLR permission Unit of deployment, CLR permission

grants, versioning, etc.grants, versioning, etc. Stored in databaseStored in database

CREATE, ALTER, DROP DDLCREATE, ALTER, DROP DDLCREATE ASSEMBLY FinanceFunctions FROM CREATE ASSEMBLY FinanceFunctions FROM

'c:\code\FinanceFunctions.dll' WITH 'c:\code\FinanceFunctions.dll' WITH PERMISSION_SET = SAFEPERMISSION_SET = SAFE

Page 32: Sql Summit   Clr, Service Broker And Xml

CLR in the DatabaseCLR in the Database

Page 33: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerOverviewOverview

Service Broker adds asynchronous, Service Broker adds asynchronous, distributed, and decoupled environmentdistributed, and decoupled environment Fully integrated into database engineFully integrated into database engine New set of SQL Server objects (DDL & DML)New set of SQL Server objects (DDL & DML) Integrated management and deploymentIntegrated management and deployment

Custom solutions and benefitsCustom solutions and benefits Generalized asynchronous semanticsGeneralized asynchronous semantics Inter and intra-instance queuingInter and intra-instance queuing

Distributed transactions not requiredDistributed transactions not required Multi-threading in stored proceduresMulti-threading in stored procedures

Page 34: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerBusiness OpportunityBusiness Opportunity Don't call us, we'll call youDon't call us, we'll call you Asynch can result in faster Asynch can result in faster

applicationsapplications Asynch can smooth out connectivity Asynch can smooth out connectivity

bugsbugs Notifications can help w/ middle-tier or Notifications can help w/ middle-tier or

client caching of dataclient caching of data Leverage Message Queue architectureLeverage Message Queue architecture Shares Begin/End patterns with .NETShares Begin/End patterns with .NET

Page 35: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerAsynchronous ArchitectureAsynchronous Architecture Loose couplingLoose coupling Load distributionLoad distribution Batch processingBatch processing PerformancePerformance Scale outScale out

Page 36: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerOrder Entry Data Flow DiagramOrder Entry Data Flow Diagram

Page 37: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerFeaturesFeatures

Database objects and DML statements that Database objects and DML statements that enable asynchronous messaging operationsenable asynchronous messaging operations Queues, Message Types, Contracts, ServicesQueues, Message Types, Contracts, Services ““BEGIN DIALOG”, “SEND”, “RECEIVE”BEGIN DIALOG”, “SEND”, “RECEIVE”

Fully integrated into the database engineFully integrated into the database engine Single Programming ModelSingle Programming Model Local TransactionsLocal Transactions Integrated Management and DeploymentIntegrated Management and Deployment

Page 38: Sql Summit   Clr, Service Broker And Xml

Service BrokerService Broker

TransactionTransaction

Both the client & stored procedure run in: Both the client & stored procedure run in: • Same TransactionSame Transaction• Same Security ContextSame Security Context• Same Thread of ExecutionSame Thread of Execution

ClientClientAppApp

SQL EngineSQL Engine

StoredStoredProcProc

Without Service Broker

Drew Robbins
Consider making this a more complex scenario...something that demonstrates the need for a service broker.
Page 39: Sql Summit   Clr, Service Broker And Xml

Service BrokerService Broker

Tran

saction

Tran

saction

TransactionTransaction

ClientClientAppApp

LaunchedLaunchedStoredStoredProcProc

PersistedPersisted DialogDialog

Stored proc runs on:Stored proc runs on:- Different transactionDifferent transaction- Different threadDifferent thread- Different securityDifferent security- Different timeDifferent time

With ServiceBroker

Page 40: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerDialogsDialogs Two-way Messaging “Dialogs”Two-way Messaging “Dialogs”

Exactly-once, In-orderExactly-once, In-order Reliable delivery to local and remote Reliable delivery to local and remote

queuesqueues Large Message FragmentationLarge Message Fragmentation

APP 1

SQL Engine SQL Engine

APP 2

Page 41: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerNew CommandsNew Commands

CREATE MESSAGE TYPECREATE MESSAGE TYPECREATE CONTRACTCREATE CONTRACTCREATE QUEUECREATE QUEUECREATE SERVICECREATE SERVICEALTER SERVICEALTER SERVICEALTER MESSAGE TYPE ALTER MESSAGE TYPE ALTER QUEUEALTER QUEUEALTER CONTRACTALTER CONTRACTDROP MESSAGE TYPEDROP MESSAGE TYPEDROP CONTRACTDROP CONTRACTDROP QUEUEDROP QUEUEDROP SERVICEDROP SERVICECREATE ROUTECREATE ROUTEALTER ROUTEALTER ROUTEDROP ROUTEDROP ROUTE

New DDLNew DDL

BEGIN DIALOG CONVERSATIONBEGIN DIALOG CONVERSATIONEND CONVERSATIONEND CONVERSATIONMOVE CONVERSATIONMOVE CONVERSATIONGET SERVICE INSTANCEGET SERVICE INSTANCERECEIVERECEIVESENDSENDBEGIN DIALOG TIMERBEGIN DIALOG TIMER

New DMLNew DML

Page 42: Sql Summit   Clr, Service Broker And Xml

Service BrokerService BrokerImpact on PerformanceImpact on Performance

0

10

20

30

40

50

60

70

80

90

100

Shipping

Order

Shipping as trigger during OrderShipping as trigger during OrderShipping as trigger during OrderShipping as trigger during Order

0

10

20

30

40

50

60

70

80

90

100

Shipping

Order

Shipping queued by trigger during OrderShipping queued by trigger during OrderShipping queued by trigger during OrderShipping queued by trigger during Order

Page 43: Sql Summit   Clr, Service Broker And Xml

Service BrokerService Broker

Demo ScenarioDemo Scenario

OrderServiceOrderService

ShippingServiceShippingService AccountsServiceAccountsService

NewOrderNewOrder

Page 44: Sql Summit   Clr, Service Broker And Xml

Service BrokerService Broker

Page 45: Sql Summit   Clr, Service Broker And Xml

Call To ActionCall To Action

Leverage SQL Server 2005 to connect Leverage SQL Server 2005 to connect with applications and partners using with applications and partners using the ubiquitous XML format.the ubiquitous XML format.

Be smart about building functionality Be smart about building functionality using CLR in SQL Server.using CLR in SQL Server.

Leverage the Service Broker to create Leverage the Service Broker to create loosely-coupled message queues for loosely-coupled message queues for your applications.your applications.

Page 46: Sql Summit   Clr, Service Broker And Xml

Call To ActionCall To Action

http://www.chrysalisevents.com/vs2005devcon/http://www.chrysalisevents.com/vs2005devcon/

Detroit – June 16Detroit – June 16

Page 47: Sql Summit   Clr, Service Broker And Xml

© 2004 Microsoft Corporation. All rights reserved.© 2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.