7 SQL vs NoSQL: PostgreSQL y MongoDB


Elegir una modelo de base de datos no es algo trivial. Cada base de datos está diseñada para dar respuesta a unos requisitos de diseño en concreto, la elección debería hacerse en función de qué requisitos son más importantes en el diseño del modelo.

SQL nació de mano de IBM en la década de los 70 debido a la necesidad de almacenar grandes conjuntos de datos.
[11]

Utilizan una estructura de datos rígida que requiere de datos estructurados y bien organizados. Los datos en SQL están organizados en tablas que se relacionan entre sí.

La potencia de SQL reside en una buena estructura de datos que minimiza la redundancia y maximiza la sincronización.

NoSQL es una tecnología reciente que surge para responder a la necesidad de trabajar y almacenar grandes cantidades de datos que no tienen porque estar estructurados. En general proporciona mucha más flexibilidad que SQL en la forma de organizar y estructurar los datos. En lugar de organizar los datos en tablas, NoSQL utiliza documentos que pueden contener cualquier dato y cada documento puede tener su propia estructura, lo que permite una forma de búsqueda más sencilla.

La potencia de NoSQL reside en la capacidad de trabajar con grandes volúmenes de datos semi-estructurados.

7.1 SQL vs NoSQL

Las principales características de los sistemas gestores de bases de datos relacionales frente a los no relacionales son los las siguientes:

Relacionales No relacionales
Datos estructurados en forma de tabla Datos estructurados en forma de clave-valor
ACID CAP
3 aspectos principales: Estructuración, Integridad y Manipulación 3 aspectos principales: Básicamente disponible, Estado suave y Eventualmente consistente
Operaciones: Insert, Update, Delete y Select Operaciones: Get, Put, Delete y Execute
Lenguaje SQL Consultas de estilo Mapreduce y soporte para SQL

SQL vs NoSQL

7.2 PostgreSQL vs MongoDB

Para concretar un poco más la comparativa, se va a comparar las principales características de PostgreSQL con las de MongoDB.

Característica MongoDB PostgreSQL
Inicio del desarrollo 2009 1995
Esquema Dinámico Estático y dinámico
Soporte para datos jerárquicos de documentos Si Si, desde 2012
Soporte para datos clave-valor Si Si, desde 2006
Soporte para datos normalizados No Si
Restricción en los datos No Si
Claves foráneas y joins No Si
Lenguaje de consulta No Si
Soporte para MVCC No Si
Transacciones atómicas En un documento A lo largo de la base de datos
Soporte para lenguajes Web JS, Python, ruby... JS, Python, ruby...
Soporte para datos de formato Web JSON, XML, clave-valor JSON, XML, clave-valor
Soporte geo-espacial Si Si
Escalado fácil Horizontal Vertical
Sharding Sencillo Complejo
Programación en el lado servidor No Python, JS, C, C++...
Integración con otras bases de datos No Oracle, MySQL, MongoDB...
Lógica de negocio Distribuida a través de aplicaciones de cliente Distribuida a través de aplicaciones de cliente o centralizada con triggers y procedures
Recursos especializados Difícil de encontrar Fácil de encontrar
Usos principales Big data con alta concurrencia de actualizaciones donde la integridad y consistencia de los datos no es un requisito Aplicaciones transaccionales y operacionales que mejoran frente a la forma normalizada

PostgreSQL vs MongoDB -[12]

7.3 Conclusión

A pesar de las ventajas que ofrecen las bases de datos de tipo NoSQL frente a las SQL, centrando la comparación entre MongoDB y PostgreSQL se puede ver que en PostgreSQL ya se han incorporado algunas de las principales ventajas que ofrecen las bases de datos NoSQL.

  • PostgreSQL tiene soporte para formato de datos en clave-valor y JSON al igual que MongoDB.

  • PostgreSQL Permite MVCC al contrario que MongoDB cuyo uso principal no es el de mantener la integridad y consistencia de los datos a lo largo de los diferentes nodos.

  • PostgreSQL ofrece esquemas estáticos y dinámicos, datos normalizados, claves foráneas y joins, al contrario que MongoDB cuya aplicación es únicamente la orientada a NoSQL.

Por otro lado MongoDB sigue teniendo algunas ventajas de las que carece PostgreSQL:

  • MongoDB proporciona BSON, que es un formato muy eficiente de JSON, al contrario que PostgreSQL que solo soporta JSON.

  • MongoDB posee un sistema de sharding muy sencillo de gestionar, al contrario de PostgreSQL que necesita de herramientas externas como citus.

  • El escalado horizontal de MongoDB permite un gran número de usuarios accediendo, al contrario que PostgreSQL donde el escalado es vertical y el rendimiento en la concurrencia puede verse afectado.

La conclusión de esta comparativa no es la de elegir qué tecnología es la mejor y por ende deba utilizarse incondicionalmente. Ambas tecnologías tienen sus ventajas y su ámbito de aplicación y es basándonos en esto que se debería hacer la elección correspondiente.

Se puede ver que SQL con décadas de uso y desarrollo es una tecnología estable y funcional que puede funcionar en casi cualquier entorno. Sin embargo, NoSQL nació para hacer frente a una de las carencias de SQL: la ingente cantidad de datos se estaba volviendo muy complicada de manejar y mantener.

De forma que, a la hora de escoger una de las dos, hay que estudiar con precaución qué pesa más: ¿Estructuración de los datos o flexibilidad en el esquema? ¿Gran cantidad de datos sin importar la redundancia o menor cantidad de datos normalizados? ¿Escalabilidad vertical u horizontal?. La respuesta a estas preguntas depende del ámbito de aplicación.

results matching ""

    No results matching ""