SQLite-programistoj disvolvas HC-arban backend kun subteno por paralelaj skriboj

SQLite-projektprogramistoj komencis testi eksperimentan HCtree-backend kiu subtenas vic-nivelan ŝlosadon kaj disponigas altan nivelon de paraleligo dum prilaborado de demandoj. La nova backend celas plibonigi la efikecon uzi SQLite en klient-servilaj sistemoj, kiuj devas procesi grandan nombron da samtempaj skribpetoj al la datumbazo.

La b-arbaj strukturoj denaske uzataj en SQLite por stoki datumojn ne estas dezajnitaj por ĉi tiu speco de ŝarĝo, kio limigas SQLite skribi al nur unu fadeno. Kiel eksperimento, la programistoj komencis evoluigi alternativan solvon, kiu uzas HC-arban strukturojn por stokado, kiuj pli taŭgas por paraleligi skribajn operaciojn.

Por permesi al multoblaj operacioj funkcii samtempe, HCtree-rekordo uzas transakcian sekcion-mekanismon kiu uzas paĝ-nivelan ŝlosadon kaj estas simila al MVCC (Multi-Version Concurrency Control) sed uzas transakciajn kontrolojn bazitajn sur ŝlosiloj kaj ŝlosilintervaloj anstataŭe de paĝaj aroj. Legaj kaj skribaj operacioj estas faritaj lige kun datumbaza momentfoto, al kiuj ŝanĝoj iĝas videblaj en la ĉefa datumbazo nur post kiam la transakcio estas finita.

Klientoj povas uzi tri malfermajn transakciajn operaciojn:

  • "KOMENCU"—transakcioj ne konsideras alirdatumojn de aliaj klientoj. Se skribaj operacioj estas faritaj ene de transakcio, la transakcio povas esti farita nur se dum ĝia ekzekuto ne estis aliaj skribaj operacioj en la datumbazo.
  • "KOMENCU SAMUDAN" - transakcioj kolektas informojn pri la aliro de aliaj klientoj. Se skribaj operacioj estas faritaj ene de transakcio, la transakcio povas esti farita se aliaj transakcioj estis faritaj en la datumbazo ekde kiam la momentfoto estis kreita.
  • "KOMENCU EXCLUSIVE" - post malfermi transakcion, ĝi blokas operaciojn de aliaj transakcioj ĝis ĝi estas kompletigita.

HCtree subtenas reproduktadon de majstro-sklavo, kiu permesas vin migri transakciojn al alia datumbazo kaj konservi sekundarajn datumbazojn sinkronigitaj kun la primara datumbazo. HCtree ankaŭ forigas la limigon pri datumbazo-grandeco - anstataŭ 32-bitaj datenpaĝaj identigiloj, HCtree uzas 48-bitajn, kio pliigas la maksimuman datumbazan grandecon de 16 tebibajtoj ĝis 1 eksbibajto (miliono de tebibajtoj). Estas atendite, ke la agado de SQLite kun la backend HCtree ne estos pli malalta ol la klasika unufadena backend. SQLite-klientoj kun HCtree-subteno povos aliri ambaŭ HC-arb-bazitajn datumbazojn kaj heredajn SQLite-datumbazojn.

fonto: opennet.ru

Aldoni komenton