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

Ang pagpagawas sa gipang-apod-apod nga DBMS rqlite 7.0 nahitabo, nga naggamit sa SQLite isip usa ka storage engine ug nagtugot kanimo sa pag-organisar sa trabaho sa usa ka cluster gikan sa mga storage nga gi-synchronize sa usag usa. 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 drayber sa go-sqlite3, sa ibabaw diin gilusad 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, ang 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), sa pagsugod sa usa ka bag-ong node, o aron mabawi gikan sa pagkawala sa koneksyon. Aron makunhuran ang gidak-on sa log, gigamit ang awtomatik nga pag-pack, nga nagsugod pagkahuman sa usa ka piho nga gidaghanon sa mga pagbag-o ug nagdala sa pag-ayo sa usa ka snapshot, nga may kalabotan kung diin ang usa ka bag-ong log nagsugod nga mapadayon (ang kahimtang sa database sa memorya mao ang 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 mga proyekto sa produksiyon (grado sa produksiyon).
  • 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. Gihatag usab ang interface sa command line ug mga librarya sa kliyente alang sa lainlaing mga sinultian sa programming.
  • 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.

Sa bag-ong pagpagawas:

  • Gidugang nga suporta alang sa awtomatikong rqlite clustering gamit ang usa ka bag-ong serbisyo sa pag-ila sa node nga mahimong molihok base sa Consul ug etcd nga giapod-apod nga pagtipig. Gitugotan sa serbisyo ang mga rqlite node nga awtomatik nga makit-an ang usag usa - ang tagdumala kinahanglan ra nga maglansad sa daghang mga node sa lainlaing mga server, nga gipiho ang sagad nga adres sa Consul o etcd cluster (pananglitan, "example.com:8500"), ug ang mga node awtomatiko nga gihiusa sa usa ka cluster. Ang nag-unang node matag karon ug unya nag-update sa impormasyon bahin sa adres niini sa Consul o etcd storage, nga nagtugot kanimo sa sunod nga pag-usab sa lider nga dili kinahanglan nga i-reconfigure ang ubang mga node, ingon man usab sa pagdugang sa bag-ong mga node bisan human sa pag-ilis sa lider. Ang legacy Discovery mode nga serbisyo nga nagdagan sa AWS Lambda gihunong na.
  • Gitugotan sa interface sa CLI ang pagtino sa daghang mga host sa usa ka higayon - kung ang una nga node dili magamit, ang sunod nga mga host makontak.
  • Ang kodigo para sa pag-parse sa rqlited command line nga mga argumento gi-rework na.
  • Ang wala na gamita nga protobuf package gihunong na.
  • Ang storage sa BoltDB nga gigamit sa pagpatuman sa Raft protocol gipulihan sa bbolt, usa ka fork gikan sa etcd project.

Source: opennet.ru

Idugang sa usa ka comment