En betydelig utgivelse av immudb 1.0-databasehåndteringssystemet (DBMS) er annonsert. Det garanterer uforanderlighet og varighet av alle data som noen gang legges til, gir beskyttelse mot tilbakevirkende modifikasjoner og muliggjør kryptografisk bevis på dataeierskap. Prosjektet ble opprinnelig utviklet som et spesialisert NoSQL-lagringssystem som manipulerer nøkkel-/verdidata, men med 1.0-utgivelsen er immudb posisjonert som et fullverdig DBMS med SQL-støtte. Prosjektets kode er skrevet i Go og distribueres under Apache 2.0-lisensen.
Informasjon i immudb lagres ved hjelp av en blokkjedelignende struktur som garanterer integriteten til hele kjeden av eksisterende poster og forhindrer endring av allerede lagrede data eller erstatning eller innsetting av poster i transaksjonshistorikken. Lagringen støtter bare tillegg av nye data; den kan ikke slette eller endre eksisterende informasjon. Forsøk på å endre poster i DBMS resulterer bare i lagring av en ny versjon av posten; gamle data går ikke tapt og forblir tilgjengelige i endringshistorikken.
I motsetning til typiske blokkjedebaserte løsninger, muliggjør immudb ytelse på nivå med millioner av transaksjoner per sekund og kan brukes til å lansere lette tjenester eller til å bygge inn funksjonaliteten i applikasjoner som et bibliotek.

Høy ytelse oppnås ved bruk av et loggstrukturert sammenslåingstre (LSM) med en verdilogg, som sikrer rask tilgang til poster selv med høye datainnsettingshastigheter. For å opprettholde lagringsintegriteten brukes i tillegg en Merkle-trestruktur, der hver gren verifiserer alle underliggende grener og noder gjennom delt (trelignende) hashing. Med den endelige hashen kan brukeren verifisere riktigheten av hele operasjonshistorikken, samt riktigheten av tidligere databasetilstander (rotverifiseringshashen for den nye databasetilstanden beregnes med tanke på den forrige tilstanden).
Klienter og revisorer får kryptografisk bevis på dataeierskap og integritet. Bruk av offentlig nøkkelkryptografi krever ikke at klienten stoler på server, og hver ny klienttilkobling til DBMS øker det generelle tillitsnivået i hele lagringen. Offentlige nøkler og nøkkeltilbakekallingslister lagres i databasen, og Intel SGX-enklaver kan brukes til krypterte operasjoner.
DBMS-funksjonaliteten inkluderer SQL-støtte, nøkkel-/verdilagringsmodus, indekser, databasesharding, oppretting av datatilstandsbilder, ACID-transaksjoner med støtte for snapshot-isolering (SSI), høy lese- og skriveytelse, optimaliseringer for effektiv drift på SSD-disker og støtte for arbeid i formen server og et innebygd bibliotek, REST API-støtte og et webgrensesnitt for administrasjon. Typiske applikasjoner der DBMS-er som immudb er nødvendige inkluderer kredittkorttransaksjoner, lagring av offentlige nøkler, digitale sertifikater, sjekksummer og logger, og oppretting av redundant lagring for viktige felt i tradisjonelle DBMS-er. Klientbiblioteker for arbeid med immudb er tilgjengelige for Go, Java, .NET, Python og Node.js.
Viktige forbedringer i immudb 1.0-utgivelsen:
- SQL-støtte med muligheten til å beskytte rader mot skjult modifikasjon.
- TimeTravel-modus lar deg endre databasetilstanden til et bestemt punkt i fortiden. Datasegmenttider kan angis på delspørringsnivå, noe som forenkler endringsanalyse og datasammenligning.
- Støtte for PostgreSQL-klientprotokollen lar immudb bruke eksisterende PostgreSQL-spesifikke applikasjoner og biblioteker. I tillegg til innebygde klientbiblioteker kan standard Ruby-, C-, JDBC-, PHP- og Perl-klientbiblioteker brukes.
- Nettkonsoll for interaktiv datanavigasjon og DBMS-administrasjon. Nettgrensesnittet lar deg sende inn spørringer, opprette brukere og administrere data. Et læringsmiljø på Playground er også tilgjengelig.


Kilde: opennet.ru


