www.ordix.de € 3,20 03|2012 ne ws Die Wolke beginnt zu schweben 44| Enterprise Manager Oracle Cloud Control 12c 6 | Projektmanagement - Project Management Offices im Wandel der Zeit 12 | Neue Reihe: NoSQL vs. SQL - Hype oder echte Alternative? 16 | Neue Reihe: DB2 V10.1 – Codename „Galileo“ - alles neu? 26 | Wie mit der MySQL Sandbox Datenbankinstallationen ein Kinderspiel werden g 20. – 22. November 2012 | Nürnberg Die DOAG-Community begeistert! Die ORDIX AG auf der Konferenz + Ausstellung 2012 Memory – Ein Drilldown von der SGA über die PGA bis zum Database Buffer Advisor Referent: Klaus Reimers, ORDIX AG 25 Jahre DOAG Konferenz + Ausstellung, das ORDIX Team ist mit 4 Vorträgen und einem Schulungstag dabei ! Space – the final frontier: Speicher- und PerformanceAspekte in Oracle Tablespaces Referent: Martin Hoermann, ORDIX AG Anmeldungen unter: http://www.doag.org/konferenz/doag/2012/ DOAG Schulungstag am 23.11.2012 Der Schulungstag bietet all den Personen, die bislang keine Gelegenheit hatten sich mit Oracle Application Express auseinanderzusetzen, einen pragmatischen Einstieg in die Welt von APEX. Hands-On Oracle Application Express Tuning the Mobile Server Referent: Matthias Jung, ORDIX AG Referent: Phillip Loer, ORDIX AG Seminarinhalte Active-DataGuard bei Autoscout24: eine Lesefarm im Praxiseinsatz Referentin: Sabine Langer, AutoScout24 Co-Referent: Michael Skowasch, ORDIX AG Wir freuen uns auf Sie bei der DOAG 2012 Unseren Messestand finden Sie auf Etage 3, Stand 322. ■■ Erstellung und Verwaltung von Applikationen ■■ Verwendung der unterschiedlichen Seitenelemente (Page Items) ■■ Erstellen von Reporting-Tabellen und Diagrammen ■■ Verwendung von Formularen zur Datenerfassung ■■ Verwaltung von Usern ■■ Möglichkeiten zur User-Authentifizierung Zweierlei Maß Paderborn, September 2012 Am Wochenende wird sie eröffnet, die Wies’n, Münchens größtes Spektakel neben der CSU. Dann gibt es für gut zwei Wochen wieder zweierlei Maß: Einmal die Maß (ein Liter Bier) und die Oktoberfestmaß (ca. 0,7-0,8 Liter Bier). Mit zweierlei Maß misst auch Apple1) : Während die Nachahmung des iPhone durch Samsung Diebstahl ist, handelte es sich beim Klau des Mac Betriebssystems von Rank Xerox in den 80er Jahren um Kunst. So zumindest ist Steve Jobs in einem Interview zu verstehen, welches momentan als „Steve Jobs: The Lost Interview“ im Kino zu sehen ist. „Gute Künstler kopieren, großartige Künstler stehlen“, sagte Jobs im Jahr 1994. „Und wir haben immer schamlos gute Ideen geklaut.“ Das passt gut zu den jüngsten Meldungen über Patentrechtsverletzungen von Samsung wie von Apple. Aber genauso gut zu den jüngsten Verkaufszahlen des iPhone 5. Knapp 1.400 Geräte pro Minute werden verkauft. Vermutlich ist auch wieder einiges geklaut. Samsung probiert es jetzt auch und will Apple verklagen, da das Gerät ver­ botenerweise Samsung-Patente für die superschnelle Funktechnologie LTE nutze. Diese Verkaufszahlen werden Apple sicher noch eine zeitlang als weltweit teuerstes Unternehmen im Rennen halten. Beim Vorgänger konnte man zu Höchstzeiten gerade mal 1.000 Stück pro Minute verkaufen. Dass man mit Klauen weiterkommt, hatten wir ja schon bei unserem ehemaligen Verteidigungsminister. Eine schöne Zukunft offenbart sich da. Nun hoffe ich, dass unsere Autoren weder gut noch großartig sind, sondern einfach informative Artikel schreiben . In dieser Ausgabe sind wir Datenbank-lastig. Das beginnt mit einem ab­ soluten Hype-Thema: NoSQL Datenbanken. Schon Ende des letzten Jahrhunderts sprachen viele vom Sterben der relationalen Datenbanksysteme, objektorientierte oder Internet-Datenbanken sollten relationale Datenbanken verdrängen. Vermutlich war aber die Idee nicht großartig genug. Viel Oracle finden Sie in dieser Ausgabe. In der Reihe der Oracle-Artikel starten wir eine Serie zum Thema Oracle Spatial, über Geodaten und ihre Nutzung geht es dabei. Ein neues Kapitel zur physikalische Speicherverwaltung in Oracle befasst sich mit der größten Tabelle im Universum, eine Abhandlung aus dem Land der unbegrenzten (Klau-) Möglichkeiten, wo gerne vom „biggest, largest …“ gesprochen wird. Ebenfalls den zweiten Teil zum anderen Hype neben NoSQL, der Cloud, finden Sie im Artikel „Oracle Cloud Control 12c“. Leider werden wir damit auch weiterhin das Wetter nicht beeinflussen können. Ob sich die neue DB2-Version 10.1 auch in die Reihe „größer, mehr und schneller“ einordnen lässt, werden wir mit unserer neuen Reihe beleuchten. Und noch mal Oracle allerdings unter dem Label MySQL in zwei weiteren Artikeln (MySQL Sandbox und MySQL Cluster vs. Replikation). Wenn wir schon beim Thema Cluster sind, passt unser dritter Teil der Reihe zum Pacemaker Cluster richtig gut dazu. Nicht zuletzt versuchen wir Ihnen mit Tipps zu Hibernate bei Performance­ Probleme unter die Arme zu greifen. Applikationssupporter sollten natürlich auch Performance­ Probleme beherrschen, welche Skills für sie/ihn zusätzlich nützlich sind, offenbart Ihnen unser Artikel. Last but not least klären wir Sie über die Entwicklung des PMO auf. Ein großartiger Mitarbeiter im PMO nach der Definiton von Steve Jobs ist dann der, der vor allem gut im schamlosen Kopieren von Powerpoint-Folien ist . Jetzt wünsche ich Ihnen viel Spaß bei den zahllosen Oktoberfesten (im September), die sich quer durch ganz Deutschland ziehen und natürlich, dass sich der Flüßigkeitsspiegel Ihrer Maß immer maximal einen kleinen Finger breit unter dem Eichstrich befindet. Ihr Wolfgang Kögler 1) Frankfurter Allgemeine Sonntagszeitung vom 16.09.2012 ORDIX News 3/2012 3 Inhaltsverzeichnis 12 26 NoSQL vs. SQL ─ Was sind NoSQL-Datenbanken? MySQL Sandbox ─ Sandkastenspiele Datenbanken 9����������� Physikalische Speicherverwaltung in Oracle (Teil II): Wer hat die größte Tabelle im Universum? Dieser Artikel zeigt, wie die internen Speicherstrukturen von Tabellen in einer Oracle-Datenbank aussehen und wie man den Füllgrad von Tabellen bestimmen und beeinflussen kann. 12��������� NoSQL vs. SQL - Hype oder echte Alternative? (Teil I): Was sind NoSQL-Datenbanken? NoSQL-Datenbanken sind momentan ein Hype-Thema, aber bieten diese eine echte Alternative zu relationalen Produkten? Im ersten Teil dieser Reihe klären wir zunächst, was NoSQL eigentlich bedeutet. 16��������� Die neue Version V10.1 von IBM DB2 (Teil I): Codename „Galileo“ - alles neu? Seit April ist die neue Datenbankversion verfügbar. Im ersten Artikel dieser Reihe geben wir Ihnen einen Überblick über die wichtigsten Änderungen im DB2-Umfeld. 26��������� MySQL Sandbox: Sandkastenspiele MySQL ist ein sehr wirksames Framework für die Bereitstellung und Verwaltung von vielen MySQLInstallationen. Wie dieses Framework arbeitet erläutern wir in diesem Artikel. 29��������� Räumliche Daten mit Oracle Spatial (Teil I): Mehr Raum für die Datenbank Geodaten werden heutzutage an fast jeder Supermarktkasse abgefragt. Was macht diese Informationen für die Unternehmen so interessant und wie können sie verwaltet werden? Dieser Artikel gibt einen ersten Überblick. 4 ORDIX news 3/2012 37��������� Oracle entwickelt MySQL: Cluster vs. Replikation von MySQL - individuell universell einsetzbar? Die Geschichte von MySQL ist lang und seit 2010 schreibt Oracle diese weiter. Welche Auswirkung hat das auf den Cluster und die Replikation von MySQL? 44��������� Oracle Cloud Control 12c (Teil II): Die Wolke beginnt zu schweben In diesem Artikel erläutern wir die Grundvoraus­ setzungen und die Installation des neuen OracleWerkzeugs. Projektmanagement 6����������� Projektmanagement in der Praxis (Teil VI): Project Management Offices im Wandel der Zeit Früher gab es eine Assistenz, die Besprechungen orga­ nisierte und Protokolle schrieb. Heute gehen die Auf­ gaben eines Project Management Office deutlich weiter. OpenSource 18��������� OpenSource Cluster mit Pacemaker (Teil III): Kleine Features für große Cluster Rollenkonzepte gab es in Pacemaker bisher nicht. Seit der Version 1.1.5 können nun jedem Administrator eigene Rechte zugwiesen werden. Die Möglichkeiten dieser neuen Funktionalität stellen wir in diesem Artikel vor. Inhaltsverzeichnis 34 44 Hibernate ─ Was ist die optimale BatchSize? Oracle Cloud Control ─ Die Wolke beginnt zu schweben Java/JEE Impressum 21��������� Java Best Practice: Systeme modellieren mit UML Anforderungen an ein System strukturiert und standard­ isiert festzuhalten und diese schnell wiederzufinden ist in einem Entwicklungsprozess sehr wichtig. Hierfür ist die Unified Modeling Language (UML) sehr nützlich. Herausgeber: Redaktion: V.i.S.d.P.: Anschrift der Redaktion: Gestaltung/Layout: Auflage: Druck: 34��������� Hibernate für Fortgeschrittene (Teil III): Was ist die optimale BatchSize? Wie kann mit der BatchSize-Strategie die Performance gesteigert werden? Was muss bei der Einrichtung einer BatchSize beachtet werden? Dieser Artikel gibt Ihnen Antworten. Betriebssysteme 42��������� Skills für den Applikationssupport: Applikationsmanagement ist Management Die Mischung machts! Wo früher „nur“ technisches Know-how nötig war, werden heute von den Adminis­ tratoren Managementfähigkeiten erwartet. Heute sind Adminis­tratoren nicht nur Techniker, sondern auch im Bereich der Kommunikation und Organisation gefordert. Aktuell | Standards 24��������� Seminarübersicht: September bis Dezember 2012 47��������� Larry Ratlos ORDIX AG Aktiengesellschaft für Software­ent­wick­lung, Beratung, Schulung und Systemintegration, Paderborn Jens Pothmann, Evelyn Ernst Benedikt Georgi, Wolfgang Kögler ORDIX AG | Westernmauer 12 - 16 | 33098 Paderborn Tel.: 05251 1063-0 | Fax: 0180 1673490 Jens Pothmann 9.200 Exemplare Druckerei Bösmann, Detmold Bildnachweis: © webdesignhot.com | Vector Abstract Blue Background 2 |Vector Graphics ©dryicons |Arrow Template |Vector Graphic ©istockphoto.com | Blank 3d Cubes | teekid ©istockphoto.com | Computer Geek | sdominik ©istockphoto.com | Tree in a green field | da-kuk © freepik.com | gestures psd material | zcool.com.cn © deviantart.com | Clouds Set icons PSD | JackieTran © sxc.hu | Nienke 2 | Kverhees © sxc.hu | Nienke 1 | Kverhees © sxc.hu | Graffiti | ralev_com © sxc.hu | Graffiti | jrdurao © sxc.hu | texture-brickwall | nickobec © freepik.com | tools icon psd | Psd blast © freepik.com | facebook user icon | Psd blast Autoren: Christof Amelunxen, Christian Fertsch, Carsten Griese, Martin Hoermann, Carsten Hummel, Matthias Jung, Steffen Kanne, Dr. Stefan Koch, Wolfgang Kögler, Andreas Maßmann, Dominic Oberländer, Jens Pothmann, Matthias Schneider, Michael Spoden Copyright: Warenzeichen: Haftung: Die ORDIX news erscheint vierteljährlich. Alle Eigentumsund Nachdruckrechte, auch die der Übersetzung, der Vervielfältigung der Artikel oder von Teilen daraus, sind nur mit schriftlicher Zustimmung der ORDIX AG ge­stattet. ORDIX® ist ein eingetragenes Markenzeichen der ORDIX AG. Einige der aufgeführten Bezeichnungen sind eingetragene Warenzeichen ihrer jeweiligen Inhaber. ORDIX® ist eine registrierte Marke der ORDIX AG. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz sorgfältiger Prüfung durch die Redaktion vom Herausgeber nicht übernommen werden. Sie können die Zusendung der ORDIX news jederzeit ohne Angabe von Gründen schriftlich (z.B. Brief, Fax, E-Mail) abbestellen. ORDIX news 3/2012 5 Projektmanagement Projektmanagement in der Praxis (Teil VI) Project Management Offices im Wandel der Zeit „Frau Schellenberg, ich bitte zum Diktat!“ – so stelle ich es mir vor. So stelle ich mir vor, wie Projektleiter vor vielen Jahren durch eine Assistentin unterstützt wurden. Die Welt hat sich seitdem gedreht – mehrmals. Die veränderten Rahmenbedingungen, wie die Einführung von Vorgehensmodellen zur Projektabwicklung, eine wachsende Tendenz zur Fremdvergabe und die hohe Anzahl an organisationsbezogenen Schnittstellen stellen neue Anforderungen an die Projekt­ organisation. Projektleiter sehen sich – je nach Beschaffenheit eines Projektes – gezwungen, die ihnen zur Verfügung stehende Zeit stark zu priorisieren und ausgewählte Aufgaben zu delegieren. IT-Lösungen sind heute ein maßgeblicher Faktor für den Geschäftserfolg von Unternehmen und ein wesentlicher Innovationstreiber zur Eroberung neuer Märkte. Gleichzeitig stellen IT-Vorhaben aufgrund des hohen Investitionsvolumens und der Unsicherheiten immer auch Risiken im Portfolio von Unternehmen dar. Durch die Einführung von Vorgehensmodellen, die die Standardisierung von Prozessen und den Einsatz von Qualitätssicherungs- und Optimierungsmethoden im Projektmanagementumfeld vorantreiben, wird versucht, diese Risiken zu reduzieren bzw. beherrschbar zu machen. Häufig ist der Erfolg dieser Maßnahmen unbefriedigend. Es entsteht ein Zusatzaufwand, welcher durch die Projekt­ organisation abgefedert werden muss. Zusätzlich fehlt die Zeit, eine reelle Datenbasis durch eine gründliche Projektdokumentation auf Projekt­ ebene zu schaffen, um diese dann auch für Optimierungsmaßnahmen einzusetzen. Es stellt sich die Frage, ob Projektorganisationen und damit auch die zugehörigen Projektleiter überhaupt noch in der Lage sind, die vorgesehene Steigerung von Qualität und Produktivität zu erreichen. PMO – Project Management Office Seinen Ursprung hat das PMO im Sekretariat bzw. in der Assistenz. Bei der Evolution von funktionalen 6 ORDIX news 3/2012 Orga­ nisationen zu projekt­ orientierte Organisationen sind die typischen adminis­trativen Aufgaben, wie zum Beispiel „Terminvereinbarungen treffen“, „Vorbereitung und Mitschrift von Besprechungen“ usw., vom Sekretariat in das PMO übergegangen. Im Laufe der Zeit hat sich das Auf­gabengebiet stark gewandelt, nicht zuletzt durch die sich verändernden Rahmenbedingungen im Projektgeschäft. Heute wird die Definition des Begriffs Project Management Office in der Praxis weit gefasst. PMO werden Aufgaben von der Unterstützung des Projekt­leiters bei administrativen Tätigkeiten bis hin zur Prozessoptimierung und Innovation im Projekt selbst oder in der Projektorganisation anvertraut. Ein PMO kann deshalb für verschiedene Einsatzgebiete und auf unterschiedlichen Ebenen einer Organisa­tion etabliert werden (siehe Abbildung 1): • Ein PMO wird einem Projekt zugeordnet. • Ein PMO wird einem Programm zugeordnet. • Ein PMO wird dem Portfoliomanagement angegliedert. Aufgabengebiete eines PMO auf Projektebene Ein PMO auf der Projektebene ist ein integrativer Bestandteil des Projektes. Wesentliche Aufgaben auf Projektebene sind: Projektmanagement • Administrative Tätigkeiten: Vorbereitung von Meetings, Protokoll­erstellung, Ressourcenbuchung etc. • Erstellung Projektdokumentation auf Projektleitungsebene Portfolio PMO Projekt-Portfolio • Erarbeitung von Entscheidungsvorlagen • Statusvorbereitung • Sicherstellung einer dem Vorgehensmodell konformen Projektabwicklung Programm PMO Programm • Übernahme von Schnittstellenfunktionen zu anderen Einheiten im Unternehmen wie z.B. zentrales Controlling • Definition und Optimierung Projekt A Projekt B Projekt N Projekt PMO N Projekt F Projekt PMO F interner Projektprozesse Die Aufgabengebiete auf Projektebene beziehen sich direkt auf ein konkretes Projekt. Ziel ist nicht nur die Entlastung des Projektleiters, sondern die Unter­stützung des gesamten Projektes. Die PMO-Mit­arbeiter üben aber nicht nur administrative Tätigkeiten aus, sondern nehmen auch erfolgssichernde Aufgaben im Anforderungsmanagement oder Risikomanagement in Ab­ stimmung mit der Projekt­leitung wahr. Abb. 1: PMO auf unterschiedlichen Ebenen einer Organisation. • Unterstützung bei der Projektinitiierung • Definition von Rahmenbedingungen/Regeln und Überwachung deren Einhaltung Dabei besitzen sie einen wesentlichen Vorteil im internen Projekt­geschehen. Im Gegensatz zu einem Projektleiter besitzen sie keine Gesamt­ verantwortung. Dadurch können sich PMO-Mit­ arbeiter freier be­ wegen und werden als Vermittler zwischen der operativen Ebene und der Projektleitung wahrgenommen. Ein PMO auf Projektebene ist temporär und wird nach Beendigung des Projektes aufgelöst. Aufgabengebiete eines PMO auf Programmebene In einem Programm werden zueinander in Beziehung stehende Projekte, wie z.B. „Umsetzung aller regulatorischen Anforderungen“ zusammengefasst. Das Programmmanagement ist somit oberhalb eines einzelnen Projektes angesiedelt. Damit ändert sich das Aufgabenspektrum dahingehend, dass nun viele Projekte gleichzeitig unterstützt werden müssen: • Administrative Tätigkeiten für das • Schnittstellenfunktionen zu verschiedenen Einheiten im Unternehmen, wie z.B. zum zentralem Controlling oder Portfolio-Board • Aggregation von Informationen und Weitergabe an das Programm-Management • Budgetverwaltung auf Programmebene • Bewertung der Leistbarkeit von neuen Vorhaben Eine Einarbeitung in Projektdetails ist aufgrund der Vielzahl an Projekten in der Regel nicht möglich. Ähnlich wie auf der Projektebene ist ein Ziel die Entlastung von Projektleitern in Regeltätigkeiten, allerdings immer unter dem Aspekt, alle dem Programm zugehörigen Projekte zu unterstützen. Hinzu kommt die Koordination von Aufgaben, welche zeitgleich für alle Projekte des Programms anfallen, bspw. die Statusweitergabe an das Portfolio-Board. Ein PMO auf Programmebene ist i.d.R. temporär und wird somit nach Beendigung des Programms aufgelöst. Programm, wie z.B. Ressourcenverwaltung • Infrastrukturbereitstellung für das Programm • Unterstützung bei der Planung der Programmumsetzung Aufgabengebiete eines PMO auf Portfolioebene Das Projektportfoliomanagement dient der Bewertung und Auswahl von IT-Investitionen, welche über ORDIX news 3/2012 7 Projektmanagement Ein PMO auf Ebene des Portfoliomanagements ist fester Bestandteil der Unternehmensorganisation. Link ►► [1] Webseite der coniatos AG: http://www.coniatos.de Quellen ►► P3O For Successful Portfolio, Programm and Projekt Offices: Think P3O®, ISBN 9780113311255, Published by TSO and on behalf of the Office of Government Commerce, 2008 Projekte abgewickelt werden. Das Portfoliomanagement ist verantwortlich für die Aufnahme, Priorisierung und Steuerung aller gestellten Anforderungen und legt die zeitliche Umsetzung fest. Ein PMO, welches auf dieser Ebene angesiedelt ist, nimmt folgende Aufgaben wahr: Vorteile für die Organisation Heute werden Project Management Offices in vielen Unternehmen eingesetzt. Das Ziel ist nicht nur die Entlastung auf den jeweiligen Projektmanagement­ ebenen, sondern vor allem auch die Durchdringung der gesamten Projekt­organisation hinsichtlich des Einsatzes von Projekt­management-Methoden. Gleichzeitig werden mit ihrem Einsatz, wertvolle Erkenntnisse über die Güte der ablaufenden Projektprozesse gewonnen. Durch die zuverlässige und standardisierte Erfassung von Informationen und deren Verdichtung, kann eine Auswertung des Verlaufs von Projekten erfolgen. Auf dieser Basis können Optimierungsmaßnahmen definiert und in den Projekten eingeführt werden. • Unterstützung bei der Portfolioplanung/-steuerung • Kommunikation in die einzelnen Projekte/Programme • Aggregation von Informationen und Bericht an das Senior Management • Festlegung von Projektmanagement-Prozessen und deren Optimierung im Vorgehensmodell • Definition, Pflege und Überwachung der Einhaltung der Rahmenbedingungen Matthias Schneider ([email protected]) • Methodenentwicklung für die Projektorganisation Seminarempfehlung: IT-Projektmanagement - Methoden und Techniken ►► Informationen/Online-Anmeldung: http://training.ordix.de/siteengine/action/load/kategorie/Projektmanagement/nr/223/index.html In diesem Seminar erhalten Sie einen umfassenden und systematischen Überblick über alle Begriffe, Methoden und Arbeitstechniken zum Management von IT-Projekten. Sie lernen, IT-Projekte zu planen und zu steuern sowie verfügbare Arbeitshilfen projektspezifisch anzupassen. Seminarinhalte Grundlagen Projektdefinition Projektplanung Projektdurchführung Projekt-Controlling Qualitäts- und Risikomanagement Arbeits- und Hilfsmittel Fallbeispiele, Übungen • • • • • • • • 8 ORDIX news 3/2012 Termine 19.11.- 23.11.2012in Wiesbaden Seminar-ID: PM-01 Dauer: 5 Tage Preis pro Teilnehmer: 1.990,00 € (zzgl. MwSt.) Frühbucherpreis: 1.791,00 € (zzgl. MwSt.) Datenbanken Space, the final frontier - die physikalische Speicherverwaltung in Oracle (Teil II) Wer hat die größte Tabelle im Universum? Im ersten Teil dieser Reihe [1] haben wir gezeigt, wie sich der Füllgrad von Tablespaces ermitteln lässt. Der Füllgrad summiert sich aus der Menge der belegten Extents. Die belegten Extents sind die Bestandteile von Segmenten, also beispielsweise Tabellen und Indizes. In diesem Artikel untersuchen wir die internen Strukturen von Tabellen und zeigen, wie sich der Füllgrad einer Tabelle bestimmen und beeinflussen lässt. Dieses Wissen ist wesentlich, um den Sinn und Unsinn von terrabyte-großen Tabellen zu hinterfragen. Wie ein Segment entsteht Ein Segment entsteht in der Regel durch das Erstellen eines Objektes, welches eigenen Speicherplatz benötigt. Die Erstellung einer View beispielsweise führt nicht zur Erstellung eines Segments, da lediglich die Definition im Data Dictionary abgelegt wird. Eine Materialized View „materialisiert“ die Ergebnis­menge, benötigt daher eigenen Speicherplatz und führt zu der Erstellung eines Segments. Genauso ist es mit Tabellen, Indizes, Cluster, Undo und temporären Segmenten. Ist ein Objekt partitioniert, so bildet jede Partition bzw. Subpartition ein einzelnes Segment. Mit Oracle 11g ist es möglich, Objekte mit der Option „Deferred Segment Creation“ zu erstellen. So wird das Segment, welches immer aus einem initialen Extent (i.d.R. 8 Blöcke) besteht, erst erzeugt, wenn der erste Datensatz eingefügt wird. Dies hat übrigens den interessanten Begleiteffekt, dass bei Sequenzen die erste Sequenznummer „verloren“ geht. Extent Map Zur Reduzierung der Verwaltungsinformationen und aus Performance-Gründen wird eine Menge von hintereinander liegenden Blöcken in so genannten Extents zusammengefasst. In Locally Managed Tablespaces (LMT) sind in der Regel die ersten 16 Extents 8 Blöcke groß, die nächsten Gruppen von Extents sind 128, 1024 usw. Blöcke groß. In einem LMT Tablespace mit Uniform Extent Size sind alle Extent-Größen identisch. Wird nun neuer Platz benötigt, wird ein neues Extent im Tablespace angelegt und dem Segment zuge­ ordnet. Die Extents bilden die äußere Struktur des Segments. In den nächsten Abschnitten beleuchten wir nun die innere Struktur. Aufbau des Segments Ein Segment besteht im Wesentlichen aus den folgen­ den Typen. Dabei ist jeder Oracle-Block von genau einem Typ: • Segment Header: Dieser enthält beispielsweise Informationen zur High Water Mark (HWM) und zu den Freispeicherlisten. • Freispeicherlisten: In Tablespaces mit Automatic Segment Space Management (ASSM) sind dies so genannte Bitmap Freelists. Wird der Tablespace manuell verwaltet sind es Freelists und Freelist Groups. • Data Blocks: In diesen Blöcken befinden sich die eigentlichen Daten. Daten können in diesem Fall auch Index- oder Undo-Daten sein. • Unformatted Blocks: Am Ende des Segments kann es noch nicht formatierte Blöcke geben. Diese werden erst bei Bedarf zu Daten- oder Freispeicher­ listen-Blöcken formatiert. ORDIX news 3/2012 9 Datenbanken • ITL-Slots: Ändert eine Transaktion Daten im Block, Datentyp Größe DATE 7 Bytes TIMESTAMP 7 oder 11 Bytes TIMESTAMP WITH TIME ZONE 13 Bytes CHAR abhängig von der Definition NCHAR abhängig von der Definition INTERVAL YEAR TO MONTH 5 Bytes INTERVAL DAY TO SECOND 11 Bytes BINARY_FLOAT 4 Bytes BINARY_DOUBLE 4 Bytes Abb. 1: Ausgewählte Datentypen mit fixer Länge. Werden neue Daten mittels INSERT in eine Tabelle eingefügt, so wird über die Freispeicherlisten ein passender Block ausgewählt. Mit dem heute üblichen ASSM wird die freie Kapazität je Block in 25 %-Schritten verwaltet. Steht kein freier Platz mehr zur Verfügung, so wird hinter der HWM neuer Platz geschaffen, in dem unformatierte Blöcke formatiert werden. Stehen keine unformatierten Blöcke zur Verfügung, so wird ein neues Extent allokiert. Die Freispeicherlisten können mit dem so genannten APPEND-Hint umgangen werden. Bei daraus folgenden Direct Path Inserts werden die Daten­ sätze direkt hinter der High Water Mark eingefügt. Dies ist für große Datenmengen einerseits per­ formanter, führt jedoch anderseits möglicherweise zu nicht genutztem Platz innerhalb des Segments. Aufbau eines Datenblocks vom Typ Data Ein Datenblock besteht aus den folgenden Bereichen: • Block Header: Hier finden sich allgemeine Verwaltungsinformationen, wie beispielsweise das zugehörige Segment, die Speicherplatzadresse und die aktuelle SCN-Nummer. • Row Directory: Hier wird jede Zeile und jedes Feld des Datenbereichs adressiert. An dieser Stelle entscheidet sich durch die Längenangabe des benötigten Speicherplatzes, ob ein Feld den Wert NULL enthält. Darüber hinaus benötigt der Wert NULL keinen weiteren Speicherplatz. Mehrere NULL-Werte am Ende einer Zeile benötigen lediglich ein Byte im Row Directory. 10 ORDIX news 3/2012 so belegt sie einen ITL-Slot. Im Row Directory wird für jede geänderte Zeile eine Referenz auf den Slot eingetragen. Weiterhin enthält der ITL-Slot Verweise zu den Undo-Informationen der Transaktion. • Daten: Hinter den Verwaltungsinformationen kommen die Daten als Byte-Strom. Feldtrenner werden nicht benötigt, da die Adressierung durch das Row Directory jedes Feld eindeutig bestimmen kann. • Block Footer: Hier befindet sich erneut die SCNNummer. Unterscheiden sich die SCN-Nummern im Header und im Footer, so ist der Block inkon­ sistent. Dies kann beispielsweise bei OnlineBackups passieren. Der Recovery Manager liest den Block in diesem Fall einfach erneut. Der belegte Platz im Datenbereich bestimmt sich erstens durch die gewählten Datentypen und zweitens durch die Dateninhalte. Der Wert NULL benötigt bis auf den Verweis im Row Directory keinen Speicherplatz. Dies gilt für alle Datentypen, insbesondere auch für CHAR, der ansonsten immer eine fixe Länge hat. Bei einigen Datentypen ist die Anzahl benötigter Bytes immer gleich, z.B. DATE, TIMESTAMP, CHAR, bei anderen Datentypen ist die Anzahl der Bytes abhängig von deren Inhalt, z.B. NUMBER, VARCHAR2. Die Abbildung 1 gibt einen Überblick über Datentypen mit fixem Speicherplatzverbrauch. Eine sorgfältige Wahl der Datentypen und der Dateninhalte beinflusst also ganz wesentlich den Platzverbrauch einer Tabelle. Werden Datensätze in einem Block aktualisiert (UPDATE), so kann der Speicherplatz steigen oder sinken. Damit es bei einer Vergrößerung nicht sofort zu Speicherengpässen und daraus resultierenden Chained Rows kommt, gibt es in jedem Block einen reservierten Speicherplatz (PCT_USED). Der DefaultWert von 10 % ist insbesondere für große Tabellen sorgfältig zu prüfen. Werden beispielsweise keine Änderungen auf der Tabelle durchgeführt, so sind 10 % des Platzes verschwendet. Wird der Wert dagegen zu klein gewählt, besteht die Gefahr von Chained Rows. Für detaillierte Analysen kann ein Block mit Hilfe des folgenden Kommandos in das Diagnostic-Verzeichnis (user_dump_dest) geschrieben werden: ALTER SYSTEM DUMP DATAFILE 4 BLOCK 259; Die Dateinummer und die Block-ID lassen sich mit Hilfe der View dba_extents ermitteln. In der Regel sind die ersten beiden Blöcke des ersten Extent Freispeicherlisten und der dritte Block bein­haltet den Segment Header. Datenbanken Platzverbrauch messen Der Platzverbrauch eines Blocks lässt sich mit dem Paket dbms_space ermitteln. Um eine korrekte Ausgabe sowohl für unterschiedliche TablespaceVerwaltungen (Locally vs. Manual Managed) als auch für unterschiedliche Speicherverwaltungen (Automatic vs. Manual Segment Space Management) zu erhalten, sei an dieser Stelle auf den Blog von Tom Kyte verwiesen [2]. Um den Inhalt einzelner Felder genauer zu untersuchen, bietet Oracle die Funktion dump an. Mit ihr wird sowohl der Datentyp (Typ) als auch die Länge in Bytes (Len) ausgegeben. So hat beispielsweise ein gefülltes Feld vom Typ Timestamp(6) vier Byte mehr als ein date-Feld mit sieben Bytes. Das entspricht immerhin 57 % mehr Datenvolumen. dump( <date> ) : Typ=12 Len=7: 120,11... dump( <timestamp>): Typ=180 Len=11: 120,1.... Wer sich tiefergehend mit den hier diskutierten Themen beschäftigen will, sei auf den Concept Guide in der Oracle-Dokumentation oder auf Tom Kytes Expert Oracle Database Architecture verwiesen [3]. Von Riesen und Zwergen - ein Fazit Tabellengrößen von einem Terabyte und mehr sind heute Realität. Inwiefern das immer notwendig ist, hängt maßgeblich vom logischen und physikalischen Tabellendesign ab. Steht das Layout einer Tabelle fest, so lässt sich der Speicherverbrauch auf den einzelnen Ebenen analysieren. Die einzelnen Schritte wurden in diesem Artikel aufgeführt: Glossar LMT Locally Managed Tablespace - Speicherverwaltung in Tablespaces, bei der der Tablespace die Größe der Extents vorgibt. ASSM Automatic Segment Space Management - Speicherverwaltung von Segmenten, bei denen die Segmente die Werte für Freispeicherlisten und assoziierten Einstellungen übernehmen. ITL Interested Transaction List - Liste von Slots, in denen Transaktionen Änderungen in Blöcken referenzieren. Links ►► [1] ORDIX news Artikel 02/2012 „Space, the final frontier die physikalische Speicherverwaltung in Oracle (Teil I) Tablespaces und schwarze Löcher“: http://www.ordix.de/images/ordix/onews_archiv/2_2012/tablespaces_oracle.html ►► [2] dbms_space auf asktom: http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ ID:231414051079 ►► [3] Leseempfehlung: Tom Kyte, Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions http://www.amazon.de/Expert-Oracle-Database-Architecture-Programming/dp/1430229462/ref=pd_cp_eb_0 Ob sich Ihre Tabelle zu der größten im Universum entwickelt oder klein und handlich bleibt, hängt von vielen Faktoren ab. Inwiefern sich beispielsweise mit Hilfe von Reorganisationen oder der Kompression sich teure Gigabyte sparen lassen, untersuchen wir im nächsten Artikel dieser Serie. • Größe einzelner Datenfelder mit der SQL-Funktion dump • der Füllgrad eine Datenblocks mit dbms_space • das Layout des Segments über dba_segments und dba_extents Martin Hoermann ([email protected]) ORDIX news 3/2012 11 Datenbanken Neue Reihe: NoSQL vs. SQL - Hype oder echte Alternative? (Teil I) Was sind NoSQL-Datenbanken? Hersteller von relationalen Datenbanken beherrschten die letzten drei Jahrzehnte der Datenspeicherung und werden wohl auch die kommenden Jahre dominieren. Es stellt sich bei relationalen Datenbanken die Frage, ob sie ihre Vormacht­stellung gegen die nicht standardisierten Abfragesprachen behaupten kann und ob diese nicht für einige Anwendungen veraltet sind. Welche Anwendungen das sein können, was NoSQL in diesen Fällen „besser“ macht und was NoSQL eigentlich bedeutet, werden wir in dieser Artikelreihe genauer erläutern. SQL kenne ich ... Die Abfragesprache SQL gibt es mittlerweile seit über 30 Jahren. Sie ist aus SEQUEL entstanden, welche auf den Erkenntnissen von Edgar F. Codd beruht. Dieser hat, indem er die mathematischen Relationen auf den Computer übertragen hat, zwischen 1960 und 1970 den Grundstein für die Entwicklung der relationalen Datenbanken gelegt. Mit der Standardisierung von SQL hat das heutige Datenbankzeitalter Einzug gehalten. Durch SQL haben Entwickler die Möglichkeit erhalten, Abfragen dann zu stellen, wenn es ihnen passt. Diese Art von Abfragen werden auch AdHoc-Queries genannt. Dass dieses etwas Besonderes sind, ist den 12 ORDIX news 3/2012 meisten heutzutage gar nicht mehr bewusst, da sie so alltäglich geworden sind. Auch die Verknüpfung von Tabellen über Fremdschlüsselbeziehungen ist für Datenbankentwickler ein alter Hut und nicht mehr wegzudenken. Die SQL-Abfragesprache lässt sich in drei Kategorien unterteilen, mit denen sich Befehle zu Schemaopera­ tionen (DDL), Datensatz­­ manipulationen (DML) und zur Rechteverwaltung (DCL) absetzen lassen. ... aber was ist NoSQL? Zu aller erst ist die Namensgebung sehr interpreta­ tionsanfällig. Sie bedeutet in erster Linie „alles außer Datenbanken SQL“. Die NoSQL-Community allerdings bezeichnet sich als „Not only SQL“-Community und weicht damit die strikte Abgrenzung zu SQL auf. Um den Grundsatz von NoSQL zu ergründen, muss man einen Blick auf die Internetpräsenz der NoSQL-Community werfen. Demnach ist eine Datenbank dann eine NoSQL-Datenbank, wenn bestimmte Kriterien erfüllt werden. Beispielsweise soll sie OpenSource sein, eine einfache API beinhalten und in der Lage sein horizontal zu skalieren. Wenn diese Kriterien erfüllt sind, lassen sich die NoSQL-Datenbanken weiter in vier Kategorien unterteilen. Diese sind graphenorientierte, dokumenten­ orientierte, key/value-basierende und spaltenorientierte Datenbanken [1]. Eigenschaften und Garanten des Erfolgs Datenbankmanagementsysteme garantieren, dass das Transaktionskonzept während einer Transaktion eingehalten wird. Das Transaktionskonzept umfasst dabei die vier Charakteristika Atomarität, Konsistenz, Isolation und Dauerhaftigkeit (ACID). Atomarität besagt, dass eine Transaktion aus Benutzersicht ununterbrochen verlaufen muss. Im Falle eines Fehlers wird die Transaktion abgebrochen und zurückgerollt. Daher wird diese Eigenschaft auch die „alles oder nichts“-Eigenschaft genannt. Konsistenz bedeutet im Zusammenhang mit Transaktionen, dass die Datenbank von einem konsistenten Zustand in einen weiteren konsistenten Zustand überführt werden muss. Während der Transaktion muss die Konsis­tenz nicht gewährleistet werden. Isolation meint hier, dass dem Benutzer mithilfe eines Serialisierungsverfahrens ein logischer Einbenutzerbetrieb vorgegaukelt wird. Dadurch werden konkurrierende Operationen nacheinander und isoliert von­ einander behandelt. Dauerhaftigkeit bedeutet, dass erfolgreiche Transaktionen alle nachfolgenden Systemfehler überleben. Des Weiteren können Datenbankoperationen nur durch weitere Transaktionen verändert werden. Dank dieser Charakteristika wird gewährleistet, dass eine Transaktion logisch nach der anderen abge­ arbeitet wird und dabei immer einen konsistenten Datenbestand hinterlässt. Weiterhin werden einmal getätigte Transaktionen dauerhaft gespeichert. Dieses Verhalten wird vor allem bei Stammdaten und sicherheitskritischen Daten vorausgesetzt. Leider geht ein striktes Transaktionsmodell immer zulas- ten der Performance, da Sperrverfahren eingerichtet werden müssen, um die Datenkonsistenz gewährleisten zu können [2]. Alte Besen kehren gut? Somit ist es nicht weiter verwunderlich, dass die Umsetzung des relationalen Datenbankmodells in einem DBMS nicht für alle Anwendungen das optimale Mittel ist. Dies zeichnete sich spätestens seit dem Auf­ kommen des Web 2.0 und den damit verbundenen geänderten Anforderungen ab. Als Beispiele können hier Web-Blogs, soziale Netzwerke oder ähnliche Anwendungen genommen werden. Diese haben alle gemein, dass sie sehr viele Daten verarbeiten und global vorhalten müssen. Dies hat wiederum zur Folge, dass man um eine Verteilung der Daten nicht umher kommt, will man den Kunden akzeptable Antwortzeiten bieten. Unter­ nehmen wie Google, Amazon und Twitter haben dies frühzeitig erkannt und eigene Datenbankmodelle entworfen. Darüber hinaus sind relationale Datenbanken an ihr Schema gebunden, welches im Datenmodell verankert ist und verschiedene Datentypen umfasst. Eine Änderung des Schemas hat immer zur Folge, dass die Verfügbarkeit der Datenbank eingeschränkt wird. Weiter ist die Abbildung von komplexen Datentypen, wie sie in objektorientierten Programmiersprachen vorkommen, nicht vorgesehen [3]. Eine weitere Anforderung im Rahmen des Web 2.0 ist das Verarbeiten von sehr großen, semi-strukturierten Daten. Hier stoßen relationale Datenbanken insofern an ihre Grenzen, dass sie nicht in der Lage sind, horizontal zu skalieren. Sie skalieren vertikal und sind somit auf die Hardwarehersteller angewiesen. Sie benötigen immer schnellere, größere und somit leistungsstärkere Maschinen. Dieser Problematik begegnen sie mit den verschiedenen Cluster-Techniken. Der auf einer shared-all-Architektur beruhende Oracle Real Application Cluster ist nur ein Beispiel. Die Tatsache, dass relationale Datenbanken lediglich in der Lage sind vertikal zu skalieren, begründet sich in dem von Eric Brewer aufgestelltem CAP-Theorem. Ideale Systeme gibt es nicht! Das ideale System wäre ein System, das immer verfügbar ist, eine konsistente Datenhaltung bewahrt und ohne Einschränkungen skaliert. Leider ist solch ein System reine Fiktion, da diese drei Eigenschaften nicht gleichzeitig erreicht werden können. Dies hat nicht zuletzt Eric Brewer mit seinem CAP-Theorem ORDIX news 3/2012 13 Datenbanken Eine Leseoperation, die nach einer Schreiboperation beginnt, muss als Ergebnis die Schreiboperation zurückliefern. Availability CA RDBMSs (MySQL, Postgres, etc.) Aster Data, Greenplum, Vertica CA Consistency AP Dynamo, Valdemort Tokyo Cabinet KAI, Casandra, Simple DB Couch DB Riak AP CP Partitioning CP Big Table, Hypertable, Hbase, MongoDB, Terrastore, Scalaris, Berkeley DB Memcache DB, Redis Datenbankenmodelle Relationale Datenbanken Key-Value Spalten-/Zeilenorientiert Dokumentenorient Verfügbarkeit (Availability): Verfügbarkeit nach Brewer bedeutet, dass ein System oder ein Service nur dann verfügbar ist, wenn es in der Lage ist, Anfragen zu bearbeiten, wenn sie benötigt werden. Ergo ist ein System oder ein Service dann nicht verfügbar, wenn Anfragen nicht zu dem Zeitpunkt bearbeitet werden können, wenn es gefordert wird. Partitionstoleranz (Partition Tolerance): Diese besagt, dass in einem verteilten, partitionierten Netzwerk ein Service auch dann noch erreichbar sein muss, wenn ein Teil des partitionierten Netzwerkes nicht erreichbar ist. Wenn eine Datenbank mit 100 Tabellen in zwei Netzwerksegmente zu je 50 Tabellen partitioniert wird und eine Partition ausfällt, muss die Datenbank dennoch Schreib- und Leseoperationen durchführen können. Abb. 1: Zuordnung von Datenbanken zum CAP-Theorem. Die Annäherung dank Kompromissen Links Die gewählte Aussage von Eric Brewer, „[...] You can have at most two of these three properties for any shared-­data system [...]” [4] hat für reichlich Diskussionen gesorgt ─ nicht zuletzt im Lager der NoSQL-Community. ►► [1] NoSQL Guide: http://www.nosql-database.org ►► [2] Literaturnachweis: Härder, Theo; Rahm, Erhard: Datenbanksysteme - Konzepte und Techniken der Implementierung. 2. überarb. Aufl., Berlin : Springer, 2001. – ISBN 3540421335 ►► [3] Literaturnachweis: Ireland, Christopher; Bowers, David; Newton, Michael; Waugh, Kevin: A Classification of Object-Relational Impedance Mismatch. In: Proceedings of the 2009 First International Conference on Advances in Databases, Knowledge, and Data Applications. Washington, DC, USA : IEEE Computer Society, 2009. – ISBN 978–0–7695–3550–0, S. 36–43 ►► [4] [Brewer 2000] Brewer, Eric A.: Towards robust distributed systems. In: Proceedings of the nineteenth annual ACM symposium on Principles of distributedcomputing. New York, USA : ACM, 2000 (PODC ’00), S. 1–12 ►► [5] http://www.oreilly.de/artikel/web20.html bewiesen, auf dessen Grundlage wir diese drei Eigenschaften näher betrachten wollen (siehe Abbildung 1). Konsistenz (Consistency): Anders als bei dem ACIDParadigma, bei dem es für die Einhaltung der Transaktionsregeln steht, bedeutet es hier das konsistente Lesen und Schreiben auf demselben Datenstand bei konkurrierendem Zugriff. Demnach kann ein System nur dann konsistent sein, wenn Aktualisierungen von Datensätzen von allen relevanten Knoten in derselben logischen Zeit akzeptiert werden. Daraus ergibt sich: 14 ORDIX news 3/2012 Die Kritiker sind mit dieser strikten Trennung nicht einverstanden und konnten Eric Brewer einen Anreiz geben, sein 2001 definiertes CAP-Theorem anders zu beleuchten. Unterdessen hat er auf die Arbeiten von Gylbert und Lynch aus dem Jahr 2002 verwiesen, die sein Theorem grundsätzlich bewiesen haben. Jedoch haben sie auch aufgezeigt, dass man Kompromisse eingehen kann. Diese Kompromisse sehen wie folgt aus: • Kompromisse in der Konsistenz (AP): Konsistenzkompromisse müssen überall dort in Kauf genommen werden, wo die Verfügbarkeit und die Partitionstoleranz oberste Priorität haben. Ein beispielhaftes Szenario kann eine Online-Plattform sein, die Inhalte (Videos, Bilder, etc.) an Benutzer auf der ganzen Welt ausliefert. Die einzelnen Daten werden dabei von einem Knoten auf einen anderen repliziert und dort vorgehalten. Die ständige Verfügbarkeit einer solchen Plattform geht über die Konsistenz der Inhalte. • Kompromisse in der Verfügbarkeit (CP): In solch einem Szenario wird die Verfügbarkeit vernachlässigt und ein größerer Fokus auf die Kon­sistenz der Daten gelegt. Schaut man sich den Chubby Lock Service von Google an, findet man genau solch ein Szenario. Dieser Service hält Metadaten vor und ist ebenfalls für die Sperrver­fahren verantwortlich. Datenbanken • Kompromisse in der Partitionstoleranz (CA): In diesem Spektrum finden wir die klassischen relationalen Datenbanken wieder und einige der bekanntesten NoSQL-Daten­b anken, Googles BigTable beispielsweise. Diese Datenbank ist hochverfügbar und unterstützt ein striktes Konsistenzmodell. Es kann zwar den Ausfall von einigen Knoten problemlos verkraften, doch gilt es nicht als partitionstolerant. Werden die beschriebenen Kompromisse näher betrachtet, kann man jeder dieser drei Kategorien Sys­ teme zuordnen. CP: BigTable, HBase, BerkeleyBD, MongoDB, etc. AP: CouchDB, Dynamo, Voldemort, MySQL (InnoDB), etc. CA: Oracle, MySQL (MyISAM), DB2, Informix, etc. Fazit Die NoSQL-Datenbanklösungen sind für spezielle Fälle konzipiert und entwickelt worden. Es lässt sich nicht erkennen, dass die NoSQL-Community den Anspruch hat, die SQL-Datenbanken mit ihren neuen Technologien zu verdrängen. Sie wollen und brauchen auch nicht als Bedrohung angesehen werden. Vielmehr sollten sie als Spezialisten und als Ergänzung zu den relationalen Datenbanksystemen wahrgenommen werden. Im weiteren Verlauf dieser Artikelreihe werden wir die vier NoSQL-Datenbanktypen anhand jeweils eines konkreten Beispiels untersuchen. Dabei werden ihre Stärken, Schwächen und Einsatzgebiete im Fokus stehen. Glossar API Application Programming Interface ─ Sammlung von Klassen, welche eine Schnittstelle zu einer Hardware oder Anwendung definieren. BigData So werden Datenmengen bezeichnet die >= 1TB sind. Chubby Lock Service Verteilter Sperrmechanismus für lose gekoppelte verteilte Systeme. Wird zur Transaktionssteuerung eingesetzt und vermeidet dabei „Deadlocks“. DCL Data Control Language ─ Datenüberwachungssprache zur Vergabe von Rechten in einer Datenbank DDL Data Defnition Language ─ Über DDL-Kommandos werden Datenstrukturen gepflegt (z. B. Tabellen anlegen oder löschen). DML Data Modification Language. Über DML-Kommandos werden Daten (Zeilen) in Tabellen eingefügt, gelöscht oder geändert. RDB Relationale Datenbanken beruhen auf den mathematischen Relationen und dienen der Datenverarbeitung in Computersystemen. SEQUEL Structured English Query Language ─ Vorläufer von SQL, wurde für das Projekt System R von IBM entwickelt (ca. 1975). SQL Die Structured Query Language ist die Standardabfragesprache in relationalen Datenbanken. Transaktion Die Abstraktion eines fachlichen (logischen) Verarbeitungsvorganges und überführt einen Zustand Z in einen anderen Zustand Z'. Web 2.0 Das Web 2.0 wird auch häufig als das „Mitmach-Web“ bezeichnet, hierbei konsumiert der Nutzer nicht nur den Inhalt, er stellt als Prosument selbst Inhalte zur Verfügung. Dieses wurde u.a. von Tim O'Reilly beschrieben. [5] Bild: Dominic Oberländer ([email protected]) © sxc.hu | Graffiti | ralev_com © sxc.hu | Graffiti | jrdurao © sxc.hu | texture-brickwall | nickobec Treffpunkt RheinMainIT: NoSQL-Datenbanksysteme - Hype und Realität treff RheinMain IT NoSQL-Datenbanksysteme sind derzeit das Daten­banken-Hype-Thema. Aber was genau sind NoSQL-Datenbanksysteme und was können diese Systeme wirklich (und was nicht)? Für welche Anwendungen sind sie eine Alternative (und für welche nicht)? Dieser Vortrag gibt die Antworten. Datum | Uhrzeit : 30.10.2012 | 18.00 Uhr Ort: ORDIX Seminarzentrum Wiesbaden Referent: Prof. Dr. Uta Störl, Hochschule Darmstadt ORDIX news 3/2012 15 Datenbanken Neue Reihe: Die neue Version 10.1 von IBM DB2 (Teil I) Codename „Galileo“ - alles neu? Das letzte DB2 Release 9.7 vom Frühjahr 2009 ist nun schon über drei Jahre alt und man wartete schon gespannt auf die Version 10. Seit Ende April diesen Jahres ist die neue Datenbankversion DB2 V10.1 von IBM verfügbar. Im ersten Teil unserer neuen Reihe stellen wir die wichtigsten Neuerungen im Überblick vor. Nachdem in der letzten Version der Schwerpunkt auf der Kompatibilität zu Oracle SQL bzw. PL/SQL lag, wurde in diesem Release an vielen Ecken geschraubt und verbessert. Die Highlights sind sicherlich die folgenden Funktionen: nur auf die Datensätze seiner eigenen Abteilung zugreifen darf. • adaptive Komprimierung Wie wäre es, wenn man sehen könnte wie bestimmte Daten z.B. gestern oder vor dem letzten Monats­ abschluß ausgesehen haben? Möglich ist das nun mit der sog. Time Travel Query. Mit dieser Neuerung werden Datenänderungen in den Tabellen mit Hilfe von temporalen Tabellen festgehalten. Unterschieden wird dabei zwischen Tabellen mit dem Systemzeitraum und Tabellen für einen Anwendungszeitraum bzw. der Kombination aus beiden, der bitemporalen Tabelle. • Row and Column Access Control • Time Travel Queries • Multi Temperature Storage Neuer Komprimierungsalgorithmus Mit der Version 10.1 wurde ein neuer Kompri­mierungs­ algorithmus eingeführt, die sogenannte adaptive Kompri­mierung. Wurde die Komprimierung früher auf Tabellenebene anhand eines Wörterverzeichnisses für die komplette Tabelle durchgeführt, so wird nun auf zwei Ebenen, nämlich Tabellen- und Seitenebene, das Wörterverzeichnis für die Komprimierung verwendet. Dadurch können die Wörterverzeichnisse für die einzelnen Seiten klein gehalten und bei Datenänderungen ggf. auch schnell geändert und aktualisiert werden. Dies hat eine effektivere Komprimierung zur Folge, wodurch letztlich auch der Durchsatz bei Abfragen steigt. Zeitsensitive Abfragen Während bei Tabellen mit dem Systemzeitraum alle Änderungen, die während der normalen Systemzeit anfallen, archiviert werden, werden bei temporalen Tabellen Zeitspannen definiert, für welche bestimmte Daten gültig sein sollen. Denkbar wäre dies z.B. bei der Historisierung von Daten in Data-WarehouseSystemen. Historien müssten hier nicht mehr nach komplexen Regeln in ETL-Werkzeugen erstellt werden, sondern sind automatisch durch die Definition der entsprechenden Anwendungszeiträume in den tempo­ ralen Tabellen vorhanden. Speicherung der Daten nach der Zugriffshäufigkeit Zeilen- und Spaltenzugriffssteuerung Mit Row and Column Access Control (RCAC) wird eine neue Sicherheitserweiterung eingeführt. Mit ihr kann der Zugriff auf sensible Daten gesteuert und verwaltet werden. Im Gegensatz zur klassischen Zugriffssteuerung auf Tabellen können mit RCAC auch die Zugriffe auf einzelne Zeilen und/oder Spalten gesteuert werden. In der Datenbank werden verschiedene Regeln definiert, in welchen hinterlegt ist, wer auf welche Daten zugreifen darf. Denkbar ist z.B. ein Szenario, in welchem eine Führungskraft in einer Mitarbeiter­tabelle 16 ORDIX news 3/2012 In der Regel ist es wünschenswert, auf häufig be­nötigte Daten – meist aktuelle Daten – so performant wie möglich zugreifen zu können. Weniger häufig benötigte Daten – oftmals historische Daten – sind hingegen meist nicht so zeitkritisch beim Selektieren der Tabellen. Dies wird nun mit dem Multi Temperature Storage unterstützt. Hierbei werden Speicherbereiche (Storagegroups) definiert, welche auf schnellen – meist auch teuren - Platten, wie z.B. Solid Stade Drives (SDD) bzw. auf mittelschnellen oder langsameren Platten liegen. In diesen unterschiedlichen Speicherbereichen liegen dann, je nach Wichtigkeit und Zugriffshäufigkeit, Datenbanken die einzelnen Daten. Der Begriff Multi Temperature Storage wird verwendet, da IBM hier die Daten nach „hot“ für heiße und häufig genutzte Daten, „warm“ für warme und gelegentlich genutzte Daten sowie „cold“ für kalte und wenig genutzte Daten unterscheidet. Selbstverständlich können je nach Bedarf auch weniger oder mehr Storagegroups definiert werden. Dies war zwar prinzipiell schon immer möglich, indem die Daten in entsprechenden Tablespaces abgelegt wurden, welche wiederum auf schnellen oder langsameren Platten lagen. Jedoch ist es nun auch möglich, die Daten dynamisch zwischen den schnelleren und langsameren Festplattensystemen hin- und herzuschieben, wenn die Daten wichtiger oder eben weniger wichtig werden. Hochverfübarkeit Das High Availability Disaster Recovery (HADR) ist schon seit Version 8.2 Bestandteil von DB2. Neu ab Version 10.1 ist, dass nun mehrere Bereitschafts-datenbanken (bis zu drei) unterstützt werden. Bisher musste man immer zwischen Hochverfügbarkeit oder naher Standort entscheiden, eines der geforderten Kriterien kam zu kurz. Mit HADR 10.1 können nun beide Forderungen parallel erfüllt werden. Glossar SDD Solid State Drive ─ Nichtflüchtiger, durch Halbleiterbausteine realisierter Speicher, welcher im Gegensatz zu herkömmlichen Laufwerken sehr kurze Zugriffszeiten aufweist, sowie aufgrund der Bauweise eine wesentlich bessere mechanische Robustheit besitzt. ETL Extract, Transform, Load (ETL) ─ Ein Prozess, bei dem Daten aus mehreren ggf. unterschiedlich strukturierten Datenquellen in einer Zieldatenbank vereinigt werden. HADR High Availability Disaster Recovery ─ eine Datenbankreplikation von DB2, die vor dem Ausfall eines Datenbankservers schützt. Die veränderten Daten in der Datenbank werden dabei kontinuierlich vom Primärsystem auf ein Sekundärsystem repliziert. Beim Ausfall des Primärsystems wird den Clients innerhalb sehr kurzer Zeit das Sekundärsystem zur Verfügung gestellt, womit eine hohe Verfügbarkeit der Datenbank gewährleistet ist. Links ►► [1] DB2 V10.1 Information Center: http://pic.dhe.ibm.com/infocenter/db2luw/v10r1/index.jsp Eine weitere Neuerung ist, dass nun eine Zeitver­ zögerung bei den Datenbankänderungen auf der Standby-Datenbank eingerichtet werden kann. Damit können z.B. Anwendungsfehler korrigiert werden, wenn sie erkannt werden bevor die Änderungen auf der Bereitschaftsdatenbank durchgeführt wurden. Alles wird schneller Michael Spoden ([email protected]) Wie immer wird natürlich mit jeder Version auch alles schneller und performanter. In erster Linie sind hier Erweiterungen beim Sammeln von Statistiken (Runstats), bessere Vorablesezugriffe auf Daten und Indizes (Smart Data Prefetching / Smart Index Prefetching) und ein besserer Zugriff bei zusammengesetzten Indizes (Jump Scan) zu nennen. Ausblick Nachdem dieser Artikel zunächst einen Überblick über die Funktionalitäten der neuen Datenbank­ version ge­ geben hat, werden wir uns die wichtigsten Neue­r­ungen in den nächsten Ausgaben etwas genauer ansehen. Beginnen werden wir mit den Funk­tionen „Multi Temperature Storage“ sowie „Time Travel Queries“. ORDIX news 3/2012 17 OpenSource OpenSource Cluster mit Pacemaker (Teil III) Kleine Features für große Cluster Pacemaker Cluster erfreuen sich einer immer größeren Beliebtheit und halten weiter Einzug in die Unternehmen. Bei vielen Kunden konnten wir durch Migra­ tion der alten Heartbeat 2 Cluster und den neuen Funktionen von Pacemaker überzeugen. Mit diesem Artikel möchten wir die Reihe [1] zum Pacemaker Cluster wieder aufgreifen und über weitere neue Funktionen berichten. Jeder Administrator mit seinen eigenen Rechten • Die Pacemaker-Version 1.1.5 oder neuer Die unterschiedlichen im Pacemaker Cluster eingesetzten Kommandos, wie beispielsweise crm_mon, CRM-Shell, cibadmin, Python-GUI, Hawk, etc. konnten bisher entweder als Benutzer root, hacluster oder über die Mitgliedschaft in der Gruppe haclient genutzt werden [2]. Jeder dieser Benutzer hatte automatisch vollen Zugriff auf den Cluster. Ein Rollen­ konzept gab es bisher nicht. Seit der Version 1.1.5 wurde die Funktion Access Control Lists (ACL) eingeführt, mit der für unterschiedliche Benutzer verschiedene Zugriffsrechte auf den Cluster vergeben werden können. Beispielsweise kann hier der Anwendungsbetreuer einer Ressource das Recht bekommen, seine Ressource zu starten oder zu stoppen oder auch nur das Monitoring der Ressource zu aktivieren und zu deaktivieren. Um die Funktion Access Control Lists in Pacemaker nutzen zu können, gilt es einige Regeln zu beachten: • Das Pacemaker-Schema muss • Die Benutzer sind normale Benutzer, sie müssen also in der /etc/passwd auf allen Knoten angelegt sein. Der Einsatz eines Verzeichnisdienstes wie LDAP ist hierbei sinnvoll. • Die Benutzer müssen Mitglied in der Gruppe haclient sein. # crm configure role operator \ write xpath:"//crm_config//nvpair[@name='maintenance-mode']" \ write xpath:"//op_defaults//nvpair[@name='record-pending']" \ write xpath:"//nodes/node//nvpair[@name='standby']" \ write xpath:"//resources//nvpair[@name='target-role']" \ write xpath:"//resources//nvpair[@name='is-managed']" \ write xpath:"//constraints/rsc_location" \ read xpath:"/cib" Abb. 1: Beispiel für eine typische Operator-Rolle mit den notwendigen Rechten. 18 ORDIX news 3/2012 muss auf allen Knoten installiert sein. in der Version 1.1 oder 1.2 vorliegen. • Die Access Control Lists müssen in Pacemaker aktiviert sein. • Die Benutzer root oder hacluster haben weiterhin Vollzugriff. • Die Verwaltungsbefehle des Cluster liegen im Normalfall unter /usr/sbin. Für die Nutzung als normaler Benutzer sollten diese mit vollem Pfad aufgerufen werden. Erstellen von Einträgen in der Access Control List Access Control Lists bestehen aus einer geordneten Zusammenfassung von Zugriffsregeln (rules). Jede Regel beinhaltet hierbei die Schlüsselwörter read, write oder deny, um den Zugriff auf Teile der Cluster Information Base zu steuern. Eine oder mehrere Regeln werden üblicherweise zu einer Rolle (role) zusammengefasst. Anschließend werden die Rollen den Benutzern zugeordnet. Alternativ besteht auch die Möglichkeit, Zugriffsregeln direkt mit den Benutzern zu verknüpfen. Dies ist aber aus Gründen der Übersichtlichkeit und Wiederverwertbarkeit der Regeln nicht zu empfehlen. Die Beschreibung der Objekte, auf die der Zugriff innerhalb der Cluster Informa­tion Base gewährt wird, erfolgt mittels der Xpath Syntax. Access Control Lists können entweder mit der Python-GUI oder der CRM-Shell erstellt werden. Die Abbildung 1 zeigt ein Beispiel für eine typische Operatorrolle. Die Zugriffsregeln werden der Reihenfolge nach, von oben nach unten abgearbeitet. Die erste zutreffende Regel für ein Objekt wird angewendet. Soll ein Benutzer Schreibrechte auf ein bestimmtes Objekt bekom- OpenSource men, ist es demnach notwendig das write-Recht vor einem eventuellen read-Recht auf dasselbe Objekt zu de­finieren. Da die Schreibberechtigung automatisch die Leseberechtigung beinhaltet, ist hier eine doppelte Vergabe der Rechte im Normalfall nicht notwendig. Werden keine Rechte auf ein Objekt vergeben, ist die Standardeinstellung automatisch deny. Damit die meisten Cluster-Befehle korrekt arbeiten, ist es notwendig, Leserechte auf bestimmte Daten der Cluster Information Base zu besitzen. Im Allgemeinen ist es hierbei am einfachsten, allen Benutzern Lesezugriff auf die komplette Cluster Information Base zu geben. Wurden Regeln vom Administrator für den Zugriff auf die Cluster Information Base erstellt, müssen diese noch mit den jeweiligen Benutzern verknüpft werden. In Abbildung 2 wird aufgezeigt, wie die Operatorrolle dem Benutzer „ordix“ zugeordnet wird. Die Vergabe von Zugriffregeln mittels der Variante Xpath hat einen Nachteil: Die genaue XML-Struktur der Cluster Information Base muss der Administrator wieder kennen. Da man beim Pacemaker Cluster nur selten mit XML konfrontiert wird, haben die Entwickler auch hierfür eine Lösung bereitgestellt. Die Angabe stellt bei der alternativen Schreibweise eine Kombination aus einem Tag und/oder einer Reference dar. Angenommen der XPath einer primitiven Ressource mit der Reference resource_IP1 wäre: /cib/resources/primitive[@id='resource_IP1'], dann ist die abgekürzte Schreibweise hierfür: tag: "primitive" ref:"rsc1". Die gekürzte Schreibweise kann auch für Constraints genutzt werden. Für den Xpath: /cib/constraint/rsc_location wäre die Kurzschreibweise: tag: "rsc_location". Der CIB Daemon weiß hierbei von selbst, wie er die ACL-Regeln auf die passenden Objekte anwenden muss. Die verkürzte Schreibweise kann entweder in der CRM-Shell oder der Python-GUI verwendet werden. Ressourcen erstellen mit Vorlagen Die größte Schwierigkeit beim Aufbau eines Cluster ist meistens die Namensgebung der Cluster-Ressourcen. Sieht man sich in Unternehmen mit mehreren Administratoren um, stellt man häufig fest, dass jeder Admini­ strator sein eigenes Namensschema für die Ressourcen verwendet. Zudem sind häufig die Beziehungen zwischen den Ressourcen unein­ heitlich oder haben verschiedene oder keine Monitorintervalle. Als Lösung gibt es in Pacemaker Templates, die der Vereinfachung und Vereinheitlichung der Konfiguration von Cluster-Ressourcen dienen. Mit ihnen ist es leicht möglich, Standards bei der Konfiguration auf allen Clustern des Unternehmens zu etablieren. Das Design ist so implementiert, dass mit mini­malem Aufwand schnell eine gültige Cluster-Konfiguration # crm configure user ordix role:operator Abb. 2: Zuweisung einer Rolle zu einem Benutzer. %name virtual-ip %required %% ip %optional %% netmask %% lvs_support %generate primitive %_ ocf:heartbeat:IPaddr params ip=%_:ip opt cidr_netmask=%_:netmask opt lvs_support=%_:lvs_support Abb. 3: Mitgeliefertes virtual-ip-Template von Pacemaker. crm(live)configure template# show ERROR: 27: required parameter ip not set Abb. 4: Ausgabe des Befehls show bei fehlenden Parametern. crm(live)configure template# show primitive virtual-ip ocf:heartbeat:IPaddr \ params ip="192.168.14.101" Abb. 5: Ausgabe des Befehls show mit gesetzten notwendigen Parametern ohne die darin enthaltenen Kommentare. erreicht werden kann. Auch für Neueinsteiger in Pacemaker sind die Templates ein guter Einstieg in die Handhabung und Erstellung von Cluster-Ressourcen. Die Templates sind Textdateien und werden im Verzeichnis /usr/share/crmsh/templates abgelegt. Von den Entwicklern wurden bereits einige Templates mitgeliefert, die als Vorlage für ein eigenes Template genutzt werden können. Werden Anpassungen an den Templates vorgenommen oder eigene erstellt, müssen diese auf alle Cluster-Knoten kopiert werden. Die Abbildung 3 zeigt das mitgelieferte Template virtual-ip. Das dargestellte Template besteht nur aus einer Ressource ohne Abhängigkeiten. %name legt den Namen der Ressource fest. Die nach %required ge­listeten Attribute mit %% müssen vom Administrator angegeben werden, hinter %optional angegebene sind entsprechend optional. Alles was nach %generate kommt, wird abschließend mit Hilfe der angegebenen Attribute gefüllt. Mit Hilfe eines Templates können auch mehrere Ressourcen mit Gruppen und entsprechenden Abhängigkeiten erstellt werden. Die Nutzung der Templates und das Befüllen der Attribute wird wiederum mit der Phython-GUI oder der CRM-Shell ORDIX news 3/2012 19 OpenSource durchgeführt. In der CRM-Shell befindet sich im Untermenu crm configure template alles was zur Verwendung der Templates benötigt wird. Folgende Funktionalitäten stehen zur Verfügung: • new • load • • • • • Erstellen einer neuen Konfiguration aus einem oder mehreren Templates Laden einer bereits genutzten Template-Konfi­ guration. Wurde eine Ressource mit einem Template erstellt, kann diese auch mit Hilfe des Templates verändert werden edit Befüllen einer Konfiguration mit Pflichtund optionalen Attributen delete Löschen einer Konfiguration list Anzeigen der verfügbaren Konfigurationen und Templates apply Übernahme einer Konfiguration in den Cluster show Anzeige der zu befüllenden Attribute Glossar ACL Access Control List ─ Zugriffssteuerungsliste, mit der Betriebssysteme und Anwendungsprogramme Zugriffe auf Daten und Funktionen eingrenzen können. Cluster Information Base XML-basierte Datei, in der die gesamte Cluster-Konfiguration enthalten ist. CRM-Shell In der Programmiersprache Python geschriebenes Kommandozeilenwerkzeug zu Verwaltung und Konfiguration des Pacemaker Cluster. Hawk (HA Webkonsole) Webbasierte Lösung zur Verwaltung und zum Monitoring von Pacemaker Clustern. Python-GUI In der Programmiersprache Python geschriebene grafische Anwendung zur Verwaltung und Konfiguration des Pacemaker Cluster. XPath Die XML Path Language ist eine vom W3-Konsortium entwickelte Abfragesprache, um Teile eines XML-Dokumentes zu adressieren. Links ►► [1] ORDIX news Artikel 3/2010 „OpenSource Cluster mit Pacemaker (Teil I) - Erstellen einer Ressource mit Hilfe eines Templates Sollen Ressourcen mit Hilfe von Templates erstellt werden, muss mit dem Befehl new eine neue Kon­ figuration erstellt werden. Hierbei sind ein Name, unter dem die Konfiguration gespeichert werden soll, und ein oder mehrere Templates anzugeben. Zum Beispiel lädt der Befehl new res_ip1 virtual-ip das Template virtual-ip und speichert es in der Konfi­ guration res_ip1. Vom Administrator müssen nun die Attribute befüllt werden. Mittels dem Befehl show werden alle fehlenden Pflichtattribute angezeigt. Die Abbildung 4 zeigt die Ausgabe des Befehls. Die Ausgabe hierbei gibt an, dass der Parameter ip nicht ange­geben wurde und die Zahl 27 gibt die Zeilenummer an, in der der Parameter innerhalb des Templates steht. Die notwendigen Parameter können nun einfach mit dem Befehl edit bearbeitet werden. Wurden alle Pflichtparameter angegeben, kann mit einem erneuten Befehl show das Resultat begutachtet werden. Als Ausgabe werden hierbei die fertigen CRM-Shell-Befehle ausgegeben. Die Abbildung 5 zeigt die Ausgabe des show-Befehls. Sollen Ressourcen, die mit Hilfe eines Templates erstellt wurden nachträglich verändert werden, so kann hier einfach die gespeicherte Konfiguration mittels des Befehls load geladen, mit dem Befehl edit verändert und einem abschließenden apply in den Cluster übernommen werden. Fazit Die hier beschriebenen Funktionen erleichtern die Administration von Pacemaker Clustern, wenn mehr als nur ein Administrator für die Konfiguration verantwortlich ist. Mit Hilfe der ACL ist eine Einschränkung auf die notwendigsten Befehle möglich, so dass kein kompletter Vollzugriff auf den Cluster mehr vergeben werden muss. Den Administratoren der „geclusterten“ Anwendungen können hier einfache Rechte zum Starten und Stoppen ihrer Anwendungen mit Hilfe von ClusterBefehlen eingerichtet werden. Mit den vorgestellten Templates kann bei mehreren Clustern schnell und einfach ein einheitliches Design geschaffen werden. Fehler in den Abhängigkeiten der Ressourcen oder ein fehlendes Monitoring gehören damit schnell der Vergangenheit an. Auch in künftigen ORDIX news werden wir weiter über das Thema Pacemaker und Cluster berichten und über weitere nützliche Funk­tionen informieren. Pacemaker – Schrittmacher für heartbeat?“: http://www.ordix.de/images/ordix/onews_archiv/3_2010/open_source_pacemaker.html ►► [2] ORDIX news Artikel 4/2011 „OpenSource Cluster mit Pacemaker (Teil II) Elegante Cluster-Administration mit der crm-Shell“: http://www.ordix.de/images/ordix/onews_archiv/4_2011/cluster_pacemaker.html ►► [3] Projektseite Hawk: http://www.clusterlabs.org/wiki/Hawk 20 ORDIX news 3/2012 Christian Fertsch ([email protected]) Java/JEE Java Best Practice Systeme modellieren mit UML Anforderungen sollten im Softwareentwicklungsprozess in Form einer Fachspezifika­ tion festgehalten werden. Mit Hilfe der Unified Modeling Language (UML) lässt sich ein Modell entwickeln, das umfangreiche Textdokumente ersetzen kann. Informationen können strukturiert und standardisiert festgehalten werden und lassen sich schnell wieder auffinden. Spezifikationslücken können einfacher erkannt und die Vollständigkeit der Spezifikation leichter überprüft werden. Zentrale Bedeutung der Fachspezifikation Die Fachspezifikation ist für die Softwareentwicklung von zentraler Bedeutung: Sie ist Bestandteil eines (manchmal auch juristisch wirksamen) Vertrages zwischen dem Anforderer und der Softwareent­wicklung. Kriterien der Abnahme und Diskussionen zu Change Requests basieren auf dieser Spezifikation. Auch für Testfälle ist die Fachspezifikation die wesentliche Informationsquelle. Die wichtigsten Anforderungen an eine Fachspezifikation fasst Abbildung 1 zusammen. Ein zunehmender Anteil der Projektaufwände muss für die Konzeptionsphase eingeplant werden. Im Gegensatz zur Realisierung, deren Produktivität aufgrund von intelligenten Entwicklungsumgebungen und mächtigen Frameworks stetig steigt, verwendet die Konzeption häufig die Textverarbeitung als wichtigstes Werkzeug. Hier wird die Geschwindigkeit vielfach durch die Anschläge pro Sekunde oder die Frequenz der neuronalen Impulse des Autors bestimmt. Bedeutungslosigkeit der Fachspezifikation Unter dem Erwartungsdruck entstehen oftmals viele hundert Seiten Text, die nicht selten noch während der Realisierungsphase an Bedeutung verlieren. Die Akzeptanz gegenüber einer umfangreichen Dokumentation ist oftmals nicht groß und die gesuchten Details sind schwer zu finden. Nur wenige Entwickler lesen die komplette Spezifika­ tion, wodurch sich häufig Nachfragen bei Kollegen oder der Fachseite ergeben. Die Entwickler bauen dadurch eigenes Know-how auf, das möglicherweise von den Anforderungen abweicht. Die Versuchung ist groß, dass auch die Tester sich Systeminformationen eher von den Entwicklern als aus der Fachspezifikation holen. In diesem Fall liegt die Wahrheit im Code – oder besser in dem, was die Entwicklung realisieren wollte. Vollständigkeit, Konsistenz und Übersichtlichkeit sind im Quellcode häufig eher gegeben als in der Spezifikation. So kommt der Entwicklung eine zunehmende Bedeutung zu, wenn es um die Klärung geht, wie sich das System verhält. Das Modell Die Dokumentation der fachlichen Anforderungen in Form eines UML-Modells kann Defizite der rein textbasierten Fachspezifikation beheben. Ziel ist es, die Spezifikation für den gesamten Lebenszyklus der Software einzusetzen. Damit kann erreicht werden, dass fachliche Aussagen und Entscheidungen von denjenigen getroffen werden, die auch die fachliche Expertise haben. Vollständigkeit: Alle für die Entwicklung erforderlichen Informationen müssen verfügbar sein. Konsistenz: Die Anforderungen dürfen sich nicht widersprechen. Übersichtlichkeit: Informationen sollen klar dargestellt und leicht gefunden werden. Rückverfolgbarkeit (Traceability): Die Auswirkungen von Anforderungen müssen nachvollziehbar sein. Abb. 1: Anforderungen an eine Fachspezifikation. ORDIX news 3/2012 21 Java/JEE grammen (siehe Abbildung 4), die das Verhalten des Systems für diesen Fall beschreiben. Vollständig ist das Aktivitätsdiagramm erst dann, wenn darin alle Informationen der Datenverarbeitung enthalten sind. Prinzipiell beschreibt auch heute noch das klassische EVA-Konzept die Daten­verarbeitung: Eingabe, Ver­arbeitung und Ausgabe. Die notwendigen Eingabedaten sind an­zugeben, wie diese verarbeitet werden sollen, sowie die Ausgabedaten. Zusätzlich zu EVA ist noch der Zustand des Systems zu berücksichtigen. Dieser wird durch die Daten dargestellt, die in der Datenbank abgelegt werden. Daher enthält das Aktivitätsdiagramm neben den Aktivitäten auch den Objektfluss. Dadurch wird deutlich, welche Daten benötigt werden. Im Beispiel „Benutzer anmelden“ werden Anmeldedaten und Daten zur Authentifizierung benötigt. Als Ergebnis wird ein Objekt vom Typ LoginResponse erzeugt. Beim Design der Aktivitätsdiagramme ergibt sich – beinahe zwangsläufig – die Beschreibung der erforderlichen Datenstrukturen. In Form von Klassendiagrammen werden zu persistierende Daten als Systemdaten, die ein- und ausgegebenen Daten im Paket Systemaußenkante und die übrigen als Systemprozessbegriffe verwaltet. Bilder allein reichen nicht Anwendungsfall-, Aktivitäts- und Klassendiagramm allein sind allerdings nicht ausreichend, um das Systemver­halten zu spezifizieren. Abb. 2: Aufbau des Modells. Modellstruktur 22 Die Klassendiagramme sind erst dann vollständig, wenn Datentypen und Gültigkeitsbereiche angegeben sind. Bei den Systemprozessbegriffen sollte zudem eine fachliche Definition der Klassen nicht fehlen. Vollständigkeit, Konsistenz und Übersichtlichkeit werden durch eine festzulegende Struktur des Modells sichergestellt. Im Folgenden wird exemplarisch eine von vielen möglichen Modellstrukturen (siehe Abbildung 2) näher beschrieben. Die Aktivitäten müssen die Datenverarbeitung vollständig, das heißt bis auf die Ebene der Attribute, beschreiben. Findet zum Beispiel eine Umwandlung der Daten in der Schnittstelle statt, so sind die Umwandlungsregeln zu spezifizieren. Diese Informationen finden sich in der Dokumentation zu den Aktivitäten. Generell sinnvoll ist eine anwendungsfallorientierte Anforderungsanalyse. Einstiegspunkt des Modells ist das Paket „Fachliche Systemanalyse“. In diesem findet die funktionale Beschreibung des Systemver­ haltens statt. Ausgehend vom Anwendungsfalldiagramm, z.B. „Seminar buchen“ (siehe Abbildung 3), gibt es im selben Paket für jeden Anwendungsfall ein gleich­namiges Verzeichnis mit den Aktivitätsdia­ Die Spezifikation ist eine mühsame Arbeit: jede Information, die nicht recherchiert und im Modell festgehalten wird, ist im günstigen Fall Gegenstand einer Nachfrage. Im ungünstigen Fall führt eine Lücke zu einer Interpretation – die kann bekanntlich zu falschen Annahmen und folglich zu ungewünschten Ergeb­ nissen führen können. ORDIX news 3/2012 Java/JEE Die Entscheidung Die Entscheidung, Anforderungen in Form eines UMLModells festzuhalten, löst allein noch keine Probleme. Ein geeignetes Werkzeug muss ausgesucht werden (z.B. Innovator, Enterprise Architect, magicdraw oder ArgoUML), die Möglichkeit des Teamwork muss gegeben sein und die Akzeptanz der Mitarbeiter und Abnehmer muss gewonnen werden. Das Modell ist dabei nur ein Medium. Die Qualität wird durch die fachliche und technische Ausbildung der Mitarbeiter geschaffen, die mit diesem Medium arbeiten. Die Qualität kann nur erhalten bleiben, wenn es während des gesamten Lebenszyklus einer Software kontinuierlich gepflegt wird. UML ist eine sehr mächtige Sprache, mit der sich sehr umfangreiche und detaillierte Modelle und Dia­ gramme erstellen lassen. Hier gilt es die Balance zwischen Aufwand und Nutzen nicht aus dem Auge zu verlieren: „Dokumentiere so viel wie nötig und so wenig wie möglich“. Abb. 3: Anwendungsfall „Seminar buchen“. Fazit Dieser Artikel hat einen ersten Einblick in die Struktur eines UML-Modells gewährt. Es wurde ein Eindruck vermittelt, wie das Modell bei der Dokumentation von Anforderungen genutzt werden kann und welchen Nutzen es für die Softwareentwicklung haben kann. Gern unterstützen wir Sie bei der Anforderungs­ analyse und -dokumentation in einer für Ihr Projekt geeigneten Form. Oder besuchen Sie unser Seminar zum Thema „Anforderungsanalyse mit UML‟. Abb. 4: Aktivitätsdiagramm „Benutzer anmelden“. Glossar Change Request Wenn sich Anforderungen nach Abschluss der Anforderungsdefinition für eine Software neu ergeben oder ändern. UML Dr. Stefan Koch ([email protected]) Unified Modeling Language - Modellierungssprache, mit der Geschäfts­ prozesse, Anforderungen und Softwaredesign beschrieben werden können. ORDIX news 3/2012 23 Seminare Datenbanken September - Dezember 2012 DB-DB-02 Datenbank-Hochverfügbarkeitslösungen für Entscheider 1 Tag 550,00 € 29.10.2012 | 10.12.2012 DB-DB-03 Datawarehouse Grundlagen 3 Tage 1.290,00 € DB-DB-01 Datenbank-Modellierung 2 Tage 890,00 € DB-ORA-01 Oracle SQL 5 Tage 1.890,00 € 24.09.2012 | 05.11.2012 | 03.12.2012 DB-ORA-01A Oracle SQL für Experten 3 Tage 1.290,00 € 29.10.2012 | 17.12.2012 DB-ORA-02 Oracle Datenbankprogrammierung mit PL/SQL Grundlagen 5 Tage 1.890,00 € 15.10.2012 | 19.11.2012 | 17.12.2012 DB-ORA-34 Oracle Datenbankprogrammierung mit PL/SQL Aufbau 5 Tage 1.890,00 € 24.09.2012 | 12.11.2012 DB-ORA-42 Oracle PL/SQL Tuning 3 Tage 1.890,00 € 03.09.2012 | 19.11.2012 DB-ORA-44 Entwicklung von Web-Anwendungen mit Oracle PL/SQL 2 Tage 1.090,00 € 27.09.2012 | 06.12.2012 DB-ORA-43 Oracle APEX Programmierung 3 Tage 1.890,00 € 17.09.2012 | 15.10.2012 | 17.12.2012 DB-ORA-38 Objektorientierung in Oracle 5 Tage 1.990,00 € 12.11.2012 DB-ORA-03 Oracle Datenbankadministration Grundlagen 5 Tage 1.990,00 € 10.09.2012 | 22.10.2012 | 10.12.2012 DB-ORA-04 Oracle Datenbankadministration Aufbau 5 Tage 1.990,00 € 03.09.2012 | 26.11.2012 DB-ORA-06 Manuelles Oracle Backup und Recovery & weitere Konzepte 5 Tage 1.990,00 € auf Anfrage DB-ORA-32 Oracle Backup und Recovery mit RMAN 5 Tage 1.990,00 € 24.09.2012 | 12.11.2012 | 03.12.2012 DB-ORA-07 Oracle Tuning und Monitoring 5 Tage 1.990,00 € 10.09.2012 | 05.11.2012 DB-ORA-41 Oracle AWR und ASH Analyse und Interpretation 3 Tage 1.290,00 € 29.10.2012 | 12.12.2012 DB-ORA-11 Oracle Troubleshooting Workshop 5 Tage 1.990,00 € 10.09.2012 | 03.12.2012 DB-ORA-08 Oracle 11gR2 RAC und Grid Infrastructure 5 Tage 1.990,00 € 22.10.2012 | 26.11.2012 | 17.12.2012 DB-ORA-15 Oracle 11g Neuheiten 5 Tage 1.990,00 € 03.09.2012 | 19.11.2012 DB-ORA-33A Oracle Security 4 Tage 1.590,00 € 17.09.2012 | 03.12.2012 DB-ORA-31 Oracle Data Guard 4 Tage 1.590,00 € 24.09.2012 | 22.10.2012 | 26.11.2012 DB-ORA-35 Oracle Grid Control 3 Tage 1.290,00 € 08.10.2012 | 10.12.2012 DB-ORA-36 Oracle Replikation 3 Tage 1.290,00 € auf Anfrage DB-ORA-37 Oracle Streams Advanced Queuing 3 Tage 1.290,00 € 19.11.2012 DB-ORA-39 Oracle Migration und Patching 3 Tage 1.290,00 € 05.11.2012 DB-ORA-40 Oracle Capacity Planning 3 Tage 1.290,00 € 26.11.2012 | 17.12.2012 DB-INF-01 IBM Informix SQL 5 Tage 1.790,00 € 08.10.2012 17.09.2012 | 29.10.2012 | 10.12.2012 22.10.2012 | 13.12.2012 DB-INF-02 IBM Informix Administration 5 Tage 1.990,00 € 22.10.2012 DB-INF-04 IBM Informix Dynamic Server Backup und Recovery 3 Tage 1.290,00 € 03.09.2012 | 19.11.2012 DB-INF-03 IBM Informix Tuning und Monitoring 5 Tage 1.990,00 € 24.09.2012 DB-INF-07 IBM Informix Hochverfügbarkeits-Technologien unter Unix 4 Tage 1.590,00 € 15.10.2012 DB-DB2-01 IBM DB2 für Linux/Unix/Windows SQL Grundlagen 5 Tage 1.890,00 € 10.09.2012 | 05.11.2012 DB-DB2-02 IBM DB2 für Linux/Unix/Windows Administration 5 Tage 1.990,00 € 12.11.2012 DB-DB2-05 IBM DB2 für Linux/Unix/Windows Monitoring und Tuning 3 Tage 1.290,00 € 08.10.2012 DB-MY-01 MySQL Administration 3 Tage 1.190,00 € 24.09.2012 | 26.11.2012 DB-MSSQL-1 Microsoft SQL Server Administration 5 Tage 1.790,00 € auf Anfrage P-PHP-01 PHP Programmierung Grundlagen 5 Tage 1.690,00 € 26.11.2012 P-PHP-02 PHP Programmierung Aufbau 3 Tage 1.190,00 € 03.12.2012 P-PERL-01 Perl Programmierung Grundlagen 5 Tage 1.690,00 € 15.10.2012 P-PERL-02 Perl Programmierung Aufbau 5 Tage 1.690,00 € 05.11.2012 P-UNIX-01 Shell | Awk und Sed 5 Tage 1.690,00 € 03.09.2012 | 12.11.2012 P-UNIX-01A Awk Intensiv-Workshop 3 Tage 1.190,00 € 29.10.2012 P-XML-01 Einführung in XML 3 Tage 1.190,00 € 17.09.2012 | 26.11.2012 P-XML-02 XML Programmierung unter Java mit DOM und SAX 2 Tage 890,00 € auf Anfrage P-XML-03 Oracle und XML 3 Tage 1.190,00 € auf Anfrage September - Dezember 2012 Entwicklung Web- und Applikations-Server September - Dezember 2012 INT-04 Apache Web-Server Installation und Administration 3 Tage 1.190,00 € 03.09.2012 | 15.10.2012 | 10.12.2012 INT-07 Tomcat Konfiguration und Administration 3 Tage 1.190,00 € 24.09.2012 | 19.11.2012 INT-08 WebSphere Application Server Installation und Administration 3 Tage 1.390,00 € 03.09.2012 | 03.12.2012 INT-11 Administration und Konfiguration für JBoss 3 Tage 1.190,00 € 17.09.2012 | 26.11.2012 Informationen und Anmeldung Für Informationen und Fragen zu individuell zugeschnittenen Seminaren, Ausbildungsreihen oder Inhouse-Schulungen stehen wir Ihnen gerne zur Verfügung. Auf Wunsch senden wir Ihnen auch unser komplettes Seminarprogramm zu. 24 ORDIX news 3/2012 Online-Anmeldung, aktuelle Seminarinhalte und Termine unter: http://training.ordix.de Seminare September - Dezember 2012 Systemmanagement SM-NAG-01 Systemüberwachung mit Nagios Grundlagen 3 Tage 1.190,00 € 22.10.2012 SM-NAG-02 Systemüberwachung mit Nagios Aufbau 2 Tage 890,00 € 25.10.2012 Anforderungsanalyse mit UML 3 Tage 1.190,00 € 15.10.2012 | 19.11.2012 Java-JEE E-UML-01 September - Dezember 2012 E-SWA-01 Softwarearchitekturen 5 Tage 1.890,00 € 24.09.2012 | 22.10.2012 | 03.12.2012 OO-01 Einführung in die Objektorientierte Programmierung 3 Tage 1.190,00 € 17.09.2012 | 12.12.2012 P-JAVA-01 Java Programmierung Grundlagen 5 Tage 1.690,00 € 08.10.2012 | 17.12.2012 P-JAVA-03 Java Programmierung Aufbau 5 Tage 1.690,00 € 05.11.2012 P-JAVA-02 Java GUI Entwicklung mit Swing 5 Tage 1.690,00 € 10.09.2012 | 10.12.2012 P-JEE-01 JEE für Entscheider 1 Tag 590,00 € 15.10.2012 P-JEE-02 Einführung in JEE 3 Tage 1.290,00 € 16.10.2012 P-JEE-03A JSP und Servlet Programmierung 5 Tage 1.590,00 € 03.12.2012 P-JEE-04 EJB Programmierung 5 Tage 1.590,00 € 22.10.2012 P-JEE-05 Web-Anwendungen mit JavaServer Faces (JSF) 5 Tage 1.590,00 € 12.11.2012 P-JEE-06 Entwickeln mit dem Spring-Framework 3 Tage 1.190,00 € 26.11.2012 INT-05 Java Web Services 3 Tage 1.190,00 € 08.10.2012 | 17.12.2012 J-HIB-01 Hibernate und die Java Persistence API 5 Tage 1.690,00 € 10.09.2012 | 19.11.2012 P-JEE-08 Java Performance Tuning 3 Tage 1.290,00 € 10.09.2012 | 29.10.2012 Betriebssysteme September - Dezember 2012 BS-01 Unix/Linux Grundlagen für Einsteiger 5 Tage 1.690,00 € 03.09.2012 | 05.11.2012 | 10.12.2012 BS-25 Unix Aufbauseminar für Datenbank- und Applikationsbetreuer 5 Tage 1.790,00 € 05.11.2012 | 19.11.2012 BS-02 Linux Systemadministration 5 Tage 1.690,00 € 10.09.2012 | 08.10.2012 | 19.11.2012 BS-09 Linux Hochverfügbarkeits-Cluster 3 Tage 1.290,00 € 08.10.2012 BS-19 Linux Cluster mit Pacemaker und Heartbeat 3 3 Tage 1.190,00 € 29.10.2012 | 12.11.2012 BS-16 OpenLDAP - Praxiseinsatz im Netzwerk 4 Tage 1.490,00 € 22.10.2012 BS-03 Solaris Systemadministration Teil I 5 Tage 1.990,00 € 24.09.2012 | 03.12.2012 BS-04 Solaris Systemadministration Teil II 5 Tage 1.990,00 € 08.10.2012 | 10.12.2012 BS-06 Solaris kompakt für erfahrene Unix/Linux-Umsteiger 5 Tage 1.990,00 € 17.09.2012 | 17.12.2012 BS-24 Solaris 11 Administration Neuheiten 5 Tage 1.990,00 € 08.10.2012 | 03.12.2012 BS-18 Solaris Virtualisierung mit ZFS und Container (Zonen) 5 Tage 1.990,00 € 10.09.2012 | 12.11.2012 BS-23 Solaris Virtualisierung mit LDOM 3 Tage 1.290,00 € 15.10.2012 AIX-01 IBM AIX Systemadministration Grundlagen 5 Tage 1.990,00 € 22.10.2012 AIX-02 IBM AIX Installation, Backup und Recovery mit NIM 3 Tage 1.290,00 € 17.09.2012 | 03.12.2012 AIX-03 Analyse v. komplexen AIX Performance Problemen 5 Tage 2.300,00 € 10.12.2012 September - Dezember 2012 Projektmanagement PM-01 IT-Projektmanagement - Methoden und Techniken 5 Tage 1.990,00 € 19.11.2012 PM-06 System. Projektmanagement - Projektteams souverän führen 4 Tage 1.850,00 € 08.10.2012 PM-08 Agiles Projektmanagement mit SCRUM 2 Tage 1.100,00 € 10.09.2012 | 06.12.2012 PM-09 Capability Maturity Model Integration (CMMI) 2 Tage 1.100,00 € 13.09.2012 | 26.11.2012 PM-10 Kennzahlen der IT 2 Tage 1.100,00 € 13.12.2012 | 18.10.2012 PM-07 Krisenmanagement in Projekten 2 Tage 1.100,00 € 03.09.2012 | 12.11.2012 PM-05 IT-Projektcontrolling 3 Tage 1.290,00 € 29.10.2012 PM-11 Konfliktmanagement 2 Tage 1.100,00 € 06.09.2012 | 15.11.2012 September - Dezember 2012 IT-Management MGM-02 IT-Architekturen 3 Tage 1.650,00 € 05.11.2012 MGM-01 E-Business 2 Tage 1.100,00 € 08.11.2012 MGM-07 IT-Strategien 2 Tage 1.100,00 € 24.09.2012 | 10.12.2012 MGM-08 Strategien effizient entwickeln 3 Tage 1.650,00 € 17.12.2012 MGM-03 IT-Management 5 Tage 1.990,00 € 17.09.2012 | 03.12.2012 MGM-05 IT-Risikomanagement 3 Tage 1.650,00 € 26.09.2012 | 28.11.2012 MGM-04 IT-Prozessmanagement 3 Tage 1.650,00 € 15.10.2012 Zentrale: ORDIX AG Westernmauer 12 - 16 33098 Paderborn Tel.: 05251 1063-0 Seminarzentrum: ORDIX AG Kreuzberger Ring 13 65205 Wiesbaden Tel.: 0611 77840-00 Unsere Seminarstandorte sind: Wiesbaden, Bielefeld und Hannover. Die Preise gelten pro Seminar pro Teilnehmer in Euro zzgl. ges. MwSt., Inhouse-Preise auf Anfrage. ORDIX news 3/2012 25 Datenbanken Wie mit der MySQL Sandbox Datenbankinstallationen ein Kinderspiel werden Sandkastenspiele Nach wie vor sind MySQL-Datenbanken meist eher kleinere Gebilde. Daher ist es üblich, dass oftmals mehrere Datenbankserver – auch in unterschiedlichen – Versionen auf einem Betriebssystem installiert werden. Giuseppe Maxia (siehe Glossar) hat mit „MySQL Sandbox“ ein hochwirksames Framework für die Bereitstellung und Verwaltung von eben solchen MySQL-Datenbanken entwickelt. Spielbeschreibung An und für sich ist die Bereitstellung von MySQLSys­temen auf einem Server kein großes Hexenwerk. MySQL selbst liefert zahlreiche Möglichkeiten (bis hin zu den eigenen Diensten mysqld_multi), um den Betrieb von mehreren Instanzen auf einem Server zu realisieren. Sofern der Administrator beim Aufbau der Systeme genügend Sorgfalt walten lässt und nicht aus Ver­sehen gemeinsame Ressourcen (z.B. Datenbankpfade, TCP/IP Ports o.ä.) verwendet, laufen solche Server problemlos. Spielteilnehmer Müssen jedoch eine Vielzahl von Systemen (z.B. in Entwicklungsumgebungen) bereitgestellt werden, 26 ORDIX news 3/2012 kann es unübersichtlich und damit fehleranfällig werden. Da­rüber hinaus ist die Bereitstellung und Konfiguration von solchen Systemen nicht unbedingt eine spannende Aufgabe. Eine zusätzliche Hürde kann die Verwendung von unterschiedlichen BetriebssystemAccounts für den Betrieb der DB-Server darstellen. So soll unter Umständen sichergestellt werden, dass ein konkurrierender Zugriff auf Daten nicht möglich ist. Spielaufbau Schnell sind die Vorbereitungen zum Einsatz von MySQL Sandbox [1] erledigt. Zunächst müssen die entsprechenden Perl-Module bei CPAN [2] herunter­ ge­ laden und installiert werden. Zusätzlich werden MySQL Binaries (gerne auch in mehreren auswählbaren Versionen) benötigt. Hier hat man die Wahl, ob man vorgefertigte Binary-TAR-Pakete extrahieren oder Datenbanken ob man selbst MySQL-Quellcode kompilieren möchte. Es empfiehlt sich, die entsprechenden Binaries gemäß ihrer Versions­nummer unterhalb des konfigurier­baren Pfades $SANDBOX_BINARY (default /opt/mysql) abzulegen (siehe Abbildung 1). Spielbeginn Nun kann mit dem Rollout von MySQL-Installationen begonnen werden. MySQL Sandbox bietet dafür mehrere Binaries, die für unterschiedlich komplexe Installationsszenarien geeignet sind. Die wichtigsten Binaries sind: • make_sandbox eignet sich für einzelne Installationen • make_multiple_sandbox kommt zur Anwendung, wenn auf einen Schlag mehrere Installationen (z.B. verschiedene Ver­sionen) installiert werden sollen • make_replication_sandbox wird zum Aufbau von – komplexen – Replikations­topologien verwendet Sofern kein Pfad über die Umgebungsvariabale SANDBOX_HOME oder per Parameter angegeben wird, erfolgt die Installation der jeweiligen Datenbankserver in das Home-Verzeichnis des User (siehe Abbildung 2). Spielverlauf Die entsprechenden Installationen sind in den definierten Verzeichnissen (z.B. im $HOME eines User) gekapselt, installiert und völlig autark von den anderen Installationen. Im Installationsverzeichnis befinden sich neben der physikalischen Datenbankdatei (Datenbankdateien, Konfigurationsdateien usw.) auch einige Werkzeuge für die Anwender und Administratoren des Datenbanksystems (siehe Ab­bildung 3). So gibt es beispielsweise Skripte, mit denen das System konsolidiert gestartet und gestoppt (start_all / stop_all) oder Kommandos über die gesamte Landschaft abgesetzt werden können (use_all). Spielkontrolle Zusätzlich gibt es für das Framework ein eigenes Kontrollinstrument: sbtool. Dieses Werkzeug ermöglicht es u.a.: • Die durch MySQL belegten oder noch freien bash> export SANDBOX_BINARY=/opt/mysql bash> cd $SANDBOX_BINARY bash> ls -la insgesamt 20 drwxr-xr-x 4 root root 4096 19. Jun 16:37 drwxr-xr-x 4 root root 4096 19. Jun 15:04 drwxr-xr-x 8 root root 4096 20. Apr 2009 drwxr-xr-x 9 root root 4096 19. Jun 16:40 . .. 5.1.32 5.5.3 Abb. 1: MySQL Binaries. Auf diesem Testsystem wurden zwei unter­ schiedliche MySQL-Versionen bereitgestellt (5.1.32 MariaDB & 5.5.3 MySQL). bash> time make_replication_sandbox --verbose --how_many_slaves=3 --check_base_port 5.1.32 … ....... sandbox server started Your sandbox server was installed in $HOME/sandboxes/rsandbox_5_1_32/master … starting slave 1 ... sandbox server started starting slave 2 ... sandbox server started starting slave 3 ... sandbox server started initializing slave 1 initializing slave 2 initializing slave 3 replication directory installed in $HOME/sandboxes/rsandbox_5_1_32 real user sys 0m37.024s 0m4.273s 0m7.488s Abb. 2: In nur 37 Sek. (in einer VM auf einem Notebook) wurden vier Systeme in einer Master-Slave-Topologie aufgebaut und gestartet. ls -la insgesamt 76 drwxrwxr-x 6 cst_ABC drwxrwxr-x 5 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC drwxrwxr-x 4 cst_ABC drwxrwxr-x 4 cst_ABC drwxrwxr-x 4 cst_ABC drwxrwxr-x 4 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC -rwxr-xr-x 1 cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC cst_ABC 4096 4096 303 554 1077 170 4096 4096 4096 4096 218 55 55 55 518 699 287 478 405 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun Jun 13:44 13:44 13:44 13:44 13:44 13:44 13:43 13:44 13:44 13:44 13:44 13:44 13:44 13:44 13:44 13:44 13:44 13:44 13:44 . .. check_slaves clear_all initialize_slaves m master node1 node2 node3 restart_all s1 s2 s3 send_kill_all start_all status_all stop_all use_all Abb. 3: Diverse Shell-Skripte erleichtern dem Anwender den Umgang mit den installierten Systemen. Ports zu ermitteln. ORDIX news 3/2012 27 Datenbanken • Replikations-Baumstrukturen aufzubauen bash> make_multiple_sandbox 5.5.3 installing node 1 installing node 2 installing node 3 group directory installed in $HOME/sandboxes/multi_ msb_5_5_3 bash> sbtool --operation tree --tree_dir=/home/cst_ABC/ sandboxes/multi_msb_5_5_3 --master=1 --mid_nodes='2' --leaf_nodes='3' --verbose /home/cst_ABC/sandboxes/multi_msb_5_5_3/stop_all executing "stop" on node 1 executing "stop" on node 2 executing "stop" on node 3 node 1 is master ..... sandbox server started ...... sandbox server started enabling node 2 to relay updates ... sandbox server started node 2 is slave of node 1 .... sandbox server started ...... sandbox server started node 3 is slave of node 2 Abb. 4: In weniger als 1 Minute und mit nur zwei Befehlen wurden zunächst drei Systeme erzeugt und dann in einer Kettentopologie (Master → Slave → Slave) als Replikation aufgesetzt. (Master Node → Mid Nodes → Leaf Nodes). • Installationen zu löschen oder vor einem versehentlichen Löschen zu schützen. • Konfigurationsänderungen durchzuführen. • Datenbanken zu clonen. Die Anwendung dieses Werkzeugs ist in Abbildung 4 dargestellt. Spielbewertung MySQL Sandbox ist ein kleines, aber sehr hilfreiches Framework zum Aufbau und zur Verwaltung von vielen kleinen MySQL-Installationen. Die Software arbeitet zuverlässig, transparent (entsprechendes Shell-, Perlund MySQL-Know-how vorausgesetzt) und effektiv. Die Syntax der Kommandos ist einfach und gut dokumentiert. Kurz gesagt: Es macht Spaß mit diesem Framework zu arbeiten. Links ►► [1] Installationsanweisung von MySQL Sandbox: http://mysqlsandbox.net/ ►► [2] Downloadseite der Zusatzmodule: http://search.cpan.org/~gmax/MySQL-Sandbox-3.0.25/lib/MySQL/Sandbox.pm Matthias Jung ([email protected]) Glossar CPAN Comprehensive Perl Archive Network ─ offenes Online-Archiv für Perl-Module und -Anwendungen Guiseppe Maxia Systemanalyst, Datenbank-Designer und Programmierer mit dem Fokus auf die Etablierung neuer Systeme und die Migration/Optimierung alter Systeme. Bild: © sxc.hu | Nienke 2 | Kverhees © sxc.hu | Nienke 1 | Kverhees 28 ORDIX news 3/2012 Datenbanken Neue Reihe: Räumliche Daten mit Oracle Spatial (Teil I) Mehr Raum für die Datenbank Sind Sie schon einmal an der Kasse eines Elektromarktes nach Ihrer Postleitzahl gefragt worden? Was macht diese Information für das Unternehmen so interessant? Sie gibt Auskunft darüber, wo seine Kunden wohnen. Daraus kann wiederum ermittelt werden, wie groß das Einzugsgebiet dieser Filiale ist und wo dessen räumlicher Schwerpunkt liegt. Diese Informationen können nun als wichtige Unterstützung für unternehmerische Entscheidungen dienen, wie z.B. „Wo eröffnen wir eine neue Filiale?“ oder auch bloß „Wo platzieren wir die nächste Plakatwerbung?“. Ein großer Teil vor allem strategischer Fragestellungen beginnt mit „wo“ und zur Beantwortung dieser Fragen werden räumliche Daten (Geodaten) benötigt. Was diese Daten aus technischer Sicht so besonders macht und wie sie in einem Oracle Datenbanksystem verwaltet werden, stellen wir Ihnen in dieser neuen Reihe vor. Was sind räumliche Daten? Räumliche Daten beantworten die Frage, wo sich ein Objekt befindet (seine Lage im Raum) bzw. wie seine physische Struktur (Geometrie) beschaffen ist. Zu diesem Zweck werden die Daten in einem geo­gra­ phischen Referenzsystem mittels Koordinaten verortet bzw. gespeichert. Soll die Struktur und Lage eines Objekts auf der Erde beschrieben werden, dient hierzu meist das bekannte Koordinatensystem aus Längenund Breitengraden, welche den Erdball umspannen (geographische Länge/Breite). Je nach ihrer physischen Struktur können diese Daten bei zweidimensionaler Darstellung als Punkte (ein einzelnes Koordinatenpaar), Linien (Verbindung zwischen zwei oder mehreren Punkten), Flächen (geschlossener Linienzug bzw. Polygon) sowie Kombinationen aus diesen Datentypen beschrieben werden. Warum sind räumliche Daten anders? Die typischen Daten, welche normalerweise in einer Datenbank gespeichert werden, sind Zahlen und Zeichenketten. Diese Datentypen haben gemein, dass sie sich relativ leicht kategorisieren und vergleichen lassen. Ein numerischer Wert kann z.B. daraufhin untersucht werden, ob er kleiner, größer oder gleich einem anderen numerischen Wert ist. Zeichenketten können ebenfalls daraufhin geprüft werden ob sie identisch sind, ob ein bestimmtes Suchmuster in ihnen enthalten ist oder ob sie in einer vorgegebenen Menge von Begriffen vorkommen. Zudem können diese Daten leicht sortiert werden. Mit räumlichen Daten ist dies hingegen ungleich komplexer. Eine Liste von Städten lässt sich beispielsweise zwar leicht nach ihren Namen oder Einwohnerzahlen sortieren, jedoch nicht nach ihrer Lage. Allerdings könnten sie z.B. daraufhin untersucht werden, • ob sie sich in einer bestimmten Entfernung zueinander befinden. • welche der Städte näher zu einer anderen liegt. • ob sie sich innerhalb der Fläche des gleichen Bundeslandes befinden. CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT MDSYS.SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY); Abb. 1.: Der Objekttyp SDO_GEOMETRY. ORDIX news 3/2012 29 Datenbanken create table vereine ( idnumber primary key, name varchar2(30), stadt varchar2(30), location SDO_GEOMETRY ); Abb. 2: Tabelle mit Spalte SDO_GEOMETRY anlegen. insert into vereine values ( 1, 'Werder Bremen', 'Bremen', SDO_GEOMETRY ( 2001, -- zweidimensionaler Punkt 8307, -- Koordinatensystem ist „geograhische Länge/Breite“ SDO_POINT_TYPE(8.8375890,53.0663953,NULL), NULL, NULL ) ); Abb. 3: INSERT für Punktdatensätze vom Typ SDO_GEOMETRY. insert into vereine values ( 1, 'Werder Bremen', 'Bremen', SDO_GEOMETRY (' POINT(8.8375890 53.0663953) ', 8307 ) ); Abb. 4: INSERT für Punktdatensätze im Well-Known-Text Format (WKT). select from where and ; ROUND( SDO_GEOM.SDO_DISTANCE( v1.location, -- Ort A v2.location, -- Ort B 1, -- Toleranz: 1 Meter 'UNIT=KM' -- Angabe in Kilometern ) ) as distanz_in_km vereine v1,vereine v2 v1.name = 'Werder Bremen' v2.name = 'Borussia Dortmund' DISTANZ_IN_KM ------------199 Abb. 5: Abfrage von Distanzen mit der Funktion SDO_DISTANCE. Der Typ SDO_GEOMETRY in Oracle Zur Verwaltung räumlicher Daten in einer OracleDatenbank dient die Funktion Oracle Locator, welche Bestandteil der Standard Edition ist. Sie liefert im Wesentlichen den Objekttyp SDO_GEOMETRY zur Speicherung der Daten, diverse Operatoren und Funktionen zur Verarbeitung sowie eine spezielle Indizierung für räumliche Daten. Das separat zu lizensierende „Oracle Spatial“ wird für zusätzliche Funktionen und Datentypen benötigt. Die detaillierten Unterschiede zwischen den beiden Paketen werden in einem der nächsten Artikel dieser Reihe behandelt. Die räumliche Information eines Datensatzes wird in einer Spalte vom Typ SDO_GEOMETRY gespeichert, welcher, wie in Abbildung 1 zu sehen, definiert ist. Die einzelnen Attribute haben folgende Bedeutung: • SDO_GTYPE: Datentyp des Objekts (Punkt, Linie, Polygon oder Kombinationen daraus) sowie die Anzahl der Dimensionen (2-4) • SDO_SRID: geographisches Referenzsystem (Koordinatensystem) • SDO_POINT: Koordinaten des Objekts, falls es sich um einen einfachen Punkt handelt • SDO_ELEM_INFO: Beschreibt, wie die nachfolgenden Koordinaten in SDO_ORDINATES zu interpretieren sind (bei Linien und Polygonen sowie zusammen­ gesetzten Objekten). • SDO_ORDINATES: Koordinaten des Objekts, falls es sich um eine Linie, ein Polygon oder eine Kombination handelt. Wir werden uns in diesem Artikel zunächst mit dem einfachsten Datentyp beschäftigen, dem Punkt. Die Arbeit mit Linien und Polygonen werden in den nächsten Artikeln der Reihe beschrieben. Geodaten anlegen Für diese Art von Prüfungen werden jedoch zusätzlich räumliche Operatoren und Funktionen benötigt, denn mit den bekannten „größer, kleiner, gleich“ kommen wir an dieser Stelle nicht weiter. 30 ORDIX news 3/2012 Im folgenden Beispiel sollen die 18 Vereine der Fußball Bundesliga sowie der jeweilige Ort ihres Stadions in Form eines Punktes in der Datenbank ge- Datenbanken speichert werden. Zu diesem Zweck wurde die Tabelle vereine angelegt, wie in Abbildung 2 zu sehen. Die Vereine sowie der Ort ihres Stadions werden nun als Punktdatensatz mit seinen Koordinaten in die Spalte location eingefügt (siehe Abbildung 3). Alternativ liefert der SDO_GEOMETRY einen Konstruktor, mit dem sich die Daten im WKT-Format (Well-Known-Text) auch auf einfachere Weise importieren lassen (siehe Abbildung 4). Räumliche Funktion: SDO_DISTANCE() Mit den so erzeugten Daten lassen sich nun räumliche Abfragen definieren. Eine der einfachsten Möglichkeiten ist die Funktion SDO_DISTANCE aus dem Paket SDO_GEOM, welche die Distanz zwischen zwei Objekten ermittelt (siehe Abbildung 5). Die Spielstätten der ausgewählten Vereine liegen also ca. 199 Kilometer auseinander. Bei den meisten räumlichen Funktionen und Operatoren muss ein Toleranzwert angegeben werden, welcher bestimmt, ab welcher Dis­ tanz zwei Punkte als identisch angesehen werden sollen. Diese Information ist insbesondere dann interessant, wenn geprüft werden soll, ob sich zwei Flächen berühren. Bei der o.a. Distanzberechnung ist er hingegen zu vernachlässigen, muss aber dennoch angegeben werden. Im nächsten Beispiel soll nun mit Hilfe der Funktion SDO_DISTANCE ermittelt werden, welcher Verein den höchsten Reiseaufwand im Laufe einer Bundesliga­ saison hat. Dazu berechnen wir pro Verein die Summe der Distanzen zu jedem anderen Verein in der Bundes­liga (siehe Abbildung 6). Räumliche Funktion: SDO_DISTANCE_WITHIN() Als nächstes möchten wir gerne ermitteln, für welche Großstadt in Deutschland die meisten Bundesliga-Vereine im Umkreis von 200 km erreichbar sind. Eine Liste der deutschen Großstädte wurde dazu analog zu den Vereinen in die Tabelle „staedte“ geschrieben (siehe Abbildung 7). Die Anzahl der Vereine, welche sich im Umkreis von 200 km um die jeweilige Stadt befinden lässt sich nun wie in Abbildung 8 dargestellt ermitteln. Problematisch bei dieser Abfrage ist jedoch, dass in diesem Fall zunächst die Distanz jeder Stadt zu jedem Verein ermittelt werden muss (karthesisches Produkt). Um dies zu vermeiden kann stattdessen der Operator select v1.name as VEREIN, ROUND(SUM( SDO_GEOM.SDO_DISTANCE( v2.location, v1.location, 1, 'UNIT=KM' ) )) as KM from vereine v1,vereine v2 where v1.id <> v2.id group by v1.name order by KM desc ; VEREIN KM ------------------------------ ---------Hamburger SV 6608 Bayern München 6207 SC Freiburg 5954 ... Bayer Leverkusen 4077 FSV Mainz 05 3763 Eintracht Frankfurt 3670 Abb. 6: Reiseaufwand der Bundesliga-Vereine berechnet mit SDO_DISTANCE. create table staedte ( id int primary key, name varchar2(30), location SDO_GEOMETRY ); insert into staedte values ( 1,'Berlin',SDO_GEOMETRY ( ' POINT( 13.3888548 52.5170397 ) ', 8307 ) ); insert into staedte values ( 2,'Paderborn',SDO_GEOMETRY ( ' POINT( 8.752653 51.7177044 ) ', 8307 ) ); ... Abb. 7: Anlegen der Tabelle „staedte“. select * from ( select s.name, ( select count(id) from vereine where SDO_GEOM.SDO_DISTANCE( location, s.location,1, 'UNIT=KM') < 200 ) as vereine_naeher_als_200km from staedte s order by 2 desc ) where rownum <= 10 ; NAME VEREINE_NAEHER_ALS_200KM ------------------------------ -----------------------Frankfurt 11 Paderborn 10 Recklinghausen9 Offenbach am Main9 Osnabrück 9 Bielefeld 9 Wiesbaden 9 Dortmund 9 Stuttgart 9 Reutlingen 9 Abb. 8: Suche nach Bundesliga-Spielstätten im Umkreis von 200 km. ORDIX news 3/2012 31 Datenbanken select * from ( select s.name, ( select count(id) from vereine where SDO_WITHIN_DISTANCE( location, s.location, 'distance=200 UNIT=KM') = 'TRUE' ) as vereine_naeher_als_200km from staedte s order by 2 desc ) where rownum <= 10 ; Abb. 9: Optimierung der Abfrage mit SDO_WITHIN_DISTANCE(). SDO_WITHIN_DISTANCE() als WHERE-Bedingung eingesetzt werden, wie in Abbildung 9 gezeigt. Um diesen Operator nutzen zu können, muss jedoch zunächst ein räumlicher Index für die beteiligten Tabellen vorhanden sein (Spatial-Index). Ausblick Wie ein räumlicher Index angelegt wird und wie er im Gegensatz zu einem „normalen“ Index arbeitet, zeigen wir im nächsten Teil dieser Artikelreihe. Ebenso werden wir Ihnen weitere räumliche Funktionen und Operatoren vorstellen. Link ►► [1] Oracle Spatial http://www.oracle.com/de/products/database/options/spatial/index.html Christof Amelunxen ([email protected]) Seminarempfehlung: Oracle Datenbankadministration Grundlagen ►► Informationen/Online-Anmeldung: http://training.ordix.de/siteengine/action/load/kategorie/Datenbanken/nr/35/index.html In diesem Seminar werden Sie mit der Verwaltung und Analyse von Oracle-Datenbanken vertraut gemacht. Da die Grundlage aller administrativen Tätigkeiten das Verständnis der Oracle-Architektur ist, werden Sie intensiv in den Aufbau und die Struktur eingeführt. Somit sind Sie in der Lage, grundlegende Administrationen der Datenbank vorzunehmen. Das Seminar wird sowohl unter Windows als auch unter Unix gehalten. Seminarinhalte Grundlagen: die Oracle-Architektur, das Data Dictionary Installation eines Datenbanksystems Datenbankverwaltung Instancehandling: Startup/Shutdown Grundlagen Backup und Recovery Benutzerverwaltung, Rechtekonzept, Zugriffsschutz, Password-File, Profile • Verteilte Datenbanken: Database Links • Einführung in die Konfiguration von Oracle Net • Tools: DataPump, Export, Import, SQL*Loader • National Language Support (NLS) • Vertiefung der Theorie durch praktische Übungen und Beispiele • • • • • • 32 ORDIX news 3/2012 Termine 10.09.- 14.09.2012in Bielefeld 22.10.- 26.10.2012in Wiesbaden 10.12.- 14.12.2012in Wiesbaden Seminar-ID: DB-ORA-03 Dauer: 5 Tage Preis pro Teilnehmer: 1.990,00 € (zzgl. MwSt.) Frühbucherpreis: 1.791,00 € (zzgl. MwSt.) NACHHALTIGKEIT ist UNS wichtig! Wussten Sie, dass wir in Deutschland ca. 250 Kilogramm Papier pro Kopf im Jahr verbrauchen? Im Zuge des wachsenden Umweltbewußtseins haben wir uns entschlossen Sie, liebe Leser anzusprechen. Helfen Sie uns die Umwelt zu schonen und abonieren Sie die ORDIX news in digitaler Form. Besuchen Sie unsere ORDIX news Anmeldung unter: http://news.ordix.de Internet­seite und ändern Sie Ihr Abonnement auf ein Online-Abonnement. Natürlich werden wir die ORDIX news auch weiterhin in Papierform anbieten. Möchten Sie die ORDIX news wie bisher erhalten, ändert sich für Sie nichts. Java/JEE Hibernate für Fortgeschrittene (Teil III) Was ist die optimale BatchSize? In den beiden vorangegangenen Artikeln dieser Reihe [2,3] haben wir zwei Opti­mierungsmöglichkeiten beschrieben, mit denen das N+1-Select-Problem gelöst werden kann. Eine der beiden Möglichkeiten ist die Verwendung einer BatchSize. Was bei der Wahl der BatchSIze zu beachten ist, fasst dieser Artikel zusammen. Die grundsätzliche Strategie Ist bei einer Relation zwischen den Klassen A und B die BatchSize-Strategie definiert, so wird bei der Navigation von A nach B nicht nur die Menge der B-Objekte geladen, die zu dem aktuellen A-Objekt gehört. Stattdessen lädt Hibernate gleich mehrere A-B-Relationen. Hierdurch kann meistens eine wesentlich bessere Performance erreicht werden, da die Anzahl der Select-Befehle reduziert wird. Wie viele Relationen gleichzeitig aus der Datenbank geladen werden, definiert die BatchSize. Unter- und Obergrenze Wenn also eine Relation noch nicht initialisiert ist und ein Zugriff auf diese erfolgt, so bestimmt Hibernate 34 ORDIX news 3/2012 alle A-Objekte, deren Relationen ebenfalls noch nicht initialisiert sind und initialisiert so viele Relationen, wie die BatchSize angibt. Hier ergibt sich dann natürlich die Frage, wie diese BatchSize am besten eingestellt wird, um eine optimale Performance zu erreichen. Der Wert 1 als Untergrenze ist keine sinnvolle Wahl, da dies dem normalen, nicht optimierten Verhalten von Hibernate entspricht. Bei der Obergrenze müssen die Beschränkungen des Datenbanksystems beachtet werden. Die Verwendung einer BatchSize führt zu einem Statement der Form SELECT * FROM <TABLE> WHERE <ID> IN (ID-1, …, ID-N). Bei Oracle z.B. darf N maximal 1000 sein. Ist für die BatchSize ein größerer Wert definiert, so wird dies diverse Fehlermeldungen zur Folge haben, denn Hibernate gleicht die BatchSize nicht mit den Grenzen der Datenbank ab. Java/JEE Kosten und SubSelect Mit der BatchSize wird die Anzahl der Statements verringert, mit dem Ziel, insgesamt die Performance zu verbessern. Deshalb müssen in diesem Zusammenhang auch die Kosten bzw. Ausführungszeiten be­ rücksichtigt werden. Denn je größer die BatchSize gewählt wird, desto größer sind die Kosten für das Statement. Diese kann man mit den Kosten für ein Statement vergleichen, das bei der Verwendung der alternativen SubSelect-Strategie von Hibernate generiert wird. Bei diesen Messungen sollte aber eine Datenbank vorliegen, die eine realistische Größe und Verteilung der Daten aufweist. Bei den von mir durchgeführten Vergleichen war fast immer festzustellen, dass die Ausführungszeiten bei beiden Strategien bis zu einer Ergebnisgröße von ca. 10 fast konstant bleiben. Darüber hinaus führt eine Verdoppelung der Ergebnisgröße nicht zu einer Verdoppelung der Laufzeit. Erfolgen die Abfragen nur über den Primärschlüssel, so kann sogar die SubSelect-Strategie schon bei kleinen Ergebnismengen zu besseren Laufzeiten führen als die BatchSize-Strategie. Ist die Komplexität der SubSelect-Statements zu hoch, so sind die Laufzeiten sehr wahrscheinlich immer schlechter. Manchmal hingegen lässt sich beobachten, dass bei kleinen Er­gebnismengen die BatchSize-Strategie die besseren Laufzeiten aufweist und bei größeren Ergebnismengen die SubSelect-Strategie. Hier muss also von Fall zu Fall abgewogen werden, welche Strategie zum Einsatz kommen soll. Tatsächliche Anzahl der Statements Wenn eine BatchSize von N für eine Relation eingestellt ist und M nicht-initialisierte Relationen vorliegen, so ist natürlich interessant, wie viele Statements letztendlich von Hibernate erzeugt werden, bis alle Initialisierungen durchgeführt wurden: Nicht überraschend ist der Fall N = M, denn hier wird genau ein Statement erzeugt. Ist N < M, so wird ein Statement generiert, um die ersten N Relationen zu initialisieren. Für die verbleibenden M-N Relationen gilt dann rekursiv das hier Beschriebene. Das Ergebnis für den letzten Fall N > M ist ver­blüffend, denn hier würde man normalerweise ebenfalls genau ein Statement erwarten. Doch die Antwort ist etwas komplizierter. Hibernate generiert nämlich schon im Vorfeld die Select-Anweisungen für die BatchSize- SELECT SELECT … SELECT SELECT SELECT SELECT SELECT SELECT SELECT * FROM <TABLE> WHERE <ID> = ID-1 * FROM <TABLE> WHERE <ID> IN (ID-1, ID-2) * * * * * * * FROM FROM FROM FROM FROM FROM FROM <TABLE> <TABLE> <TABLE> <TABLE> <TABLE> <TABLE> <TABLE> WHERE WHERE WHERE WHERE WHERE WHERE WHERE <ID> <ID> <ID> <ID> <ID> <ID> <ID> IN IN IN IN IN IN IN (ID-1, (ID-1, (ID-1, (ID-1, (ID-1, (ID-1, (ID-1, …, …, …, …, …, …, …, ID-10) ID-15) ID-31) ID-62) ID-125) ID-250) ID-500) Abb. 1: Erzeugte Statements bei einer BatchSize mit N=500. for (C c : cList) { System.out.println("C: " + c.getId()); for (A a : c.getA()) { System.out.println(" A: " + a.getId()); for (B b : a.getB()) { System.out.println(" B: " + b.getId()); } } } for (D d : dList) { System.out.println("D: " + d.getId()); for (A a : d.getA()) { System.out.println(" A: " + a.getId()); for (B b : a.getB()) { System.out.println(" B: " + b.getId()); } } } Abb. 2: Das Ausgabeprogramm für die Relationen A-B, C-A und D-A. for (D d : dList) { d.getA().size(); } Abb. 3: Initialisierung der D-A-Relation. Strategie und wählt dann zur Laufzeit das entsprechende Statement aus. Um die Anzahl der generierten Statements gering zu halten, werden nicht alle Statements SELECT * FROM <TABLE> WHERE <ID> IN (ID-1, … ID-I) für 1<=I<=N generiert, sondern nur für I aus N, N/2, N/4, N/16, …, 10, 9, 8, …, 1. Ist also beispielsweise die BatchSize N auf 500 eingestellt, so werden im Vorfeld die in Abbildung 1 dargestellten Statements erzeugt. Dies führt dazu, dass bei N=500 und M=497 7 Statements an die Datenbank geschickt werden (und zwar mit 250, 125, 62, 31, 15, 10 und 4 IDs). Fazit: Selbst bei einer optimalen BatchSize wird nur im Ausnahmefall genau ein Statement erzeugt! ORDIX news 3/2012 35 Java/JEE Links ►► [1] ORDIX news Artikel 03/2009 „Performance-Tests mit Hibernate (Teil III): Lazy und Eager Loading - ein guter Cache lädt nicht mehr als er muss“: http://www.ordix.de/images/ordix/onews_archiv/pdf/news0903.pdf ►► [2] ORDIX news Artikel 01/2012 „Hibernate für Fortgeschrittene (Teil I): Die Batch-Fetching-Strategie für Relationen richtig anwenden“: http://www.ordix.de/images/ordix/onews_archiv/1_2012/hibernate_batch_fetching_ strategie.html ►► [3] ORDIX news Artikel 02/2012 „Hibernate für Fortgeschrittene (Teil II): SubSelect oder BatchSize? Das ist hier die Frage“: http://www.ordix.de/images/ordix/onews_archiv/2_2012/hibernate_subselect.html ►► [4] Leseempfehlung: Java Persistence mit Hibernate von Gaving King, Christian Bauer, Jürgen Dubau haben und diese nacheinander ausgeben wollen (siehe Abbildung 2), so werden 4 Statements ge­ neriert, da zunächst die Relationen C-A, A-B, D-A und schließlich erneut A-B initialisiert werden. Wird hingegen zunächst die Relation D-A initialisiert (siehe Abbildung 3), so sind insgesamt nur noch 3 Statements nötig, um das gesamte Objektgeflecht zu laden. Mit dem ersten Statement wird D-A initialisiert, mit dem zweiten C-A und mit dem dritten Statement kann Hibernate alle A-B-Relationen initialisieren, unabhängig davon, ob das A-Objekt von C oder D referenziert wird. In einem aktuellen Projekt wurde zur Initialisierung der unterschiedlichen Relationen ein recht komplexes Verfahren implementiert, mit dessen Hilfe ein Objekt­ geflecht durchlaufen wird. Es nutzt den oben beschrieben Effekt aus und die Ergebnisse sind sehr zufriedenstellend, auch wenn die Konfiguration sehr kompliziert und aufwendig ist. Bild: © istockphoto.com | Blank 3d Cubes | teekid Unnötige Initialisierungen Wie in den vorangegangen Artikeln dieser Reihe bereits beschrieben, ist ein Nachteil dieser Vor­ gehensweise die Initialisierung zu vieler Relationen, die für die anstehenden Arbeiten überhaupt nicht benötigt werden. Insgesamt kann dies dann sogar zu einer Verschlechterung der Performance führen. Deshalb sollte diese Optimierungsstrategie mit Bedacht eingesetzt werden. Um den Fehler gering zu halten, kann natürlich die BatchSize auf einen kleineren Wert eingestellt werden. Es werden dann vielleicht zu viele Objekte geladen, doch bei einer kleinen BatchSize fällt das nicht zu sehr ins Gewicht. Eine andere Möglichkeit besteht darin, die A-Objekte, deren Relationen zu B nicht initialisiert werden sollen, mittels des Befehls evict aus der Session zu entfernen. Hierdurch bleiben sie unberücksichtigt, wenn die nicht ini­ tialisierten Relationen von Hibernate ermittelt werden, um das IN-Statement mit den entsprechenden IDs aufzufüllen. Wichtig ist aber auch die Reihenfolge, in der das Objektgeflecht durchlaufen wird Denn diese kann einen erheblichen Einfluss auf die Anzahl der generierten Statements haben. Das möchte ich an einem Beispiel mit drei One-To-Many-Relationen A-B, C-A und D-A verdeutlichen. Nehmen wir an, dass wir eine Liste mit C- und eine Liste mit D-Objekten geladen 36 ORDIX news 3/2012 Fazit In vielen Fällen kann das Setzen einer beliebigen BatchSize die Performance ausreichend verbessern. Aber wenn diese Maßnahme nicht den erhofften Erfolg gebracht hat, so muss genauer analysiert und müssen eventuell genauere Justierungen vorgenommen werden. Hierbei können die Informationen aus diesem Artikel helfen. Aber auch dann kann es ein recht langes Unterfangen sein, um die gewünschte Performance zu erzielen und können die dabei verwendeten Algorithmen relativ kompliziert werden. Andreas Maßmann ([email protected]) Datenbanken Zuckerbrot oder Peitsche, Oracle entwickelt MySQL weiter Cluster vs. Replikation von MySQL Wenn man heute von MySQL spricht, ist die Oracle Corporation meist der erste Gedanke. Was hat der IT-Gigant mit dem ehemaligen Konkurrenzprodukt vor? Hat MySQL das Potenzial konkurrenzfähig zu sein? Welche Möglichkeiten bietet MySQL für die Hochverfügbarkeit? Welche Einschränkungen müssen dabei beachtet werden? Antworten auf diese Fragen gibt der nachfolgende Artikel. Lebensgeschichte eines DBMS MySQL hat eine belebte Geschichte in den ersten zwanzig Jahren hinter sich. Ursprünglich wurde das RDBMS von der Firma MySQL AB im Jahre 1994 entwickelt. Ziel war es, das bereits vorhandene Datenbanksystem mSQL mit einer neuen, effektiveren Zugriffsmethode ISAM (Index Sequential Access Method) zu kombinieren. Nach den ersten Tests mussten die Entwickler allerdings feststellen, dass mSQL zu inperformant war und eine zu geringe Flexibilität aufwies. Aus diesem Grund wurde auf Basis der mSQL API eine neue SQL-Schnittstelle entwickelt und MySQL genannt. Meiner Meinung nach sprechen viele Fakten eher für den Erhalt von MySQL als OpenSource-Produkt. Sicher­ lich will Oracle MySQL nicht als Konkurrenz zum eigenen Oracle DBMS entwickeln. Allerdings war das auch noch nie das angestrebte Ziel von MySQL. Zudem hat Oracle durch die Übernahme, aus wirtschaftlicher Sicht, das eigene Kundenportfolio um zwei zusätzliche Marktsegmente ausgeweitet. Dazu zählen Web- und Nischendatenbanken. Es gibt immer einen größeren Fisch So stelle ich den Kunden oft eine Gegenfrage: Aus welchem Grund sollte Oracle die neugewonnenen Kunden durch Kommerzialisierung oder Einstellung des Projektes „MySQL“ verscheuchen? Besonders vor dem Hintergrund, dass MySQL als Konkurrenzprodukt zum Microsoft SQL Server für Oracle um Kunden kämpft. Im Jahr 2010, nur zwei Jahre nachdem die MySQL AB von Sun Microsystems übernommen wurde, kam es zu der Übernahme von Sun durch die Oracle Corporation. Durch beide Übernahmen hat sich für MySQL viel verändert. Die Community wurde gespalten und viele Kunden sind über die Zukunft des OpenSource-Produktes verunsichert. Durch diese Irrita­ tionen haben besonders die Anbieter anderer Distributionen profitiert. Sie entwickeln unabhängig auf Basis des MySQL-Codes das DBMS weiter. Zu den größten Vertretern zählen MariaDB und Percona. Nach der zweiten Übernahme dienten die ersten Maß­ nahmen sicherlich der Kosteneinsparung und Eingliederung von MySQL in das Oracle-„Universum“. So wurden umgehend nach der Übernahme einige Produkte und Entwicklungen eingestellt. Zu diesen zählte z.B. die vielversprechende Storage Engine Falcon. Diese wurde als direktes Konkurrenzprodukt zu der Storage Engine InnoDB konzipiert, welche schon damals zum Produktportfolio von Oracle gehörte. Zusätzlich wurde der Support neu konzipiert, so vervielfachte sich der Preis für den günstigsten Support von $ 600 auf $ 2.000 [4]. Die ungleichen Geschwister Hat Oracle mit dem Erwerb von MySQL einen Fehler gemacht? Hat das OpenSource-Produkt eine Zukunft in einem kommerziell orientierten Großkonzern? Diese Fragen bekommt man oft von MySQL-Stammkunden und Interessenten zu hören. Doch wie berechtigt sind solche Befürchtungen? Danach folgte die weitere Positionierung von MySQL durch die zuletzt veröffentlichten Versionen, diverse Ankündigungen und Pressemitteilungen. Die Community erwartete Neuerungen und Oracle lieferte sie. So verhalf der Konzern MySQL z.B. zu: • einem neuen Replikationsmechanismus (semi-synchron) • Thread Pooling, Optimierung für Mehrkernsysteme ORDIX news 3/2012 37 Datenbanken Das Verfahren benötigt mindestens zwei Systeme, ein produktives (Master) und ein nachgelagertes System (Slave). Auf dem Master wird gearbeitet und alle Änderungen werden in das sogenannte Binary-Log protokolliert. Der Slave liest (Relay-Thread) aus dem Binary-Log in ein eigenes Relay-Log. Aus dieser Protokollkopie werden die Transaktionen in die nachgelagerte Datenbank eingepflegt (SQL-Thread, siehe Abbildung 1). Abb. 1: Architekturen einer Replikation. • Neupositionierung und Weiterentwicklung des MySQL Cluster • Performance-Schema • Multi-Threaded-Slaves • Replikationsdelay Des Weiteren wurden in der neuesten Beta-Version Failover-Automatismen und die Global Transaction ID (GTID) implementiert. Beide Neuerungen er­ möglichen zusätzliche Architekturen und schaffen eine Unabhängigkeit zu externen Anwendungen. Das Zeichen, welches Oracle mit diesen und weiteren Neuerungen sendet, ist klar. MySQL bleibt und wird weiterentwickelt. Dies bedeutet also, dass in den kommenden Versionen auch Oracle-Know-how zur Konkurrenzfähigkeit von MySQL beiträgt. Stellenwert der Replikation Kommen wir nun zu den MySQL-internen Kontrahenten. Erfahrene Datenbankadministratoren ohne MySQL-Hintergrundwissen werden mit dem Begriff der Hochverfügbarkeit direkt an Cluster-Lösungen (z.B. Oracle RAC oder Informix Cluster) denken. Vielen MySQL-Administratoren hingegen kommt als erster Gedanke die Replikation in den Sinn. Hier ist zur Steigerung der Verfügbarkeit der bewährte MySQL-Replikationsmechanismus meist die erste Wahl. Auch betriebssystembasierte Ansätze erhalten in der Praxis oft den Vorzug vor dem MySQL Cluster. Dies liegt vor allem an dem einfachen und erprobten Mechanismus. 38 ORDIX news 3/2012 Dieser Mechanismus schafft eine Redundanz. Dadurch wird einem Datenverlust, bei einem Systemausfall, vorgebeugt. Weiterhin kann der nachgelagerte Server dazu verwendet werden um ein Backup zu erstellen. Der Vorteil liegt auf der Hand. Performancelastige Prozesse werden auf ein weiteres System verlagert, wodurch der Master nicht zusätzlich beeinträchtigt wird. Alternativ können die nachgelagerten Sys­ teme für Testzwecke verwendet werden. Erweiterung der MySQL-Replikation Schon immer zeichnete sich die MySQL-Replikation durch einen einfachen Aufbau, die flexiblen Einsatzmöglichkeiten und die hohe Transparenz des Verfahrens aus. Dennoch muss bei der Konzeptionierung einer hochverfügbaren Architektur mittels Replika­ tion unbedingt berücksichtigt werden, dass diese auf einem asynchronen Mechanismus aufbaut. Dies bedeutet, dass nicht sichergestellt werden kann, dass alle Transaktionen im Fehlerfall bereits repliziert wurden. Folglich ist ein Datenverlust nicht ausgeschlossen. Exakt diese Problematik wird durch die gerade aktuelle MySQL-Version 5.5 entschärft. Mittels der als Plug-In implementierbaren semi-synchronen Replikation. In Abbildung 2 ist das veränderte CommitVerhalten illustriert. Es wird deutlich, dass das führende System die Transaktion erst dann als erfolgreich bestätigt, wenn diese auch auf dem nachgelagerten System gespeichert wurde. Bei mehreren nachge­ lagerten Servern wird auf das erfolgreiche Eintragen von mindestens einem gewartet. Zwar erhöht die semi-synchrone Replikation die Sicherheit, eine 100%ige Garantie kann aber auch nicht gewährleistet werden. Dies liegt an dem konfigurierbaren automatischen Wechsel zur asynchronen Replikation, sodass im Fehlerfall möglicherweise nicht alle Transaktionen repliziert wurden. An dieser Stelle sei erwähnt, dass mit der Global Transaction ID, die für die kommende Ver­sion (5.6) angekündigt ist, der Mechanismus optimal ergänzt wird. Konflikte bei der Transaktionsverarbeitung wer- Datenbanken den gemindert. Die gewonnene Eindeutigkeit von Transaktionen ermöglicht dem Administrator zugleich gezielter fehlerhafte Transaktionen zu lokalisieren und ggf. zu korrigieren. Als Pünktchen auf dem „i“ sind weitere Architekturen, z.B. die Multi-Master-Topologie, einfacher realisierbar. Diese sind bisher nur über individuelle Implementierungen oder externe Anwendungen wie den Tungsten Replicator [3] möglich. /Client /InnoDB /Master /Slave Transaktion Speichern Commit Speichern Stellenwert des MySQL Cluster Commit Mit der Oracle-Übernahme hat sich auch für den MySQL Cluster einiges verändert. Trotzdem fällt insgesamt die Wahl eher selten auf die MySQL-eigene Cluster-Variante. Zwar ist der MySQL Cluster nun ein eigenständiges Produkt und wird von Oracle mit einer Hochverfügbarkeit von 99,999 % beworben. Doch inwieweit kann man diesen Marketingaussagen trauen? Und wieso ist die Verbreitung vergleichsweise gering? Commit Commit ►► rote Linie = wird definiert durch GLOBAL rpl_semi_sync_master_timeout Eine weitere Änderung ist der Verlauf der Linie, der wie in der Abbildung dargestellt, geändert werden muss. Abb. 2: Commit-Verhalten der semi-synchrone Replikation. Die Antworten auf diese Fragen können nur individuell gegeben werden. Dennoch lassen sich ein paar allgemeine Aussagen treffen. Um die MySQL-Cluster-Technologie zu verwenden müssen viele Faktoren stimmen. Zum einen muss den Administratoren klar sein, dass durch die Shared-Nothing-Methode, auf welche die MySQLCluster-Technologie setzt, Nachteile und Einschränkungen entstehen. Zum Einen bewirkt die Partitionierung der Daten­knoten zunächst eine Reduktion der Hochverfügbarkeit. Da einfach betrachtet, die Daten auf den Datenknoten verteilt werden. Zum Anderen ergeben sich in der Storage Engine NDB gewisse Einschränkungen, die im Folgen­ den erläutert werden. Dies alles sind Punkte, die Adminis­tratoren oft vor der Verwendung des MySQL Cluster abschrecken. Doch was bedeuten diese Einschränkungen genau? Anforderungen an das System Abb. 3: Architektur des MySQL Cluster. Einer der größten Unterschiede zu anderen Datenbank-Cluster-Lösungen ist, dass MySQL auf einer Shared-Nothing-Architektur aufbaut. Anders als beim Oracle RAC setzt MySQL auch bei den Storage Nodes auf eine getrennte Struktur (siehe Abbildung 3). Aus dieser Architektur resultiert der große Vorteil der Lastverteilung, allerdings steigt hierdurch auch der Verwaltungsaufwand. Vor dem Hintergrund des CAPTheorems wird dies deutlicher (siehe Abbildung 1 des Artikels „Was sind NoSQL-Datenbanken?”, Seite 12). Zuerst betrachten wir die Konsistenz am Beispiel einer modifizierten Transaktion. Diese hat die Anforderung exklusiv auf den Datenbeständen zu arbeiten, was in der Regel durch Sperren realisiert wird. Da beim MySQL Cluster kein gemeinsamer Speicher vorhanden ist (Shared Nothing), resultiert daraus ein höherer Kommunikationsaufwand zur Koordination der Zugriffe. Eine verteilte Datenhaltung wirkt konkurrierend in einem Spannungsdreieck aus Konsistenz, Verfügbarkeit und Partitionen. Ein weiterer Aspekt ist die Partitionierung oder auch Partitionstoleranz. Bei MySQL muss auf das richtige Gleichgewicht zwischen Knotengruppen und Storage ORDIX news 3/2012 39 Datenbanken root> SOURCE /usr/local/mysql/share/ndb_dist_priv.sql; root> CALL mysql.mysql_cluster_move_privileges(); Abb. 4: Übernahme von Systemtabellen in den Cluster. Glossar CAP-Theorem Beschreibt das Spannungsverhältnis zwischen den drei Systemeigenschaften Konsistenz (C), Verfügbarkeit (A) und Partitionierung (P). DRBD Distributed Replicated Block Device ─ Ein Festplattenreplikationssystem unter Linux. Die Replikation erfolgt über das Netzwerk. Knotengruppe Eine Knotengruppe bezeichnet einen Verbund von Storage Nodes. Innerhalb dieser Gruppe werden die Daten durch Replizierung redundant vorgehalten. Management Node Node zur Verwaltung und Kontrolle der anderen Knoten. Node Der Begriff Node (Knoten) bezeichnet einen einzelnen Rechner in einem Cluster. Oftmals ist ein Node mit einer bestimmten Aufgabe betraut. NoSQL-Datenbanken Datenbanken, die einen nicht-relationalen Ansatz verfolgen und damit mit der langen Geschichte von relationalen Datenbanken brechen. Shared Nothing Jeder Knoten verfügt über eigene Ressourcen. Zu diesen zählen der Arbeitsspeicher, Datenträger aber auch der Prozessor. Storage Node Node zum Schreiben und Lesen von Daten. SQL-Node Node für die Annahme und Verarbeitung der Anfragen von Applikationen und Usern. Nodes geachtet werden. Oberhalb der Knotengruppen werden die Tabellen durch Partitionierung auf die Knotengruppen verteilt. Innerhalb der Knotengruppen werden die Daten redundant auf den zugehörigen Storage Nodes vorgehalten. Erst der richtige Mix gewährleistet die geforderte Verfügbarkeit. Bei der Erweiterung des Cluster um neue Knotengruppen tut sich MySQL derzeit noch etwas schwer. So müssen bestehende Tabellen reorganisiert werden, damit sie verwendet werden können. Leider entsteht durch eine Reorganisation auf jeden Fall Ausfallzeit, die sich allerdings nicht vermeiden lässt. Was sind die Stärken und Schwächen Die größten Vor- und Nachteile von MySQL Cluster resultieren aus der Storage Engine. Zu den Vorteilen zählen unter anderem die performanten Schreib- und 40 ORDIX news 3/2012 Lesezugriffe. Aber auch die direkte Verwendung des Cluster über eine NoSQL-Schnittstelle (MemcachedAPI) zählt zu den Vorzügen. Die gravierendste Schwäche ist die Anforderung sämtliche Indexdaten im Hauptspeicher halten zu müssen (RAM >= Summe der Indexdateien). Darüber hinaus sind im aktuellen Release immer noch keine ForeignKey-Beziehungen darstellbar. Diese beiden Nachteile zählen in der Regel zu den Hauptgründen, wieso die Entscheidung gegen den MySQL Cluster getroffen wird. Erweiterungen des MySQL Cluster Neuerungen des MySQL Cluster beheben leider nicht die angesprochenen Begrenzungen und Eigenarten, trotzdem lohnt sich ein Blick auf das neue Release. Ein besonders großes Augenmerk legt Oracle auf die Performance von umfangreichen tabellenüber­ greifenden Statements. Bisher musste ein SQL Node die Ergebnismengen zusammenführen und identische Anfragen mehrmals versenden. Durch die Neuerung Adaptive Query Localization (AQL) wurde dieser Ablauf komplett überarbeitet. Mit AQL wird die Abfrage an den Storage Node gesendet, dieser fügt die parti­ tionsübergreifenden Informationen zusammen und liefert sie gebündelt zurück. Dadurch wird die Kom­munikation verlagert und die Storage Nodes koordinieren sich untereinander. Eine weitere Neuerung ist die angesprochene NoSQLAPI, die schon länger für den MySQL Cluster existiert, bisher aber nie in das Produkt integriert wurde. Neu ist auch, dass es durch ein Skript ermöglicht wird, die Zugriffsrechte zentral pflegen zu können. Dies ist durch die Übernahme von mysql-Systemtabellen in den Cluster möglich (user, db, tables_priv, colums_priv & prcos_priv). Das Skript, welches eine zentrale Account-Verwaltung ermöglicht, konvertiert die angegebenen Tabellen der System­ datenbank in die Engine NDB. Dadurch werden die Tabellen nicht mehr lokal sondern im Cluster ge­speichert (siehe Abbildung 4). Abschließend sei an dieser Stelle noch auf eine wichtige Neuerung hingewiesen: Neue Knotengruppen können nun im laufendem Betrieb hinzugefügt werden! Dies ist durch einen Rolling-Restart ohne Ausfallzeit möglich. Achtung: Eine Reorganisation ist trotzdem notwendig. Dieser Entwicklungstrend macht deutlich, dass Oracle an dem MySQL Cluster ein hohes Interesse hat. Datenbanken Oracle stärkt somit das Produkt und versucht auf die Bedürfnisse der bestehenden Cluster-Kunden einzugehen. Um die Einsatzmöglichkeiten zu erweitern wird derzeit an der Erweiterung für Foreign-KeyBe­ziehungen gearbeitet. Diese Neuerung soll mit dem kommenden Release des Cluster verfügbar sein [5]. Links ►► [1] ORDIX news Artikel 03/2005 „Nimm zwei - Replikation unter MySQL“: http://www.ordix.de/images/ordix/onews_archiv/3_2005/mysql_replikation.html ►► [2] ORDIX news Artikel 02/2006 „Spieglein, Spieglein... - 100 % MySQL - Wie richte ich ein Cluster ein?“: http://www.ordix.de/images/ordix/onews_archiv/2_2006/mysql_cluster.html Fazit Der MySQL Cluster hat seine Vorzüge und besonders die Erweiterungen machen die Verwendung für Unternehmen interessant. Vorausgesetzt, das System ist mit den Einschränkungen des Cluster kompatibel. Somit ist der Cluster auch aktuell noch mehr für individuelle Anwendungen geeignet. Aufgrund der höheren Flexibilität und der einfacheren Handhabbarkeit werden sich wahrscheinlich auch in Zukunft viele Kunden für die Replikation entscheiden. Für andere Kunden, die alternative HV-Lösungen suchen, besteht zudem die Möglichkeit auf der Betriebssystemebene Lösungen (DRBD) zu finden. ►► [3] ORDIX news Artikel 01/2012 „OpenSource Tungsten Replicator - Replication for Free“: http://www.ordix.de/images/ordix/onews_archiv/1_2012/opensource_tungsten_ replicator.html ►► [4] Artikel bei Computerworld: http://www.computerworld.com/s/article/9196219/Oracle_defends_MySQL_ support_pricing_changes ►► [5] Oracle's MySQL Blog: https://blogs.oracle.com/MySQL/entry/mysql_cluster_7_3_labs Besonders positiv ist zu erwähnen, dass sich beide Produkte gegenseitig bereichern. Dies bedeutet, dass beide voneinander lernen und Weiterentwicklungen in beiden Produkten stattfinden. So wird derzeit das NoSQL-Schnittstellenkonzept auch für InnoDB-Tabellen entwickelt und steht damit auch in der Replikation zur Verfügung. Steffen Kanne ([email protected]) Seminarempfehlung: MySQL Administration ►► Informationen/Online-Anmeldung: http://training.ordix.de/siteengine/action/load/kategorie/Datenbanken/nr/350/index.html In diesem Seminar lernen Sie, die Open Source Datenbank MySQL unter Unix/Linux zu installieren und zu verwalten sowie Daten zu selektieren und zu manipulieren. Sie erhalten einen Überblick über die Datenbankadministration und SQL-Besonderheiten, die durch praktische Übungen vermittelt werden. Das Seminar wird standardmäßig mit einem Linux System durchgeführt. Seminarinhalte MySQL: Support und Lizenzierung, Informationsquellen Installation und Einführung MySQL-Datenbankadministration Client/Server-seitige Skripte und Dienstprogramme MySQL-Log-Dateien • Backup & Recovery-Konzepte • Replikation bei MySQL • Optimierung • SQL-Besonderheiten, Transaktionen und Sperren, Anfragen-Cache • MySQL Proxy • Vertiefung der Theorie durch praktische Übungen und Beispiele • • • • Termine 24.09.- 26.09.2012in Wiesbaden 26.11.- 28.11.2012in Wiesbaden Seminar-ID: DB-MY-01 Dauer: 3 Tage Preis pro Teilnehmer: 1.190,00 € (zzgl. MwSt.) Frühbucherpreis: 1.071,00 € (zzgl. MwSt.) ORDIX news 3/2012 41 Betriebssysteme Skills für den Applikationssupport Applikationsmanagement ist Management Neben den klassischen Aufgaben des System- oder Datenbankadministrators haben sich in den letzten Jahren weitere vielfältige Aufgaben im Applikationsbetrieb aufgetan. Dieser Artikel zeigt die Aufgabenstellungen und die benötigten Skills der Mitarbeiter auf, die in diesem Bereich tätig sind. Technikerwissen bis ins Detail Früher wurden von dem Administrator nur Kenntnisse im Bereich des installierten Servers gefordert. Die Dienste und Applikationen wurden direkt vom Adminis­ trator mit aufgesetzt und verwaltet. Dies hat sich jedoch inzwischen geändert. Viele Appli­ kationen sind heute wesentlich komplexer und auf großen Serverfarmen installiert. Nur selten bestehen Anwendungen aus einer Komponente (z.B. Webserver), vielmehr werden viele spezialisierte Dienste auf einem oder mehreren Servern zur Verfügung gestellt. In so einer Umgebung ist eher ein Generalist als ein Spezialist gefragt. Eine typische Umgebung könnte folgendermaßen aus­sehen: • Betriebssysteme wie Solaris, AIX oder Linux, Hierdurch wird schnell deutlich, dass sich ein Mit­ arbeiter im Applikationsbetrieb nicht nur mit der An­ wendung an sich auskennen muss, sondern auch entsprechend Know-how in verschiedenen Diensten haben muss. Speziell die Beziehungen und die Kommunikation zwischen diesen Komponenten sind beim Betrieb zu berücksichtigen. Neben den fachlichen Skills ist also ein guter Überblick über die komplette Anwendungslandschaft notwendig. Alle Anwendungen und deren Schnittstellen müssen bekannt sein. Deshalb sind auch grundlegende Kenntnisse zu Java/JEE oder XML vorteilhaft. Nicht zuletzt ist auf jeden Fall auch eine gute Kenntnis des zugrunde­ liegenden Betriebssystems (Unix-Derivate, Windows Server oder auch noch Host-Systeme) notwendig. aber natürlich auch Windows Server • Datenbanken wie Oracle, Informix, DB2 und MSSQL • Applikationsserver wie WebSphere, JBoss oder Tomcat, um einen Container für die Applikationslogik zu liefern. Je nach Architektur (n-Tier) sogar mehrere. • MessageQueues wie MQSeries, um Daten zwischen verschiedenen Diensten oder Partnern auszutauschen. Dies geschieht z.B. per XMLDateien. • Jobsteuerung wie UC4, um Aufgaben anhand verschiedener Ereignisse zu starten und zu über­wachen. • Virtualisierungssoftware wie VMWare ESX, Solaris Container, LDOM, LPAR und Hyper-V, um mehrere Server zu konsolidieren. 42 ORDIX news 3/2012 Rhetoriker - die richtige Ansprache treffen Bereits die Ausbildung dieser technischen Skills bedeutet für den Mitarbeiter im Betrieb eine hohe Anforderung. Aber das ist ja erst die halbe Wahrheit. Im Applikations­betrieb ist man auch direkter Ansprechpartner für die Endanwender und Kunden. Bei Problemen mit den Applikationen muss somit auch im Bereich Help Desk gearbeitet werden. Dies erfordert wiederum rhetorische Fähigkeiten. Auch wegen der engen Zusammenarbeit mit den beteiligten technischen Abteilungen wie Netzwerk, Datenbanken oder Systembetreuung ist sicherlich eine hohe Kommunikations­fähigkeit wichtig. Dabei muss oft zwischen den Anwendern und den Spezialisten vermittelt werden. Eine hohe Kundenorientierung ist deshalb unabdingbar. Betriebssysteme Manager - Aufgaben richtig koordinieren Gerade in größeren Umgebungen lässt sich die Zusammenarbeit nicht mehr direkt nur „über den Schreibtisch“ bewerkstelligen. Hier bieten sich natürlich die Methoden und Vorgehensweisen im Bereich ITIL an. Konkret handelt es sich um folgende Aufgaben: • Bearbeitung von Störungen (Incidents) • Analyse von fachlichen Störungen (Problems) • Behebung der Störungen durch Anpassungen des Systems (Changes) • Aufbau neuer Systeme für die Produktion oder im Testumfeld (Deployment) • Beauftragungen von Firewall-Freischaltungen in Richtung Netzwerkservice • Beauftragungen von Storage-Erweiterungen, Benutzereinträgen und Konfigurationsan­ passungen in Richtung Systemadministration • Beauftragungen von Tablespace-Erweiterungen, Rollenanpassungen oder Exporte in Richtung Datenbankadministration • Beauftragungen von Backup/Restore • Unterstützung von Analysen seitens der Entwicklung Glossar ITIL IT Infrastructure Library ─ Sammlung von Best Practices in einer Reihe von Publikationen, die eine mögliche Umsetzung eines IT-ServiceManagements (ITSM) beschreiben. Fazit Oft werden die Mitarbeiter im Applikationssupport als „Mädchen für alles“ bezeichnet. Tatsächlich sind sie in den meisten Unternehmen eher Manager der komplexen Anwendungslandschaft. Daher sollte auch eher von Applikationsmanagement als von Applikationssupport gesprochen werden. Durch die vielfältigen Aufgaben und Kommunikationswege werden die Softskills somit zu einem entscheidenden Erfolgsfaktor bei den Mitarbeitern. Unsere Berater aus dem Bereich Applikations­ management sind genau für die beschriebenen Aufgabenbereiche ausgebildet. Lassen Sie sich von uns unterstützen oder beraten. Oder geben Sie Ihren eigenen Mitarbeitern mit unserem Seminar „Unix Aufbau­seminar für Datenbank- und Applikationsbetreuer“ eine gute Basis für die effektive Betreuung Ihrer Dienste. Aus diesen Aufgaben ergibt sich, dass die Mitarbeiter oftmals mehr mit der Koordination und der Kommunikation beschäftigt sind, als mit der Applikation an sich. Der Anteil an organisatorischen und koordinativen Aufgaben ist meist deutlich höher als bei anderen Betriebsgruppen. Die breite Fächerung der Aufgaben erfordert eine hohe Flexibilität bei jedem Mitarbeiter und ein professionelles Zeitmanagement. Carsten Griese ([email protected]) Seminarempfehlung: Unix Aufbauseminar für Datenbank- und Applikationsbetreuer ►► Informationen/Online-Anmeldung: http://training.ordix.de/siteengine/action/load/kategorie/Betriebssysteme/nr/1115/index.html In diesem Seminar vermitteln wir Ihnen vertiefende Kenntnisse aus dem Unix-Umfeld. Aufbauend auf den Grundlagen werden hier Techniken gezeigt, um Log-Dateien auszuwerten und das System zu monitoren. Außerdem werden Themen besprochen, die für die Einbindung von Applika­tionen und Datenbanken in ein Unix-System relevant sind. Seminarinhalte Wiederholung Analyse-Tools Einführung Shell-Programmierung Report-Erstellung aus Logfiles mit awk Automatisierung von Wartungsarbeiten mit cron Aufbau (Raw)-Devices/Aufbau File-Systeme Grundlagen Netzwerk Sicherheitsrelevante Themen Grundlagen Storage Diagnose-Tools zur Analyse des Systems Systemparameter (ipcs) Vertiefung der Theorie durch praktische Übungen und Beispiele • • • • • • • • • • • Termine 05.11.- 09.11.2012in Bielefeld 19.11.- 23.11.2012in Wiesbaden Seminar-ID: BS-25 Dauer: 5 Tage Preis pro Teilnehmer: 1.790,00 € (zzgl. MwSt.) Frühbucherpreis: 1.611,00 € (zzgl. MwSt.) ORDIX news 3/2012 43 Datenbanken Enterprise Manager Oracle Cloud Control 12c (Teil II) Die Wolke beginnt zu schweben Nach der Vorstellung der neuen Funktionen in der letzten ORDIX news [1] be­ schäftigt sich der zweite Teil dieser Reihe mit der Einrichtung des Oracle Cloud Control 12c. Hierfür wird der Installa­tionsprozess betrachtet und die Varianten der neuen Installation aufgezeigt. Vorarbeiten für die Installation Grundlegende Voraussetzung für die Nutzung von Cloud Control sind für alle Komponenten (OMS / Agent / Repository-Datenbank) zusammen mindestens 6 GB Arbeitsspeicher und 65 GB Speicherplatz. Der Bedarf an Arbeitsspeicher und Speicherplatz variiert zusätzlich mit der Anzahl der zu verwalteten Zielsys­ teme in Cloud Control. Für eine erfolgreiche Installation des Oracle Cloud Control Servers wird die aktuelle Version 12.1.0.1 mit dem Bundle Patch 1 benötigt. In dieser Ver­sion sind bereits einige Bugs der ersten Oracle Cloud Control Version gefixt. Die aktuelle Version kann im Technetwork von Oracle heruntergeladen werden [2]. Zur Zeit (Stand August 2012) steht diese Version für Linux (32/64-Bit), Windows (64-Bit), Solaris SPARC/x86-64 44 ORDIX news 3/2012 und IBM AIX on POWER Systems (64-bit) zur Ver­ fügung Ohne Repository geht nichts Die Abbildung 1 zeigt die Gesamtstruktur von Cloud Control. Das benötigte Repository für den Oracle Cloud Control Server muss im Vorfeld angelegt und über definierte Ports zugänglich sein. Folgende Datenbankversionen sind von Oracle als Repository zertifiziert: • 1 0.2.0.5.0 Enterprise Edition • 11.1.0.7.0 Enterprise Edition oder höher • 11.2.0.1.0 Enterprise Edition oder höher Hier empfiehlt es sich immer die aktuellste Version zu nehmen. Bei älteren Versionen wie 11.1.0.7 müssen zwingend Patches für vorhandene Bugs eingespielt werden. Sämtliche Detaileinstellungen bei der Er­ stellung können unbeachtet bleiben. Datenbanken Der Installer kontrolliert bei der Installation die Verbindung zu der Datenbank und erstellt Skripte, um Einstellungen im System für die Benutzung des Oracle Cloud Control zu optimieren. Für die Ausführung dieser Skripte werden zwingend root-Rechte benötigt. Plug-Ins für die Wolke Die Bedeutung von Plug-Ins haben sich mit Oracle Cloud Control 12c grundlegend geändert. Alle Neuerungen, welche im Rahmen der Self-Update-Funktion bereitgestellt werden, stellen Plug-Ins dar. Im Rahmen der Installation bietet Oracle Cloud Control von sich aus verschiedene Plug-Ins zur Auswahl. Es werden per Default die Plug-Ins für Database, Exadata, Fusion Middleware und MOS installiert. Folgende Plug-Ins stehen bei der Installation zusätzlich zur Verfügung: • • • • • • • • Exalogic Elastic Cloud Infrastructure IBM DB2 Database Oracle Chargeback and Capacity Planning Oracle Cloud Application Abb. 1: Struktur von Cloud Control. Oracle Fusion Applications Oracle Siebel Oracle Virtualization Sybase ASE Database Weitere Plug-Ins können aus dem Oracle Technetwork heruntergeladen werden [3]. Außerdem gibt es eine große Menge an Drittanbietern, die Plug-Ins entwickeln und zur Verfügung stellen. So gibt es z.B. Möglichkeiten Plug-Ins für IBM WebSphere, Apache oder auch diverse Hardware-Plug-Ins zu installieren. Die Installation von Plug-Ins für Oracle Cloud Control kann im Online-Modus mit einer direkten Anbindung an das Internet erfolgen oder alternativ im OfflineModus. Dabei muss ein separater Client die entsprechenden, von Cloud Control vorgegebenen, Plug-Ins herunterladen und per Kommando einspielen. Installationsarten der Wolke Mit Oracle Cloud Control 12c gibt es die Möglichkeit zwischen einer einfachen und einer erweiterten Installation zu wählen (siehe Abbildung 2). Bei der einfachen Installation werden nur grund­ legende Passwörter für den Benutzer Weblogic, Nodemanager, SYSMAN und die OMS-Anmeldung Abb. 2: Einfache Installation. ver­geben. Außerdem werden Details für die Anmeldung am Enterprise Manager Repository erwartet. Auch ein Hauptverzeichnis für das Cloud Control und für die Fusion Middleware, welche Cloud Control be- ORDIX news 3/2012 45 Datenbanken Die Alternative zur einfachen ist die erweiterte Installation. Bei dieser Variante besteht die Möglichkeit, jede Komponente im Detail zu konfigurieren. Bei der erweiterten Installation erfolgt zunächst eine Auswahl der Plug-Ins. Diese Auswahl kann kontrolliert und im Vorfeld auf die eigenen Be­dürfnisse angepasst werden. Danach wird der Weblogic-Server mit den Benutzern „weblogic“ und „nodemanager“ konfiguriert. Nach der erfolgreichen Vergabe von Passwörtern werden die Verbindungsinformationen für die als Repository vorgesehene Datenbank eingegeben. Der Verbindungsaufbau zu der Datenbank muss zwingend funktionieren, sonst wird die Installationsroutine an dieser Stelle nicht weiter fortfahren. Nach dem erfolgreichen Verbindungsaufbau müssen Speicherorte zu den von Cloud Control benötigten Tablespaces angegeben werden. Port-Konfiguration Abb. 3: Port-Konfiguration. Glossar MOS My Oracle Support ─ Wissen- und Supportdatenbank für Oracle Produkte Repository Benötigte Oracle-Datenbank, in die das Cloud Control seine Daten ablegt. Nach erfolgreicher Konfiguration der Komponenten des Cloud Control müssen am Ende der Installation bestimmte Ports für eine reibungslose Kommunikation nach außen freigegeben werden. In der jeweiligen Umgebung muss dann gezielt geprüft werden, welche Ports für den Oracle Cloud Control frei verfügbar sind. In der Abbildung 3 sehen Sie ein Beispiel für alle benötigen Ports. Diese können an die jeweiligen Anforderungen im Unternehmen angepasst werden. SYSMAN Der Benutzer SYSMAN ist der Hauptadministrator des Cloud Control. Links ►► [1] ORDIX news Artikel 02/2012 „Enterprise Manager Oracle Cloud Control 12c (Teil I) - Über den Wolken...”: http://www.ordix.de/images/ordix/onews_archiv/2_2012/oracle_cloud_control.html ►► [2] Download-Seite des Oracle Technetwork: http://www.oracle.com/technetwork/oem/enterprise-manager/downloads/index.html ►► [3] Download-Seite der Plug-Ins und Conectors auf Oracle Technetwork: Fazit Die Installation ist im Vergleich zu den älteren Ver­ sionen einfacher geworden. Die Routine installiert wesentliche Komponenten, die in den Vorgänger­­ver­ sionen manuell vorinstalliert sein mussten. Dadurch werden dem Administrator Vorarbeiten abgenommen und die Installation gestaltet sich daher erheblich einfacher. Im nächsten Artikel dieser Reihe werden wir Ihnen die Möglichkeiten für einen Upgrade eines 10er bzw. 11er Grid Control auf Cloud Control vorstellen. http://www.oracle.com/technetwork/oem/extensions/index.html#OEM12c Bild: © freepik.com | gestures psd material | zcool.com.cn © deviantart.com | Clouds Set icons PSD | JackieTran nötigt, muss angegeben werden. Das Patchen des Weblogic-Server, wie in früheren Versionen, entfällt hier komplett. Die weitere Konfiguration der Komponenten übernimmt Cloud Control selbst. 46 ORDIX news 3/2012 Carsten Hummel ([email protected]) Aktuell ? Rätsel Larry im Knobelfieber Im Urlaub ist Larry auf den Geschmack gekommen: Knobeln macht richtig Spaß! Um seine Kollegen auch davon zu überzeugen, hat er sich einen kleinen Wettbewerb ausgedacht. Drei seiner Kollegen sollen sich hintereinander in einer Reihe aufstellen. Dann klebt Larry ihnen jeweils einen farbigen Zettel auf den Rücken. Larry sagt nun folgendes: "Der Vordere von euch sieht keinen Zettel, der Mittlere sieht nur den Zettel des Vorderen und der Hintere kann nur die Zettel der anderen beiden sehen. Ich hatte fünf Zettel zur Auswahl: zwei rote und drei weiße. Derjenige von euch, der mir die Farbe seines Zettels sagen kann, dem kaufe ich ein Stück Kuchen. Sollte er allerdings falsch liegen, bezahlt er mir ein Stück Kuchen." Seine Kollegen knobeln. Fünf Minuten vergehen. Dann ruft der vordere Kollege, der keinen Zettel sehen kann: "Mein Zettel ist weiß!" Können Sie Larry helfen? Larry freut sich auf Ihren Lösungsvorschlag. Senden Sie bis zum 15. Oktober 2012 Ihre Antwort an [email protected]. Larry's Urlaub ist vorbei und er hat auch noch etwas gelernt! Larry bedankt sich bei den vielen Einsendern für die richtige Lösung aus der letzten Ausgabe. Den entsprechenden Lösungsweg für Larry´s Aufgabe finden sie unten. Larry belohnte die schnellsten Einsender: Joachim Hellriegel, Thomas Oguntke, Christian Krone, Andreas Denke Wer muss den Kuchen bezahlen und warum? Lösung Larry Rätsel 2/2012: Der Fluss ist 200 Meter breit. Beim ersten Zusammentreffen haben die Schwimmer 80 bzw. (B-80) Meter (mit B = Breite des Flusses) zurück­ gelegt; beim zweiten Zusammentreffen sind es (B+40) bzw. (2B-40) Meter. Aus der Summe der jeweiligen Werte pro Zeitpunkt (B bzw. 3B) ergibt sich, dass die Strecke zwischen Start und zweiten Zusammentreffen dreimal so lang sein muss wie die Strecke bis zum ersten Zusammentreffen. Somit gilt also für jeden Schwimmer dreimal die erste Strecke ist gleich der zweiten ... und so erhält man eine Gleichung mit einer Unbekannten, etwa für den ersten Schwimmer 3*80=B+40, und am Ende B=200 Meter. ORDIX news 3/2012 47 Projekt-/IT- Management Eine Frage der technischen & sozialen Kompetenz TECHNISCHE KOMPETENZ SOZIALE KOMPETENZ Das Wissen über bewährte Methoden, Vorgehensweisen und Systematiken ist in allen Bereichen des Projekt- und IT-Managements eine wichtige Basis für den Erfolg. In allen Vorhaben im Bereich des Projekt- und IT-Managements spielt der Faktor „Mensch“ eine Schlüsselrolle. Daher ist eine hohe Sozialkompetenz ein immer wichtiger werdender Erfolgsfaktor. Egal, ob Sie ein Projekt zielgerichtet umsetzen wollen, eine IT-Strategie entwickeln möchten, eine IT-Architektur gestalten müssen oder IT-Prozesse etabliert werden müssen, immer geht es um das „gewusst wie?“. Egal, ob Sie Krisen bewältigen müssen, Konflikte lösen oder Teams führen wollen, immer sind „Social Skills“ gefordert. UNSERE SEMINARE: UNSERE SEMINARE: ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ IT-Projektmanagement Agiles Projektmanagement mit SCRUM E-Business IT-Architekturen IT-Strategie IT-Risikomanagement IT-Prozessmanagement IT-Management IT-Projektcontrolling IT-MANAGEMENT IT-PROJEKTMANAGEMENT SOZIALE KOMPETENZ Krisenmanagement in Projekten Verhandlungstechniken Konfliktmanagement Social Skills für IT-Berater | IT-Manager Projekte souverän führen Strategien effizient entwickeln Systemische Führung IT-Management Soft Skills TECHNISCHE KOMPETENZ IT-SEMINARE Aktiengesellschaft für IT-Consulting, IT-Management, IT-Services und Software-Entwicklung Kreuzberger Ring 13 | 65205 Wiesbaden | Tel.: 0 611 / 77840-00 | Fax: 0180 / 1 67 34 90 Aktiengesellschaft für Software-Entwicklung, Schulung, Beratung und Systemintegration Kreuzberger Ring 13 | 65205 Wiesbaden | Tel.: 0 611 / 77840-00 | Fax: 0180 / 1 67 34 90 WWW.CONIATOS.DE WWW.ORDIX.DE