Zhvilluesit e SQLite zhvillojnë pjesën e pasme të HC-tree me mbështetje për shkrime paralele

Zhvilluesit e projektit SQLite kanë filluar testimin e një prapambetjeje eksperimentale HCtree që mbështet mbylljen në nivel rreshti dhe siguron një nivel të lartë paralelizimi gjatë përpunimit të pyetjeve. Backend-i i ri synon të përmirësojë efikasitetin e përdorimit të SQLite në sistemet klient-server që duhet të përpunojnë një numër të madh kërkesash të njëkohshme për shkrim në bazën e të dhënave.

Strukturat b-tree të përdorura në SQLite për të ruajtur të dhënat nuk janë të dizajnuara për këtë lloj ngarkese, gjë që kufizon SQLite të shkruajë vetëm në një thread. Si një eksperiment, zhvilluesit filluan të zhvillojnë një zgjidhje alternative që përdor strukturat e pemës HC për ruajtje, të cilat janë më të përshtatshme për paralelizimin e operacioneve të shkrimit.

Për të lejuar që disa operacione të ekzekutohen njëkohësisht, një rekord HCtree përdor një mekanizëm ndarjeje transaksioni që përdor mbylljen në nivel faqeje dhe është i ngjashëm me MVCC (Multi-Version Concurrency Control), por përdor kontrollet e transaksionit bazuar në çelësat dhe diapazonin e çelësave në vend të grupeve të faqeve. Operacionet e leximit dhe shkrimit kryhen në lidhje me një fotografi të bazës së të dhënave, ndryshimet në të cilat bëhen të dukshme në bazën kryesore të të dhënave vetëm pasi transaksioni të përfundojë.

Klientët mund të përdorin tre operacione të hapura të transaksionit:

  • "BEGIN" - transaksionet nuk marrin parasysh të dhënat e aksesit të klientëve të tjerë. Nëse operacionet e shkrimit kryhen brenda një transaksioni, transaksioni mund të kryhet vetëm nëse gjatë ekzekutimit të tij nuk ka pasur operacione të tjera të shkrimit në bazën e të dhënave.
  • "FILLO KOKURRENT" - transaksionet mbledhin informacion në lidhje me aksesin e klientëve të tjerë. Nëse operacionet e shkrimit kryhen brenda një transaksioni, transaksioni mund të kryhet nëse transaksione të tjera janë kryer në bazën e të dhënave që nga krijimi i fotografisë.
  • “BEGIN EXCLUSIVE” - pas hapjes së një transaksioni, bllokon operacionet nga transaksionet e tjera derisa të përfundojë.

HCtree mbështet replikimin master-slave, i cili ju lejon të migroni transaksionet në një bazë të dhënash tjetër dhe të mbani bazat e të dhënave sekondare në sinkron me bazën e të dhënave parësore. HCtree gjithashtu heq kufizimin në madhësinë e bazës së të dhënave - në vend të identifikuesve të faqeve të të dhënave 32-bit, HCtree përdor ato 48-bit, gjë që rrit madhësinë maksimale të bazës së të dhënave nga 16 tebibajt në 1 ekzbibajt (milion tebibajt). Pritet që performanca e SQLite me prapavijën HCtree të mos jetë më e ulët se prapavija klasike me një fije. Klientët SQLite me mbështetje HCtree do të jenë në gjendje të kenë qasje si në bazat e të dhënave të bazuara në pemë HC ashtu edhe në bazat e të dhënave të SQLite të trashëguara.

Burimi: opennet.ru

Shto një koment