Представен е значителен ъпдейт на базата данни immudb 1.0, който гарантира неизменност и запазване на всички данни, добавени някога, както и предоставя защита от промени, направени задълго след добавянето им, и дава възможност за криптографско доказателство за притежание на данните. Първоначално проектът е разработен като специализирано NoSQL хранилище, манипулиращо данни в формат ключ/стойност, но с версия 1.0 immudb се позиционира като пълноценна база данни с поддръжка на SQL. Кодът на проекта е написан на езика Go и е разпространен под лицензия Apache 2.0.
Информацията в immudb се съхранява с използването на структура, подобна на блокчейн, гарантираща целостта на целия запис и невъзможност за промяна на вече запазени данни или подмяна/вмъкване на запис в историята на транзакциите. Хранилището поддържа само добавяне на нови данни, без възможност за изтриване или промяна на вече добавена информация. Опитът за промяна на записи в базата данни води до запазване на нова версия на записа, старите данни не се губят и остават налични в историята на промени.
При това, за разлика от стандартните решения на база блокчейн, immudb позволява постигането на производителност от милиони транзакции в секунда и може да бъде използвана за стартиране на леки услуги или за вграждане на своята функционалност в приложения под формата на библиотека.

Високата производителност се постига благодарение на използването на LSM (Log-structured merge-tree) дърво с лог на стойности, осигуряващо бърз достъп до записите при висока интензивност на добавяне на данни. За поддържане на целостността на хранилището допълнително се използва дървовидна структура, наречена „дърво на Меркъл“ (Merkle Tree), при която всяка клонка верифицира всички долнодостъпни клонки и възли благодарение на съвместно (дървовидно) хеширане. Имайки конечен хеш, потребителят може да се увери в коректността на цялата операция и на предишните състояния на базата данни (коренният проверъчен хеш на новото състояние на базата се изчислява с оглед на предишното състояние).
На клиентите и одиторите се предоставя криптографско доказателство за притежание и целостност на данните. Използването на криптография с открит ключ не изисква от клиента доверие към сървъра, а свързването на всеки нов клиент с базата данни увеличава общото ниво на доверие към цялото хранилище. Откритите ключове и списъците за отмяна на ключове се съхраняват в базата данни, а при извършване на операции с криптиране могат да се използват enclaves на Intel SGX.
Функционалните възможности на базата данни включват поддръжка на SQL, режим на съхранение ключ/стойност, индекси, сегментиране на базата данни (sharding), създаване на моментни снимки на състоянието на данните, ACID транзакции с поддръжка на изолация на моментни снимки (SSI), висока производителност при четене и запис, оптимизация за ефективна работа на SSD дискове и поддръжка на работа в форма сървър и вградени библиотеки, поддръжка на REST API и наличието на уеб интерфейс за управление. Сред типичните области на приложение, в които са търсени бази данни като immudb, се открояват обработка на транзакции с кредитни карти, съхранение на открити ключове, цифрови сертификати, хешове и логове, създаване на дублиращо хранилище за важни полета в традиционни бази данни. Клиентските библиотеки за работа с immudb са подготвени за Go, Java, .NET, Python и Node.js.
Ключови подобрения в пускането на immudb 1.0:
- Поддръжка на SQL с възможност за защита на редовете от тайна модификация.
- Режим TimeTravel, който позволява превключване на състоянието на базата данни на определен момент в миналото. Времето на изрязване на данни може да се зададе на ниво отделни подзапитвания, което улеснява анализа на изменения и извършването на сравнения на данни.
- Поддръжка на клиентски протокол PostgreSQL, който позволява използването на вече съществуващи приложения и библиотеки, предназначени за работа с immudb и PostgreSQL. В допълнение към собствените клиентски библиотеки, могат да се използват и стандартни клиентски библиотеки Ruby, C, JDBC, PHP и Perl.
- Уеб конзола за интерактивна навигация по данните и администрация на базата данни. Чрез уеб интерфейса могат да се изпращат заявки, създават потребители и управляват данни. Освен това е налична обучаваща среда Playground.


Източник: opennet.ru


