Saltar al contenido principal
InicioBlogCiencia de datos

Introducción a DuckDB: ¿Qué es y por qué debes utilizarlo?

Explora DuckDB, la base de datos analítica rápida y fácil de usar para Python y R. Conoce sus principales características, casos de uso y cómo optimiza las tareas de análisis de datos.
Actualizado 11 sept 2024  · 7 min leer

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.


Photo of Kurtis Pykes
Author
Kurtis Pykes
LinkedIn
Temas
Relacionado

blog

Python vs. R para ciencia de datos: ¿cuál deberías aprender?

Esta guía te ayudará a resolver una de las dudas más frecuentes de quienes desean iniciarse en ciencia de datos, y a elegir entre R y Python.
Javier Canales Luna's photo

Javier Canales Luna

10 min

R Project

blog

Las 8 mejores ideas de proyectos R para 2023

Descubra qué es R y todas las ventajas de utilizarlo, a la vez que ofrece ejemplos y nuevas ideas para un proyecto.
Elena Kosourova's photo

Elena Kosourova

16 min

tutorial

Tutorial sobre cómo ejecutar consultas SQL en Python y R

Aprenda formas fáciles y eficaces de ejecutar consultas SQL en Python y R para el análisis de datos y la gestión de bases de datos.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Tutorial de FastAPI: Introducción al uso de FastAPI

Explore el marco FastAPI y descubra cómo puede utilizarlo para crear API en Python.
Moez Ali's photo

Moez Ali

13 min

tutorial

Pandas Profiling (ydata-profiling) en Python: Guía para principiantes

Aprenda a utilizar la biblioteca ydata-profiling en Python para generar informes detallados de conjuntos de datos con muchas características.
Satyam Tripathi's photo

Satyam Tripathi

9 min

See MoreSee More