sábado, 6 de noviembre de 2021

SQL frente a NoSQL

No se puede hablar sobre arquitectura de datos sin estudiar el almacenamiento de datos, ya sean archivos almacenados en el sistema de archivos o elementos almacenados dentro de una tabla de base de datos. Un sistema de base de datos compatible con SQL o lenguaje de consulta estructurado es un sistema de base de datos relacional. Incluye productos como Oracle SQL, Microsoft SQL Server o MySQL. Estos productos se pueden implementar en las instalaciones, pero también podemos implementarlos en una nube pública, donde no tenemos que preocuparnos por el hardware, el almacenamiento o la adquisición del software. 

SQL frente a NoSQL

SQL 

En un sistema de base de datos relacional, la razón por la que se llama relacional es porque podemos relacionar o vincular tablas. lo hacemos usando lo que se llaman claves externas. Por ejemplo, si tenemos una tabla Cliente y Transacciones, donde almacenamos información del cliente y almacenamos, digamos, artículos comprados, respectivamente. Para mantener un vínculo entre esas dos tablas separadas, lo que podemos hacer es usar una columna en ambas. Cada una de ellas tendría una columna de identificación de cliente única. Para que podamos establecer una relación entre los clientes y sus transacciones. Con un tipo de base de datos SQL, cada tabla, fila o registro almacena el mismo tipo de datos, como el nombre del cliente, número de teléfono, dirección de correo electrónico, dirección postal, etc.  Eso sería igual para cada fila o para cada cliente. Esto se llama esquema estructurado, donde el esquema es simplemente el plano que definimos, qué se almacenará y cómo se almacenará en el entorno de base de datos compatible con SQL. 

Las bases de datos SQL normalmente aprovechan el escalado vertical. Es decir, si necesitamos aumentar la potencia en la máquina donde está alojada la base de datos,  ya sea una máquina física o virtual, aumentamos la cantidad de RAM cuando escalamos,  o aumentamos la cantidad de CPU o el tipo de CPU a algo más rápido. O bien aumentando las IOPS del disco, (operaciones de entradas y salidas por segundo), lo que aumenta el rendimiento del disco. Estamos ampliando la escala. Reducir la escala significa que está disminuyendo la cantidad de potencia, tal vez reduciendo la cantidad de RAM o reduciendo la cantidad de núcleos de CPU disponibles para fines informáticos. 

NoSQL

NoSQL está diseñado para escalabilidad a gran escala. Por tanto, está diseñado para procesar macrodatos (Big Data). Ejemplos de productos que son NoSQL son MongoDB, IBM Domino, Redis, etc. A diferencia de una base de datos SQL, En NoSQL cada fila o registro de datos puede almacenar tipos de datos completamente diferentes. NoSQL utiliza un esquema semi o no estructurado. A diferencia de las bases de datos compatibles con SQL que usan un esquema o plano rígido o fijo de lo que se va a almacenar, ese no es el caso con NoSQL. Por eso escala tan bien. Podemos almacenar métricas de dispositivos de IoT, publicaciones en redes sociales, archivos de audio y video. Todas esas cosas se almacenan de manera muy diferente, tienen diferentes tipos de formatos, pero eso es exactamente para lo que está diseñado NoSQL. Y así, En este caso la  escalabilidad, se denomina horizontal.

Que es el escalado se utiliza más a menudo con NoSQL. Escalado horizontal significa que estamos agregando múltiples nodos de cómputo para manejar la carga de trabajo para un mejor rendimiento o para el procesamiento en paralelo de grandes conjuntos de datos.  Puede implementarse mediante la agrupación en clústeres, donde tenemos un montón de máquinas trabajando juntas para ofrecer el mismo servicio. O mediante el equilibrio de carga, de modo que si un servidor deja de funcionar, los usuarios son dirigidos a otro servidor que permanece en ejecución. Todos los servidores siempre ejecutan lo mismo al mismo tiempo. También podríamos utilizar la replicación en varios servidores para poder tener varias copias para la disponibilidad de datos.


No hay comentarios:

Publicar un comentario