Bases de Datos Relacionales (SQL) y no Relacionales (NoSQL)
¿Qué es una base de datos (DB)?
Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta.
La base de datos relacional (BDR) o SQL:
SQL (Structured Query Language), es un tipo de base de datos (BD) que cumple con el modelo relacional, que es el modelo más utilizado actualmente y almacena los siguientes datos:
El nombre de cada tabla.
El nombre de cada columna.
El tipo de dato de cada columna (numérico o alfabético).
Registro. línea o renglón de la tabla
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera óptima junto a otras bases de datos de otras entidades o proyectos.
Las bases de datos no relacionales (BD NoSQL):
Están diseñadas específicamente para modelos de datos específicos y tienen esquemas flexibles para crear aplicaciones modernas. Usan una variedad de modelos de datos, que incluyen documentos, gráficos, clave-valor.
Las BD NoSQL, utiliza el formato JSON (JavaScript Object Notation), este formato de texto sencillo facilita el intercambio de datos y es independiente del lenguaje de programación utilizado.
Modelo 1: Mongo DB:
En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales. Los documentos son el corazón de MongoDB. Se trata de un conjunto ordenado de claves con su correspondiente valor. Un documento sería similar a una fila en un sistema BDR, pero sin la imposición de un esquema fijo.
Modelo 2: Firebase: es una base de datos desarrollada por Google y es un servicio web que proporciona un backend en la nube con una fuente de datos NoSQL en tiempo real y librerías para poder acceder a la base de datos desde aplicaciones Web, IOS o Android.
Ejemplo 1: Se toma el primer registro de la BDR de los alumnos de la Universidad Central y lo expresamos en notación JSON:
Se expresa entre llaves {}.
Tenemos 5 elementos separados por comas.
Cada elemento está formado por un par clave: valor, ejemplo “Identidad”: 25089.
Ejemplo 2: Se toman los tres registros de la BDR de los alumnos de la Universidad Central y lo expresamos en notación JSON
Los modelos de programación más utilizados para tratar con JSON en los distintos lenguajes son:
Modelo objeto: El JSON completo es almacenado en memoria en un formato de árbol. Este árbol es navegado, analizado y modificado con las API apropiadas. Como lo carga todo en memoria y luego lo procesa este modelo consume muchos recursos. Sin embargo, es muy flexible para manipular el contenido.
Modelo de flujo: Los datos son leídos o escritos en bloques. Por ejemplo, cada vez que se lee un bloque, el analizador genera eventos apropiados para indicar el tipo de bloque de que se trata. El cliente de la API puede procesar el contenido escuchando los eventos apropiados. Además, es el cliente de la API el que decide como se va leyendo el JSON permitiendo parar o saltar contenidos en mitad del proceso.
Bases de datos en formato JSON y su aplicación en blockchain.
Ejemplo de un bloque
Las BD en formato JSON, ha facilitado el desarrollo de la tecnología blockchain. A continuación, ilustramos los datos del bloque 154,595 de BTC:
Este bloque tiene:
15 elementos separados por comas.
Cada elemento está formado por un par clave: valor, por ejemplo, el primer elemento es:
“hash”: “0000000000000bae09a7a393a8acded75aa67e46cb81f7acaa5ad94f9eacd103”.
El segundo elemento es “ver”: 1.
Ejemplo de una transacción
Este JSON tiene:
11 elementos separados por comas.
Cada elemento está formado por un par clave: valor, por ejemplo, el primer elemento es:
“hash”: “b6f6991d03df0e2e04dafffcd6bc418aac66049e2cd74b80f14ac86db1e3f0da”.
Hay elementos complejos como: “out” = [
{ ---------
--------------}
]
Observación final:
El bloque y la transacción aquí presentadas, en formato JSON no están encriptados, esto se hace posteriormente cuando la transacción es procesada y almacenada en la cadena de bloques.