Tanto las bases de datos NoSQL como las Blockchain se benefician de una serie de principios comunes. Cuando ambos se implementan para una aplicación, se pueden lograr muchas cosas, ya que las plataformas pueden complementarse entre sí.
¿Qué es Blockchain?
Blockchain es una tecnología entre pares para desarrollar lo que se conoce como libros de contabilidad distribuidos en los que los datos pueden almacenarse en miles de servidores y bases de datos diferentes de todo el mundo, ser visibles para todos los participantes y recuperarse casi al instante. Blockchain es la tecnología en la que se basan criptomonedas como Bitcoin.
En este artículo, repasamos dos superposiciones sinérgicas de Blockchain y NoSQL que analizan cómo Couchbase La plataforma NoSQL podría dar soporte a su próxima aplicación empresarial de libro mayor distribuido, por ejemplo, basada en Hyperledger. Este tema es muy profundo, pero sólo toco dos ideas superficiales para ayudar a trazar los puntos comunes y las oportunidades: la computación distribuida y el estado mundial.
Para más información sobre Blockchain en general recomiendo las páginas de la academia en ledger.comA continuación se muestra una vista previa.
Informática distribuida
Las arquitecturas empresariales modernas se basan en la informática distribuida, ya sean entornos de procesamiento paralelo CPU/GPU, clústeres de bases de datos multinodo o centros de datos globales con clústeres sincronizados en distintas ubicaciones.
Al aprovechar la velocidad de procesamiento distribuido, la recuperabilidad y la escalabilidad de estas arquitecturas (¡un tema en sí mismo!), los desarrolladores de aplicaciones pueden centrarse en crear la experiencia de usuario deseada y dejar que los sistemas de datos backend hagan el trabajo pesado.
¿Qué significa estar distribuido?? En su forma más básica, significa tener más de un servidor que se gestiona como parte de un clúster de nodos. Idealmente, en los sistemas distribuidos no hay un único punto de fallo ni un control centralizado.
Además, asume que los elementos de la carga de trabajo se dividen en piezas digeribles por los procesadores atómicos subyacentes, por ejemplo, distribuyendo el trabajo entre varios nodos.
Otros nombres para este tipo de sistemas son redes peer-to-peer, computación en clusters, procesamiento paralelo, etc. Wikipedia tiene una gran lista de los tipos de sistemas que han llegado hasta nuestros días.
Blockchain es el epítome de la distribución
A pesar de sus ventajas, la informática distribuida no es omnipresente; incluso en las empresas modernas, la centralización de muchos sistemas sigue siendo bastante habitual. Esto incluye sectores que cabría esperar que estuvieran diseñados con más capacidad de recuperación en mente, como los sistemas financieros globales o la gestión de la cadena de suministro, que han tendido a estar más centralizados en torno a la informática mainframe.
Por cierto, siempre se sabe cuando hay un sistema centralizado porque cuando falla, ¡falla absolutamente! Cuando todos los datos o servicios se ejecutan en una sola máquina es bastante fácil saber cuándo se cae porque todo se detiene por completo.
Puede deberse a que se tarda en poner en marcha una máquina de sustitución, o a que se tarda en advertir un fallo antes de redirigir a los usuarios, o a una miríada de otras devastadoras razones de ingeniería. Un sistema centralizado es lo contrario de las redes entre iguales a las que aspiramos.
Sin embargo, con la introducción de plataformas como Bitcoin, la próxima generación de moneda digital y "libros de contabilidad" se está probando poco a poco. Ahora hay miles de criptomonedas diferentes y docenas de "backends" de Blockchain que aprovechan la tecnología descentralizada.
Como apunte, nótese que "libro mayor distribuido" no equivale al escenarios de prueba de trabajo que utilizan muchas criptodivisas. En su lugar, piensa en los libros de contabilidad como si ya tuvieran confianza para una aplicación que está haciendo actualizaciones y no tuviera que realizar ninguna tarea en particular para añadirla a la cadena. Del mismo modo, los sistemas de prueba de trabajo se centran menos en ser altamente performantes, lo que en última instancia necesitamos para llevar las aplicaciones blockchain a la corriente principal.
NoSQL distribuido
Del mismo modo, las empresas buscan formas de aprovechar enfoques más distribuidos para sus sistemas internos con el fin de reducir el tiempo de inactividad. Si se trata de un sistema basado en un libro mayor, hay varios enfoques disponibles. Si se trata de una base de datos de uso general, también hay opciones, especialmente para la gestión de datos.
En las empresas donde hay algunos sistemas distribuidos en juego, es probable que la mayor parte de la tecnología se encuentre en las bases de datos, particularmente en las plataformas NoSQL. Uno de los pilares de Couchbase ha sido esta naturaleza distribuida desde el primer día, llenando un vacío crítico que las bases de datos heredadas no estaban llenando con eficacia.

La introducción de otro almacén de documentos JSON no tendría nada de especial si sólo se ejecutara en un único nodo. Del mismo modo, otra tecnología Blockchain no sería nada destacable si no estuviera distribuida en un clúster de máquinas.
Si está centralizado, entonces sería un único punto de fallo y control, anulando la confianza del sistema en su conjunto. Afortunadamente, tanto Couchbase como Blockchain y otras tecnologías relacionadas están poniendo de manifiesto la necesidad y el valor de los sistemas distribuidos.
Componentes Hyperledger
Otro punto en común entre los libros de contabilidad distribuidos Blockchain como Hyperledger y Couchbase es el caso de uso de presentar una única vista "actual" de los activos que se gestionan.
En términos de Hyperledger Fabric (una implementación específica de libro mayor distribuido), hay dos tipos de componentes de manejo de datos en juego en su sistema.
Transacciones operativas son el núcleo de cualquier libro mayor: verifican, crean y registran todas las transacciones del libro mayor. Hyperledger Fabric gestiona todos los permisos incorporados para reconocer quién puede iniciar transacciones y también las almacena en una variedad de tecnologías backends.
Estado mundial es el otro componente primario, otra vista de datos que mantiene los valores actuales de la cuenta, no todas las transacciones operativas individuales. Cuando se realiza una transacción de una entidad a otra, el estado mundial también recibe una actualización para que los nuevos valores se mantengan actualizados. Las transacciones anteriores no se almacenan en el estado mundial.
Cada cuenta del sistema de estado mundial tendrá un único valor, pero el historial general se almacena con todo detalle en el sistema de transacciones.
Fuente de la verdad NoSQL
Los dos componentes anteriores podrían implementarse con un Couchbase Base de datos NoSQL como backend. Couchbase gestiona transacciones operativas de alto rendimiento en muchos casos de uso diferentes, finanzas, detección de fraudes, IoT, etc. Transacciones ACID distribuidas también son posibles, lo cual es un tema en sí mismo (más información en un futuro post).
Si Couchbase es la base de datos principal de un sistema Blockchain, puede facilitar tanto el operativo y el estado mundial almacenamiento/recuperación de datos.
Couchbase se utiliza a menudo para almacenar un agregado de datos de varias bases de datos diferentes, proporcionando lo que se conoce como un Fuente de la verdad (vs. Sistema de registro). Esto puede ser análogo al estado del mundo, almacenando la imagen materializada de los datos actuales de interés.
Esto hace que Couchbase sea una buena opción para los desarrolladores de aplicaciones que necesitan almacenar perfiles de usuario para una aplicación. Por ejemplo, otros sistemas backend pueden mantener los datos individuales actualizados, pero cuando el usuario inicia sesión, el perfil de usuario está disponible inmediatamente en un único documento JSON.
El beneficio final de usar Couchbase en este contexto es tener todas las ventajas incorporadas para los desarrolladores. Una vez que los datos se introducen en la base de datos, tienes acceso sin fricciones a potentes herramientas de consulta basadas en SQL, búsqueda de texto completo utilizando lenguaje natural, análisis masivo de big data para enormes conjuntos de datos y mucho más. De este modo, los desarrolladores pueden centrarse en el producto y en el usuario, mientras que los sistemas backend se encargan de la gestión y la sincronización.
Por ejemplo, con las consultas de texto completo, los usuarios pueden realizar búsquedas ad hoc de texto completo de claves u otros atributos de datos de texto en la base de datos. Los índices de texto completo toman condiciones de búsqueda y buscan coincidencias en los índices invertidos para los documentos dados. En lugar de los resultados tabulares estándar de las consultas SQL, los resultados pertinentes de las solicitudes de búsqueda proporcionan punteros a los propios documentos de origen, y también pueden apuntar al campo y los valores del documento donde aparece el texto.
Los propios sistemas Blockchain pueden ofrecer consultas de flujos de eventos en tiempo real, pero la búsqueda de texto completo es más valiosa para la búsqueda histórica de conjuntos de datos fuente de verdad.
¿Por qué NoSQL + Blockchain?
En lugar de limitarme a comparar estas dos tecnologías, también quiero animar a desarrolladores y arquitectos a que estudien cómo pueden utilizarse ambas juntas. He aquí una manera.
Couchbase puede servir como la capa de desarrollo de aplicaciones sobre cualquier tecnología de libro mayor distribuido o Blockchain, tanto como el operativo o el componente de base de datos estado mundial. La base de datos del estado mundial es un primer caso de uso excelente para investigar si está creando una solución empresarial y necesita mostrar los detalles de la cuenta de forma rápida y sencilla a los usuarios finales.
Por ejemplo, cuando se producen transacciones de Blockchain y se actualiza el estado del mundo, la misma actualización podría enviarse a Couchbase y ponerse a disposición de los usuarios. Debido a que Couchbase tiene SDK móvil, así como soporte SQL analítico completo, y mucho más, proporciona una interfaz de datos más robusta que lo que viene con los sistemas Blockchain fuera de la caja.
Esto es especialmente importante cuando se desea que los usuarios accedan rápidamente a la información más actualizada.
Mientras que los sistemas Blockchain tardan en propagar la información, Couchbase utiliza protocolos avanzados para hacerlo mucho más rápido: las vistas de los datos se pueden construir a medida que se producen los cambios. Y como Couchbase se ejecuta en un entorno multiclúster, la estabilidad y resistencia de la plataforma pueden seguir el ritmo de exigencias similares a las del sistema Blockchain.
Integración
Aunque no existe una integración estándar de Couchbase con Hyperledger, el SDK de Couchbase es compatible con los principales lenguajes de programación. Cualquiera que construya un libro de contabilidad basado en Blockchain puede empezar a enviar actualizaciones del estado actual del mundo a la base de datos de Base de datos NoSQL a través de JSON, utilizando tanto la API Blockchain como la API Couchbase.
Si estás interesado en construir este tipo de integración, echa un vistazo a los proveedores de backend actuales en Hyperledger Fabric y adapta uno de ellos para Couchbase Server.

El SDK para desarrolladores de Couchbase es compatible con los idiomas más populares https://www.couchbase.com/products/developer-sdk
Además, puede ser posible implementar esta funcionalidad directamente en la aplicación chaincode enviados durante las actualizaciones de la aplicación de contratos inteligentes en un libro mayor. Apenas estoy empezando a entender este lado del sistema, pero en otro post, podríamos comparar/contrastar las funciones definidas por el usuario (UDFs) de bases de datos y el chaincode de Blockchain para darte más referencia.
Hay mucho más sobre Blockchain en lo que podemos sumergirnos, pero espero que este vistazo a las similitudes y solapamientos ayude a hacer fluir tus jugos cognitivos.
Si este tema o la idea de la integración le interesan, conéctese y debatámoslo en Twitter o LinkedIn o a través de este artículo en Medio.
- Qué es Blockchain (ledger.com)
- Couchbase - Por qué NoSQL?
- Couchbase - Sincronización de datos de la nube al perímetro
- Couchbase - Transacciones ACID
- Hyperledger.org
- Tejido Hyperledger- una tecnología específica de libro mayor distribuido
- Portal para desarrolladores de Couchbase
- Desarrollo de aplicaciones back-end con Hyperledger Fabric a través del SDK (IBM.com)
- Computación distribuida (Wikipedia.org)
Mitchell, ¡gracias! Bueno, ¿qué pasa con los archivos históricos largos (como los mensajes de FB, línea de tiempo y hubble pictues. ¿Existen formas de crear datos, índices y nodos de búsqueda que sólo utilicen soportes WORM (Write once read many) o cadenas de bloques? (Por lo que tengo entendido, una cadena de bloques nunca cambiará, por lo que debe ser suficiente almacenarla sólo en dispositivos que no consuman energía, como las cintas. ¿O la lectura de cadenas de bloques es más barata/más cara que la lectura de cintas y el traslado a clientes?
Buenas preguntas, la verdad es que no estoy seguro, pero sin duda hay muchos casos de uso diferentes tanto para blockchain como para NoSQL.