Представлено значний випуск СУБД immudb 1.0, що гарантує незмінність і збереження всіх доданих даних, а також забезпечує захист від внесення змін заднім числом і дає можливість криптографічного доказу володіння даними. Спочатку проект розвивався як спеціалізоване NoSQL-сховище, що маніпулює даними у форматі ключ/значення, але з випуску 1.0 immudb позиціонується як повноцінна СУБД з підтримкою SQL. Код проекту написаний мовою Go та поширюється під ліцензією Apache 2.0.
Інформація в immudb зберігається з використанням блокчейн-подібної структури, що гарантує цілісність всього ланцюжка наявних записів і не дозволяє змінити вже збережені дані або підмінити/вставити запис в історію транзакцій. Сховище підтримує лише додавання нових даних, без можливості видалення чи зміни вже доданої інформації. Спроба зміни записів у СУБД лише призводить до збереження нової версії запису, старі дані не губляться і залишаються в історії змін.
При цьому на відміну від типових рішень на базі блокчейну, immudb дозволяє досягти продуктивності на рівні мільйонів транзакцій в секунду і може застосовуватися для запуску легковажних сервісів або вбудовування своєї функціональності додатків у формі бібліотеки.
Висока продуктивність досягається завдяки застосуванню дерева LSM (Log-structured merge-tree) з логом значень, що забезпечує швидкий доступ до записів за високої інтенсивності додавання даних. Для підтримки цілісності сховища додатково задіяна деревоподібна структура «дерево Меркла» (Merkle Tree), в якій кожна гілка верифікує всі гілки і вузли, що знаходяться нижче, завдяки спільному (деревоподібному) хешування. Маючи кінцевий хеш, користувач може переконатися в коректності всієї історії операцій, а також у коректності минулих станів БД (кореневий перевірочний хеш нового стану бази обчислюється з урахуванням минулого стану).
Клієнтам та аудиторам надається криптографічний доказ володіння та цілісності даних. Застосування криптографії за відкритими ключами не вимагає від клієнта довіри до сервера, а підключення кожного нового клієнта до СУБД збільшує загальний рівень довіри до сховища. Відкриті ключі та списки відкликання ключів зберігаються в БД, а під час операцій з шифруванням можуть використовуватися анклави Intel SGX.
З функціональних можливостей СУБД згадується підтримка SQL, режим зберігання ключ/значення, індекси, сегментування БД (sharding), створення снапшотів стану даних, транзакції ACID з підтримкою ізоляцією снапшотів (SSI), висока продуктивність читання та запису, оптимізації для ефективної роботи на SSD накопичувачах, підтримка роботи у формі сервера та бібліотеки, що вбудовується, підтримка REST API і наявність web-інтерфейсу для управління. З типових областей застосування, в яких затребувані СУБД, подібні до immudb, відзначаються ведення транзакцій з кредитними картками, зберігання відкритих ключів, цифрових сертифікатів, контрольних сум і логів, створення дублюючого сховища для важливих полів у традиційних СУБД. Клієнтські бібліотеки для роботи з immudb підготовлені для Go, Java, .NET, Python та Node.js.
Ключові покращення у випуску immudb 1.0:
- Підтримка SQL із можливістю захисту рядків від прихованої модифікації.
- Режим TimeTravel, що дозволяє переключити стан БД на певний момент у минулому. У тому числі час зрізу даних можна встановлювати на рівні окремих підзапитів, що полегшує аналіз змін та проведення порівняння даних.
- Підтримка клієнтського протоколу PostgreSQL, що дозволяє використовувати з immudb існуючі програми та бібліотеки, розраховані працювати з PostgreSQL. У тому числі, крім рідних клієнтських бібліотек, можна застосовувати типові клієнтські бібліотеки Ruby, C, JDBC, PHP і Perl.
- Web Console для інтерактивної навігації за даними та адміністрування СУБД. Через веб-інтерфейс можна надсилати запити, створювати користувачів та керувати даними. Додатково доступне навчальне середовище Playground.
Джерело: opennet.ru