====== std.db ====== Datenbank-Units für die direkte Kommunikation mit relationalen Datenbanken und Key-Value-Stores. Lyx implementiert alle Datenbankprotokolle **nativ über TCP** — ohne externe Treiber, MiddlewareSchichten oder ORMs. Die Verbindung erfolgt direkt auf Protokollebene, was maximale Kontrolle und minimalen Overhead ermöglicht. ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:db:mysql|std.db.mysql]] | MySQL-Client (Protokoll 41 über TCP) | | [[lyx_-_programmiersprache:units:db:redis|std.db.redis]] | Redis-Client (RESP-Protokoll über TCP) | ---- ===== Designprinzipien ===== * **Kein Treiber-Layer** — Lyx spricht das native Datenbankprotokoll direkt; kein libmysql, kein ODBC, kein Redis-Client-Wrapper * **Keine Abstraktionsschicht** — jede Unit ist auf ihr Protokoll spezialisiert und gibt dessen volle Funktionalität frei * **Explizite Verbindungsverwaltung** — Verbindungen, Abfragen und Ressourcen werden manuell verwaltet (kein Connection-Pooling im Standard, kann selbst implementiert werden) * **Typsichere Rückgabewerte** — Fehler werden über Rückgabecodes (nicht Exceptions) signalisiert ---- ===== Verfügbare Units ===== ==== std.db.mysql ==== MySQL-Client-Implementierung über das MySQL-Protokoll 41 (binäres Protokoll, TCP-Port 3306). Unterstützt Verbindung mit Authentifizierung, einfache Abfragen, Ergebnis-Sets, Prepared Statements und Transaktionen. import std.db.mysql; var conn: MySQLConn := MySQLConnect("127.0.0.1", 3306, "user", "pass", "mydb"); var res: MySQLResult := MySQLQuery(conn, "SELECT id, name FROM users WHERE active = 1"); while (MySQLFetchRow(res) != 0) { PrintStr(MySQLGetRowStr(res, 0, 1)); } MySQLFreeResult(res); MySQLClose(conn); → [[lyx_-_programmiersprache:units:db:mysql|Vollständige Dokumentation: std.db.mysql]] ==== std.db.redis ==== Redis-Client über das RESP-Protokoll (Redis Serialization Protocol, TCP-Port 6379). Unterstützt alle Redis-Datenstrukturen: Strings, Lists, Hashes, Sets, Sorted Sets, Streams sowie Pub/Sub, Pipelining und TTL-Verwaltung. import std.db.redis; var conn: RedisConn := RedisConnect("127.0.0.1", 6379); RedisSet(conn, "session:42", "user_data_json"); RedisExpire(conn, "session:42", 3600); var val: pchar := RedisGet(conn, "session:42"); PrintStr(val); RedisClose(conn); → [[lyx_-_programmiersprache:units:db:redis|Vollständige Dokumentation: std.db.redis]] ---- ===== Verwandte Units ===== * ''[[lyx_-_programmiersprache:units:net:mongo|std.net.mongo]]'' — MongoDB Wire Protocol (im Netzwerk-Namespace, da dokumentenbasiert) * ''[[lyx_-_programmiersprache:units:hash|std.hash]]'' — Passwort-Hashing für eigene Benutzerverwaltung in Datenbanken * ''[[lyx_-_programmiersprache:units:json|std.json]]'' — JSON-Serialisierung für Redis-Werte oder MySQL-JSON-Spalten