„Nejlepší REST API je stejně relační databáze“ :-) SQL! Framework pro zpřístupnění libovolných dat ve formě relaci – virtuální tabulky, pohledy, funkce. Více klientských protokolů: - emulace postgresql - emulace mariadb - vlastní binární protokol - vlastní SOAP protokol - vlastní XML REST protokol programovatelné moduly poskytující data (tabulky, pohledy a navázání na funkce) - soubory (XML, CSV atd.) + zpracování (XSLT) a mezipaměť (původní zdroj: file://... http://... atd.) - CLI + mezipaměť - Java, C++, C, Perl atd. Příklad použití: SQL rozhraní k unixovému operačnímu systému - uživatelé - procesy - RAM - připojené oddíly, fstab, využití disku - S.M.A.R.T. - RAID pole - LVM, DM, LUKS - mailq - síťová spojení, naslouchající porty - síťové adaptéry, IP a MAC adresy, přenesená data - bluetooth - další HW (sériové porty, V4L2 atd.) - služby z /etc/services - protokoly z /etc/protocols - soubory - názvy, metadata, rozšířené atributy Funkce: - odeslání e-mailu - logování - poslání signálu nějakému procesu - odeslání D-Bus zprávy - CURL - DNS - ping Podporovat PL/SQL nebo procedurálnost nechat na klientovi, který bude volat SQL dotazy, příkazy? Dynamické tabulky: - obsahují neomezenou množinu dat - musíme použít WHERE podmínku (jinak vyhodí chybu) - vygenerují odpovídající obsah (např. výsledek DNS dotazu) - vypadají jako normální tabulka (ve skutečnosti je to spíš funkce) Aktualizovatelné tabulky: - lze provádět INSERT, UPDATE, DELETE - provádějí nějakou akci, např. vytvoření souboru, uživatele, spuštění procesu Inspirace: https://sqlite.org/vtab.html – The Virtual Table Mechanism Of SQLite