Została zaprezentowana znaczna wersja bazy danych immudb 1.0, gwarantująca niezmienność i zachowanie wszystkich wcześniej dodanych danych, a także oferująca ochronę przed zmianami wstecznymi i zapewniająca możliwość kryptograficznego dowodu własności danych. Początkowo projekt rozwijał się jako specjalistyczne magazyn NoSQL, manipulujące danymi w formacie klucz/wartość, jednak od wersji 1.0 immudb jest pozycjonowana jako w pełni funkcjonalna baza danych z obsługą SQL. Kod projektu napisano w języku Go i jest rozpowszechniany na licencji Apache 2.0.
Informacje w immudb są przechowywane z użyciem struktury podobnej do blockchaina, która zapewnia integralność całego łańcucha istniejących zapisów i uniemożliwia zmianę już zapisanych danych lub podmianę/wstawienie zapisów do historii transakcji. Magazyn wspiera jedynie dodawanie nowych danych, bez możliwości usunięcia lub zmiany już dodanej informacji. Próba zmiany zapisów w bazie danych tylko prowadzi do zapisania nowej wersji zapisu, stare dane nie są tracone i pozostają dostępne w historii zmian.
W przeciwieństwie do typowych rozwiązań opartych na blockchainie, immudb pozwala osiągnąć wydajność na poziomie milionów transakcji na sekundę i może być stosowana do uruchamiania lekkich usług lub do wbudowywania swojej funkcjonalności w aplikacje w formie biblioteki.

Wysoka wydajność osiągana jest dzięki zastosowaniu drzewa LSM (Log-structured merge-tree) z dziennikiem wartości, zapewniającym szybki dostęp do zapisów przy wysokiej intensywności dodawania danych. W celu utrzymania integralności magazynu dodatkowo wykorzystana jest struktura drzewiasta 'drzewo Merkle' (Merkle Tree), w której każda gałąź weryfikuje wszystkie niższe gałęzie i węzły dzięki wspólnemu (drzewiastemu) haszowaniu. Mając końcowy hasz, użytkownik może upewnić się co do poprawności całej historii operacji, a także poprawności dawnych stanów bazy danych (koronny hasz kontrolny nowego stanu bazy obliczany jest z uwzględnieniem poprzedniego stanu).
Klientom i audytorom oferowane jest kryptograficzne dowód własności oraz integralności danych. Wykorzystanie kryptografii z kluczem publicznym nie wymaga zaufania ze strony klienta, serwera, a podłączenie każdego nowego klienta do DB zwiększa ogólny poziom zaufania do całego magazynu. Klucze publiczne i listy unieważnienia kluczy są przechowywane w bazie danych, a podczas operacji szyfrowania mogą być używane enklawy Intel SGX.
Wśród funkcji bazy danych wymienia się wsparcie dla SQL, tryb przechowywania klucz/wartość, indeksy, segmentację bazy danych (sharding), tworzenie migawkowych stanów danych, transakcje ACID z wsparciem izolacji migawek (SSI), wysoką wydajność odczytu i zapisu, optymalizację dla efektywnego działania na dyskach SSD, wsparcie dla pracy w formie serwera oraz biblioteki wbudowanej, wsparcie dla REST API i dostępność interfejsu webowego do zarządzania. Typowe obszary zastosowań, w których poszukiwane są bazy danych takie jak immudb, obejmują prowadzenie transakcji z kartami kredytowymi, przechowywanie kluczy publicznych, certyfikatów cyfrowych, sum kontrolnych oraz logów, a także tworzenie duplikatu magazynu dla istotnych pól w tradycyjnych bazach danych. Biblioteki klienckie do pracy z immudb są dostępne dla Go, Java, .NET, Python oraz Node.js.
Kluczowe ulepszenia w wydaniu immudb 1.0:
- Wsparcie SQL z możliwością ochrony wierszy przed ukrytą modyfikacją.
- Tryb TimeTravel, który umożliwia przełączenie stanu bazy danych na określony moment w przeszłości. Można również ustalać czas zrzutu danych na poziomie poszczególnych podzapytań, co ułatwia analizę zmian i porównywanie danych.
- Wsparcie dla klienta protokołu PostgreSQL, co pozwala korzystać z immudb z istniejącymi aplikacjami i bibliotekami zaprojektowanymi do pracy z PostgreSQL. Oprócz natywnych bibliotek klienckich można również stosować standardowe biblioteki klienckie Ruby, C, JDBC, PHP oraz Perl.
- Konsola internetowa do interaktywnej nawigacji po danych i administracji bazą danych. Przez interfejs webowy można wysyłać zapytania, tworzyć użytkowników oraz zarządzać danymi. Dodatkowo dostępne jest środowisko edukacyjne Playground.


Źródło: opennet.ru


