En el ámbito de la ciencia de datos y la analítica, la extracción de información a partir de los datos a menudo implica una serie de pasos, normalmente realizados en Python utilizando bibliotecas como pandas. Aunque es potente, pandas puede tener problemas de rendimiento con grandes conjuntos de datos y operaciones que consumen muchos recursos.
Buscando un equilibrio entre funcionalidad robusta y eficiencia, DuckDB surge como una excelente alternativa. Como base de datos analítica de alta velocidad y fácil de usar, DuckDB está transformando el procesamiento de datos en Python y R.
Este artículo explorará:
- Características y capacidades únicas de DuckDB
- Ventajas de DuckDB sobre las herramientas tradicionales de manipulación de datos
- Casos prácticos que demuestran el potencial de DuckDB
- Pautas para trabajar con DuckDB en Python y R
Al final de este artículo, comprenderás por qué DuckDB es una herramienta que merece la pena considerar para tus tareas de análisis de datos, independientemente del tamaño de los datos y de la complejidad de las operaciones implicadas.
¿Qué es DuckDB?
DuckDB es un Sistema de Gestión de Bases de Datos (SGBD) gratuito, de código abierto, incrustado, en proceso, relacional y de Procesamiento Analítico en Línea (OLAP). Son muchas palabras y siglas, así que vamos a desglosarlas:
- Por dentro del proceso, nos referimos a que las funciones del SGBD se ejecutan desde dentro de la aplicación desde la que intentas acceder, en lugar de un proceso externo al que se conecta tu aplicación
- OLAP significa que la base de datos está diseñada para el análisis de datos. También existen bases de datos de Procesamiento de Transacciones en Línea (OLTP), que están diseñadas para manejar grandes datos transaccionales.
La principal diferencia entre OLAP y OLTP es cómo se almacenan los datos. Las bases de datos OLTP suelen almacenar los datos por registros, asegurándose de que todos los datos asociados a un registro se almacenan juntos en la memoria. También están optimizados para leer y escribir filas con eficacia.
En cambio, las bases de datos OLAP suelen estar orientadas por columnas, lo que significa que los datos se organizan por columnas. Todos los datos asociados a una columna se almacenan cerca unos de otros en la memoria, y la base de datos está optimizada para leer y calcular en las columnas de forma eficiente.
Como DuckDB es una base de datos OLAP, los datos almacenados se organizan por columnas. Además, DuckDB está optimizado para realizar consultas complejas sobre los datos (por ejemplo, uniones, agregaciones, agrupaciones, etc.) - consulta el tema de habilidades Fundamentos de SQL para obtener más información.
Si estás familiarizado con SQLite, la forma más fácil de conceptualizar DuckDB es como su réplica centrada en la analítica. Esto explica por qué DuckDB es tan popular: aprovecha la simplicidad de SQLite y las funcionalidades de Snowflake en tu ordenador local. DuckDB satisface la necesidad de una solución de base de datos integrada para el procesamiento analítico.
Características principales de DuckDB
Veamos algunas de las principales características de DuckDB.
Consultas analíticas rápidas
DuckDB es increíblemente rápida; esto puede resultar chocante para quien esté familiarizado con bases de datos que manejan cargas de trabajo OLAP, como PostgreSQL. Tradicionalmente, las bases de datos OLAP suelen tener tiempos de respuesta lentos, ya que suelen procesar más datos.
Sin embargo, DuckDB funciona con un motor de consulta vectorial columnar, que ayuda a hacer un uso eficiente de la caché de la CPU y a acelerar los tiempos de respuesta para cargas de trabajo de consulta analítica.
Admite SQL e integración con otros lenguajes de programación
DuckDB permite a los usuarios ejecutar consultas SQL complejas y proporciona API para Java, C, C++, etc. También está profundamente integrado en Python y R, lo que permite a los usuarios realizar análisis de datos interactivos y eficaces; así, puedes interactuar con DuckDB desde tu lenguaje de programación preferido. También hay acceso a palabras clave SQL adicionales que facilitan la escritura de consultas SQL, como EXCLUIR, SUSTITUIR y TODO.
Nota: DuckDB no tiene dependencias externas, así que no tienes que preocuparte por problemas de dependencias.
Libre y de código abierto
DuckDB es de código abierto y cuenta con varios colaboradores activos, lo que significa que los desarrollos y mejoras pueden implementarse rápidamente. También es gratis, aunque puede que no lo siga siendo para siempre.
Casos de uso de DuckDB
Los dos casos de uso más comunes de DuckDB son el análisis interactivo de datos y la computación de borde.
Conozcamos más sobre cada uno de ellos.
Análisis interactivo de datos
El análisis de datos describe la serie de pasos necesarios para procesar y modelar los datos. El objetivo del análisis de datos es descubrir información útil para fundamentar conclusiones y decisiones basadas en datos.
Hoy en día, las empresas emplean a científicos y analistas de datos que asumen esta responsabilidad utilizando tecnologías como los lenguajes de programación Python y R para realizar sus análisis.
DuckDB ofrece una alternativa mejor a quienes prefieren utilizar SQL para su desarrollo local que SQLite, que tiene dificultades para gestionar cargas de trabajo OLAP debido a su falta de funcionalidad para el análisis de datos.
Computación de borde
Las bases de datos integrables, como DuckDB, permiten a los usuarios analizar datos on edge. La computación de borde es un paradigma emergente de computación distribuida, que se refiere a una serie de redes y dispositivos que se acercan al lugar donde se necesitan.
Procesar los datos más cerca de donde se necesitan permite mejorar los tiempos de respuesta y conservar el ancho de banda.
Primeros pasos con DuckDB
Tu entorno determina los pasos necesarios para instalar DuckDB, pero puedes encontrar la guía completa de instalación en la documentación de DuckDB.
En su mayor parte, es bastante sencillo. Sólo necesitas unas pocas líneas de código, ya que DuckDB es una solución integrada. Tampoco necesita ningún servidor ni tiene dependencias externas.
Aquí tienes un ejemplo de cómo instalar DuckDB utilizando Python:
pip install duckdb==0.8.0
Y en R:
install.packages("duckdb")
Ahora, veamos algunos ejemplos de código.
Trabajar con DuckDB en Python
Una vez que hayas instalado DuckDB, es bastante sencillo empezar. Sólo tienes que entrar en import duckdb
y conectarte a una base de datos existente o crear una nueva si es necesario.
Por ejemplo:
import duckdb
connection = duckdb.connect()
Como no se pasó ningún archivo de base de datos como parámetro al método connect()
, se creará una nueva base de datos.
Sin embargo, la forma más sencilla de empezar a ejecutar consultas SQL con DuckDB es utilizando el método sql()
.
# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()
La ejecución de este comando ejecutará una base de datos en memoria almacenada globalmente en el módulo Python y devolverá una relación, que es esencialmente una representación simbólica de la consulta.
Ten en cuenta que la consulta no se ejecuta hasta que se solicita explícitamente el resultado, como se indica a continuación:
# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)
"""
[(42,)]
"""
También podemos utilizar el método df()
para convertir los datos en un Pandas DataFrame:
results_df = duckdb.sql('SELECT 42').df()
print(results)
"""
42
0 42
"""
O puedes utilizar uno de los muchos métodos de ingestión de datos para leer datos en memoria:
# Source: Python API - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation
duckdb.sql('SELECT * FROM "example.csv"') # directly query a CSV file
Descargo de responsabilidad: Si utilizas el método sql()
sin conectarte antes a una base de datos existente, cualquier dato que almacenes en los archivos se perderá tras cerrar el programa. Puedes evitarlo estableciendo una conexión utilizando el método connect()
del que hablamos al principio de la sección.
Conclusión y otros recursos
DuckDB es una base de datos OLAP utilizada por profesionales de los datos, como científicos de datos y analistas, para analizar datos de forma rápida y eficaz. Aprovecha un motor de ejecución de consultas SQL capaz de ejecutar consultas complejas en grandes conjuntos de datos.
DuckDB también tiene integraciones con muchos otros lenguajes de programación, por lo que es posible acceder a ella desde tu idioma favorito.
Para seguir aprendiendo, consulta la Hoja de trucos sobre los fundamentos de SQL y cómo DuckDB convirtió SQL en un Ciudadano de primera clase en DataLab.
