Avaldanud on projekti TidesDB esimene stabiilne vÀljaanne, mis arendab vÔtme/vÀÀrtuse formaadis andmete salvestamise raamatukogu. Projekti saab kasutada iseseisva mootori vÔi rakendustesse inteerituna. Peamiste vÔimalustena mÀrgitakse ACID-tehingute tugi ja optimeerimine efektiivseks andmete salvestamiseks Flash-mÀlus ja mÀlus. Kood on kirjutatud C keeles ja levitatakse MPL 2.0 litsentsi alusel. Raamistikke on ette valmistatud keeltele C++, Go, Java, Python, Rust, Lua ja JavaScript.
Andmete salvestamiseks on kasutusel LSM-puu (log-struktureeritud puu koos ĂŒhinemisega), mis tagab kĂ”rgemat jĂ”udlust mitte ainult lugemise, vaid ka kirje ja andmete muutmise operatsioonide kĂ€igus. Lugemise operatsioonid ei takista andmete kirjutamist ja lugemist, samas kui kirjutamise operatsioonid blokeerivad ainult seda veergude peret, milles kirjutamine toimub. Lisakiirusel lugemisele toetatakse indekseerimist ja bloom-filter'ite baasil vahemĂ€lu (mis vĂ”imaldavad kontrollida kuulumist kogusse, lubades vale mÀÀratlemise puuduvat elementi, kuid vĂ€listades olemasoleva elemendi vahelejĂ€tmise).
ACID-tehingute tĂ€ieĂ”iguslik tugi, mis vĂ”imaldab atomaarsete muudatuste tegemist, mis hĂ”lmavad veergude peresid, ja vajadusel atomaarset operatsioonide tagasivĂ”tmist. Andmeid saab salvestada kokkutĂ”mbunud kujul, valides tihendamisalgoritmi veergude pere seotuses. VĂ”imalik on seadistada lukustusi ĂŒksikute veergude perede ja ladustamispakettide tasemel paralleelses reĆŸiimis, ilma andmebaasi operatsioonide toimimist takistamata.
PÔhifunktsioonid:
- Veergruppide (Column Families) tugi â isoleeritud andmehulkade kogum, mis on esitatud vĂ”tme/vÀÀrtuse formaadis. Iga veergu pere jaoks kasutatakse oma memtable'i, SSTable'i ja WAL-logi.
- ACID-tehingud, mis hÔlmavad mitmeid operatsioone veergude peredega.
- Optimeerimine paralleelsele juurdepÀÀsule andmetele.
- Toetatakse kahesuunalisi iteratoreid, mis vÔimaldavad paaride vÔtme/vÀÀrtuse edasi vÔi tagasi iteratsiooni valitud positsiooni suhtes salvestuses, kasutades algselt mÀÀratud sortimisvÔtet.
- Tugi oma vÔtmefunktsioonide lisamiseks. Sisseehitatud vÔtmefunktsioonide vÔrdlemiseks memcmp, string ja numeric olemasolu.
- Operatsioonide logimise (WAL, Write-Ahead Log) ja memtable (mÀlus hoidmise) automaatne taastamine antud logist kÀivitamisel.
- Bloom-filterite kasutamine salvestusse tehtavate pĂ€ringute minimeerimiseks, kontrollides vĂ”tme olemasolu enne lugemist SSTable'ist (pĂŒsiv salvestus).
- Snappy, LZ4 ja ZSTD algoritmide tugi andmete tihendamiseks SSTable'is ja WAL-logis.
- VÔimalus mÀÀrata kirje eluiga (TTL) ja automaatne aegunud kirjete eemaldamine.
- Kolm reĆŸiimi andmete sĂŒnkroonimiseks OZS-iga: NONE (kĂ”ige kiirem), BACKGROUND (tasakaalustatud), FULL (kĂ”ige usaldusvÀÀrsem).
- VĂ”imalus seadistada memtable'i suurust, tihendamismeetodeid, bloom-filter'ite reĆŸiimi ja pakendamise parameetreid iga veergude pere jaoks.
- Lihtne C API, mis tagastab 0 operatsiooni eduka tÀitmise korral ja -1 vea korral.
- SBHA (Sorted Binary Hash Array) kasutamine kiireks andmete otsimiseks SSTable'is, mis vÔimaldab mÀÀrata vÔtmeplokkide nihked ilma tÀieliku skaneerimiseta.
- Kompaktne ja kergesti edastatav binaarne andmebaasi esitusformaat, mis toetab versioonide haldust.
- Sisseehitatud mehhanismid terviklikkuse kontrollimiseks, andmete kahjustuse mÀÀramiseks ja taastamiseks.
Allikas: opennet.ru
