Se ha presentado una versión significativa de la base de datos inmudb 1.0, que garantiza la inmutabilidad y conservación de todos los datos añadidos hasta ahora, además de ofrecer protección contra modificaciones retroactivas y permitir evidencia criptográfica de propiedad de los datos. Originalmente, el proyecto se desarrolló como un almacén NoSQL especializado que manipulaba datos en formato clave/valor, pero a partir de la versión 1.0, inmudb se posiciona como una base de datos completa con soporte SQL. El código del proyecto está escrito en Go y se distribuye bajo la licencia Apache 2.0.
La información en inmudb se almacena utilizando una estructura similar a la cadena de bloques, que garantiza la integridad de toda la cadena de registros existentes y no permite modificar datos ya guardados o falsificar/inserir registros en el historial de transacciones. El almacén solo admite la adición de nuevos datos, sin posibilidad de eliminar o modificar la información ya añadida. Intentar modificar registros en la base de datos solo resulta en guardar una nueva versión del registro; los datos antiguos no se pierden y permanecen accesibles en el historial de cambios.
Sin embargo, a diferencia de las soluciones típicas basadas en blockchain, inmudb permite alcanzar un rendimiento de millones de transacciones por segundo y puede aplicarse para ejecutar servicios livianos o para integrar su funcionalidad en aplicaciones en forma de biblioteca.

La alta performance se logra gracias al uso de un árbol LSM (Log-structured merge-tree) con un registro de valores, que proporciona acceso rápido a los registros con alta intensidad de adición de datos. Para mantener la integridad del almacén, se utiliza adicionalmente una estructura arbórea, el 'árbol de Merkle', en la que cada rama verifica todas las ramas y nodos subyacentes mediante un hashing conjunto (en forma de árbol). Teniendo un hash final, el usuario puede asegurarse de la corrección de toda la historia de operaciones, así como de la corrección de estados pasados de la base de datos (el hash raíz comprobante del nuevo estado de la base se calcula teniendo en cuenta el estado anterior).
Se proporciona a los clientes y auditores una prueba criptográfica de propiedad e integridad de los datos. La aplicación de criptografía de clave pública no requiere que el cliente confíe en servidor, y la conexión de cada nuevo cliente a la base de datos aumenta el nivel general de confianza en todo el almacenamiento. Las claves públicas y las listas de revocación de claves se almacenan en la base de datos, y durante las operaciones de cifrado se pueden utilizar enclaves de Intel SGX.
Entre las funcionalidades de la base de datos se menciona el soporte de SQL, el modo de almacenamiento clave/valor, índices, segmentación de la base de datos (sharding), creación de instantáneas del estado de los datos, transacciones ACID con soporte para la aislamiento de instantáneas (SSI), alto rendimiento de lectura y escritura, optimizaciones para un funcionamiento eficiente en unidades SSD, y el soporte para trabajar en forma servidores y como biblioteca integrada, soporte para REST API y una interfaz web para la gestión. Algunas de las áreas típicas de aplicación donde se demandan bases de datos como immudb incluyen la gestión de transacciones con tarjetas de crédito, almacenamiento de claves públicas, certificados digitales, sumas de verificación y registros, así como la creación de un almacenamiento duplicado para campos importantes en bases de datos tradicionales. Las bibliotecas del cliente para trabajar con immudb están preparadas para Go, Java, .NET, Python y Node.js.
Mejoras clave en el lanzamiento de immudb 1.0:
- Soporte para SQL con la capacidad de proteger filas contra modificaciones ocultas.
- Modo TimeTravel, que permite cambiar el estado de la base de datos a un momento específico en el pasado. Además, el tiempo de corte de los datos se puede establecer a nivel de subconsultas individuales, lo que facilita el análisis de cambios y la comparación de datos.
- Soporte para el protocolo de cliente PostgreSQL, que permite utilizar aplicaciones y bibliotecas existentes con immudb que están diseñadas para trabajar con PostgreSQL. Además de las bibliotecas nativas del cliente, se pueden aplicar bibliotecas típicas del cliente en Ruby, C, JDBC, PHP y Perl.
- Consola web para navegación interactiva de datos y administración de la base de datos. A través de la interfaz web, se pueden enviar consultas, crear usuarios y gestionar datos. También está disponible un entorno de aprendizaje llamado Playground.


Fuente: opennet.ru


