Katalog
concept#Daten#Plattform#Architektur#Software-Engineering

Structured Query Language

SQL ist eine standardisierte deklarative Sprache zur Definition, Abfrage und Manipulation relationaler Daten in Datenbanksystemen.

Structured Query Language (SQL) ist eine deklarative Abfragesprache zur Definition, Abfrage und Manipulation relationaler Daten.
Etabliert
Mittel

Klassifikation

  • Mittel
  • Technisch
  • Architektur
  • Fortgeschritten

Technischer Kontext

Anwendungs-Backend (ORM oder DB-Clients)Data-Warehouse- und ETL-PipelinesMonitoring- und Observability-Tools

Prinzipien & Ziele

Deklarative Abfragen statt imperative SchritteSchema-First-Design und NormalisierungSet-orientierte Verarbeitung statt zeilenbasierter Schleifen
Umsetzung
Unternehmen, Domäne, Team

Use Cases & Szenarien

Kompromisse

  • Fehlende Indexierung führt zu langsamen Abfragen
  • Unsichere dynamische SQL-Erzeugung kann SQL-Injection ermöglichen
  • Monolithische Schemata erschweren Skalierung und Entwicklung
  • Verwende vorbereitete Statements statt dynamischem SQL zur Sicherheit
  • Indexstrategien regelmäßig überprüfen und anpassen
  • Lang laufende Abfragen profilieren und refaktorisieren

I/O & Ressourcen

  • Datenquellen in relationalem Schema
  • Geschäftsanforderungen für Abfragen
  • Zugriffs- und Berechtigungsmodelle
  • Abfrageergebnisse und Berichte
  • Transaktionale Zustandsänderungen
  • Metriken und Monitoring-Daten

Beschreibung

Structured Query Language (SQL) ist eine deklarative Abfragesprache zur Definition, Abfrage und Manipulation relationaler Daten. Sie standardisiert Datenmodelloperationen wie SELECT, INSERT, UPDATE und DELETE und unterstützt Transaktionen, Joins und Aggregationen. SQL dient als Grundlage für relationale Datenbanken und beeinflusst Datenmodellierung, Performance und Integritätsregeln.

  • Breite Standardisierung und Portabilität zwischen Systemen
  • Ausdrucksstarke Abfrage- und Aggregationsfunktionen
  • Unterstützung für Transaktionen und Integritätsregeln

  • Nicht ideal für sehr flexible schemalose Datenmodelle
  • Unterschiede zwischen Dialekten führen zu Portierungsaufwand
  • Komplexe Abfragen können Performance-Engpässe verursachen

  • Durchschnittliche Abfrage-Latenz

    Mittlere Ausführungszeit von typischen Abfragen als Indikator für Performance.

  • Transaktionen pro Sekunde

    Anzahl abgeschlossener Transaktionen pro Zeiteinheit zur Messung von Durchsatz.

  • Cache-Hit-Rate

    Anteil der Abfragen, die aus dem Cache bedient werden, zur Bewertung der Effizienz.

Analytische Abfrage mit JOIN und Aggregation

Verwendet mehrere Tabellen, führt Joins und GROUP BY aus, um Umsatz nach Produktkategorie zu berechnen.

Transaktionales Update mit Rückrolle

Beispiel einer ACID-konformen Transaktion, die mehrere Tabellen aktualisiert und bei Fehlern zurückgesetzt wird.

Schema-Migration mit Migrationsskript

Illustration einer Schemaänderung inklusive Migrations- und Backout-Skript zur sicheren Einführung.

1

Anforderungen und Datenmodell erfassen

2

Schemata entwerfen und normalisieren

3

Indizes und Partitionierung planen

4

Abfragen implementieren und mit Explain analysieren

⚠️ Technische Schulden & Engpässe

  • Legacy-Schemata ohne Normalisierung
  • Ad-hoc-Indizes ohne Monitoring
  • Veraltete Dialekt-spezifische Abfragen
IndexierungJoins bei großen DatenmengenSperrkonflikte
  • Dynamisches SQL mit unsicheren Parametern führt zu Injection
  • Fehlende Indizes bei großen JOINs erzeugt Timeouts
  • Einsatz von SQL für stark schemalose, dokumentbasierte Daten
  • Unterschätzung von Dialektunterschieden bei Portierung
  • Unsachgemäße Nutzung von Transaktionsisolationen
  • Übermäßige Indizierung ohne Analyse der Abfragen
Relationale DatenmodellierungSQL-Query-OptimierungTransaktions- und Lock-Management
Datenkonsistenz und IntegritätAbfrageleistung und LatenzPortabilität zwischen Datenbank-Dialekten
  • Dialektunterschiede zwischen Implementierungen
  • Hardware- und IO-Limits der Datenbankinstanz
  • Regulatorische Anforderungen an Datenhaltung