Komplexes XML in SQL Server auslesen — tausend Attribute generisch zerlegen statt Stunden in Schleifen

Ein Katalog mit rund 3000 Produktkonfigurationen liegt als XML vor. Je nach Ausstattung trägt eine Konfiguration andere und zusätzliche Attribute, über alle Varianten sind es etwa tausend. In einem früheren Projekt lief die Auswertung eines solchen Katalogs im Anwendungscode: eine Schleife über die Objekttypen, darin eine Schleife über die Attribute, dazu Listen im Speicher, die … Weiterlesen

Downtime-arme Migration SQL Server → PostgreSQL — Strategien für den Cutover

Die Frage kommt verlässlich in der ersten Planungsrunde, und sie kommt selten aus der IT: Wie lange ist die Datenbank beim Umzug nicht erreichbar? Die Antwort entscheidet, ob die Daten in einem Wartungsfenster am Stück umgezogen werden, ob der Bestand vorab kopiert wird und bis zum Umschalten nur noch die Änderungen folgen, oder ob ein … Weiterlesen

Set-basiert statt Schleife: PostgreSQL-Refresh von 114 auf 12 Sekunden

Ein Klick auf „Schema aktualisieren“, und nach 60 Sekunden zeigt der Browser die Fehlermeldung 504 Gateway Timeout, weil der vorgeschaltete Webserver nicht länger auf eine Antwort wartet. Auf dem Server läuft die Arbeit ungestört weiter, nur sieht das niemand. Also folgt der zweite Klick, dann der dritte, und kurz darauf rechnen vier Läufe gleichzeitig. Ein … Weiterlesen

SQL Server vs. PostgreSQL — Vor- und Nachteile für den Umstieg

SQL Server oder PostgreSQL — die Frage ist selten „Welche Datenbank ist besser?“, sondern „Welche passt zu Budget, Team und Plattform?“. Wer die beiden Fragen verwechselt, migriert aus den falschen Gründen und merkt es erst, wenn die Lizenzrechnung zwar schrumpft, die Betriebskosten aber wachsen. Kurzüberblick: Voraussetzung: SQL-Server-Praxiserfahrung genügt. PostgreSQL-Begriffe wie MVCC oder Extensions werden beim ersten … Weiterlesen

Datenqualität: Dimensionen und Fehlerklassen — der Theorie-Rahmen hinter den SQL-Prüfungen

Über Datenqualität wird viel geschrieben und wenig gemessen. Allein das deutschsprachige Praxis-Standardwerk zum Thema listet sechzig mögliche Qualitätskriterien — von Aktualität bis Zuverlässigkeit —, und selbst die knappen Modelle kommen noch auf sechs bis fünfzehn Dimensionen. Dabei ist der Kern erstaunlich handfest: Ein Datenfehler, der beim Laden abgefangen wird, kostet eine Meldung. Derselbe Fehler, der … Weiterlesen

Datenqualität mit SQL prüfen — ein konfigurierbares Framework, das schlechte Daten generisch aufspürt

Ein Fremdschlüssel ins Leere ist schnell beschrieben — ein country_code, zu dem es keinen Eintrag in den Stammdaten gibt — und überraschend leicht falsch geprüft. Die intuitivste Formulierung ist ausgerechnet die gefährlichste: NOT IN (SELECT …) liest sich wie deutsche Prosa, kippt aber lautlos um, sobald die Referenzspalte einen einzigen NULL enthält. Dann meldet die Prüfung null verwaiste Sätze, läuft grün durch und … Weiterlesen

Duplikate finden mit SQL — von COUNT(*) > 1 bis zusammengesetzte Schlüssel

GROUP BY … HAVING count(*) > 1 ist vielleicht das meistgetippte SQL-Snippet der Welt — und trotzdem stolpert es an zwei Stellen, die kaum jemand auf dem Schirm hat: bei zusammengesetzten Schlüsseln und bei NULL. Ausgerechnet beim Umgang mit fehlenden Werten in einer eindeutigen Spalte sind sich SQL Server und Postgres nämlich uneinig — der eine erlaubt … Weiterlesen

Daten mit SQL validieren — Wertebereiche, Pflichtfelder und die NULL-Falle

Eine Wertebereichsprüfung, die grün durchläuft, ist kein Beweis für saubere Daten. Wer WHERE alter < 0 OR alter > 120 schreibt, um unplausible Altersangaben zu finden, übersieht stillschweigend jede Zeile, in der alter gar keinen Wert hat — denn ein Vergleich mit NULL ergibt in SQL weder wahr noch falsch, sondern unbekannt. Genau dieser fehlende Pflichtwert kippt später den Load ins strikt modellierte Ziel. Daten mit … Weiterlesen

Datenmigration: SQL Server nach PostgreSQL — der vollständige Leitfaden

Eine Datenmigration von SQL Server nach PostgreSQL scheitert selten am eigentlichen Kopieren der Daten. Sie scheitert an den stillen Unterschieden, die erst im Ziel auffallen: datetime, das keine Zeitzone kennt, bit, das kein boolean ist, ein IDENTITY, das zur Sequenz wird, und eine Collation, die plötzlich case-sensitiv vergleicht. Wer SQL Server nach PostgreSQL migrieren will, kopiert nicht einfach Tabellen — er übersetzt Typen, Schema, … Weiterlesen

Migration verifizieren — Datenqualität und Zeilen-Abgleich nach dem Umzug

Die Zeilenzahlen stimmen — Tabelle für Tabelle, Quelle gegen Ziel, alles grün. Und trotzdem ist die Migration nicht fertig. In einer Spalte sind aus NULL-Werten leere Strings geworden, in einer anderen hat der Umweg über eine CSV-Datei die letzte Nachkommastelle eines Betrags gerundet, und ein paar Umlaute sind zu Fragezeichen zerfallen. Gleiche Anzahl ist nicht gleiche Daten — … Weiterlesen