sql-api.txt
author František Kučera <franta-hg@frantovo.cz>
Mon, 01 Sep 2014 18:10:25 +0200
changeset 7 8f0e2d417702
parent 1 ff176e13e9b1
permissions -rw-r--r--
prototyp: UTF-8 encoding (decoding)
franta-hg@1
     1
„Nejlepší REST API je stejně relační databáze“ :-)
franta-hg@1
     2
franta-hg@1
     3
SQL!
franta-hg@1
     4
franta-hg@1
     5
Framework pro zpřístupnění libovolných dat ve formě relaci – virtuální tabulky, pohledy, funkce.
franta-hg@1
     6
Více klientských protokolů:
franta-hg@1
     7
 - emulace postgresql
franta-hg@1
     8
 - emulace mariadb
franta-hg@1
     9
 - vlastní binární protokol
franta-hg@1
    10
 - vlastní SOAP protokol
franta-hg@1
    11
 - vlastní XML REST protokol
franta-hg@1
    12
franta-hg@1
    13
programovatelné moduly poskytující data (tabulky, pohledy a navázání na funkce)
franta-hg@1
    14
 - soubory (XML, CSV atd.) + zpracování (XSLT) a mezipaměť (původní zdroj: file://... http://... atd.)
franta-hg@1
    15
 - CLI + mezipaměť
franta-hg@1
    16
 - Java, C++, C, Perl atd.
franta-hg@1
    17
franta-hg@1
    18
Příklad použití:
franta-hg@1
    19
SQL rozhraní k unixovému operačnímu systému
franta-hg@1
    20
 - uživatelé
franta-hg@1
    21
 - procesy
franta-hg@1
    22
 - RAM
franta-hg@1
    23
 - připojené oddíly, fstab, využití disku
franta-hg@1
    24
 - S.M.A.R.T.
franta-hg@1
    25
 - RAID pole
franta-hg@1
    26
 - LVM, DM, LUKS
franta-hg@1
    27
 - mailq
franta-hg@1
    28
 - síťová spojení, naslouchající porty
franta-hg@1
    29
 - síťové adaptéry, IP a MAC adresy, přenesená data
franta-hg@1
    30
 - bluetooth
franta-hg@1
    31
 - další HW (sériové porty, V4L2 atd.)
franta-hg@1
    32
 - služby z /etc/services
franta-hg@1
    33
 - protokoly z /etc/protocols
franta-hg@1
    34
 - soubory - názvy, metadata, rozšířené atributy
franta-hg@1
    35
franta-hg@1
    36
Funkce:
franta-hg@1
    37
 - odeslání e-mailu
franta-hg@1
    38
 - logování
franta-hg@1
    39
 - poslání signálu nějakému procesu
franta-hg@1
    40
 - odeslání D-Bus zprávy
franta-hg@1
    41
 - CURL
franta-hg@1
    42
 - DNS
franta-hg@1
    43
 - ping
franta-hg@1
    44
franta-hg@1
    45
Podporovat PL/SQL nebo procedurálnost nechat na klientovi, který bude volat SQL dotazy, příkazy?
franta-hg@1
    46
franta-hg@1
    47
Dynamické tabulky:
franta-hg@1
    48
 - obsahují neomezenou množinu dat
franta-hg@1
    49
 - musíme použít WHERE podmínku (jinak vyhodí chybu)
franta-hg@1
    50
 - vygenerují odpovídající obsah (např. výsledek DNS dotazu)
franta-hg@1
    51
 - vypadají jako normální tabulka (ve skutečnosti je to spíš funkce)
franta-hg@1
    52
franta-hg@1
    53
Aktualizovatelné tabulky:
franta-hg@1
    54
 - lze provádět INSERT, UPDATE, DELETE
franta-hg@1
    55
 - provádějí nějakou akci, např. vytvoření souboru, uživatele, spuštění procesu
franta-hg@1
    56
franta-hg@1
    57
 
franta-hg@1
    58
Inspirace: https://sqlite.org/vtab.html – The Virtual Table Mechanism Of SQLite