Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SQL Server Service Broker

Ähnliche Präsentationen


Präsentation zum Thema: "SQL Server Service Broker"—  Präsentation transkript:

1 SQL Server Service Broker
Skalierbare Business-Logik für den SQL Server Messaging in der Datenbank SQL Server 2005

2 Zur Person Dipl. Inf. Marcel Gnoth, MCSD NTeam GmbH, Berlin
NTeam GmbH, Berlin Leiter Softwareentwicklung MS Gold Partner Busines Intelligence, Information Worker, Advanced Infrastructur Autor dotnetpro und dotnet-magazin Trainer (u.a. SPC Berlin, ) Themen VB6, COM Datenbanken, Yukon Verteilte Informationssysteme mit .Net Office System 2003 Integration Reisen in ferne Länder:  BASTA Session Neues in MSMQ 3.0 Heute 17:15 Tempelhof

3 Wie funktioniert Service Broker Anwendungsszenarios Fazit
Agenda Einleitung Hallo BASTA Wie funktioniert Service Broker Anwendungsszenarios Fazit Und noch ein Queuing System – SSB / MSMQ ?

4 Asynchrone Nachrichten in der Datenbank ?
Service Broker Asynchrone Nachrichten in der Datenbank ?

5 Service Broker in Yukon
Neu in Yukon Ermöglicht asynchrones Messaging innerhalb des SQL-Servers Warteschlangen sind normale DB Objekte Können mit SQL verwendet werden CREATE QUEUE MittwochMessages Select message_body FROM MittwochMessages

6 Warum asynchrone Operationen in der DB?
Entkoppelung von langwierigen Operationen Lastverteilung Batch-Verarbeitung Skalierung Sehr hohe Performance durch Integration in DB Transaktionen Zuverlässige remote Nachrichten

7 One Atomic Transaction
Transaktionen Nachrichtenversand und Datenmanipulation innerhalb einer Transaktion One Atomic Transaction SQL Broker Service Instance State -A Msg-1 State -A State -B Msg-1 X1 Y1 Z1 X2 DB write Y2 DB write Z2 DB write State -B Msg-2 Msg-2 Send!

8 Ein kleines Beispiel Ping / Pong zwischen zwei Queues
Hallo BASTA Ein kleines Beispiel Ping / Pong zwischen zwei Queues

9 Objekte für den Datenaustausch
Nachrichtentypen HelloWorldRequest HelloWorldResponse Vertrag HelloWorldContract Vereinbart die Antwort HelloWorldResponse auf HelloWorldRequest Nachrichtenwarteschlangen HelloWorldTargetQueue HelloWorldInitiatorQueue Dienste HelloWorldRequestService HelloWorldResponseService Verbindet Vertrag mit Queue (Conversation Endpoint)

10 Über einen Dialog wird die Nachricht versendet
Das Senden Über einen Dialog wird die Nachricht versendet --Dialog starten BEGIN DIALOG @conversationHandle FROM SERVICE [HelloWorldResponseService] TO SERVICE 'HelloWorldRequestService' ON CONTRACT [HelloWorldContract] WITH ENCRYPTION = OFF, LIFETIME = 600; -- Send message SEND ON MESSAGE TYPE [HelloWorldRequest] (N'Hello World - Feierabend')

11 Receive entnimmt eine Nachricht aus der Queue Select liest nur
Das Empfangen Receive entnimmt eine Nachricht aus der Queue Select liest nur RECEIVE top(1) @message_type_name=message_type_name, @conversationHandle=conversation_handle, @message_body=message_body FROM [HelloWorldTargetQueue]

12 Über Conversation-Handle antworten Danach der Dialog beendet werden
Das Anworten Über Conversation-Handle antworten Danach der Dialog beendet werden Er besteht nur aus Request / Response Anwort lesen, MessageBody ist Binary SEND ON MESSAGE TYPE [HelloWorldResponse] (N'Hello From ) END RECEIVE cast(message_body as nvarchar(MAX)) FROM [HelloWorldInitiatorQueue]

13 Demo Hallo BASTA in TSQL

14 Wie funktioniert SSB Details

15 Transport der Nachrichten
Application Layer Target Application Initiator Application Message Type Metadata Layer Message Type Contract Contract Dialog Conversation Service Service Physical Layer Queue Queue Activation Transport Transport TCP/IP

16 Asynchrones verschicken einer Nachricht (Send)
Queue Asynchrones verschicken einer Nachricht (Send) SSB übernimmt den Transport zwischen verschiedenen SQL Server Instanzen auch über Netzwerkgrenzen hinweg Empfänger verarbeitet Nachrichten nach Bedarf Mit Select in die Queue schauen Mit Receive Nachricht entnehmen Ist Select ähnlich, liefert Rowset Sichern und Wiederherstellen

17 Kommunikation zwischen zwei Endpunkten
Dialog Kommunikation zwischen zwei Endpunkten log. Services, phys. Queues werden dann Services zugeordnet Nachrichten haben eine bestimmte Reihenfolge Empfangen in der Sendereihenfolge Auch über Transaktionsgrenzen hinweg Extrem robust Dialog ist Spezialform einer Conversations In Zukunft wird es Monologe geben Publish / Subscribe Jede Nachricht hat ein ConversationHandle Leichte Zuordnung eingehender Nachrichten zu offenen Dialogen Dialoge brauchen einen Contract

18 Conversation Groups Zusammengehörige Dialoge / Monologe Nur ein Service – Programm kann auf die Nachrichten exklusiv zugreifen

19 Alle Nachrichten müssen einen definierten Typ haben
Message Type Alle Nachrichten müssen einen definierten Typ haben Typ ist ein Label für den Empfänger Kann mit XML Schema verknüpft werden Nachrichten, die nicht dem Schema entsprechen werden beim Empfang abgewiesen CREATE MESSAGE TYPE [HelloWorldRequest] VALIDATION = NONE CREATE MESSAGE TYPE [HelloWorldResponse] VALIDATION = NONE

20 Menge von Message Types Definieren wer welche Nachrichten senden darf
Contract Menge von Message Types Definieren wer welche Nachrichten senden darf Werden dann in einem Dialog konkreten Queues zugeordnet CREATE CONTRACT [HelloWorldContract]( [HelloWorldRequest] SENT BY INITIATOR, [HelloWorldResponse] SENT BY TARGET ) BEGIN DIALOG @conversationHandle FROM SERVICE [HelloWorldResponseService] TO SERVICE 'HelloWorldRequestService‘ ON CONTRACT [HelloWorldContract] WITH ENCRYPTION = OFF, LIFETIME = 600;

21 Ordnet mehrere Contract‘s einer Queue zu.
Services Ordnet mehrere Contract‘s einer Queue zu. Dialoge verwenden Serivces als Endpunkte Beim Deployment können den Services physische Queues zugeordnet werden CREATE SERVICE [HelloWorldRequestService] ON QUEUE [HelloWorldTargetQueue] ( [HelloWorldContract] )

22 Transport zwischen unterschiedlichen Service Brokern
Routes Route zu einem Service Transport zwischen unterschiedlichen Service Brokern CREATE ROUTE HelloWorldRoute WITH SERVICE_NAME = N'HelloWorldRequestService', BROKER_INSTANCE = N'ea453b05-c b873-b21ed3af4865' , ADDRESS = N'TCP:// :4022'

23 Beim Eintreffen einer Nachricht kann eine Aktion ausgelöst werden
Queue Aktivierung Beim Eintreffen einer Nachricht kann eine Aktion ausgelöst werden Stored Proc (Internal Activation) CREATE QUEUE [HelloWorldTargetQueue] WITH STATUS = ON, ACTIVATION ( PROCEDURE_NAME = SSB_HW_Action, MAX_QUEUE_READERS = 1, EXECUTE AS SELF) CREATE PROCEDURE [dbo].[SSB_HW_Action] WITH EXECUTE AS CALLER AS uniqueidentifier varbinary(max) -- retrieve the message from the queue WAITFOR( RECEIVE = = message_body FROM [HelloWorldTargetQueue]), TIMEOUT 15000 INSERT INTO SSB_HW_Texte (Text) VALUES as nvarchar(MAX)))

24 Demo Queue Aktivierung

25 Broker muß in der DB aktiviert sein System Queues
Tools Broker muß in der DB aktiviert sein System Queues ALTER DATABASE AdventureWorks SET ENABLE_BROKER select last_transmission_error from sys.transmission_queue select * from sys.endpoints select * from sys.routes

26 Anwendungsszenarien

27 Entkoppeln von Datenbankoperationen Parallele SP Ausführung
Anwendungsszenarien Entkoppeln von Datenbankoperationen Parallele SP Ausführung Order / Entry Langsame Trigger sind schlecht für DML Operationen Trigger gibt Arbeit nur in Auftrag und ist fertig Arbeit wird später in einer anderen Transaktion u./o. auf einem anderen Server durchgeführt Verwendet für: Query Notifications Event Notifications

28 Szenario Order Entry

29 Ergebnismenge einer SELECT-Abfrage wird überwacht
Query Notifications Ergebnismenge einer SELECT-Abfrage wird überwacht Yukon verwaltet Notification Subscription Ändern sich die Daten, dann werden alle Subscriber informiert Mechanismus für Indexierte Views Änderungen werden über Service Broker publiziert

30 ADO 2.0: SQLDependency und SQLNotificationRequest
Verknüpft SQLCommand mit Notification Subscription SQLDependency Call Back der DB-Engine in die Applikation High Level Class Sehr komfortabel für Entwickler SQLNotificationRequest Low Level, kein Call Back der DB

31 Anlegen der SSB Objekte + ADO.Net
Query Notifications Anlegen der SSB Objekte + ADO.Net USE dbMittwoch ; CREATE QUEUE MittwochMessages ; CREATE SERVICE MittwochNotifications ON QUEUE MittwochMessages ([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]) ; CREATE ROUTE MittwochMessagesRoute WITH SERVICE_NAME = 'MittwochNotifications', ADDRESS = 'LOCAL' ; RECEIVE cast(message_body as nvarchar(MAX)) As TheMessage, * FROM MittwochMessages Dim m_SQLDep As SqlDependency sqlcmdQuery.CommandText = txtSelCommand.Text m_SQLDep = New SqlDependency(sqlcmdQuery) AddHandler m_SQLDep.OnChanged, _ New OnChangedEventHandler(AddressOf SqlDependency_OnChanged)

32 Nachricht versenden, wenn bestimmte Ereignisse auftreten
Event Notification Nachricht versenden, wenn bestimmte Ereignisse auftreten Ähnlich den Triggern Es wird kein Code ausgeführt Nachricht wird an Service Broker übergeben Und an eine Queue geschickt DDL, DML und einige Trace Ereignisse CREATE QUEUE evtDdlNotif WITH STATUS = ON --then we can create the service CREATE SERVICE evtDdlService ON QUEUE evtDdlNotif --this is a MS supplied contract ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]) CREATE EVENT NOTIFICATION ddlEvents ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS TO SERVICE evtDdlService select cast(message_body as nvarchar(MAX)),* from evtDdlNotif

33 Demo Event Notification

34 Typische SSB Applikation
Nicht nur TSQL Komplexe Prozeduren in Yukon Clientzugriffe über ADO.Net Kombinieren mit Query Notifications

35 Und noch ein Queuing System
SSB / MSMQ

36 SSB für hohe Performance designed Integriert in die DB
MSMQ / SSB SSB für hohe Performance designed Integriert in die DB Solange nur lokal, kein DTC -> schnelle Tx MSMQ für komponentenbasierte Systeme COM+, Enterprise Services Kann mit SQL Tx kombiniert werden Overhead DTC Messageing zwischen DB‘s -> SSB Auch SW Komponenten könnten SSB verwenden Messaging zwischen Komponenten -> MSMQ Hat auch spezielle Features

37 Entkoppelung von Systemen und Transaktionen
Fazit Zielgruppe Große DBs Komplexe, langwierige Transaktionen Entkoppelung von Systemen und Transaktionen Für asynchrone Kommunikation zwischen DBs Kein DTC solange nur mit einer DB Instanz gearbeitet wird Ersetzt nicht MSMQ MSMQ für asynchrone Kommunikation von Softwarekomponenten Es gibt Überschneidungen

38 A First Look at SQL Server 2005 Service Broker
Ressourcen Developer Spot Newsgroup Event Notifications A First Look at SQL Server 2005 Service Broker Blog

39 Alles wird gut  Uff...


Herunterladen ppt "SQL Server Service Broker"

Ähnliche Präsentationen


Google-Anzeigen