Donnerstag, Februar 10, 2011

Pro Oracle SQL

Kaum jemand schreibt so fundierte Rezensionen zu Oracle-Fachbüchern wie Charles Hooper. Sehr lesenswert ist beispielsweise seine nicht unbedingt schmeichelhafte, aber in jedem Fall gut begründete Besprechung des Buchs Oracle Tuning: The Definitive Reference Second Edition, die mit der Überschrift "1,100 Page True-False Quiz, 'Definitive' is Left as an Exercise for the Student" einsetzt. Für mich sind Hoopers Einschätzungen völlig nachvollziehbar - wobei er in der Regel zu durchaus positiven Beurteilungen kommt. Das Buch Pro Oracle SQL habe ich kürzlich aufgrund einer positiven Hooperschen Besprechung erworben, und will hier jetzt ein paar Eindrücke festhalten. Erschienen ist der Band 2010 bei Apress - und das allein kann schon als erster Hinweis auf gehobene Qualität gesehen werden, denn mir ist kein wirklich schlechtes Oracle-Buch bekannt, das in diesem Verlag erschienen wäre. Auch die Liste der Autoren, die jeweils ein oder mehrere Kapitel beigetragen haben, ist vielversprechend: Karen Morton, Kerry Osborne, Robyn Sands, Riyaj Shamsudeen und Jared Still - fast alles Blog-Autoren, deren Artikel ich schon seit längerer Zeit verfolge. Alle Autoren machen ausgiebig Gebrauch von praktischen Beispielen, wodurch die Aussagen überprüfbar werden und besser nachvollzogen werden können. Im einzelnen werden folgende Themen behandelt:
  • 1 Core SQL (K. Morton): knappe Einführung in sqlplus und kurze Vorstellung der grundlegenden Syntaxelemente von SQL.
  • 2 SQL Execution (K. Morton): Erläuterungen zur Architektur des Oracle Servers, der Verarbeitung von Queries und einiger interner Transformationen (Subquery Unnesting, Predicate Pushing etc.); die Erklärungen sind zutreffend, aber ich bin mir nicht ganz sicher, ob die unterschiedlichen Themen so recht zusammen in ein Kapitel passen.
  • 3 Access and Join Methods (K. Morton): Darstellung von Zugriffs- und Join-Möglichkeiten. Ein klar strukturiertes Kapitel mit fundierten Erläuterungen.
  • 4 SQL is About Sets (K. Morton): ein kurzes Plädoyer für satzorientiertes Denken (im Gegensatz zu prozeduralem) bei der Lösung von SQL-Fragestellungen. Ich denke, das gehört zu den Dingen, die auch Tom Kyte mit schöner Regelmäßigkeit erwähnt.
  • 5 It's About the Question (K. Morton): noch ein Plädoyer, diesmal dafür, Fragen zu analysieren statt SQL-Queries. Wieder ein Gedanke, den auch Tom Kyte häufig formuliert. Mir passiert es leider immer noch gelegentlich, dass ich Queries erst optimiere, ehe ich erkenne, dass sie inhaltlich nutzlos sind.
  • 6 SQL Execution Plans (K. Morton): eine solide Einführung, aber das entsprechende Kapitel in Christian Antoginis Buch Troubleshooting Oracle Performance ist besser, was sicher auch an den unterschiedlichen Zielsetzungen der Bücher liegt.
  • 7 Advanced Grouping (J. Still): knappe Darstellung einfacher Gruppierungen und der neueren Erweiterungen des Sprachumfangs über CUBE, ROLLUP und die ergänzenden Hilfsfunktionen. Nicht schlecht, aber doch ziemlich knapp. Mir haben die entsprechen Beiträge Rob van Wijks noch etwas besser gefallen.
  • 8 Analytic Functions (R. Shamsudeen): noch eine solide, aber auch ziemlich knappe Einführung - bei AskTom findet man Beispiele für so ziemlich jede denkbare Verwendung von Analytics. Am Ende des Kapitels findet sich die Aussage, dass ein serieller Prozess nicht mehr als 5% und ein parallelisierter Zugriff nicht mehr als 30% der PGA-Ressourcen nutzen kann (S. 250) - und das stimmt seit 10.2 nicht mehr, wie Joze Senegacnik gezeigt hat. Das ist allerdings so ungefähr der einzige sachliche Fehler, den ich im Buch gefunden habe.
  • 9 The Model Clause (R. Shamsudeen): kurze Einführung der Model Clause, mit der ich immer noch meine Schwierigkeiten habe. Für mich ist auch in diesem Fall Rob van Wijks Vorgehen nachvollziehbarer, der die Model Clause an sehr einfachen Beispieldaten erläutert. Aber selbst die einfachen Beispiele haben mich bisher noch nicht dazu gebracht, die Model Clause selbst einmal praktisch einzusetzen. Vielleicht mangelt's mir aber auch nur an Begeistung und Verständnis für komplexere Algorithmen ... - dass man mit der Model Clause und solider mathematischer Ausbildung eindrucksvolle Dinge machen kann, hat Alberto Dell'Era gelegentlich gezeigt.
  • 10 Subquery Factoring (J. Still): erläutert die Nutzung dieses Features, das außerhalb der Oracle-Welt oft als CTE (Common Table Expression) bezeichnet wird - und das syntaktisch als With-clause erscheint. Beschrieben werden die Hints MATERIALIZE und INLINE, über die beeinflusst werden kann, ob eine CTE über TEMP TABLE TRANSFORMATION als temporäres Objekt angelegt wird oder einfach in die rahmende Query integriert wird - und die Wirkungen dieser Varianten auf die Query-Performance. Außerdem wird erläutert, wie man durch rekursive CTEs hierarchische Abfragen erzeugen kann - was als Alternative zum CONNECT BY dienen kann.
  • 11 Semi-joins and Anti-joins (K. Osborne): ein Kapitel, das mir sehr gut gefallen hat. Erläutert werden zunächst die Unterschiede zwischen (NOT) IN und (NOT) EXISTS. Noch interessanter fand ich die Erklärungen zu den Anti-joins, bei denen für mich neu war, dass ausgerechnet die von mir geschätzte MINUS-Operation nicht von anti-join optimizations profitiert.
  • 12 Indexes (R. Shamsudeen): ein interessantes Kapitel, das nicht allzu sehr in die Tiefe geht, aber sehr viele relevante Punkte anspricht. Zu den Bitmap Indizes wird einmal mehr behauptet, dass sie nur für Spalten mit niedriger Cardinality geeignet seien, was Richard Foote gelegentlich widerlegt hat.
  • 13 Beyond the Select (K. Osborne): knappe aber erhellende Darstellung zu INSERT, UPDATE, DELETE, MERGE, TRUNCATE etc.
  • 14 Transaction Processing (R. Sands): Einführung in die Transaktionssteuerung relationaler Datenbanken (ACID, Isolation Levels) und Oracles spezifische Implementierung. Frau Sands verweist gleich zu Beginn auf Tom Kytes Äußerungen zum Thema, die da doch deutlich detaillierter sind.
  • 15 Testing and Quality Assurance (R. Sands): ein relativ theoretisches Kapitel zur Bedeutung von Tests. Nicht schlecht, aber ziemlich allgemein.
  • 16 Plan Stability and Control (K. Osborne): für mich eins der interessantesten Themen des Buchs. Ein wenig bedauere ich, dass Kerry Osborne die verwendeten Code-Stücke nicht im gedruckten Text untergebracht hat, kann mir aber vorstellen, dass das relativ viel Platz erfordert hätte. In jedem Fall eine sehr klare Einführung zu den Themen Outlines, Profiles und Baselines. Ich erinnere mich dunkel daran, dass Osborne und Jonathan Lewis vor einiger Zeit über die Rolle der Profiles diskutiert haben, wobei Lewis die Ansicht vertrat, dass sie grundsätzliche etwas Anderes seien als Outlines und Baselines und dem cbo vor allem bessere Statistikinformationen lieferten - was zumindest plausibel klingt.
Alle Kapitel sind grundsolide, viele gehen aber nicht allzu sehr in die Tiefe. Ich nehme an, dass das dem Konzept des Buchs entspricht, aber vielleicht wäre in diesem Zusammenhang eine kurze Erklärung der Zielsetzung und des angesprochenen Leserkreises nützlich gewesen - wie man sie in vielen anderen Apress Büchern findet. Laut Apress Roadmap (auf der Rückseite des Buchs) steht der Band zwischen dem einführenden Begining Oracle SQL und Christian Antogninis Buch und das passt zu meiner Wahrnehmung.

    Keine Kommentare:

    Kommentar veröffentlichen