Swift und PostgreSQL: Die ideale Kombination für Backend im Jahr 2025

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Swift und PostgreSQL: Warum diese Kombination den Verstand sprengt

\n\n

Wenn wir „Server-seitiges Swift“ sagen, stellen sich die meisten Entwickler Vapor, Perfect oder Kitura vor. Und wenn es um Datenbanken geht, denken wir an das vertraute MySQL oder SQLite. Aber seien wir ehrlich: Wenn Sie ein ernsthaftes Backend in Swift bauen, brauchen Sie PostgreSQL. Warum? Weil es nicht nur eine Datenbank ist – es ist ein Schweizer Taschenmesser für die Arbeit mit Daten, das sich perfekt in die Leistungsfähigkeit von Swift einfügt.

\n\n

In diesem Artikel werden wir uns ansehen, wie man Swift und PostgreSQL so zum Laufen bringt, dass Ihr Code fliegt, die Datenbank nicht abstürzt und Ihre Kollegen neidisch werden. Kein Blabla – nur Praxis, Code und echte Anwendungsfälle.

\n\n

Warum PostgreSQL und nicht MySQL?

\n\n

Lassen Sie uns gleich klarstellen. PostgreSQL ist ein objektrelationales DBMS, das Dinge kann, von denen MySQL nicht einmal träumt:

\n\n
    \n
  • Native JSON und JSONB – speichern Sie komplexe Strukturen direkt in Tabellen
  • \n
  • Arrays – ohne Workarounds und zusätzliche Tabellen
  • \n
  • Parallele Abfragen – nutzen Sie alle Kerne des Servers
  • \n
  • Erweiterbarkeit – PostGIS, TimescaleDB, pgvector für KI
  • \n
\n\n

Und vor allem: PostgreSQL harmoniert perfekt mit SwiftNIO (der asynchronen Engine, auf der Vapor basiert). Das bedeutet, dass Ihre Datenbankabfragen den Ausführungsthread nicht blockieren.

\n\n

Installation und Konfiguration des PostgreSQL-Treibers für Swift

\n\n

Beginnen wir mit dem Wichtigsten – wie Sie PostgreSQL mit Ihrem Swift-Projekt verbinden. Wir verwenden vapor/fluent-postgres-driver – den beliebtesten und stabilsten Treiber.

\n\n

Schritt 1: Abhängigkeiten hinzufügen

\n\n

Öffnen Sie Package.swift und fügen Sie Folgendes hinzu:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MySwiftBackend",\n    platforms: [\n        .macOS(.v13)\n    ],\n    dependencies: [\n        .package(url: "https://github.com/vapor/vapor.git", from: "4.90.0"),\n        .package(url: "https://github.com/vapor/fluent.git", from: "4.10.0"),\n        .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.8.0")\n    ],\n    targets: [\n        .target(\n            name: "App",\n            dependencies: [\n                .product(name: "Vapor", package: "vapor"),\n                .product(name: "Fluent", package: "fluent"),\n                .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver")\n            ]\n        )\n    ]\n)
\n\n

Schritt 2: Datenbankverbindung konfigurieren

\n\n

In der Datei configure.swift fügen wir die Konfiguration hinzu:

\n\n
import Vapor\nimport Fluent\nimport FluentPostgresDriver\n\npublic func configure(_ app: Application) throws {\n    // Verwenden Sie Umgebungsvariablen aus Sicherheitsgründen\n    let hostname = Environment.get("DB_HOST") ?? "localhost"\n    let port = Environment.get("DB_PORT").flatMap(Int.init) ?? 5432\n    let username = Environment.get("DB_USERNAME") ?? "swift_user"\n    let password = Environment.get("DB_PASSWORD") ?? "swift_pass"\n    let database = Environment.get("DB_NAME") ?? "swift_backend"\n\n    app.databases.use(\n        .postgres(\n            hostname: hostname,\n            port: port,\n            username: username,\n            password: password,\n            database: database\n        ),\n        as: .psql\n    )\n    \n    // Modelle registrieren\n    app.migrations.add(CreateUser())\n    \n    // Automatische Migrationen beim Start\n    try app.autoMigrate().wait()\n}
\n\n

Wichtiger Tipp: Härten Sie niemals Passwörter im Code ein. Verwenden Sie Umgebungsvariablen oder .env-Dateien mit Vapor's Environment.

\n\n

Ein Datenmodell in Swift erstellen

\n\n

Jetzt kommt der spannende Teil – wir definieren ein Benutzermodell. In Swift mit Fluent geht das elegant und prägnant:

\n\n
import Fluent\nimport Vapor\n\nfinal                

Blogs

Buchempfehlungen