Un enfoque diferente para las actualizaciones de aplicaciones

La mayoría del software mantiene sus datos en una base de datos separada, lo que significa que cada actualización de código conlleva el riesgo de perder o corromper esos datos. El Internet Computer de @dfinity toma un camino diferente para las apps construidas en Motoko, su lenguaje de programación diseñado a medida.

En lugar de ir moviendo datos hacia y desde un almacenamiento separado en cada actualización, Motoko siempre ha podido preservar automáticamente el estado del programa a través de las actualizaciones sin ningún código adicional para gestionar la persistencia. La innovación clave es sencilla: el entorno de ejecución evita cualquier transferencia del estado a la memoria estable simplemente reteniendo, en lugar de borrar, la memoria principal. El sistema de runtime ahora garantiza la consistencia de los datos en las actualizaciones de una manera muy eficiente, independientemente del tamaño de la memoria.

Este enfoque se denomina formalmente persistencia ortogonal. Los canisters utilizan persistencia ortogonal para hacer que parezca que la instancia del módulo vive para siempre, dejando obsoletas las bases de datos o la E/S de archivos. Para almacenar de forma persistente una variable, los desarrolladores solo tienen que escribir la variable en la memoria.

Antes de que una actualización entre en producción, el sistema comprueba si el nuevo código puede realmente leer los datos almacenados existentes. Si falla esa comprobación de compatibilidad, la actualización se revierte y no se pierde nada. La persistencia ortogonal mejorada de Motoko busca liberar a los programadores de tener que lidiar con la memoria estable, ofreciendo un mecanismo de actualización que es simple, seguro y rápido al mismo tiempo.

Un camino más difícil para los desarrolladores de Rust

El contraste con otros lenguajes es marcado. Otros lenguajes admitidos en Internet Computer usan implementaciones listas para usar que no se diseñaron pensando en la persistencia ortogonal, por lo que los programadores tienen que usar explícitamente memoria estable o estructuras de datos estables especiales para rescatar sus datos entre actualizaciones. A diferencia de Motoko, este enfoque no solo es engorroso, sino también inseguro e ineficiente.

Para los desarrolladores de Rust en Internet Computer, DFINITY sí mantiene una biblioteca de estructuras de datos seguras para actualizaciones. Es una colección de estructuras de datos escalables para Internet Computer que persisten a través de las actualizaciones, diseñadas para usar la memoria estable como almacenamiento subyacente, lo que les permite crecer hasta tamaños de gigabytes. Sin embargo, la responsabilidad de gestionar ese proceso aún recae en el desarrollador y no en el propio tiempo de ejecución del lenguaje.

La brecha de capacidades es lo más importante a medida que crecen las aplicaciones. Stellarator, un logro reciente de Internet Computer, se describe como un avance en la persistencia de datos en cadena que incrementa sustancialmente la escalabilidad y la gestión del almacenamiento de datos, desbloqueando nuevas oportunidades para aplicaciones complejas y ricas en datos que antes estaban limitadas por restricciones del sistema, y aportando un nuevo nivel de utilidad a la tecnología blockchain.

Fuentes:
DFINITY: Un recorrido por Stellarator, parte 2 (Persistencia ortogonal mejorada)
Documentación de Internet Computer: Variables estables y métodos de actualización
Documentación de Internet Computer: Actualizaciones de canisters, almacenamiento y persistencia