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 |
|---|---|
| std.db.mysql | MySQL-Client (Protokoll 41 über TCP) |
| 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);
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);
→ Vollständige Dokumentation: std.db.redis
Verwandte Units
std.net.mongo— MongoDB Wire Protocol (im Netzwerk-Namespace, da dokumentenbasiert)std.hash— Passwort-Hashing für eigene Benutzerverwaltung in Datenbankenstd.json— JSON-Serialisierung für Redis-Werte oder MySQL-JSON-Spalten
