SQL Server Service Broker

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

Automated IT Change Planning
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
DNS-Resolver-Mechanismus
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
PL/SQL - Kurze Einführung -.
1 Sascha Michael Competence Manager Integration Umsetzung einer SOA-basierten Retail Plattform.
SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Herzlich Willkommen zum Informations-Forum: SAP Interoperabilität
Microsoft Academic Program Datenzugriff mit Framework 2.0 Student Technology Conference 2005.
Internet Protokolle und Formate 1.1 HTTP 1.2 HTML 1.3 SGML 2. XML 3. WAP Matthias Thränhardt Sebastian Weber.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Three minutes presentation I ArbeitsschritteW Seminar I-Prax: Inhaltserschließung visueller Medien, Spree WS 2010/2011 Giving directions.
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
M A X - P L A N C K - G E S E L L S C H A F T Bericht des Partnerinstituts Sabine Krott 1.0 Pilotentreffen im Harnack-Haus, 8. Juni 2006 Distribution:
Marcel Gnoth – Einer für alle – alle für einen! E3 Verteilte Transaktionen mit.NET-Komponenten.
B2B by Practice – Statistiken mit dem Reporting Engine
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Microsoft Office Forms Server
Laurie Clarcq The purpose of language, used in communication, is to create a picture in the mind and/or the heart of another.
Windows Vista für Entwickler: Microsoft.NET Framework 3.0 Nico Orschel Student Partner TU-Ilmenau.
No. 240 Marcel Gnoth, NTeam GmbH Message Queueing Stille Post mit dem.Net-Framework.
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
Google App Engine Microsoft Windows Azure
Test Driven Development - Romano Adler-
Best Practices in der Datenbank-programmierung
No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler.
Vergleich der verschiedenen kommerziellen Datenbanksysteme
SQL Server 2005 CLR-Integration
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
| Basel Von der SharePoint Taskliste zum gemanagten Project in Project Server Luca Argentiero Solution Specialist Microsoft
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Developer Day Webseiten auf Windows Azure hosten Britta Labud bbv Software Services AG Roland Krummenacher bbv Software Services AG.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure SQL Server auf IaaS How-to.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
Windows Azure Websites Roland Krummenacher Senior Software Engineer, bbv Software Services
| Basel Developing apps for SharePoint 2013 using Visual Studio 2013 René Modery, Office 365 MVP, 1stQuad Solutions.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
Roger Boesch Developer Technical Specialist Developer and Platform Group.
HandsOn Cloud, Infrastruktur, Architektur, Solution Design SharePoint for Internet Sites: Erfahrung aus der Praxis.
MongoDB on Linux-VM.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
XML IV: Cocoon 2.
F-Sharp (F#) Eine multiparadigmatische Sprache. Merkmale von F# Multiparadigmatisch.NET-Sprache Skalierbar und effizient Als Forschungsprojekt von Microsoft.
Virtual Earth Visualisierung von Geodaten Daniel Walzenbach, Microsoft Deutschland GmbH
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Univ.-Lektor Dipl.-Ing. Dr. Markus Schranz staatlich befugter und beeideter Ingenieurkonsulent für Informatik Web Application Engineering & Content Management.
SharePoint FIS HandsOn – out of the Box.
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis.
Making people work together! Folie 1 NEXPLORE AG Stefan von Niederhäusern Einfache Anwendung der SuisseID durch das Software Development KIT
Travelling Salesman Problem (TSP)
Office Business Anwendungen mit SharePoint 2010 Fabian Moritz SharePoint MVP.
Office Business Anwendungen mit SharePoint Fabian Moritz | MVP Office SharePoint Server.
Digital Dashboard Toolkit 2001 SharePoint Portal Server released targeting portal market SharePoint Team Services (STS) released as free add-
Windows Azure VMs und Storage
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Wie geht es weiter in der nachrichtenbasierten Welt?
3rd Review, Vienna, 16th of April 1999 SIT-MOON ESPRIT Project Nr Siemens AG Österreich Robotiker Technische Universität Wien Politecnico di Milano.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
Page 1 XXX21/08/2014 Implemented by Benutzen Sie diese Titelfolie für Programme und Projekte im Ausland. Setzen Sie das „einheitliche Logo der Zusammenarbeit“
 Präsentation transkript:

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

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

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

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

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

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

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!

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

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)

Ü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 CONVERSATION @conversationHandle MESSAGE TYPE [HelloWorldRequest] (N'Hello World - Feierabend')

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] Print @message_body

Ü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 CONVERSATION @conversationHandle MESSAGE TYPE [HelloWorldResponse] (N'Hello From '+@@servername ) END CONVERSATION @conversationHandle RECEIVE cast(message_body as nvarchar(MAX)) FROM [HelloWorldInitiatorQueue]

Demo Hallo BASTA in TSQL

Wie funktioniert SSB Details

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

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

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

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

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

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;

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] )

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-c613-4813-b873-b21ed3af4865' , ADDRESS = N'TCP://10.193.240.210:4022'

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 DECLARE @dh uniqueidentifier DECLARE @msg varbinary(max) -- retrieve the message from the queue WAITFOR( RECEIVE TOP(1) @dh = conversation_handle, @msg = message_body FROM [HelloWorldTargetQueue]), TIMEOUT 15000 INSERT INTO SSB_HW_Texte (Text) VALUES (cast(@msg as nvarchar(MAX)))

Demo Queue Aktivierung

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

Anwendungsszenarien

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

Szenario Order Entry

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

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

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)

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

Demo Event Notification

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

Und noch ein Queuing System SSB / MSMQ

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

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

A First Look at SQL Server 2005 Service Broker Ressourcen Developer Spot http://www.sqlservicebroker.com/forums/ Newsgroup http://communities.microsoft.com/newsgroups/default.asp?icp=sqlserver2005&slcid=us Event Notifications http://www.informit.com/articles/article.asp?p=327394&seqNum=5 A First Look at SQL Server 2005 Service Broker http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sqlsvcbroker.asp Blog http://www.geekswithblogs.net/veerji/articles/12913.aspx

Alles wird gut  Uff...