Evaluación de PostgreSQL y HP Vertica

Standard

Los Sistemas Gestores de Base de Datos (SGBD), permiten almacenar y manipular datos, evitando que los usuarios se preocupen por detalles de implementación (e.g. directorio de datos, mecanismos de consulta, estructura para almacenar los datos en disco). En el mercado existen diferentes propuestas de sistemas gestores (e.g. basados en grafos, basados en relaciones matemáticas, basadas en objetos). Cada una de las propuestas de los gestores poseen distintos enfoques. En esta ocasión, les comparto una evaluación de dos sistemas gestores, realizada en Hunabsys R&D. Nuestro objetivo es determinar el gestor con mejor desempeño, basados en el tiempo de cómputo que le toma al gestor resolver una consulta.

¿Qué y por qué?

En este trabajo evaluamos dos gestores: PostgreSQL y HP Vertica. Elegimos PostgreSQL porque contamos con experiencia utilizando este gestor. Además, incluimos al gestor HP Vertica, una herramienta de consulta que está siendo reconocida por su desempeño para manejar grandes volúmenes de datos. Una característica en común de PostgreSQL y HP Vertica es su (asombrosa) capacidad para extender la funcionalidad del gestor a través de Funciones Definidas por el Usuario (UDFs por sus siglas en Inglés, diría el buen Palomino). Otra característica que comparten estas herramientas es que involucran al Sr. Dr. M. Stonebraker ¡Tipazo, Genio y Premio Turing!.

Para probar los gestores de base de datos, se utilizó la herramienta de pruebas TPC-H, formada por un conjunto de mecanismos de diagnóstico para sistemas de toma de decisiones. Utilizamos las herramientas dbgen y qgen en TPC-H. La herramienta dbgen genera conjuntos de datos con la extensión .tbl, que corresponden a archivos de datos separados por el símbolo |. Hay un detalle, estos datos tienen un separador de más y al cargar los datos en los gestores: TRUENA! Para insertar los datos fue necesario eliminar el último símbolo | del archivo. Utilizamos el siguiente script (esta va por la casa):

#!/bin/bash
# $1 Database dir
 
for file in `ls $1/*.tbl`
do
  sed 's/|$//' -i $file
  echo "Finished with $file"
  echo " "
done

Después ejecutamos en consola OOOOTRO script para cargar los datos en el sistema gestor. Las instrucciones de la línea de comando son:

  • PostgreSQL: $psql -d <database> -f <load_script>
  • HP Vertica $vsql -d <database> -f <load_script> -w <password>

Donde el archivo <load_script> es el OOOOTRO script y contiene los siguientes comandos (donde <data_dir> corresponde al directorio donde se encuentran los datos):

COPY NATION FROM '<data_dir>/nation.tbl' WITH DELIMITER '|';
COPY REGION FROM '<data_dir>/region.tbl' WITH DELIMITER '|';
COPY PART FROM '<data_dir>/part.tbl' WITH DELIMITER '|';
COPY SUPPLIER FROM '<data_dir>/supplier.tbl' WITH DELIMITER '|';
COPY PARTSUPP FROM '<data_dir>/partsupp.tbl' WITH DELIMITER '|';
COPY CUSTOMER FROM '<data_dir>/customer.tbl' WITH DELIMITER '|';
COPY ORDERS FROM '<data_dir>/orders.tbl' WITH DELIMITER '|';
COPY LINEITEM FROM '<data_dir>/lineitem.tbl' WITH DELIMITER '|';

Para generar los consultas procesadas en este trabajo se utilizó la herramienta qgen. Por medio de esta herramienta se generaron 14 consultas a la base de datos generada por dbgen. Ahora, ¿Por qué realizamos esta comparación? Básicamente, en las célebres y pobremente traducidas palabras de Barack Obama, les diré que … Estamos construyendo Iron Man … ¡Es broma! … Quizá … Es clasificado. La idea detrás de esta comparación es determinar cuál de los dos gestores tiene mayor capacidad para administrar consultas en diferentes tamaños de base de datos.

Experimentos y Resultados

Los gestores fueron instalados en un equipo de cómputo con un procesador Intel Xeon Quad core a 2.8GHz, 16GB de memoria RAM, 1TB de disco duro y con el sistema operativo Ubuntu 14.04 Server en su versión de 64 bits. Se instalaron los gestores PostgreSQL y HP Vertica, en sus versiones 9.3 y 7.1, respectivamente. Para realizar nuestros experimentos se crearon ocho bases de datos, de cuatro tamaños distintos: 1, 2, 4 y 8 GB (una base de datos para PostgreSQL y otra para HP Vertica).

Para conocer con mayor detalle el desempeño de los gestores, se borró la memoria caché del sistema operativo (y con ella el buffer del sistema gestor) previo a ejecutar cada una de las consultas en la base de datos. Para limpiar la memoria caché del sistema operativo utilizamos el comando:

$/sbin/sysclt vm.drop_caches=3

La Tabla 1 indica los resultados de nuestros experimentos. Los datos corresponden al promedio del tiempo de cinco ejecuciones de cada una de las 14 consultas para cada base de datos. Los resultados en la Tabla 1 indican que el desempeño de HP Vertica estuvo por encima del desempeño de PostgreSQL en la mayoría de las consultas. En el caso menos significativo fue para la base de datos con factor de escala 1 y consulta 11, donde HP Vertica tiene un tiempo de cómputo 3.5 veces menor que el tiempo de cómputo de PostgreSQL.

Tabla 1.- Desempeño con PostgreSQL y Vertica

#C 1 2 4 8
HP-V PgSQL HP-V PgSQL HP-V PgSQL HP-V PgSQL
1 3.07 111.98 3.58 216.53 6.77 444.07 10.99 883.94
2 2.58 704.16 2.66 2863.88 2.62 11983.94 3.07 47087.16
3 2.22 47.43 2.86 88.90 5.78 181.83 9.26 404.08
4 2.64 50.27 2.99 87.15 4.95 182.68 6.64 477.26
5 80.07 49.17 357.06 132.43 1778.91 308.07 8976.90 620.44
6 2.22 34.99 2.29 65.21 4.50 129.70 7.84 266.34
7 2.14 46.70 3.27 89.71 5.91 184.42 9.79 432.59
8 2.39 51.34 3.94 141.77 6.88 319.48 11.43 763.54
9 3.28 63.62 6.13 130.46 10.78 321.06 19.36 737.31
10 2.71 56.25 3.09 188.53 6.40 349.09 11.51 695.98
11 1.91 6.83 1.92 11.49 2.35 64.52 2.34 89.68
12 2.99 46.00 3.54 91.64 6.67 179.39 10.20 424.22
13 2.71 17.24 3.01 34.21 4.41 70.91 7.55 144.08
14 2.06 36.55 2.47 69.26 5.69 139.47 9.14 307.28

Conclusiones

Los resultados indicados en la Tabla 1, indican que el sistema gestor HP Vertica presenta mejor desempeño para 13 de las 14 consultas ejecutadas. La razón de este resultado es la forma en como HP Vertica almacena y consulta los datos. El gestor HP Vertica utiliza un almacenamiento de datos columnar, donde los datos de cada una de las columnas de una tabla son almacenados de forma contigua. El almacenamiento columnar facilita la compresión de datos y optimiza el acceso de datos en el disco, al aprovechar el almacenamiento de páginas contiguas en el buffer interno del disco duro, al realizar una lectura.

Debido a la diferencia en el desempeño de PostgreSQL con respecto a HP Vertica, nuestra recomendación es explorar la alternativa de HP Vertica para el almacenamiento de datos. Proponiendo como trabajo futuro la evaluación del gestor en un ambiente real, donde la carga de datos provenga de aplicaciones consultado e insertando en la base de datos implementada en el gestor HP Vertica. Así mismo, recomendamos no descartar a PostgreSQL como sistema gestor, debido a la versatilidad del gestor. En su lugar recomendamos generar y evaluar nuevos operadores en este par de gestores, de manera que sea claro determinar la capacidad de los gestores para integrar nueva funcionalidad. Esto podría ser material de otra publicación 😀

Referencias

  1. Publicación que indica correcciones a la herramienta TPC-H (Vistiado en Julio 2015) http://www.fuzzy.cz/en/articles/dss-tpc-h-benchmark-with-postgresql/
  2. Página oficial de PostgreSQL para Funciones de tiempo (Vistiado en Julio 2015) http://www.postgresql.org/docs/9.1/static/functions-datetime.html
  3. Guía oficial para la Instalación de HP Vertica (Vistiado en Julio 2015) https://my.vertica.com/docs/5.0/PDF/Installation%20Guide.pdf
  4. Publicación que indica una guía para corregir errores en la Instalación de HP Vertica (Vistiado en Julio 2015) http://www.brainstorm.net.au/install-vertica-7-1-x-with-management-console-on-ubuntu-14-04/#comment-40087
  5. Guía oficial para la instalación de PostgreSQL (Vistiado en Julio 2015) http://www.postgresql.org/download/linux/ubuntu/
  6. E. F. Codd. 1970. A relational model of data for large shared data banks. Commun. ACM 13, 6 (June 1970), 377-387. DOI=10.1145/362384.362685 http://doi.acm.org/10.1145/362384.362685
  7. Codd, E. F. (1985). Is your DBMS really relational. Computerworld, 14(10).
  8. L. E. Ibarra, A. Peraza. Benchmark TPC-H sobre PostgreSQL y MySQL: Un Reporte Experimental. Agosto 2014. Posgrado en Ciencias de la Información.
  9. Sitio oficial para la descarga de la herramienta TPC-H (Vistiado en Julio 2015) http://www.tpc.org/tpch/
  10. Información sobre UDFs en HP Vertica (Vistiado en Julio 2015) https://my.vertica.com/docs/5.0/HTML/Master/15714.htm
  11. Página oficial de Amazon con información sobre costo de vertica en AWS (Vistiado en Julio 2015) https://aws.amazon.com/marketplace/pp/B00KY7A4OQ/ref=srh_res_product_title?ie=UTF8&sr=0-2&qid=1413909329534
  12. Página oficial de Amazón con la descripción de los tipos de instancias de AWS (Vistiado en Julio 2015) http://aws.amazon.com/es/ec2/instance-types/

 

Leave a Reply

Your email address will not be published. Required fields are marked *