SQL vs NoSQL
A lo largo de la historia de las bases de datos, la que ha tenido mayor uso por parte de los programadores es: la base de datos relacional y con la introducción de SQL al mercado gracias a ORACLE en 1979 se vuelve el lenguaje por excelencia.
Sin embargo, en el mundo de la informática, los monopolios no son muy bien aceptados y con la demanda de las grandes empresas para tratar las enormes cantidades de información, además de la poca eficacia de SQL para tratar estos casos, las empresas migran a sistemas NOSQL.
Pero...
¿Qué es SQL?, ¿Qué es NoSQL?, hablaremos de ventajas y desventajas de ambas y un poco de historia, antes de esto empezaremos explicando brevemente que es una base de datos.
¿Qué es una Base de Datos?
Esto quiere decir que tendremos un estándar para ingresar datos y para acomodarlos dentro de la db, y aquí es donde empieza todo. El tratamiento de información tendría que ser de lo mas eficaz posible,insertar, eliminar, modificar y extraer información seria una tarea de todos los días, por lo que se tendría que idear y estructurar la base de datos.Una base de datos (db, por sus siglas en inglés DATA BASE) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso
Dentro de las bases de datos con mayor aceptación fueron:
- Base de datos relacional
- Base de datos no relacional
- Base de datos orientada a objetos
- Base de datos relacionales orientadas a objetos.
SQL
En 1970 Edgar Frank Codd creo el modelo relacional. Este es el modelo mas utilizado actualmente para realización de base de datos.
Consiste en utilizar varias tablas para guardar la información, crear interconexiones entre los registros y a través de las conexiones poder relacionar los datos de cada tabla.
Características
- La base de datos consiste en tablas.
- No se permite redundancia entre registros.
- Las relaciones se hacen a través de llaves primarias y llaves foráneas.
Y entonces, ¿Qué tiene que ver SQL en todo esto?
Structured Query Language (SQL) es el lenguaje de acceso a las bases de datos relacionales, este funciona a través de álgebra relacional con el fin de facilitar la extracción de información.
Se vuelve el lenguaje por excelencia cuando ORACLE en 1979 lo introduce al mercado comercial, creando asi bastantes sistemas de gestión de base de datos con soporte SQL:
- DB2
- Firebird
- HSQL
- Informix
- Interbase
- MariaDB
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Progress
- PervasiveSQL
- SQLite
- Sybase ASE
Lo bueno de SQL
- Es un estandar para el manejo de base de datos relacionales
- No importa si escribes mayúsculas o minúsculas el comando de instrucción lo reconocerá
- Fácil de comprensión
- Es un lenguaje de alto nivel para datos, por lo que una sola instrucción afectara a varios registros
- Provee herramientas que garantizan evitar la duplicidad de registros.
- Garantiza la integridad referencial, así, al eliminar un registro elimina todos los registros relacionados dependientes.
Lo malo de SQL
- Es un lenguaje simple, si necesitamos de mayores implementaciones esta limitado a la explotación de datos
- La seguridad depende del manejador de base de datos que estemos utilizando
Parece que no hay muchas cosas malas de SQL y el modelo relacional, ¿cierto?, pero,
- ¿Qué pasa cuando manejamos grandes cantidades de información?
La estructura de las bases de datos relacionales están hechas para que haya poca modificación dentro de las tablas, cuando agregamos una columna, todos los registros también tendrán esa columna, la necesiten o no. Además, aumentando la necesidad de almacenamiento y tiempos de procesos.
Dentro de un sistema de nomina al parecer no importa mucho la velocidad de los proceso, ya que no tienen mucha interacción con la base de datos. Sin embargo, cuando miles de usuario al mismo tiempo hacen consultas a la base de datos deseosos de conocimiento, requieren que la información no tarde mucho en mostrarse.
Para este problema los monstruos de internet empezaron a ocupar otro tipo de base de datos: NoSQL.
NoSQL
Las bases de datos NoSQL, es un acronimo de Not Only SQL y nace cuando Carlo Strozzi usó el término NoSQL en 1998 para referirse a su base de datos, es todo lo contrario a las bases de datos relacionales, no requieren estructuras como tablas.
La pérdida de flexibilidad en tiempo de ejecución, comparado con los sistemas SQL clásicos, se ve compensada por ganancias significativas en escalabilidad y rendimiento cuando se trata con ciertos modelos de datos.
Una implementación bastante fascínate son los 50 TB de la búsqueda de la bandeja de entrada de Facebook.
Estos se clasifican dependiendo de la manera en almacenar sus datos:
- Base de datos orientados a documentos
- Base de datos orientados a grafos
- Además de algunas implementaciones de BigTable
- MongoDB
- Redis
- CouchDB
- BigTable de Google
- Dynamo de Amazon
- Cassandra
Lo bueno de NoSQL
- Es de código abierto
- Escalamiento sencillo
- Diferentes DBs NoSQL para diferentes proyectos
- Las bases de datos NoSQL utilizan sobre todo el uso de memoria en vez del disco como la principal ubicación de escritura
Lo malo de NoSQL
- El código abierto puede significar una "mancha" en el soporte para las empresas
- No esta lo suficientemente maduro para algunas empresas
- Limitaciones de inteligencias de negocios
- Falta de experiencia
- Problemas de compatibilidad