ĂshtĂ« publikuar versioni i parĂ« stabil i projektit TidesDB, i cili zhvillon njĂ« bibliotekĂ« pĂ«r ruajtjen e tĂ« dhĂ«nave nĂ« formatin çelĂ«s/vlerĂ«. Projekti mund tĂ« pĂ«rdoret si njĂ« motor i pavarur ose pĂ«r integrim nĂ« aplikacione. Nga funksionalitetet kyçe pĂ«rmendet mbĂ«shtetje pĂ«r transaksionet ACID dhe optimizim pĂ«r ruajtjen efektive tĂ« tĂ« dhĂ«nave nĂ« tĂ« dhĂ«nat Flash dhe nĂ« memorie. Kodi Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe shpĂ«rndahet nĂ«n licencĂ«n MPL 2.0. Kyçjet janĂ« pĂ«rgatitur pĂ«r gjuhĂ«t C++, Go, Java, Python, Rust, Lua dhe JavaScript.
Për ruajtjen e të dhënave, përdoret struktura LSM-tree (pema e strukturuar me regjistrim dhe bashkimin), e cila siguron performancë të lartë jo vetëm gjatë leximit, por edhe gjatë kryerjes së operacioneve të shkruajtur dhe ndryshimit të të dhënave. Operacionet e leximit nuk bllokojnë shkrimin dhe leximin e të dhënave, ndërsa operacionet e shkrimit bllokojnë vetëm familjen e kolonave në të cilën kryhet shkrimi. Për përshpejtimin e leximit, mbështeten indekset dhe memorizimi në bazë të filtreve bloom (të cilat lejojnë verifikimin e përfshirjes në një grup, duke lejuar përcaktimin e gabuar të një elementi jo-ekzistues, por duke përjashtuar humbjen e një elementi ekzistues).
Ka mbĂ«shtetje tĂ« plotĂ« pĂ«r transaksionet ACID, tĂ« cilat lejojnĂ« ndryshime atomike qĂ« pĂ«rfshijnĂ« familjet e kolonave, dhe nĂ« rast nevoje, kthimin atomik tĂ« operacioneve. TĂ« dhĂ«nat mund tĂ« ruhen nĂ« njĂ« format tĂ« kompresuar duke zgjedhur algoritmin e kompresimit nĂ« lidhje me familjen e kolonave. ĂshtĂ« e mundur qĂ« tĂ« vendosen bllokime nĂ« nivelin e familjeve tĂ« kolonave tĂ« veçanta dhe paketimi i magazinimit nĂ« mod paralel pa bllokuar kryerjen e operacioneve me DB.
Karakteristikat kryesore:
- MbĂ«shtetje pĂ«r familjet e kolonave (Column Families) â grupe tĂ« izoluara tĂ« tĂ« dhĂ«nave nĂ« formatin çelĂ«s/vlerĂ«. PĂ«r secilĂ«n familje kolonash pĂ«rdoren Memtable, SSTable dhe WAL-log tĂ« veçanta.
- Transaksionet ACID, duke përfshirë disa operacione me familjet e kolonave.
- Optimizim për qasje paralele në të dhëna.
- Mbështetje për iteraatorë të dyanshëm, të cilët lejojnë kalimin përpara ose prapa të çifteve çelës/vlerë në raport me pozitën e zgjedhur në magazinë, duke përdorur metodën e renditjes të vendosur fillimisht.
- Mbështetje për shtimin e funksioneve të veta të krahasimit të çelësve. Prania e funksioneve të builtin të krahasimit memcmp, string dhe numeric.
- Përmbajtja e logut të operacioneve (WAL, Write-Ahead Log) dhe ringjallja automatike e memtable (ruajtja në memorien e përkohshme) nga ky log gjatë nisjes.
- Përdorimi i Bloom-filtërve për të minimizuar akseset në ruajtësin duke kontrolluar praninë e çelësit para leximit nga SSTable (ruajtja e përhershme).
- Mbështetje për algoritmet Snappy, LZ4 dhe ZSTD për kompresimin e rekordëve në ruajtjen SSTable dhe WAL-log.
- Mundësia për të përcaktuar kohëzgjatjen e jetës së rekordëve (TTL) dhe përjashtimin automatik të rekordëve të skaduar.
- Të treja modet e sinkronizimit të të dhënave në RAM me ruajtjen përhershme: NONE (më i shpejti), BACKGROUND (i balancuar), FULL (më i besueshëm).
- Mundësia për të konfiguruar madhësinë e memtable, metodologjitë e kompresimit, Bloom-filtërat, modin e sinkronizimit dhe parametrat e paketimit për çdo familje kolonash.
- Një API e thjeshtë C që kthen 0 për ekzekutimin e suksesshëm të operacionit dhe -1 për gabim.
- Përdorimi i SBHA (Sorted Binary Hash Array) për kërkimin e shpejtë të të dhënave në SSTable, duke lejuar përcaktimin e zhvendosjeve të bllok-ve me çelësa pa skanimin e plotë.
- Një format binar kompakt dhe portativ për paraqitjen e bazës, që mbështet versionimin.
- Mekanizmat e ndërtuar për kontrollin e integritetit, përcaktimin e dëmtimeve të të dhënave dhe rivendosjen.
Burimi: opennet.ru
