Einleitung: Warum Swift und Datenbanken?
\nSwift ist nicht nur eine Sprache für die Entwicklung mobiler Anwendungen. Dank der Frameworks Vapor und SwiftNIO können Entwickler vollwertige Serveranwendungen erstellen, die mit relationalen und dokumentenorientierten Datenbanken interagieren. In diesem Artikel werden wir untersuchen, wie man von Swift aus eine Verbindung zu PostgreSQL und MongoDB herstellt, und zeigen einfache Codebeispiele für Anfänger.
\nDer Artikel richtet sich an diejenigen, die bereits mit den Grundlagen von Swift vertraut sind, aber gerade erst beginnen, sich mit der Arbeit mit Datenbanken vertraut zu machen. Wir werden zwei beliebte Ansätze betrachten: klassisches SQL (PostgreSQL) und flexibles NoSQL (MongoDB).
\n\n1. PostgreSQL in Swift: Strukturierte Daten
\nPostgreSQL ist eine leistungsstarke relationale Open-Source-Datenbank. Für die Arbeit damit in Swift verwenden wir das Paket PostgresKit, das zur Vapor-Ökosystem gehört.
1.1 Installation und Konfiguration
\nFügen Sie die Abhängigkeit in die Datei Package.swift hinzu:
// swift-tools-version:5.7\nimport PackageDescription\n\nlet package = Package(\n name: "MyApp",\n dependencies: [\n .package(url: "https://github.com/vapor/postgres-kit.git", from: "2.0.0")\n ],\n targets: [\n .executableTarget(\n name: "MyApp",\n dependencies: [\n .product(name: "PostgresKit", package: "postgres-kit")\n ]\n )\n ]\n)\n\n1.2 Verbindung zur Datenbank herstellen
\nErstellen Sie eine Konfigurationsinstanz und stellen Sie eine Verbindung zum PostgreSQL-Server her:
\nimport PostgresKit\n\nlet eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)\ndefer { try! eventLoopGroup.syncShutdown() }\n\nlet configuration = PostgresConfiguration(\n hostname: "localhost",\n port: 5432,\n username: "swift_user",\n password: "secret",\n database: "swift_db"\n)\n\nlet pool = EventLoopGroupConnectionPool(\n source: PostgresConnectionSource(configuration: configuration),\n on: eventLoopGroup\n)\ndefer { try! pool.syncShutdown() }\n\nlet connection = try pool.requestConnection().wait()\nprint("Verbindung zu PostgreSQL hergestellt!")\n\n1.3 Ausführen von SQL-Abfragen
\nJetzt führen wir eine einfache Abfrage zum Erstellen einer Tabelle und zum Einfügen von Daten durch:
\n// Tabelle für Benutzer erstellen\ntry connection.query("""\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name TEXT NOT NULL,\n email TEXT UNIQUE NOT NULL\n )\n""").wait()\n\n// Daten einfügen\ntry connection.query("""\n INSERT INTO users (name, email) \n VALUES ('Alexej', 'alex@example.com')\n""").wait()\n\n// Daten lesen\nlet rows = try connection.query("SELECT * FROM users").wait()\nfor row in rows {\n let id = try row.decode(Int.self, column: "id")\n let name = try row.decode(String.self, column: "name")\n let email = try row.decode(String.self, column: "email")\n print("Benutzer: \\(name) (\\(email)), ID: \\(id)")\n}\n\n2. MongoDB in Swift: Flexible Dokumente
\nMongoDB ist eine NoSQL-Datenbank, die Daten im Format JSON-ähnlicher Dokumente speichert. Für Swift gibt es mehrere Treiber, aber wir verwenden den offiziellen MongoDB Swift Driver.
\n\n2.1 Installation des Treibers
\nFügen Sie das Paket in Package.swift hinzu:
dependencies: [\n .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.0.0")\n],\ntargets: [\n .executableTarget(\n name: "MyApp",\n dependencies: [\n .product(name: "MongoSwift", package: "mongo-swift-driver")\n ]\n )\n]\n\n2.2 Verbindung zu MongoDB herstellen
\nErstellen Sie einen Client und wählen Sie eine Datenbank aus:
\nimport MongoSwift\n\nlet client = try MongoClient("mongodb://localhost:27017")\ndefer { try? client.syncClose() }\n\nlet database = client.db("swift_m