Demaq Snakebite Integration der IBM DB2 UDB 9.5 (Viper) als Messagestore in das Demaq-Ausführungssystem Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel CIICT Proposal Presentation 31.07.2007 Dennis Knochenwefel 1/20 Einleitung „Ist die Demaq-Architektur robust gegenüber einem Tausch von Natix durch DB2?“ robust (adj): “strong enough to withstand or overcome intellectual challenges or adversity” Referenzen: CC http://wordnet.princeton.edu/perl/webwn?s=robust Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 2/20 Übersicht 1. Warum Natix durch DB2 ersetzen? 2. Interessante Fragestellungen 3. Herangehensweise 4. Zukünftige Weiterentwicklungsmöglichkeiten Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 3/20 Demaq und XML Referenzen: Alex Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 4/20 Demaq und NATIX: Systemübersicht Referenzen: Alex Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 5/20 DB2 UDB und XML pureXML in der IBM DB2 Datenbank: • nativer XML datentyp • Unterstützung von SQL/XML und XQuery seit Version 9.5: • Unterstützung der XQuery Update Facility: • transform, insert, delete, replace, rename • Komprimierung von XML Daten • Schema validation • XML Schema Repository • Indizes auf einzelne Elemente / Attribute was nicht geht: • XML Daten nicht als plain String Abfragen (z.B. als DOMTree) Referenzen: http://www-306.ibm.com/software/data/db2/9/features.html http://www.ibm.com/developerworks/db2/library/techarticle/dm-0711sardana/index.html Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 6/20 Übersicht 1. Warum Natix durch DB2 ersetzen? 2. Interessante Fragestellungen 3. Herangehensweise 4. Zukünftige Weiterentwicklungsmöglichkeiten Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 7/20 Demaq und DB2 UDB: Interessante Fragestellungen: 1. Wie lassen sich Warteschlangen auf ein relationales DBMS wie DB2 abbilden? messages id message + simple - min() teuer 1 2 … dequeue: „ Select message from messages where id=(select min(id) from messages) “ Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 8/20 Demaq und DB2 UDB: Interessante Fragestellungen: 1. Wie lassen sich Warteschlangen auf ein relationales DBMS wie DB2 abbilden? Select message from messages where id=(select min(id) + view select from messages) günstig messages id message - update teuer next_message_mview id message 1 2 … 1 dequeue: „ Select id,message from next_message_view “ Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 9/20 Demaq und DB2 UDB: Interessante Fragestellungen: 1. Wie lassen sich Warteschlangen auf ein relationales DBMS wie DB2 abbilden? + optimierte prepared statements - unflexibel messages user-defined-function: dequeue() id Select message from messages where id=(select min(id) from messages) message 1 2 … dequeue: „ Select dequeue() from SYSIBM.SYSDUMMY “ Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 10/20 Demaq und DB2 UDB: Interessante Fragestellungen: 1. Wie lassen sich Warteschlangen auf ein relationales DBMS wie DB2 abbilden? messages headpointer id message head + select… günstig 1 - update teuer tailpointer tail 1 2 … 2 dequeue: „ Select message from messages, headpointer where id=head “ Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 11/20 Demaq und DB2 UDB: Regelauswertng Queues Interessante Fragestellungen: 1. Wie lassen sich Warteschlangen auf ein relationales DBMS wie DB2 abbilden? 2. Wie performant ist diese Abbildung im Vergleich zu einem nativen XMLDatenbanksystem wie NATIX? 3. Lässt sich die Regelauswertung mit der DB2 XQuery Engine umsetzen? 4. Lassen sich die Demaq spezifischen Funktionen (z.B. qs:queue()) als User Defined Functions in DB2 abbilden? 5. Wie performant ist die Regelausführung mit der DB2 XQuery Engine? Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 12/20 Übersicht 1. Warum Natix durch DB2 ersetzen? 2. Interessante Fragestellungen 3. Herangehensweise 4. Zukünftige Weiterentwicklungsmöglichkeiten Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 13/20 Demaq und DB2 UDB Ziel: Natix vollständig austauschbar machen und durch DB2 ersetzen Umsetzung: Iterativ, d.h. in mehreren größeren Umstrukturierungsschritten Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 14/20 Demaq und DB2 UDB Schritt 1: DB2 Schritt 1 DB2 Queues Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 15/20 Demaq und DB2 UDB Schritt 1: Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 16/20 Demaq und DB2 UDB Schritt 2: DB2 Schritt 2 DB2 Queues Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel DB2 XQuery Engine & User Defined Functions 17/20 Übersicht 1. Warum Natix durch DB2 ersetzen? 2. Interessante Fragestellungen 3. Herangehensweise 4. Zukünftige Weiterentwicklungsmöglichkeiten Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 18/20 weitere Entwicklungsmöglichkeiten Interessante Fragestellungen: Kann man die Regelauswertung mit Triggern umsetzen? Problem: Transaktionen, Ausführung der resultierenden „Pending Action List“ Kann man vielleicht sogar die actions von db2 ausführen lassen (enqueue als udf)? Problem: Transaktionen, synchrone anfragen mit demaq Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 19/20 _Fragen? _Anregungen? _Kritik? Vorstellung Diplomarbeit 30.05.2008 Dennis Knochenwefel 20/20