SQLite ááᯠááá¯ááŸá±á¬ááºááŸá¯á¡ááºáá»ááºá¡ááŒá Ạá¡áá¯á¶ážááŒá¯áᬠáá±á«ááºážá ááºáá¬ážáá±á¬ ááá¯ááŸá±á¬ááºááŸá¯á¡á á¯á¡áá±ážá á¡áá¯ááºáá»á¬ážááᯠá á¯á ááºážááœáá·áºááŒá¯ááá·áº ááŒáá·áºáá±áá¬ážáá±á¬ DBMS rqlite 6.0 á áá¯ááºáá±ááŸá¯ááᯠáááºááŒáá¬ážáááºá rqlite áá¡ááºá¹áá«áááºáá»á¬ážáá²ááŸáá áºáá¯ááŸá¬ áááºáááºááŒááºážá á¡áá¯á¶ážáá»ááŒááºážááŸáá·áº ááŒá¯ááŒááºááááºážááááºážááŒááºážááŸá¬ etcd ááŸáá·áº Consul ááá¯á·ááŸáá·áº áááºáááºáááºáá°áá±á¬áºáááºáž áá±á¬á·/áááºááá¯ážáá±á¬áºáááºá¡á á¬áž áááºá ááºáá±áá¬áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯á ááŒáá·áºáá±áá¬ážáá±á¬á¡ááŸá¬áž-áá¶ááá¯ááºáááºááŸááá±á¬ááá¯ááŸá±á¬ááºááŸá¯ááᯠááŒá¯ááŒááºááááºážááááºážááŒááºážááŒá áºáá«áááºá ááá±á¬áá»ááºáá¯ááºááᯠGo ááŒáá·áºáá±ážáá¬ážáá¬ážááŒá®áž MIT ááá¯ááºá ááºá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážáááºá
node á¡á¬ážáá¯á¶ážááᯠáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá·áºá¡ááŒá±á¡áá±ááœááºáá¬ážááŸáááẠRaft consensus algorithm ááá¯á¡áá¯á¶ážááŒá¯áááºá Rqlite ááẠáá°á SQLite á á¬ááŒáá·áºááá¯ááºááŸáá·áº á ᶠgo-sqlite3 áááá¯ááºáá¬ááᯠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážá client áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº á¡ááœáŸá¬áá áºáá¯á០á áááºáá¬á á¡ááŒá¬áž node áá»á¬ážááá¯á· áá°ážáá°áá±á¬áºááŒááŒááºážááŸáá·áº áŠážáá±á¬áẠnode ááœá±ážáá»ááºááŸá¯á¡áá±á«áº ááá±á¬áá°áá®ááŸá¯á á¡á±á¬ááºááŒááºááŸá¯ááᯠá á±á¬áá·áºááŒáá·áºá á áºáá±ážáááºá
áá±áá¬áá±á·á áºááá¯á· á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠáá±á«ááºážáá±á¬ááºá¡ááŒá Ạááœá±ážáá»ááºáá¬ážáá±á¬ node ááŸáá¬áá»áŸáẠááŒá¯áá¯ááºááá¯ááºáá±á¬áºáááºážá á¡á á¯á¡áá±ážááŸá á¡ááŒá¬áž node áá»á¬ážááá¯á· á á¬áá±ážááŒááºážááá¯ááºáᬠáá»áááºáááºááŸá¯áá»á¬ážááá¯áááºáž áá±ážááá¯á·ááá¯ááºáááºá áááºážááẠáá±á¬ááºážááá¯áá»ááºááᯠáááºáá«ááá²áá² áá¯ááºáá±á¬ááºáááºá¡ááœáẠáá±á«ááºážáá±á¬ááºáááááºá á¬ááᯠááŒááºáá±ážáááá·áºááẠ(áá±á¬ááºáááºáá¬ážááŸááºážááœáẠáááºážááá¯á·á áá±á«ááºážáá±á¬ááºáᶠáá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáááºááá·áºááá¯á·áááºáᯠáááááŒá¯áá«áááºá) á¡ááá á¡áá±ážáá±ážááŸá¯ááŸá¬ á¡ááŸá¬ážá¡ááœááºážáá¶ááá¯ááºáááºááŸáááŸá¯á¡áá±á«áºááœááºáᬠááŒá áºáá±á¬ááŒá±á¬áá·áº DBMS á áá±ážáá»á¬ážááẠáááºááŸá¯ááŒááºážáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááŒáá·áºáᬠááá¯ááºážáá¬ááŒááŒá®áž á á¬áá±ážááŒááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááẠááááºááá¯á·ááŸá¯áá»á¬ážáááºááŒá áºáááºá node áá áºáá¯áááºážá០rqlite á¡á á¯á¡áá±ážáá áºáá¯ááᯠrun ááá¯ááºááŒá®ážá á€ááŒá±ááŸááºážáá»ááºááᯠá¡ááŸá¬ážáá¶ááá¯ááºáááºáááŒáá² HTTP ááŸáá áºááá·áº SQLite ááá¯á· áááºáá±á¬ááºááœáá·áºáá±ážááẠá€ááŒá±ááŸááºážáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
node áá áºáá¯á á®ááŸá SQLite áá±áá¬ááᯠááá¯ááºáá áºáá¯ááœáẠááááºážáááºážááá¬ážáá±á¬áºáááºáž ááŸááºáá¬ááºááœáẠááŒá áºáááºá Raft áááá¯ááá¯áá±á¬ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŒáá·áº á¡ááœáŸá¬á¡ááá·áºááœááºá áá±áá¬áá±á·á áºá¡ááœááºáž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážáá®ááá¯á· áŠážáááºááœá¬ážá á±ááá·áº SQLite command á¡á¬ážáá¯á¶ážááᯠááŸááºáááºážáá áºáᯠááááºážáááºážáá¬ážáááºá á€ááŸááºáááºážááᯠáá¯á¶áá°áá°ážáá»ááŒááºáž (á¡ááŒá¬áž node áá»á¬ážáá±á«áºááŸá áá±á¬ááºážááá¯ááŸá¯á¡ááá·áºááœáẠááŒááºáááºáá¯á¶áá°ááŒááºáž)á node á¡áá áºáá áºáá¯á áááºááŒááºáž ááá¯á·ááá¯áẠáá»áááºáááºááŸá¯áá¯á¶ážááŸá¯á¶ážááŒááºážá០ááŒááºáááºááá°áá±á ááºááœáẠá€ááŸááºáááºážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá ááŸááºáááºážá á¡ááœááºá¡á á¬ážááᯠáá»áŸá±á¬á·áá»áááºá áááºááŸááºáá¬ážáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯á¡áá±á¡ááœááºáá áºáá¯ááŒá®ážáá±á¬áẠá áááºááá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºááá¯ážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž ááŸááºáááºážá¡áá áºáá áºáᯠá áááºááááºážáááºážááŒááºážááŸáá·áºáááºáááºá áá áºááºáá±á«áºááœáẠáá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá áºáá¯áá®ááá¯á· áŠážáááºááœá¬ážá á±ááẠ(ááŸááºáá¬ááºá¡ááœááºážááŸá áá±áá¬áá±á·á áºá¡ááŒá±á¡áá± áá»áŸááºáá áºááŒáẠ+ á á¯áá±á¬ááºážáá¬ážáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯ááŸááºáááºážááŸáá·áº áá°áá®áááº)á
rqlite áá¡ááºá¹áá«áááºáá»á¬áž
- áá®ážááŒá¬áž SQLite áááºáááºááŸá¯áááá¯á¡ááºáá² á¡á á¯á¡áá±ážáá áºáá¯ááᯠá¡áá¯á¶ážáá»ááẠááœááºáá°áááºá
- áááºáá°ááŒá¯áá¬ážáá±á¬ SQL ááá¯ááŸá±á¬ááºááŸá¯ááᯠáá»ááºááŒááºá áœá¬ ááá°ááá¯ááºá áœááºážá
- áá¯ááºáááºážááœáẠááá±á¬áá»ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááẠá¡áááºááá·áº (Production-grade)á
- á¡áá¯ááºáá¯ááºááœáẠáá±áá¬ááᯠá¡ááºááááºáá¯ááºááŒá®áž á¡á á¯á¡áá±ážá áŠážáá±á¬ááºáááºážááœááºááᯠáá¯á¶ážááŒááºááá¯ááºá á±ááá·áº HTTP(S) API áá áºáᯠááŸááá±ááŒááºážá áááºážááẠcommand line interface ááŸáá·áº SQLite á¡ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ client libraries á¡áá»áá¯ážáá»áá¯ážááá¯á¡áá¯á¶ážááŒá¯áááºá áœááºážáááºááá¯áááºážáá±á¬ááºáá¶á·áá±ážáááºá
- á¡á á¯á¡á ááºážáá»á¬ážááᯠááá¯ááºááá áºáá»áá» áááºáá®ážááá¯ááºá á±ááá·áº á¡ááŒá¬áž node áá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºáááºá¡ááœáẠáááºáá±á¬ááºááŸá¯áá áºáᯠáááŸáááá¯ááºáááºá
- node áá»á¬ážááŒá¬áž áá±áá¬áááŸááºááŒááºážá¡ááœáẠáá¯ááºááŸááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯á
- áááºááŸá¯ááá·áºá¡áá« áá±áá¬á áááºá ááºááŸá¯ááŸáá·áº áá®ááœááºááŸá¯ááᯠá á áºáá±ážááá·áºá¡ááá·áºááᯠáááºááŸááºááá¯ááºá áœááºážá
- á¡áá»á¬ážááá¹áááᯠáá¯á¶ážááŒááºáá¬ááœáẠááá«áááºáá² áááºááŸá¯ááŒááºážááá¯ááºáᬠáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠá¡á á¯á¡áá±ážá á¡ááá¯ááºážá¡áá¬ááᯠááá¯ážááŒáŸáá·áºáááºá¡ááœáẠááœá±ážáá»ááºááá¯ááºáá±á¬ á áœááºážáááºááᯠáááºááŸá¯áááºáá¯ááºááœáẠá áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºáá±á¬ á áœááºážáááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
- áá±á¬ááºážááá¯áá»ááºáá áºáá¯ááœáẠááœáŸááºááŒá¬ážáá»ááºáá»á¬áž áá±á«ááºážá ááºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á ááá·áºááá¯ááºááá¯áẠááœá±áá±ážááœá±áá°áá¯á¶á á¶á¡ááœáẠáá¶á·ááá¯ážááŸá¯ (BEGINá COMMITá ROLLBACKá SavePOINT ááŸáá·áº RELEASE áá±á«áºá¡ááŒá±áá¶á ááœá±áá±ážááœá±áá°áá»á¬ážááᯠááá¶á·ááá¯ážáá«)á
- áá°ááŒááºážáá±á¬ á¡áááºááááºážáááºážááŸá¯áá»á¬ážááᯠáááºáá®ážááẠáá¶á·ááá¯ážááŸá¯á
áá¯ááºáá±ááŸá¯á¡áá áºááẠááŸááºáááºáá±á¬ á¡á á¯á¡áá±ážáá»á¬ážáá®ááá¯á· áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáááºážááŒá±á¬ááºážáááºááŒááºážááŸáá·áº áá±ážááŒááºážáá¯ááºáááºážá ááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá á±ááŒááºážááŒáá·áº á¡á á¯á¡ááœá²á·ááá¯á¶ááŒááºá áááºáá»áááŸá¯ááᯠááá¯ážááŒáá·áºáá¬á á±ááẠáááºááœááºááá·áº áááá¬áááºááŸá¬ážáá±á¬ áááá¯áá¬ááá¯ááºáá¬ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠááááºáááºáá±ážáá«áááºá rqlite nodes áá»á¬ážááẠRaft protocol ááŸáááºáá±á¬ááºáá¬ážáá±á¬ node áá»á¬ážááŒá¬ážááŸá TCP áá»áááºáááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯á·á¡áá»ááºážáá»ááºážá¡ááŒá¬áž áá¯áá¹áááá»á¬ážá áœá¬áá»áááºáááºááŸá¯áá»á¬ážááᯠmultiplex ááŒá¯áá¯ááºááá¯ááºááŒá®ááŒá áºáááºá áá±á¬ááºážááá¯áá»ááºáá áºáá¯ááẠáá±á«ááºážáá±á¬ááºá¡ááœáá·áºá¡á¬áá¬ááá¯á¡ááºáá±á¬áºáááºáž áá¯ááá node áá áºáá¯ááá¯á· áá±ážááá¯á·áá«áá áá¯ááá node ááẠáá±á«ááºážáá±á¬ááºáááááºá á¬ááᯠáá¯á¶ážááŒááºááŒá®áž Raft consensus ááœááºáá»ááºááŸá¯áá»á¬ážááᯠááá¯ááºáá±á¬ááºáá² áá¯á¶ážá áœá²áá°áᶠáá±ážááá¯á·ááá¯ááºáááºá
ááŒá±á¬ááºážáá²ááŸá¯ááẠáá®ážááŒá¬áž áááºáá¬áá±áᬠáááºáá°ááŒá¯ááŒááºáž á¡á
áááºá¡ááá¯ááºáž ááá¯á¡ááºááŸá¯ááá¯áááºáž áááºááŸá¬ážáá²á·ááŒá®áž Raft ááŒááºáááºááŸáá·áº áááºáá¬áá±áá¬ááᯠáá®ážááŒá¬áž ááá¯ááºááœááºááŸá¯á¡á¬áž áááºááŸá¬ážáá²á·áááºá ááᯠá¡áááºáááºáž áá¯á¶ááŸááºáá»á¬ážááẠáá±á«ááºážáá±á¬áẠnode á ááááºá
á¬ááᯠááááŸáááẠááá¯á¡ááºáá±á¬á¡áá«ááŸáᬠáá±á«ááºážáá±á¬áẠnode ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá»á¬áž áá±ážááá¯á·áá«áááºá API ááẠá¡á
á¯á¡áá±ážááŸá á¡ááŒá¬áž node áá»á¬ážá á¡ááŒá±á¡áá±ááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááá°ááá¯ááºá
áœááºážááᯠáá±ážáá±á¬ááºáááºá ".sysdump" ááœááºáááºážááᯠcommand line interface ááœáẠááá·áºááœááºážáá¬ážáááºá
source: opennet.ru