Samstag, 9. November 2013

T-SQL Pivot für Entity–Attribute–Value (EAV) Tabellen

Ein Kunde hat mir vor ein paar Tagen seinen Kummer mitgeteilt, wie Anwendungsentwickler in einem Projekt mit sogenannten Named-Value bzw .Entity-Attribute-Value Tabellen und deren Abfrage umgegangen sind.

Bei einem EAV Modell werden die Werte nicht in expliziten Spalten persistiert, sondern über einen Attributschlüssel verwaltet. Mehr siehe im Link oben (interessant in diesem Link auch der Hinweis auf Sparse columns, wobei ich diese nicht als Alternative sehe!).

Gegen die Verwendung von EAV Modellen spricht eigentlich nichts. Ich selbst habe diese Form der Modellierung in einigen Projekten vorgeschlagen, wenn die Herausforderung danach verlangte. Man erkauft sich eine Menge Flexibilität im Datenmodell mit der Last, dass man dieses später wesentlich aufwendiger in der Pflege und Abfrage ist. Nun ja, irgendwas ist ja immer.

Sowohl in OLTP als auch in Data Warehouse Projekten trifft man also gern auf so etwas. Im Data Warehouse Umfeld finden wir diese Form der Modellierung für Fakten- als auch für Dimensionstabellen ab und wann im sogenannten Core Data Warehouse, um eine größere Flexibilität bei der Ausgestaltung der Geschäftsobjekte zu erreichen. Auch SCD2 Herausforderungen lassen sich so zum Teil eleganter lösen. Immer eine Frage der Anforderungen usw.

Wie bereits erwähnt, ist neben der Pflege (ein Fluch) die effektive Abfrage von EAV Tabellen eine Herausforderung. Was ich aber nicht für möglich gehalten hätte, sind die Abfrage Monstren, die beim Kunden entstanden sind, welche ich hier selbst als Anti-Pattern nicht verewigen möchte.

Daher hier kurz die Grundlagen, Links und ein Buchtipp zum selber lesen und weiterreichen, wie man mit solchen Tabellen umgehen kann.

Unsere Beispieltabelle ist recht schlicht aufgebaut. Wir haben drei Geschäftsobjekte (Entitäten), welche jeweils drei Attribute mit entsprechenden Werten haben:

image

Ideal wäre es nun, wenn wir in einem Select einfach auf A1, A2 und A3 verweisen könnten. Die gute Nachricht ist, dass es dafür in T-SQL den PIVOT Operator gibt. Dieser ist nicht ganz intuitiv zu verwenden und häufig höre ich von Entwicklern, dass sie nicht die erhofften Ergebnisse bekommen, doch dazu gleich mehr.

Hier unsere Abfrage:

Das ist das Ergebnis:imagePerfekt! Alles gesagt, oder?

Häufig wird gesagt, dass der Pivot Operator nicht intuitiv ist. Stimmt! Woher weiß er zum Beispiel, dass in entityid unsere Entität steckt? ;-)

Ganz einfach: Weil sie im Statement nicht vorkommt! Verwirrend? Ja!

Und wozu die Aggregationsfunktion? In diesem Beispiel das MAX()? Dazu müssen wir uns mal die Frage stellen, was da im Hintergrund eigentlich passiert. Nämlich nichts anderes als ein Gruppieren. Und wonach gruppieren wir? Nach der Entität. 

Und die Aggregationsfunktion? Nun ja, der PIVOT Operator ist nicht nur für EAV Tabellen da, sondern auch, um wesentlich komplexere Aufgaben zu lösen. Dazu unten noch mehr. Zurück zum Gruppieren. Also es wird gruppiert, nach der Spalte, welche NICHT im Operator genutzt wird. Okay.

Nur was passiert, wenn unsere Tabelle eine weitere Spalte bekommt? Eigentlich stört so etwas eine SQL Abfrage ja nicht. Erweitern wir unsere Tabelle um einen Wert, welcher für uns erst mal völlig ohne Bedeutung sein sollte:

image

Wieder nutzen wir die Query von oben und bekommen dieses Resultat:

image

Autsch, was ist denn hier passiert?

Es wurde wieder gruppiert und zwar nach den SPALTEN, welche NICHT im PIVOT Operator vorkamen. Also nach: entityid und NewColumn. Das kann ja keiner wollen! Das heißt, dass durch die Erweiterung der Tabelle das Ergebnis geändert wurde. Um diesen Effekt zu verhindern, wird empfohlen die Source Tabelle nicht direkt anzusprechen, sondern über einen View, ein Subselect oder eine CTE.

Hier also eine modifizierte Version der Query von oben:

Und wir bekommen wieder das ursprüngliche Ergebnis zurück.

Der PIVOT Operator ist also ein wenig unhandlich im Alltag. Nun ist man aber nicht auf diesen angewiesen, um diese Funktionalität anzuwenden. Hier noch eine Alternative, welche durchaus ihren Charme hat aus dem Buch: Inside Microsoft SQL Server 2008: T-SQL Querying: T-SQL Querying:

Ich gehe auf den Mechanik der Logik im Hintergrund mal nicht tiefer ein und verweise auf das Buch. Nur ein Hinweis: Diese Variante ist immun gegenüber Veränderungen an der Source Tabelle! Und meine Erfahrung aus Coachings ist, dass viele Entwickler sich diese leichter “merken” können.

Noch mal zurück zum PIVOT Operator und der Aggregationsfunktion. Wie schon angedeutet, ist der Operator recht mächtig und kann für durchaus komplexere Abfragen genutzt werden.

Hier ein Beispiel direkt aus dem AdventureWorks Universum den BOL entnommen. http://technet.microsoft.com/de-de/library/ms177410(v=sql.105).aspx

Wir sehen auch gleich die Verwendung der Subquery im FROM. Als Aggregationsfunktion wird ein COUNT statt einem MAX verwendet. Wir sind die Belegköpfe, Mitarbeiter und Lieferanten mit jeweils ihrer Nummer enthalten.

image

Unsere Query gruppiert nun nach der VendorID und zählt für explizit in den Spalten definierte Mitarbeiter durch, wie häufig wer bei welchem Lieferanten bestellt hat. Hier das Ergebnis der Query:

image

Das ist durchaus ein valides Beispiel für eine etwas komplexere Anforderung, welche mit dem PIVOT Operator recht einfach umgesetzt werden konnte.

Samstag, 12. Oktober 2013

NRW Conf 2013 – Folien zu meiner Session

Anbei meine Folien zu meinem Vortrag auf der NRW Conf 2013 in Wuppertal.

Das Event war wieder (war das dritte Mal als Sprecher dabei) ein voller Erfolg! Kann es jedem Entwickler nur empfehlen!

Vielen Dank an die Teilnehmer meiner Session! Ihr seid gut mitgegangen, es war mir eine große Freude. Hoffe sehr, dass ich einige von Euch mehr als nur neugierig machen konnte auf die Möglichkeiten der SQL Server System Views.

Auf einige Beispiele werde ich in weiteren Posts noch eingehen. Das DDL Trigger Beispiel habe ich schon gepostet und als Video festgehalten.

Freitag, 4. Oktober 2013

SQL Server DDL Trigger – Nachverfolgung der Erstellung von Indizes

Eine durchdachte Indizierung ist ein wesentlicher Bestandteil einer optimierten SQL Server Lösung. Dazu habe ich auch schon öfter etwas geschrieben:

Hypothetischer Index im SQL Server, jetzt endlich auf Video festgehalten

Indizes? Haben wir doch schon längst! Lassen Sie uns nun bitte zu den echten Tuning Methoden kommen.

Wie messe ich eigentlich den Erfolg der Optimierung einer SQL Abfrage?

Und daher ist es auch nicht verwunderlich, dass man häufig eine Reihe von Indizes “ausprobiert” auf dem Weg zum optimalen Ausführungsplan für einen definierten Workload.

Doch am Ende eines Tages kommt dann leicht Katerstimmung auf, weil zwar die Workload deutlich optimiert wurden, nur haben wir gleich noch welche Indizes angelegt bzw. überarbeitet? Denn wir haben im SQL Server Management Studio unterhalb der Tabellen schön verteilt die Indizes liegen. Ein Überblick fehlt. Und eine Abfrage von sys.indexes bringt uns auch nur bedingt weiter.

Und nicht jeder hat eine third-Party Anwendung mit Repository, Deployment, Abgleich usw. auf dem Kundenrechner.

Hier ein kleiner Tipp aus meiner Praxis. Nutzt einfach einen DDL Trigger. Nun nicht gleich die Nase rümpfen. Trigger ist nicht gleich Trigger und ich meine keinen DML Trigger, welcher auf Änderungen in den eigentlich Daten anspringt, sondern einen Data Definition Trigger, welcher auf Schema Änderungen reagiert. Und ein Create, Alter oder Drop Index ist eine Änderung am Schema.

Anbei ein kleiner Cast, in dem ich die Vorgehensweise einmal demonstriere.

Mittwoch, 25. September 2013

NRW Conf 2013 in Wuppertal

Wie die Zeit rennt. Es ist schon wieder ein Jahr her, dass ich bei der NRW Conf in Wuppertal dabei war. Nun steht sie schon wieder vor der Tür. Am 10. & 11. Oktober ist es soweit! Und ich darf wieder als Sprecher dabei sein mit einem Microsoft SQL Server Thema.

Da die NRW Conf eher für die Entwickler unter uns gedacht ist, werde ich dieses Jahr die Data Management Views (DMVs) speziell für Entwickler aufbereiten und eines meiner Coaching Modelle vorstellen, wie man sich die wichtigsten DMV/DMFs merken kann. Auswendiglernen steht also auf dem Programm. Zwinkerndes Smiley

Hier der Session Abstract:

“In dieser Session lernen Entwickler alles Wichtige über die Data Management Views und Functions des SQL Servers. Damit endlich das lange Suchen nach der "richtigen" DMV Query im Internet ein Ende hat, wird im Detail und anhand von Beispielen live gezeigt, wie Performance Probleme analysiert werden können. Des Weiteren werden die Catalog Views des SQL Servers erläutert, um diese mit den DMVs zu verbinden. Das Motto der Session ist: Suchen war gestern, ab jetzt schreibe ich mir die Abfragen einfach selbst!” Level 300 ! Da ich ein wenig Erfahrung mit dem SQL Server voraussetze.

Möchte noch mal die Gelegenheit nutzen und Werbung machen für dieses wirklich sehr gelungene Veranstaltungsformat. Die Reise lohnt sich auch für potenzielle Teilnehmer, welche nicht aus der Region NRW kommen.

speaker125x125.fw

Dienstag, 24. September 2013

2. Microsoft Innovationstag Nord - Integrierte Lösungen in der Öffentlichen Verwaltung

Und da sage mir mal einer, dass Microsoft keine innovativen Veranstaltung in den Norden bringt! Es steht der 2. Microsoft Innovationstag NORD an! Und zwar am 22. & 23. Oktober 2013 in der Microsoft Niederlassung Hamburg. Es handelt sich dabei um ein Event extra für die Öffentliche Verwaltung und ist für die Teilnehmer kostenfrei!

Wir (die PSG GmbH) sind selbst vor Ort als Partner und füllen an den beiden Tagen jeweils einen der fachlichen Vorträge mit Erfahrungsberichten über unsere Finanzcontrolling Projekte in der Öffentlichen Verwaltung (u.a. zahlreiche Bundesbehörden).

Anbei der Einladungstext von Microsoft:

“In spannenden Diskussionen, Vorträgen und praktischen Demonstrationen mit Experten von Microsoft und Partnern wird im Rahmen des 2. Microsoft Innovationstages NORD in Hamburg am 22. und 23.Oktober 2013 der Einsatz moderner Technologien in der Öffentlichen Verwaltung erörtert.

Erfahren Sie dabei aus erster Hand,

  • wie innovative Lösungen in vorhandene Infrastrukturen, Verwaltungsprozesse und bekannte Desktop-Werkzeuge wie Office und Outlook integriert werden.
  • wie Business Intelligence-(BI-)Lösungen Daten aus unterschiedlichen Datenbanktechnologien vorhandener Fachverfahren in neuen Dashboards darstellen und dadurch die Fachverfahren aufwerten.
  • wie strukturierte und unstrukturierte Daten aus verschiedenen Quellen von einer zentralen BI-Lösung zusammengeführt, ausgewertet und interpretiert werden.
  • wie eine sichere und wirtschaftliche Cloud-Nutzung in der Öffentlichen Verwaltung aussehen kann.
  • wie eine moderne Test- und Entwicklungsumgebung alle Möglichkeiten der effizienten und schnellen Zusammenarbeit nutzt.

Nutzen Sie die Gelegenheit und diskutieren Sie mit unseren Partnern und Lösungsexperten ausführlich und individuell über die gezeigten Referenzlösungen. Zudem besteht in den Pausen die Möglichkeit, die neusten Windows 8 Devices kennenzulernen. Der Nachmittag besteht jeweils aus zwei parallelen Vortragsreihen: Wählen Sie nach Ihren persönlichen Interessen aus Vorträgen zu einem technischen und einem fachbezogenen Themenkomplex mit praktischen Beispielen und in Begleitung von Microsoft Partnern.

Aufgrund der limitierten Teilnehmerzahl und der großen Zahl von Interessenten aus der Öffentlichen Verwaltung wird der 2. Microsoft Innovationstag NORD an zwei Terminen mit jeweils identischer Agenda stattfinden. Um eine frühzeitige Anmeldung wird gebeten. “

ANMELDUNG für Dienstag, 22. Oktober 2013

ANMELDUNG für Mittwoch, 23. Oktober 2013

Dienstag, 3. September 2013

Hamburger SQL Server Usergroup (PASS Deutschland e.V.) Treffen im September 2013

Es ist wieder soweit. Die Einladung für das Treffen der Hamburger SQL Server Usergroup Hamburg (PASS Deutschland e.V.) ist raus.

Wir treffen uns am 11. September 2013 um 18:30 bei:

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist
über die Rampe mit dem Schild "Microsoft Kunden" erreichbar. Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).

Wir haben einen externen Vortrag und zwar “SQL Attack..ed – Angriffsszenarien auf SQL Server. Fokus: Webapplication und Netzwerk-Layer” von Andreas Wolter. Andreas ist einer wenigen MCMs weltweit.

“Wir haben wieder einen externen Vortrag und zwar “SQL Attack..ed – Angriffsszenarien auf SQL Server. Fokus: Webapplication und Netzwerk-Layer” von Andreas Wolter. Obwohl SQL Server kann als "secure by default" gelten darf, sind das am häufigsten erfolgreich angegriffene Ziel die Daten, die in der Datenbank liegen. Die meisten der ausgenutzten Schwachstellen in einer SQL Server Umgebung sind auf Miss-konfiguration, schwache Sicherheitseinstellungen oder ungenügende Programmierpraktiken zurückzuführen. In dieser rein Demo-basierten Session werden verschiedene Angriffsszenarien mittels fortgeschrittener SQL-Injection Beispiele demonstriert. Mit dabei auch eine sogenannte „privilege elevation“ Attacke, gestartet über ein unzureichend gesichertes Frontend. Außerdem sehen wir, wie sich der SQL Server darstellt, wenn man einmal ins Netzwerk vorgedrungen ist. Hinweis: Es geht nicht um eine Anleitung zum „Hacken von SQL Server“, sondern um eine Sensibilisierung für die Thematik.”

Wir bitten um eine vorherige Anmeldung per Email an: slo@sqlpass.de, damit wir die Größe des benötigten Konferenzraums vorher abstimmen können. Es haben sich schon einige Teilnehmer angemeldet.

Freue mich auf noch mehr!

Freitag, 9. August 2013

SQL Server Transaction Log Deep Dive Vortrag – Nachlesen und Folien

Gestern Abend war wieder das Treffen der Hamburger SQL Server Usergroup (PASS Deutschland e.V.). Thema war dieses Mal das SQL Server Transaktionsprotokoll. Auf den ersten Blick gar kein so attraktives Thema, dennoch hatten wir mit über 20 Teilnehmern ein volles Haus bei dem Raumsponsor der Sysback AG in Hamburg. Ich freue mich schon auf das nächste Treffen im September!

Anbei, wie versprochen, die Slides zum Vortrag.

Montag, 5. August 2013

Hamburger SQL Server Usergroup (PASS Deutschland e.V.) Treffen im August 2013

Es ist wieder soweit. Die Einladung für das Treffen der Hamburger SQL Server Usergroup Hamburg (PASS Deutschland e.V.) ist raus.

Wir treffen uns am 8. August 2013 um 18:30 bei der

Sysback AG
Theresienstieg 11
(Zufahrt über Schöne Aussicht 14 !)
22085 Hamburg

Wir haben wieder einen Vortrag und zwar “Das Transaktion Protokoll im Detail”. Klingt trocken, wird es aber nicht. Versprochen! ;-)

“Wir werden uns das Transaktion Protokoll der relationalen Engine des Microsoft SQL Server mal etwas genauer ansehen.

Beginnen werden wir mit den Grundlagen, um uns dann immer tiefer in den Kaninchenbau des Logfiles zu begeben. Selbst ein Blick in den Aufbau bleibt nicht aus. Der Nutzen dieses Wissen ist u. a. die Fähigkeit Performance Fragestellungen besser einschätzen zu können als auch sich das Transaktion Protokoll als Informationsquelle zu erschließen für Aufgaben der Wartung und für die Extraktion von Daten für ETL/ELT Prozesse. Daher werden sicherlich sowohl DBAs als auch Entwickler und BI Berater von dieser Session profitieren können.”

Vortragender bin ich.

Wir bitten um eine vorherige Anmeldung per Email an: slo@sqlpass.de, damit wir die Größe des benötigten Konferenzraums vorher abstimmen können. Es haben sich schon viele Teilnehmer angemeldet. Freue mich auf noch mehr!

Freitag, 19. Juli 2013

xing geht mit seinem neuen Layout wohl den Weg vieler guter Tools

und zwar wurden diese zu Tode optimiert und verloren dann an jeglicher Bedeutung.

Ich schreibe ja selten über etwas anderes als den Microsoft SQL Server und Business Intelligence. Nur irgendwie gehört xing dazu. Und meine Meinung dazu muss mal raus.

xing scheint den Versuch zu unternehmen jedes Profil in eine Art dynamische Infografik zu verwandeln. Netter Gedanke. Leider völlig danebengegangen. Das haben auch schon diverse BI Clients versucht. Funktioniert einfach nicht, weil zum letzten Schliff immer ein Designer gebraucht wird. Und wo wir gerade bei Designern sind. Wo ist das Designpapier von xing, welches uns im Detail erklärt was das da soll? Da hatte zum Beispiel Microsoft seinerzeit, als die Windows Phone Gui noch was mit U-Bahn Systemen zu tun hatte, wesentlich mehr zu bieten.

Ich habe keinen kleinen Monitor. Nur ich komme aus dem Scrollen gar nicht mehr raus. Und erwische mich immer wieder, wie ich auf ein Profil schaue und traurig den Kopf hängen lasse. Ab und wann seufze ich auch ein “Warum…?”. Und dann diese Gesichter, die mich neuerdings durch Bullaugen anschauen. Das mache ich wohl auf anderen Profilen auch. Habe ich xing jemals erlaubt, dass die mein Bild schneiden? Wahrscheinlich stand das in den AGBs. Viele Menschen auf xing haben sich extra schöne Fotos gemacht mit Logos etc. pp. Nun ja, und wenn der Dienstleister, welcher ja auch noch Geld für Premiumdienste verlangt, sich die Freiheit nimmt beliebig die Inhalte seinem Design anzupassen. Was sagt das dann über ihn aus?

xing, mal ehrlich, ich habe noch niemanden getroffen, der Euer neues Design nicht belächelt hat. Ich habe zwar keine Idee, wie ihr aus der Nummer herauskommen wollt, dennoch wünsche ich Euch, dass Ihr eine habt und ganz schnell ein wenig optimiert.

Vor ein paar Jahren gab es so etwas wie ein Test bzw. Qualitätsboard. Man wurde in Hamburg eingeladen und schaute sich neue Designs an und durfte Feedback geben. Irgendwie bin ich da aus dem Verteiler gefallen. Vielleicht war ich schon damals zu kritisch.

Jetzt ist dar ideale Moment für einen (neuen) Dienst, welcher mit einem aufgeräumten Design, durchdachten Networking Funktionen das Thema Business Contacts in Deutschland an sich zieht. Wir erinnern uns, zumindest die Älteren unter uns, xing war mal openBC. Das waren noch Zeiten.

Master Data Services Vortrag von der SQLBits XI ist online

Die Vorträge der SQLBits (UK) Konferenzen werden ja immer aufgezeichnet und nach wenigen Wochen online für jeden ohne weitere Registrierung veröffentlicht. Hier der Link zu meinem Vortrag.

http://www.sqlbits.com/Sessions/Event11/The_Developer_Side_of_Master_Data_Services

image

Die Videobearbeitung ist wieder mal erste Klasse! Ich bin fasziniert davon, dass der “SQLBits Video Mensch” im richtigen Augenblick das Video immer auf Vollbild zoomt usw. Auch hat die Kamera geschafft mir zu folgen. Exzellente Arbeit!

Donnerstag, 18. Juli 2013

The Developer Side of Microsoft Business Intelligence–Slidedeck

Hier noch mal die Folien von dem Vorläufer von meinem SQLSaturday #230 Vortrag. Seinerzeit ging es um die allgemeinen Entwicklermöglichkeiten der BI Plattform von Microsoft. Die Teilnehmer hatten letzten Samstag zum Teil danach gefragt.

Sonntag, 14. Juli 2013

SQLSaturday #230 Rheinland–Und, wie war’s so?

Gestern war nun der zweite deutsche SQLSaturday. Hier ein kurzer Bericht.

Die Lokation. Im Gegensatz zum ersten SQLSaturday in Deutschland, welcher in der Lobby des Microsoft Headquarters in Unterschleißheim stattfand, umgab uns gestern eine Aura des Lernens. Wir waren bei der Fachhochschule Bonn-Rhein-Sieg zu Gast. Eine ganz andere Atmosphäre. Ich fand das durchaus angenehm.

Die Sprecher und Sessions. Hatte schon was von einer internationalen Konferenz, da viele nicht deutschsprachige Sprecher dabei waren. Zum Teil hohes Niveau in den Sessions. Hätte gern noch mehr davon sein dürfen. Auch durften sich viele heimische Sprecher das erste Mal auf einer Konferenz ausprobieren. Insgesamt eine Interessante Mischung.

Das Catering. So, zuerst muss erwähnt werden, dass ein SQLSaturday kostenlos für die Teilnehmer ist und nur durch die Sponsoren finanziert wird. Dank an diese! Es gab eine Reihe von kalten Getränken, Kaffee usw. Mittag wurde ganz Hochschulen-mäßig in der Mensa eingenommen. Gab Pasta und Vegetarisches. Zwischendurch Snacks. Natürlich kann man bei so einer Veranstaltung kein Büffet, wie bei einem hochpreisigen Event, erwarten, dass trägt sich von den Kosten einfach nicht. Alle wurden satt, darauf kommt es doch an!

Mein Vortrag. Ich war ja auch Sprecher. Es gab “The Developer Side of Master Data Services”. Ich hatte ihn als “Advanced” eingestuft. Aus gutem Grund, denn es gab viel C# Code zu sehen. Echte “Nerd Demos” mit Konsolenfenstern & Co. :-) Session verlief gut, alle Demos klappten. Publikum ging sehr gut mit. Hat viel Freude gemacht! Dank an alle Teilnehmer meiner Session an dieser Stelle.

Geschenke. Am Ende gab es dann noch einen Verlosungsmarathon, der an die Nerven ging und, by the way, den kleinen Statistiker in mir geweckt hat was die Verteilung der Preise anging, das muss ich noch mal nachrechnen. Der Zufall hat ja bekanntlich kein Gedächtnis.

Vielen Dank an die Organisatoren und die vielen vielen Freiwilligen vor Ort!
Ich freue mich schon auf den nächsten SQLSaturday in Deutschland!

Blink_c8d55728-5579-474d-8a02-7652ecd161fd_11_2013-07-12
Freiwillige am Freitag Abend beim Taschen packen.

Blink_7eba3048-ac23-4615-96f5-bfd559c5b330_7_2013-07-12
Internationales Speaker Dinner am Abend zuvor. Englisch war Pflicht.

Blink_c40c1fed-b874-4375-bb96-c2f3b414b2f9_8_2013-07-13
Gut gefüllte Sessions mit Hochschul-Flair…

Mittwoch, 3. Juli 2013

Controlling für Bundesbehörden & Institute des Bundes

Am Montag hatte ich kurz auf unsere (PSG Projekt Service GmbH) Teilnahme am 17. Bonner Microsoft-Tag für Bundesbehörden hingewiesen. Die Veranstaltung ist auch als “Bonner Behördentag” bekannt. Erstaunlicherweise kamen einige Nachfragen, was denn nun Finanzcontrolling im Public Sector sei?

Vielen Lesern meines Blogs war nicht bewusst, dass wir schon seit 1996 Business Intelligence und Reporting Projekte für Behörden durchführen. Und, zweiter Punkt, vielen war nicht bewusst, dass Behörden auch Data Warehouses, OLAP Cube usw. im Einsatz haben. Okay, die Art und Weise der Modellierung der Daten und der Auswertungen unterscheidet sich schon sehr von denen in der privaten Wirtschaft. Auch die Ergebnisse haben einen ganz anderen Kontext als eine klassische BWA, GuV, Bilanz etc.

Als Beispiele für die Berichte und Berichtsfelder, hier ein kleiner Auszug aus unseren Standardberichten für Bundesbehörden, welche selbstverständlich auf den SQL Server Reporting Serivces (SSRS) basieren:

  • Budgetverwaltung
    • Restmittelübersicht
    • Dezentrale Budgetverwaltung
  • Drittmittelprojekte
    • Mittelverwendungsnachweis
    • Projektfinanzierungsplanung
    • Trennungsrechnung
    • Overheadberechnung
  • Stellenbewirtschaftung und -planung
  • Haushalt
    • Haushaltsüberwachungsliste
    • Haushaltsprognose
  • Controlling
    • Operatives Controlling
      • Gewichtete Hochrechnung
      • Prozesscontrolling
      • Projektcontrolling
    • Strategisches Controlling

Vieles liest sich auf den ersten Blick vertraut, dennoch sind die Berechnungen im Hintergrund teilweise ganz anders als in der klassischen BWL. Ich hoffe, dass ich damit die Fragen zumindest im Ansatz beantworten konnte, was es mit Finanzcontrolling im Public Sector auf sich hat. Bei weiteren Fragen, einfach melden. Das hier ist doch mein Technologie Blog ! :-)

Montag, 1. Juli 2013

17. Bonner Microsoft-Tag für Bundesbehörden im Juli 2013

Heute eine Meldung in “eigener Sache”.

Die PSG Projekt Service GmbH ist beim 17. Bonner Microsoft-Tag für Bundesbehörden in Köln auf Einladung von Microsoft dabei. Wir werden dort einen Vortrag über BI in Bundesbehörden halten. Kompletter Titel ist “Business Intelligence und Finanzcontrolling mit der neuen Microsoft BI-Plattform - Der Weg von manuellen Berichten zum modernen BI-System”. Anhand der Microsoft Referenz zu unserem BI/DWH Projekt beim Umweltbundesamt, werden wir aufzeigen, dass solche Projekte mit dem richtigem Partner durchaus möglich sind und erfolgreich sein können.

Den Vortrag wird im Wesentlichen mein Kollege Jan Streblow (Lead Consultant Public Sector) halten. Für SQL Server Technologie Fragen bin ich auch mit vor Ort.

Details gibt es hier: http://www.microsoft.de/events/bonn

Und von dort aus fahre ich dann gleich weiter nach Bonn zum SQL Saturday #230 !

Dienstag, 11. Juni 2013

SQL Saturday #230 Rheinland

Am 13. Juli 2013 ist der zweite deutsche PASS SQL Saturday. Dieses Mal an der Hochschule Bonn-Rhein-Sieg. Daher heißt dieser SQL Saturday auch “Rheinland”. Da alle SQL Saturdays weltweit durchnummeriert werden, hat dieser die Nummer 230 erhalten.

Hochschule Bonn-Rhein-Sieg
Campus Sankt Augustin
Grantham-Allee 20
53757 Sankt Augustin

Und noch den Hinweis, dass es am Freitag einen bunten Strauß an PreCons gibt!

Alle weiteren Infos gibt es auf der Website.

 

Ich werde auch vor Ort sein und wieder einen Vortrag halten dürfen. Ich wurde gebeten meinen Vortrag von den letzten SQLBits in Nottingham zu halten:

The Developer Side of Master Data Services
The Master Data Services offers an easy to use toolset to work with Master Data. In this session we will explore the hidden power of MDS to integrate this service in our solutions. MDS provides ways to programmatically accessed all tasks. We will see how to automate all the functions of MDS and how to build our own frontends for our data stewards. Take your MDS Project on a higher level.

Dieser Vortrag ist quasi die Fortsetzung meines Vortrags “The Developer Side of Microsoft Business Intelligence”.

Dienstag, 28. Mai 2013

SQL Server Lizenzierung – PASS Treffen in Hamburg

Über die „richtige“ Lizenzierung des SQL Servers kann mindestens genauso viel diskutiert werden, wie über eine gelungene Indizierung einer Anwendung.
In den letzten Jahren kamen bei unseren Treffen immer wieder diverse Fragen bzgl. der Lizenzierung des SQL Servers auf. Und wir taten uns alle immer ein wenig schwer mit der „korrekten“ Beantwortung.
Kein ganz triviales Thema, daher haben wir uns nun einen Experten dazu eingeladen. Den Frank Schier von Microsoft aus Berlin.
Das wird ein ganz besonderer Abend. Es kommen nicht nur unsere technischen Mitglieder auf ihre Kosten. Bringt ruhig mal Euren Vorgesetzen, (IT-) Einkäufer, (IT-) Controller und auch (IT-) Leiter mit. Frank wird ihre Fragen beantworten können.
Hier ein paar Beispiele der Fragen aus den letzten Treffen:
Wann darf welche Edition für was eingesetzt werden?
Wie lizenziere ich meine Entwickler?
Core vs. CAL ?
Was mache ich mit meiner Virtualisierung?
Wie gehe ich mit meinen Lizenzen in einem Fail-Over Szenario um?
Was hat es mit Software Assurance auf sich?
Welche Lizenzierung lohnt sich für mein Unternehmen?
Sollte ich  mit unserem Vertrag umsteigen?
Oder doch eher in die Cloud?
Gerade mit der aktuellen Version SQL Server 2012 hat sich einiges geändert.
Hier findet Ihr das aktuelle Dokument zur Lizenzierung des SQL Server, damit Ihr auch optimal mit Euren Fragen vorbereitet seid!
http://download.microsoft.com/download/7/3/C/73CAD4E0-D0B5-4BE5-AB49-D5B886A5AE00/SQL_Server_2012_Licensing_Reference_Guide.pdf
Wir treffen uns wieder bei:

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist über die Rampe mit dem Schild „Microsoft Kunden“ erreichbar. Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).
Ansprechpartner vor Ort: MS Empfangs-Team und Sascha Lorenz
Wir bitten um eine vorherige Anmeldung per Email an: slo@sqlpass.de
Wichtig: Wir benötigen die Anmeldungen 2 Tage vor dem Treffen, da dort Besucherausweise ausgestellt werden! Spontane Teilnehmer sind dennoch willkommen. ;-)

Montag, 15. April 2013

Hypothetischer Index im SQL Server, jetzt endlich auf Video festgehalten

Da der hypothetische Index (Hypothetical Index) vielen SQL Server Administratoren und Entwicklern bisher bewusst in freier Wildbahn noch nicht begegnet ist, habe ich mich mit der Kamera auf die Lauer gelegt und ihn tatsächlich auf Video festhalten können.

Viel Spaß beim Betrachten dieser interessanten und äußerst nützlichen Spezies!

Hypothetischer Index

Samstag, 13. April 2013

Hypothetischer Index im SQL Server, was soll das denn sein?

Letzte Woche war ja die Microsoft Synopsis 2013 in Darmstadt.

Ist ein sehr gelungenes Event gewesen!

Ein Gespräch am Stand der deutschen SQL Server Community (PASS Deutschland e.V.) blieb mir besonders in Erinnerung. Dort hatte sich um die Popcorn Maschine ein kleines Grüppchen der SQL Server Szene gebildet. Im Gespräch ging es um “unbekanntere” SQL Server Features. Man kann bei einem so mächtigen Produkt wie dem SQL Server ja auch wirklich nicht mehr alles kennen. Ich warf eines meiner Lieblingsfeatures aus dieser Kategorie in den Ring: Den hypothetischen Index !

Nein, das ist kein brandneues Feature im SQL Server 20-something…

So gut wie alle Anwesenden hatten noch nie davon gehört/gelesen. Aufgrund des Namens wurde spekuliert und schnell geschlossen, dass es sich um einen virtuellen Index, also quasi nur um die Hypothese eines möglichen Index handeln müsste, der genutzt werden könnte, um zu prüfen, ob eine angedachte Optimierung eines Abfrageplans tatsächlich sinnvoll ist. Korrekt!

Was soll das alles? Klassische Optimierung ist doch häufig Trial & Error.

Bei der Optimierung eines Abfrageplans geht es ja meist um die Nutzung eines oder mehrerer Indizes, um beim Abarbeiten möglichst wenige 8 KB Seiten lesen zu müssen. Siehe dazu auch diesen Blogpost.

Es wird der gesamte Workload oder auch mal eine einzelne Query analysiert. Oft wird dann auf Basis des Abfrageplans eine Hypothese entwickelt mit welchen neuen Indizes die Query optimiert werden könnte. Das ist oft eine Wissenschaft für sich. Nur wie kann geprüft werden, ob der Query Optimizer auch wirklich den neuen Index nutzt? Der Optimizer ist ja recht wählerisch, was den Einsatz von Indizes angeht. Nur wie wählt der Optimizer aus dem Angebot an Indizes aus?

Hier kommt bei den meisten Entwicklern Trial & Error ins Spiel. Der Index wird einfach erstellt und es wird dann getestet. Ganz einfach, oder? Nun ja, das funktioniert bei überschaubaren Datenbanken durchaus problemlos. Dummerweise habe ich häufig mit recht großen Tabellen zu tun bei denen selbst die Erstellung eines Test Index mehr als eine Stunde dauern kann. Da will jeder neue Index gut überlegt sein und ist eigentlich etwas für ein explizites Wartungsfenster. Hier kommen wir mit Trial & Error nicht weiter. Ach ja, warum kann man nicht einfach mit einer Entwicklungsumgebung mit nur wenigen Datensätzen arbeiten? Das klappt leider nicht!

Hier kommen wir zu einer meiner Lieblingssätze für Optimierungscoachings: Was ist das Wichtigste am Index?

Die Statistiken ! Hinter jedem Index steht mindestens eine Statistik über die Inhalte also Daten der Indexstruktur. Statistiken führen leider oft ein Dasein im Schatten des Index. Immer wieder werden sie vernachlässigt und meist auch komplett missverstanden. Dabei ist die Erstellung und Pflege von Statistiken ein wesentlicher Teil jeder Performanceoptimierung, denn aufgrund der Statistiken wählt der Optimizer einen Index aus oder eben nicht. 

Für eine Überprüfung benötigen wir also die Datenbestände aus dem Produktivsystem. Testdaten können das Ergebnis einer Performanceoptimierung komplett verfälschen. Das führt bei vielen Entwicklern zwar meist zu einer Sinnkrise, wenn sie davon erfahren, dennoch ist dem einfach so!

Wie kommen wir nun aus der Zwickmühle? Doch jedes mal ein halbes TB an Daten indizieren, um dann evtl. den Index gleich wieder zu verwerfen?

Hier kommt endlich der hypothetische Index ins Spiel. Er ist nur dafür da, um eine Hypothese zu überprüfen. Genaugenommen ist er gar nicht physisch vorhanden. Moment, wir brauchen aber den produktiven Datenbestand! Und genau hier kommt das Geniale. Beim hypothetischen Index werden NUR die Statistiken erzeugt. Das geht relativ flott und nimmt nur wenig Platz ein. Dann wird ein geschätzter Abfrageplan vom Queryoptimizer erstellt und man hat sofort Feedback, ob der geplante Index korrekt genutzt werden würde. Super, oder?

Gerade im Enterprise Data Warehouse Umfeld spart man damit wirklich sehr viel Zeit!

Nur wie muss man sich das jetzt in der Praxis vorstellen?

Eines noch vorweg: Es handelt sich hierbei um ein nicht dokumentiertes Feature! Also gibt es keinen Support und keine Garantie, dass das Feature in neuen Versionen oder nach einem Service Pack noch funktioniert.

Und wofür ist das Feature dann da? Für den Data Tuning Advisor (kurz DTA) ! Der nutzt das. Macht ja auch Sinn, oder?

Nun aber Butter bei die Fische. Wie geht das mit dem hypothetischen Index nun in der Praxis?

Als Beispiel nehmen wir mal wieder AdventureWorks2012 und meinen Liebling die FactInternetSales. Hier von eine leicht erweiterte Varianten um ein paar Zeilen mehr. Wie komme ich dazu? Siehe hier! Diese fis hat hier “nur” 12.079.600 Zeilen. Muss reichen für den Moment. ;-)

image

Dazu nehmen wir diese Query:

SELECT p.EnglishProductName,
    d.WeekNumberOfYear,
    d.CalendarYear,
    AVG(fis.Freight) as 'AVG Freight',
    sum(fis.SalesAmount) as 'SUM Salesamount'
FROM demo..FactInternetSales as fis
inner join AdventureWorksDW2012..DimProduct as p on
    fis.ProductKey = p.ProductKey
inner join AdventureWorksDW2012..DimDate as d on
    fis.OrderDateKey = d.DateKey
group by
    p.EnglishProductName,
    d.WeekNumberOfYear,
    d.CalendarYear
order by p.EnglishProductName,
    d.WeekNumberOfYear,
    d.CalendarYear;

Für unsere Zwecke sollte sie reichen. Wie Ihr seht, nutze ich die FactInternetSales aus meiner Demo Datenbank und den Rest aus der original Adv2012.

Entscheidend wird der Teil des Queryplans sein, welcher die Faktentabelle lesen wird. Schauen wir uns den Plan einmal an.

image

Da werden also mal eben 357 MB an Daten gelesen. Okay, noch nicht die Welt, dennoch wollen wir genau das mittels Index optimieren.

Erst mal tun wie so als wüssten wir nix vom hypothetischen Index. Wir legen also nach kurzer Analyse einfach einen neuen Index an. Und zwar diesen hier:

CREATE NONCLUSTERED INDEX [hypIndex] ON [dbo].[FactInternetSales]
( [OrderDateKey] ASC )
INCLUDE ( [ProductKey], [SalesAmount], [Freight] )

Das Anlegen hat auf meinem Testsystem (virtuelle Maschine und so…) mal eben ganze 2-3 Minuten gedauert. Geht ja gar nicht…

image

Wie ist das Ergebnis?

image

Okay, wie erwartet nur noch wenige KB.

Optimiert ist! Mit Trial & Error…

Kommen wir zum zweiten Teil. Nun das Ganze mit einem hypothetischen Index. Also den jetzigen löschen… und? Ja, wie legt man nun so einen Index an?

Wie gesagt, wir brauchen ja NUR die Statistiken. Daher ist die magische Erweiterung auch: “WITH STATISTICS_ONLY = –1”. Nicht wundern, dass das SSMS ihn nicht erkennt. Ist ja auch undokumentiert.

image

Dennoch, oh Wunder, SQL Server hat es gefressen.

Und es hat gefühlt nur 1 Sekunde gedauert. Genau hier ist ja unsere Zeitersparnis!

Nur ein Blick ins SSMS lässt uns zweifeln, ob das überhaupt geklappt hat.

image

Unser Index ist gar nicht da!!! Was soll das denn nun?

Kurzer Blick in die Statistiken zeigt dennoch, dass da was passiert sein muss:

image

Schauen wir uns das Ganze mal mit einem Catalogview an:

SELECT *
  FROM sys.indexes
WHERE object_id = OBJECT_ID('[dbo].[FactInternetSales]')

image

Hier taucht unser Index auf. Super. Und wenn man ein wenig zur Seite scrollt, dann findet man eine Spalte “is_hypothetical”. Ehrlich, die war immer schon da! Versprochen! :-)

SELECT is_hypothetical,*
  FROM sys.indexes
WHERE object_id = OBJECT_ID('[dbo].[FactInternetSales]')

Hier kurz nach vorne geholt:

image

Unheimlich, oder? Und es geht noch weiter. Der Queryoptimizer nutzt den Index nämlich noch nicht.

Wie bringen wir ihn nun dazu? Dazu gibt es den nächsten undokumentierten Befehl: DBCC AUTOPILOT().

DBCC AUTOPILOT(0, 9, 261575970, 3)
GO

Was sind denn das für Parameter?

9 ist die Datenbank ID. Die gibt es u.a. so: SELECT DB_ID() AS DBID.

261575970 ist die Objekt ID. Siehe einfach oben.

3 ist die Index ID. Siehe nochmals oben. :-)

Und nun? Es wird noch besser…

SET AUTOPILOT ON
GO

Wenn wir nun den geschätzten Queryplan abfragen, bekommen wir:

image

Also der Queryoptimizer schlägt den hypIndex vor, obwohl dieser gar nicht existiert. Wir sehen auch, dass die Schätzung zwar sehr genau ist, aber er hat sich um ein paar KB vertan. Ich finde das ist okay, oder?

Und was passiert im AUTOPILOT Modus, wenn wir die Query einfach laufen lassen?

image

Fast nix anderes, denn der SQL Server führt nun keine Queries mehr aus in dieser Session. Wir bekommen nur noch geschätzte Pläne zurück.

Mit SET AUTOPILOT OFF schaltet Ihr den SQL Server wieder zurück. Und löschen geht wie gewohnt mit:

DROP INDEX hypindex ON dbo.FactInternetSales;

Natürlich ist das immer noch Trial & Error. Nur wesentlich optimierter.

So, damit wären wir auch schon am Ende dieses Posts. Hmm, irgendwie länger als geplant geworden, dafür mit Demo Teil. :-)

Ich wünsche Euch viel Spaß beim experimentieren mit Euren hypothetischen Indizes!

Freitag, 15. März 2013

Microsoft Synopsis 2013 – Ein besonderes Highlight! Die IT Camp Breakouts

Wie schon mal geschrieben, ist ja am 10. und 11.4.2013 die Microsoft Konferenz Synopsis 2013.

Auf dieser könnt Ihr Euch über aktuelle Microsoft-Produkte wie Windows Server 2012, SQL Server 2012, System Center 2012, Exchange und SharePoint 2013 sowie Windows Azure zu informieren! Wo gibst das schon sooo geballt.

Zu den Highlights der Konferenz gehören sicherlich auch die nachmittäglichen IT Camp Breakouts, die Themen wie Private Cloud und Dynamic Infrastructure in den Blick nehmen. Für diese könnt Ihr Euch direkt nach der Anmeldung zur Synopsis registrieren, da die Plätze wiederum begrenzt sind.

by the way, gerade gesehen. Leser des TechNet Newsletters bekommen einen Promo-Code mit 100 Euro Anmeldegebühr. Da Ihr ja alle den Newsletter abonniert habt, hier der Promo-Code "TECHNET2013". :-)

Wir sehen uns auf der Synopsis in Darmstadt!

Sonntag, 10. März 2013

SQL Server Extended Events – PASS Treffen in Hamburg und Webcasts

Diese Woche ist es soweit. Andreas Wolter kommt nach Hamburg in die SQL Server Usergroup (PASS Deutschland e.V.) und hält einen Vortrag zum Thema Extended Events im SQL Server 2012.

Details zum Treffen hatte ich schon mal hier gepostet. Nicht verpassen, wir hatten beim letzten Treffen über 30 Teilnehmer gehabt.

Sofern das Thema für Euch komplett neu ist und Ihr noch nicht genau einschätzen könnt, ob das für Euch etwas ist, dann empfehle ich für den schnellen Hunger zwischendurch meine Einsteiger Webcasts auf Youtube.

SQL Server 2012 Extended Events Grundlagen - Playlist

Mittwoch, 27. Februar 2013

SSIS Skript Komponente mit zwei Outputs und Random ohne Zufall

Als Fortsetzung zu meinem letzten Cast habe ich einen weiteren aufgenommen, da es diverse Fragen gab.

Ich hatte ja den SSIS Balanced Data Distributor von Microsoft gezeigt und erläutert wie ein Ansatz für die Nutzung für die parallele Sortierung von Daten aussehen könnte.

Bezüglich meiner verwendeten Skript Komponenten kamen Fragen auf, welche ich hier nun beantworten möchte:

Ich hoffe, dass ich damit alle (Un)Klarheiten beseitigen konnte. :-)

Wenn nicht, dann wieder fragen. Okay?

Dienstag, 26. Februar 2013

Hamburger SQL Server Usergroup (PASS Deutschland e.V.) Treffen im März

Es ist wieder soweit. Die Einladung für das Treffen der Hamburger SQL Server Usergroup Hamburg (PASS Deutschland e.V.) ist raus.

Wir treffen uns am 13.3.2013 um 18:30 in der Microsoft Niederlassung Hamburg.

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Letzten Monat hatten wir über 30 Teilnehmer vor Ort! Ihr seid die Community!

Im März haben wir wieder ein ganz besonders spannendes Thema für Euch!

Vortrag: “Hasta la vista, Profiler.” - Einführung in Tracing mit Extended Events.

Extended Events, obwohl bereits seit SQL Server 2008 im Produkt enthalten, ware bisher nur wenigen Eingeweihten als extrem performantes und extrem flexibles Tracing-Framework in SQL Server bekannt. Seit SQL Server 2012 ist für dieses wichtige Feature, was SQL Trace/Profiler ersetzen wird, auch in SSMS verfügbar.

In dieser Einführungssession werden wir uns insbesondere die System Health Session ansehen, und wie man diese für Deadlock-Analysen verwenden kann. („Hasta la vista, Profiler. Hasta La vista Traceflags 1204, 1222“)

Kommentar von mir: Wieder nicht verpassen! Microsoft wird sich in einer der nächsten Versionen vom SQL Server Profiler (SQL Trace) trennen, daher wird es für alle (DBA, DEV & BI’ler) Zeit sich mit dem „neuen“ Tracing Tool vertraut zu machen!

Sprecher ist: Andreas Wolter.

Andreas Wolter ist einer von weltweit weniger als 100 Microsoft Certified Master SQL Server 2008 (MCM) + MCT, MCITP:DD/DA/BID, MCDBA, MCSA und kann auf über zehn Jahre Erfahrung als Trainer und Consultant für SQL Server zurückblicken. Seit einigen Jahren ist er aktives Mitglied der PASS und Sprecher auf Fachkonferenzen in Deutschland und den USA. Mit seiner Firma SARPEDON Quality Lab (www.SarpedonQualityLab.com ) hat er sich besonders auf die Entwicklung und Optimierung von Datenbank- und Datawarehouse-Architekturen spezialisiert. Sein Blog ist unter http://www.vb-magazin.de/forums/blogs/andreaswolter zu finden.

Hier der Link zur Aufzeichnung vom Vortrag vom Andreas auf dem SQL Server 2012 Launch Event in Köln. Thema war Verwaltung und Sicherheit.

Anschrift sonst auch im beigefügtem Termin für Outlook (etc.).

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist über die Rampe mit dem Schild „Microsoft Kunden“ erreichbar.

Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).

Ansprechpartner vor Ort: MS Empfangs-Team und Sascha Lorenz

Wir bitten um eine vorherige Anmeldung per Email an: slo@sqlpass.de

Wichtig: wir benötigen die Anmeldungen 2 Tage vor dem Treffen, da wir uns 2012 bei Microsoft treffen können und dort Besucherausweise ausgestellt werden! Spontane Teilnehmer sind dennoch willkommen. ;-)

Freitag, 15. Februar 2013

SSIS Balanced Data Distributor und Sort Performance Tuning

Beim letzten PASS Treffen in Hamburg kam ich während des Vortrags von Oliver Engels und Tillmann Eitelberg auf eine Idee, welche wir auch kurz spontan vor Ort diskutiert haben und mir keine Ruhe ließ.

Ohne weitere Recherche, ob einer der weltweiten Community Kollegen bereits ähnliches publiziert hatte, habe ich mich an meinen Rechner gesetzt.

Es geht um die Leistungsfähigkeit der SSIS eigenen Sort Komponente und inwiefern es möglich wäre durch eine Last Verteilung mit dem Microsoft Balanced Data Distributor eine Performance Verbesserung zu erreichen.

Meine Tests haben nun ergeben, dass es tatsächlich funktioniert und ich 50% Performance Gewinn erreichen konnte. Anbei das Video, welches ich spontan dazu gemacht habe mit allen Erläuterungen.

 

Balanced Data Distributor für SQL Server 2008 / 2008 R2
http://www.microsoft.com/en-us/download/details.aspx?id=4123

Balanced Data Distributor für SQL Server 2012
http://www.microsoft.com/en-us/download/details.aspx?id=30147

Master Data Services 2012–PASS Essential in Berlin

Sofern Ihr Euch für Master Data Management interessiert und mehr über die technische Realisierung mit den SQL Server Master Data Services erfahren möchtet, dann kann ich Euch u. a. die Wiederholung meines PASS Essentials über MDS 2012 empfehlen.

Wir, die Deutsche SQL Community PASS, führt dieses am

22.03.2012 in Berlin bei dem Raumsponsor Beta Systems Software AG durch.

Preis für Mitglieder des PASS Deutschland e.V. inkl. MwSt. ist 299€. Damit sehr günstig.

Weitere Details als PDF Flyer findet Ihr hier. 

Als Teaser für die Inhalte empfehle ich die Aufzeichnung meines Vortrags über Master Data Services auf den SQL Server Launch Event letztes Jahr in Köln.

Sofern Ihr dieses Essential auch in Eurer Region (Süd zum Beispiel) durchgeführt haben möchtet, spricht mich einfach an. Da können wir als SQL Community bestimmt was organisieren.

Mittwoch, 13. Februar 2013

Microsoft Synopsis 2013

Erinnert Ihr Euch noch an das coole SQL Server 2012 Launch Event letztes Jahr in Köln? Ja? Oder Ihr konntet nicht dabei sein und schaut seither sehnsüchtig die aufgezeichneten Casts auf TechNet? Meinen zum Beispiel zum Thema Master Data Services ? :-)
Dann habe ich gute Neuigkeiten für Euch! Microsoft kommt auch dieses Jahr mit einer eigenen Konferenz daher und es geht wieder um Server (u. a. SQL Server). Dieses Mal in Darmstadt. Hier der offizielle Text dazu:
“Starten Sie mit uns in eine neue Ära: Am 10. und 11. April 2013 präsentieren wir in Darmstadt die erste Microsoft Server- und Cloud-Konferenz für neue Perspektiven in IT und Business.
An zwei Konferenztagen präsentieren wir Ihnen Kundenprojekte und Erfahrungsberichte von Microsoft Partnern, Microsoft Consulting Services und unabhängigen Experten. Erleben Sie in Live-Demos und spannenden Vorträgen, welche Möglichkeiten und Chancen Ihnen die neueste Generation der Microsoft Server- und Cloud- Technologien bietet. Im Mittelpunkt stehen dabei Unified Device-Management, Big Data Analytics und Business Intelligence, Productivity und Collaboration, Datenmanagement sowie Private, Public und Hybrid-Cloud. Egal ob IT-Entscheider oder IT-Pro – Synopsis 2013 ist ein Pflichttermin für alle, deren IT-Strategie Microsoft-Server-Lösungen beinhaltet. Informieren Sie sich jetzt und sichern Sie sich den Frühbucherrabatt unter www.microsoft-synopsis.de.”
Das liest sich doch so als gebe es da keinen Weg dran vorbei, oder?
Ich werde auch wieder vor Ort dabei sein und einen Vortrag halten. Hier der Link auf die Agenda. Gemeinsam mit dem Markus Thomanek von Microsoft werde ich über Datenqualität mittels Data Quality Services, Master Data Services (Das Thema lässt mich wohl nicht mehr los…) und einer Prise Integration Services sprechen.

Freitag, 4. Januar 2013

SQL Server Master Data Services Vortrag in der Hamburger SQL Server Usergroup PASS Deutschland e.V.

Am Mittwoch, den 9.1.2013, ist es wieder soweit. Das erste Treffen der Hamburger SQL Server Usergroup. Wir treffen uns wieder in der Hamburger Microsoft Niederlassung.

Thema sind die Master Data Services. Den Vortrag halte ich dieses Mal selbst. Hier der Abstrakt des Vortrags:

“In diesem Vortrag es um die Aktualität und Qualität von Daten im Unternehmen.

Mit den Master Data Services stellt Microsoft ein mächtiges Master Data Management Werkzeug zur Verfügung, welches quasi out-of-the-box eingesetzt werden kann für die Pflege von Daten.

Nur was ist Master Data Management? Was sind überhaupt Master Data? Stammdaten?

Wir betrachten sowohl operatives als auch analytisches MDM. Es wird die Arbeit mit den MDS vorstellt. Die Weboberfäche als auch das neue Excel Add-In betrachtet. Wie können MDM Prozesse manuell bzw. auch automatisiert durchgeführt werden? Wie werden Data Stewards in den Fachabteilungen effektiv eingebunden? Und welche Rolle spielt Security dabei?

Der Vortragende nutzt die MDS seit dem SQL Server 2008 R2, hat viele Erlebnisse als auch Erfahrungen aus zahlreichen Proof-of-Concepts für Microsoft Kunden sammeln dürfen, führt PASS Essentials Events zu den MDS durch und hat die MDS auch auf dem Kölner SQL Server 2012 Launch Event vorstellen dürfen.”

Wir treffen uns um 18:30 und haben bis ca. 20:30 Zeit um uns über das Thema auszutauschen. Hier noch mal die Koordinaten der Hamburger Microsoft Niederlassung:

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist über die Rampe mit dem Schild „Microsoft Kunden“ erreichbar.

Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).

Donnerstag, 3. Januar 2013

SQL Server Data Warehouse – One Queue Pattern (OQP)

Letztes Jahr habe ich ja ein wenig über meine Erfahrungen beim Design von Data Warehouse Umgebungen auf Basis SQL Server geschrieben.

SQL Server Data Warehouse - Ein erster Entwurf

Dabei habe ich bereits auf Best Practices hingewiesen, welche sich beim Design und der Implementierung bewährt haben. Nun hatte ich zwischenzeitlich aufgrund laufender Projekte leider keine Zeit weiter ins Detail zu gehen. Das möchte ich nun schnellstmöglich nachholen, da mittlerweile eine ganze Reihe von Nachfragen diesbezüglich bei mir eingetrudelt sind.

Ein Punkt ist mir wichtig, daher wiederhole ich ihn nochmals gerne. :-)

Ich unterscheide ganz klar zwischen einem Data Warehouse und einem ETL/ELT Prozess. Das war und ist nicht das Gleiche oder gar das Selbe. Oft stelle ich in der Praxis fest, dass diese beiden “Komponenten” gerne in einen Topf geworfen werden. Zwar sind sie eng miteinander verwoben, dennoch müssen sie für eine erfolgreiche und verwaltbare Architektur klar voneinander getrennt werden!

Ein Data Warehouse hält Daten und mit ein wenig Glück und Planung auch Informationen.

Der ETL/ELT Prozess überführt Daten/Informationen in das Data Warehouse.

Daher spreche ich auch gerne von einer Data Warehouse Infrastruktur. Häufig wird das DWH nämlich dann “nur noch” als eine Sammlung von relationalen Tabellen und Datenbanken gesehen. Nur so einfach ist es dann leider in der Realität nicht, um mit einer solchen Architektur auch im Enterprise Umfeld bestehen zu können.

Damit komme ich endlich zum Punkt. :-)

Eine SQL Server Data Warehouse Infrastruktur besteht aus einer ganzen Reihe von Pattern (Entwurfsmustern), welche ich über die Jahre hinweg entwickelt und aus den Projekten als eine Art Best Practices heraus destilliert habe.

Ein zentraler Aspekt innerhalb eines Data Warehouses ist die Kommunikation aller beteiligten Komponenten. Sowohl für die Steuerung, die Rückmeldungen als auch für das Monitoring.

Dafür schlage ich gern mein One Queue Pattern (OQP) vor. Gern nenne ich es auch mal One Queue Only Pattern.

Das Konzept dahinter ist so einfach, dass es oft auf den ersten Blick gar nicht verstanden wird. Oder, das kommt auch mal vor, als viel zu komplex wahrgenommen wird durch den hohen Grad an Generik.

Es ist eine Warteschlange für alles. Wirklich für alles. Ja, alles…

Also eine Mischung aus Steuerungswarteschlange und Benachrichtigungssystem.

Prozesse schreiben Meldungen bzw. Steuerungsanweisungen in die Warteschlange. Und unterschiedliche Agenten konsumieren die Einträge in der Warteschlange und werten diese entsprechend ihrer Konfiguration aus. Und wenn etwas nicht berücksichtigt wird, dann fällt dieses sehr schnell auf. Nichts geht mehr verloren. Schon mal ein großer Vorteil!

Das automatische Löschen von Einträgen ist nicht vorgesehen. Also die Verarbeitung von Einträgen kann diese nicht gleichzeitig löschen. Erst spätere Wartungstasks sind per Definition dazu in der Lage.

Eine Meldung kann darüberhinaus von mehreren unterschiedlichen Agenten konsumiert werden. Damit ist u. a. die Verarbeitung und das Monitoring voneinander getrennt.

Die einzelnen Komponenten der ETL/DWH Lösung kommunizieren über diese Quere miteinander.

Des Weiteren kann eine Meldung über die Verarbeitung eines Agents das Einstellen/Versenden von weiteren Meldungen/Einträgen auslösen, um eine kaskadierende Abfolge von Aktionen zu starten. Damit müssen Aktionen nicht mehr direkt miteinander verbunden werden, sondern können durch eine übergeordnete Instanz orchestriert werden.

Dabei ist mir besonders wichtig, dass dabei die Prinzipen der Vereinfachung und Kontrollierbarkeit verfolgt werden. Nichts darf Selbstzweck sein, sondern muss klaren Prämissen folgen!

Vorteil ist, dass es nur einen Einstiegspunkt für eine ganze Reihe von Problemen im Betrieb gibt. Damit wird die Fehlersuche auch vereinfacht, wenn noch gar nicht ganz klar in welcher Komponente ein Fehler aufgetreten ist.

Dieses Pattern setze ich schon seit Jahren gerne für eine ganze Reihe von Herausforderungen ein. Einen Ansatz für die Steuerung von SSIS Paketen zeigte ich zum Beispiel während meines Vortrags auf den SQLBits in York, UK. Das Video ist hier zu finden: The Developer Side of the Microsoft Business Intelligence stack.

Für Fans die Info, dass das Ganze eine recht freie Interpretation des Vermittler Entwurfsmusters und des Beobachter Musters ist.

Die eigentliche Implementierung kann entweder mittels Service Broker stattfinden oder durch den Einsatz einer einzelnen Tabelle. Beide Ansätze sind durchaus valide und in Praxis genutzt worden. Wenn ich die Wahl habe, dann plädiere ich für eine Umsetzung mittels Service Broker, da dieser schöne SQL Server Dienst einem sehr viel vom Verwaltungsaufwand für die zentrale Warteschlange abnimmt und das wesentliche Element der Asynchronität bereits mitbringt.