SQLite-ûntwikkelders ûntwikkelje HC-tree-backend mei stipe foar parallelle skriuwen

SQLite-projektûntwikkelders binne begon te testen fan in eksperimintele HCtree-backend dy't beskoatteljen op rigelnivo stipet en in heech nivo fan parallelisaasje leveret by it ferwurkjen fan fragen. De nije backend is rjochte op it ferbetterjen fan de effisjinsje fan it brûken fan SQLite yn client-server-systemen dy't in grut oantal simultane skriuwfersiken moatte ferwurkje nei de databank.

De b-beamstruktueren dy't natuerlik brûkt wurde yn SQLite om gegevens op te slaan binne net ûntworpen foar dit type lading, wat SQLite beheint om mar ien thread te skriuwen. As eksperimint begon de ûntwikkelders in alternative oplossing te ûntwikkeljen dy't HC-beamstruktueren brûkt foar opslach, dy't mear geskikt binne foar parallelisearjen fan skriuwoperaasjes.

Om meardere operaasjes tagelyk út te fieren, brûkt in HCtree-record in transaksje-partitioneringsmeganisme dat beskoatteljen op side-nivo brûkt en is fergelykber mei MVCC (Multi-Version Concurrency Control), mar brûkt transaksjekontrôles basearre op kaaien en kaaibereiken ynstee fan sidesets. Lêzen en skriuwe operaasjes wurde útfierd yn ferbân mei in databank momintopname, feroarings wurde sichtber yn 'e wichtichste databank pas neidat de transaksje is foltôge.

Klanten kinne trije iepen transaksjeoperaasjes brûke:

  • "BEGIN" - transaksjes nimme gjin rekken mei tagongsgegevens fan oare kliïnten. As skriuwoperaasjes wurde útfierd binnen in transaksje, kin de transaksje allinich ynset wurde as tidens de útfiering der gjin oare skriuwoperaasjes yn 'e databank wiene.
  • "BEGIN CONCURRENT" - transaksjes sammelje ynformaasje oer de tagong fan oare kliïnten. As skriuwoperaasjes wurde útfierd binnen in transaksje, kin de transaksje ynset wurde as oare transaksjes binne ynset yn 'e databank sûnt de momintopname is makke.
  • "BEGIN EXCLUSIVE" - nei it iepenjen fan in transaksje, blokkeart it operaasjes fan oare transaksjes oant it is foltôge.

HCtree stipet master-slave-replikaasje, wêrtroch jo transaksjes nei in oare databank kinne migrearje en sekundêre databanken syngronisearje mei de primêre databank. HCtree ferwideret ek de beheining op databankgrutte - ynstee fan 32-bit dataside-identifiers, brûkt HCtree 48-bit, wat de maksimale databankgrutte fergruttet fan 16 tebibyte nei 1 exbibyte (miljoen tebibyte). It wurdt ferwachte dat de prestaasjes fan SQLite mei de HCtree-backend net leger sille wêze as de klassike single-threaded backend. SQLite-kliïnten mei HCtree-stipe sille tagong krije ta sawol HC-beam-basearre databases as legacy SQLite-databases.

Boarne: opennet.ru

Add a comment