Este documento evalúa las características NoSQL de PostgreSQL frente a MongoDB midiendo los tiempos de respuesta. Se encontró que PostgreSQL ha mejorado sus tiempos de respuesta al incorporar tipos de datos JSON y almacenamiento efímero, aunque aún no alcanza la velocidad de MongoDB. La conclusión es que PostgreSQL ha avanzado considerablemente al adoptar estas características NoSQL.
6. Objetivo
•Evaluar el comportamiento de las características NoSQL
de PostgreSQL frente a un gestor NoSQL, respecto a los
tiempos de respuestas.
7. Desarrollo
Almacenamiento efímero o no ACID en
PostgreSQL:
PostgreSQL 9.1 + : Tablas UNLOGGED, las
operaciones sobre ellas no se guardan en los WriteAhead Log (WAL).
Lo que implica que no se garantiza la permanencia de
los datos en caso de mal funcionamiento en la base de
datos.
Create UNLOGGED table ejemplo (col int)
•Gana en velocidad
•Pierde la de D de ACID
8. Desarrollo
Tipos de datos JSON en PostgreSQL:
PostgreSQL 9.2 + : permite el almacenamiento de datos
en dicho formato(JSON), garantizándose su validación.
En el 9.3 fue mejorado considerablemente
Create table ejemplo (col json).
Insert into ejemplo Values (‘{
"atributo1": 1, “atributo2”:”valor”}’)
10. Desarrollo
Pruebas de comparación o benchmarking:
• PostgreSQL, PostgreSQL (Unlogged) y MongoDB.
• Número de usuarios (5,10 y 20).
• Documento JSON:{ "atributo1": 1, “atributo2”:”valor”}.
• CPU: Intel Pentium 4 a 3.00GHz
• RAM:1Gb.
• HDD: 160Gb a 7200rpm
• Script en Python utilizando hilos (pymongo, psycopg)
11. Desarrollo
Pruebas de comparación o benchmarking:
• Promedio de los tiempos de respuestas de las
concurrencias, por ejemplo:
T de 10 usuarios =∑ (tiempo de respuesta petición)/10
• Esta operación se realize 3 veces.
12. Desarrollo
Resultado de las pruebas de comparación o
benchmarking:
Cantidad de
Tiempo de respuesta (segundos)
PostgreSQL
usuarios
MongoDB
PostgreSQL
5
0.029708239
0.055887715
0.034575348
10
0.03328694
0.098712585
0.060710421
20
0.063031089
0.132417333
0.105056886
(unlogged)
13. Desarrollo
Resultado de las pruebas de comparación o
benchmarking:
Inserción de 10 documentos JSON
Segundos
MongoDB
PostgreSQL(unlogged)
Exponencial (PostgreSQl )
PostgreSQl
Exponencial (MongoDB)
Exponencial (PostgreSQL(unlogged))
0.16
0.14
0.12
0.1
0.08
0.06
0.04
0.02
0
5 usuarios
10 usuarios
Cantidad de usuarios
20 usuarios
14. POSTGRESQL
Conclusiones
PostgreSQL ha ido incorporando características
NoSQL, destacando los tipos de datos de
documentos JSON y el almacenamiento efímero(no
ACID).
El estudio realizado muestra que PostgreSQL ha
mejorado considerablemente los tiempos de
respuestas con la incorporación de estas
particularidades NoSQL. Si bien aún no está al nivel
de los tiempos de respuesta de MongoDB, sí
constituye un paso de avance.