SQL NULLs: Überraschendes Verhalten

2025-01-09

Die Behandlung von NULL-Werten in SQL widerlegt oft die Erwartungen. Dieser Beitrag enthüllt das überraschende Verhalten von NULLs in Spalten mit eindeutigen Constraints: Mehrere NULLs können koexistieren. Anhand praktischer Beispiele in SQLite, Postgres und MySQL zeigt der Autor, wie sich NULLs mit den Operatoren „=“ und „IS“ unterschiedlich verhalten und erklärt die zugrundeliegenden Gründe. Zwei Lösungen zur Sicherstellung der Eindeutigkeit werden untersucht: das Erstellen einer generierten Spalte und die Verwendung eines partiellen Index. Die Verwendung eines partiellen Index wird als beste Vorgehensweise empfohlen, da dadurch die Vergrößerung der Tabelle und potenzielle Fehler vermieden werden.

Mehr lesen
Entwicklung

Convoy ersetzt UUIDv4 durch ULIDs: Effizienz und Skalierbarkeit im Zeitalter von Big Data

2024-12-28

Während einer Datenbankmigration von MongoDB zu Postgres entschied sich Convoy, UUIDv4 durch ULIDs als eindeutige Identifikatoren zu ersetzen. Der Artikel vergleicht UUIDv4 und ULIDs und hebt die Vorteile von ULIDs hervor: lexikographische Sortierbarkeit, URL-Freundlichkeit und verbesserte Datenbankindexierungseffizienz, wenn auch mit etwas langsameren Generierungs- und Einfügegeschwindigkeiten. Convoy entschied sich hauptsächlich für ULIDs, um Probleme mit der Paginierungsleistung bei großen Datensätzen zu lösen. Obwohl ULIDs marginal langsamer zu generieren sind, werden die Leistungsgewinne, insbesondere bei der Verarbeitung großer Datenmengen, als lohnenswert angesehen. Der Artikel erörtert auch potenzielle Risiken von Zeitinformationslecks und Auswirkungen auf Benutzerdaten von ULIDs und erwähnt kurz die mögliche zukünftige Einführung von UUIDv7.

Mehr lesen
Entwicklung