En inbyggd databasmotor TidesDB 1.0 Àr tillgÀnglig och stöder ACID-transaktioner

Den första stabila versionen av TidesDB-projektet har publicerats, som utvecklar ett bibliotek för lagring av data i formatet nyckel/vÀrde. Projektet kan anvÀndas som en fristÄende motor eller för integrering i applikationer. Bland de viktigaste egenskaperna nÀmns stöd för ACID-transaktioner och optimering för effektiv lagring av data pÄ Flash-minnen och i RAM. Koden Àr skriven pÄ C och distribueras under MPL 2.0-licensen. Bindningar har förberetts för sprÄken C++, Go, Java, Python, Rust, Lua och JavaScript.

För lagring av data anvÀnds en LSM-tree-struktur (log-strukturerat trÀd med sammanslagning), som sÀkerstÀller hög prestanda inte bara vid lÀsning, utan ocksÄ vid utförande av skriv- och Àndringsoperationer. LÀsoperationer blockerar inte skrivning och lÀsning av data, medan skrivoperationer blockerar endast den kolumnfamilj dÀr skrivningen utförs. För ytterligare accelerering av lÀsningen stöds indexering och caching baserat pÄ bloom-filter (som möjliggör kontroll av medlemsskap i en mÀngd, med en viss risk för falska negativa, men utesluter att ett existerande element missas).

Det finns fullstÀndigt stöd för ACID-transaktioner, vilket möjliggör atomÀra Àndringar som omfattar kolumnfamiljer, och vid behov atomÀra ÄterstÀllningar av operationer. Data kan lagras i komprimerad form med val av komprimeringsalgoritm kopplad till kolumnfamiljen. Det Àr möjligt att sÀtta lÄs pÄ nivÄn av specifika kolumnfamiljer och packning av lagret i parallell utan att blockera utförandet av operationer med databasen.

Key features:

  • Stöd för kolumnfamiljer (Column Families) — isolerade uppsĂ€ttningar av data i formatet nyckel/vĂ€rde. För varje kolumnfamilj anvĂ€nds sina egna memtable, SSTable och WAL-logg.
  • ACID-transaktioner som omfattar flera operationer med kolumnfamiljer.
  • Optimering för parallell Ă„tkomst till data.
  • Stöd för tvĂ„vĂ€gsiteratorer, som möjliggör iterering av nyckel/vĂ€rde-par framĂ„t eller bakĂ„t frĂ„n en vald position i lagret, med hjĂ€lp av en initialt definierad sorteringsmetod.
  • Stöd för att lĂ€gga till egna jĂ€mförelsefunktioner för nycklar. Inbyggda jĂ€mförelsefunktioner sĂ„som memcmp, string och numeric finns.
  • Loggning av operationer (WAL, Write-Ahead Log) och automatisk Ă„terstĂ€llning av memtable (minnesbaserat lagringsutrymme) frĂ„n denna logg vid start.
  • AnvĂ€ndning av Bloom-filter för att minimera Ă„tkomsten till lagringen genom att kontrollera förekomsten av nyckeln före lĂ€sning frĂ„n SSTable (permanent lagring).
  • Stöd för algoritmerna Snappy, LZ4 och ZSTD för komprimering av poster i SSTable-lagringen och WAL-logg.
  • Möjlighet att definiera livstid för poster (TTL) och automatisk uteslutning av förfallna poster.
  • Tre lĂ€gen för datasykronisering i RAM med permanent lagring: NONE (snabbast), BACKGROUND (balanserad), FULL (mest tillförlitlig).
  • Möjlighet att konfigurera storleken pĂ„ memtable, komprimeringsmetoder, bloom-filter, synkroniseringslĂ€ge och paketeringsparametrar för varje kolumnfamilj.
  • Ett enkelt C API som returnerar 0 vid framgĂ„ng och -1 vid fel.
  • AnvĂ€ndning av SBHA (Sorted Binary Hash Array) för snabb databasgenomsökning i SSTable, vilket möjliggör bestĂ€mning av offset för block med nycklar utan fullstĂ€ndig skanning.
  • Kompakt, bĂ€rbart binĂ€rt format för databasrepresentation med versionsstöd.
  • Inbyggda mekanismer för integritetskontroll, felidentifiering och Ă„terstĂ€llning.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster