====== 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