# HG changeset patch # User František Kučera # Date 1409570193 -7200 # Node ID ff176e13e9b1dbbc2feaac18cbc139dfdf9c464e # Parent 2088e80cb4cfa5c7eef9dd0d9115216a542890ce analýza diff -r 2088e80cb4cf -r ff176e13e9b1 sql-api.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sql-api.txt Mon Sep 01 13:16:33 2014 +0200 @@ -0,0 +1,58 @@ +„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