Pagpagawas sa rqlite 6.0, usa ka gipang-apod-apod nga fault-tolerant nga DBMS base sa SQLite

Ang pagpagawas sa gipang-apod-apod nga DBMS rqlite 6.0 gipresentar, nga naggamit sa SQLite isip usa ka storage engine ug nagtugot kanimo sa pag-organisar sa trabaho sa usa ka cluster sa mga gi-synchronize nga mga storage. Usa sa mga bahin sa rqlite mao ang kasayon ​​sa pag-instalar, pag-deploy ug pagmentinar sa usa ka giapod-apod nga fault-tolerant storage, medyo susama sa etcd ug Consul, apan naggamit ug relational data model imbes nga key/value format. Ang code sa proyekto gisulat sa Go ug giapod-apod ubos sa lisensya sa MIT.

Aron mapadayon ang tanan nga mga node sa usa ka dungan nga estado, ang Raft consensus algorithm gigamit. Gigamit sa Rqlite ang orihinal nga librarya sa SQLite ug ang standard nga go-sqlite3 nga drayber, sa ibabaw diin gilunsad ang usa ka layer nga nagproseso sa mga hangyo sa kliyente, naghimo sa pagkopya sa ubang mga node ug gimonitor ang pagkab-ot sa consensus sa pagpili sa usa ka nanguna nga node.

Ang mga pagbag-o sa database mahimo ra pinaagi sa node nga gipili ingon nga lider, apan ang mga koneksyon nga adunay mga operasyon sa pagsulat mahimo usab ipadala sa ubang mga node sa cluster, nga ibalik ang adres sa lider aron masubli ang hangyo (sa sunod nga bersyon sila nagsaad nga idugang ang awtomatik nga pagpasa sa mga hangyo sa lider). Ang panguna nga gibug-aton mao ang pagtugot sa sayup, mao nga ang DBMS nagtimbang lamang sa mga operasyon sa pagbasa, ug ang mga operasyon sa pagsulat mao ang bottleneck. Posible nga modagan ang usa ka rqlite cluster gikan sa usa ka node ug kini nga solusyon magamit aron mahatagan ang access sa SQLite sa HTTP nga wala maghatag pagtugot sa sayup.

Ang data sa SQLite sa matag node wala gitipigan sa usa ka file, apan sa memorya. Sa lebel sa layer nga adunay pagpatuman sa Raft protocol, usa ka log sa tanan nga mga mando sa SQLite nga nagdala sa mga pagbag-o sa database gitipigan. Kini nga log gigamit sa panahon sa pagkopya (replikasyon sa lebel sa pag-reproduce sa mga hangyo sa ubang mga node), pagsugod sa usa ka bag-ong node, o pagbawi gikan sa pagkawala sa koneksyon. Aron makunhuran ang gidak-on sa log, gigamit ang awtomatik nga pagputos, nga nagsugod pagkahuman sa usa ka piho nga gidaghanon sa mga pagbag-o ug nagdala sa usa ka snapshot nga gitakda sa disk, nga may kalabotan kung diin ang usa ka bag-ong log nagsugod nga gitipigan (ang kahimtang sa database sa memorya. parehas sa snapshot + ang natipon nga log sa pagbag-o).

Mga bahin sa rqlite:

  • Sayon nga i-deploy ang usa ka cluster, nga wala kinahanglana ang usa ka bulag nga pag-install sa SQLite.
  • Abilidad nga dali nga makakuha og gisubli nga pagtipig sa SQL.
  • Andam nga gamiton sa pagtrabaho nga mga proyekto (Production-grade).
  • Ang presensya sa usa ka HTTP(S) API nga nagtugot kanimo sa pag-update sa datos sa batch mode ug pagtino sa nag-unang node sa cluster. Naghatag usab kini usa ka interface sa command line ug ang abilidad sa paggamit sa lainlaing mga librarya sa kliyente nga gitukod alang sa SQLite.
  • Ang pagkaanaa sa usa ka serbisyo alang sa pag-ila sa ubang mga node, nga nagtugot kanimo sa paghimo sa mga cluster nga dinamikong.
  • Suporta alang sa pag-encrypt sa data exchange tali sa mga node.
  • Ang katakus sa pag-configure sa lebel sa pagsusi sa kalabutan ug pagkamakanunayon sa datos kung nagbasa.
  • Opsyonal nga abilidad sa pagkonektar sa mga node sa read-only mode, nga dili moapil sa pagdeterminar sa consensus ug gigamit sa pagdugang sa scalability sa cluster para sa read operations.
  • Suporta alang sa imong kaugalingon nga porma sa mga transaksyon nga gibase sa paghiusa sa mga sugo sa usa ka hangyo (ang mga transaksyon base sa BEGIN, COMMIT, ROLLBACK, SAVEPOINT ug RELEASE wala gisuportahan).
  • Suporta alang sa paghimo og init nga mga backup.

Ang bag-ong pagpagawas nagpaila sa hinungdanon nga mga pagbag-o sa arkitektura nga gitumong sa pagdugang sa pagkakasaligan sa cluster pinaagi sa pagpaayo sa proseso sa pagruta sa pagbasa ug pagsulat sa mga hangyo sa husto nga mga cluster node. Ang mga rqlite node mahimo na nga mag-multipx sa daghang mga lohikal nga koneksyon sa ilang kaugalingon gamit ang mga koneksyon sa TCP nga gitukod tali sa mga node pinaagi sa Raft protocol. Kung ang usa ka hangyo nanginahanglan ug awtoridad sa lider apan gipadala sa usa ka sekondaryang node, ang sekondaryang node mahimong matino ang adres sa lider ug ipasa kini sa kliyente nga wala maghimo mga kalkulasyon sa Raft consensus.

Giwagtang usab sa pagbag-o ang panginahanglan alang sa usa ka bulag nga sangkap sa pag-synchronize sa metadata ug gitangtang ang lahi nga pagdumala sa estado sa Raft ug metadata. Ang mga sekondaryang node karon nagpadala sa mga hangyo sa node sa lider kung gikinahanglan, kung kinahanglan nila nga mahibal-an ang adres sa node sa lider. Ang API naghatag og abilidad sa pagkuha og impormasyon mahitungod sa kahimtang sa ubang mga node sa cluster. Ang ".sysdump" nga sugo gidugang sa command line interface.

Source: opennet.ru

Idugang sa usa ka comment