DataStore es la API compatible con pandas de chDB que combina la conocida interfaz de DataFrame de Pandas con la potencia de la optimización de consultas SQL y le permite escribir código al estilo de pandas mientras obtiene el rendimiento de ClickHouse.
Características principales
- Compatibilidad con Pandas: 209 métodos de pandas DataFrame, 56 métodos
.str, 42+ métodos.dt - Optimización SQL: Las operaciones se compilan automáticamente como consultas SQL optimizadas
- Evaluación diferida: Las operaciones se aplazan hasta que se necesitan los resultados
- 630+ métodos de API: Amplia API para la manipulación de datos
- Extensiones de ClickHouse: Accesores adicionales (
.arr,.json,.url,.ip,.geo) no disponibles en pandas
Arquitectura

DataStore usa evaluación diferida con ejecución con doble motor:
- Cadena de operaciones diferidas: las operaciones se registran, no se ejecutan de inmediato
- Selección inteligente de motor: QueryPlanner dirige cada segmento al motor óptimo (chDB para SQL, Pandas para operaciones complejas)
- Caché intermedia: los resultados se almacenan en caché en cada paso para agilizar la exploración iterativa
Consulta Modelo de ejecución para obtener más detalles.
Migración en una sola línea desde Pandas
# Before (pandas)
import pandas as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
# After (DataStore) - just change the import!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()Su código actual de pandas funciona sin cambios, pero ahora se ejecuta en el motor de ClickHouse.
Comparación de rendimiento
DataStore ofrece mejoras significativas de rendimiento respecto a pandas, especialmente en agregaciones y canalizaciones complejas:
| Operación | Pandas | DataStore | Aumento de velocidad |
|---|---|---|---|
| GroupBy count | 347ms | 17ms | 19.93x |
| Canalización compleja | 2,047ms | 380ms | 5.39x |
| Filter+Sort+Head | 1,537ms | 350ms | 4.40x |
| GroupBy agg | 406ms | 141ms | 2.88x |
Benchmark con 10 M de filas. Consulta el script de benchmark y la Guía de rendimiento para obtener más detalles.
Cuándo usar DataStore
Usa DataStore cuando:
- Trabajas con conjuntos de datos grandes (millones de filas)
- Realizas agregaciones y operaciones de GroupBy
- Consultas datos de archivos, bases de datos o almacenamiento en la nube
- Creas canalizaciones de datos complejas
- Quieres la API de pandas con mejor rendimiento
Usa la API de SQL puro cuando:
- Prefieres escribir SQL directamente
- Necesitas un control preciso sobre la ejecución de consultas
- Trabajas con funciones específicas de ClickHouse que no están expuestas en la API de pandas
Comparación de características
| Característica | Pandas | Polars | DuckDB | DataStore |
|---|---|---|---|---|
| Compatible con la API de Pandas | - | Parcial | No | Completa |
| Evaluación diferida | No | Sí | Sí | Sí |
| Soporte para consultas SQL | No | Sí | Sí | Sí |
| Funciones de ClickHouse | No | No | No | Sí |
| Accesores de String/DateTime | Sí | Sí | No | Sí + extras |
| Array/JSON/URL/IP/Geo | No | Parcial | No | Sí |
| Consultas directas sobre archivos | No | Sí | Sí | Sí |
| Soporte de almacenamiento en la nube | No | Limitado | Sí | Sí |
Estadísticas de la API
| Categoría | Cantidad | Cobertura |
|---|---|---|
| Métodos de DataFrame | 209 | 100% de pandas |
| Accesor Series.str | 56 | 100% de pandas |
| Accesor Series.dt | 42+ | 100%+ (incluye extras de ClickHouse) |
| Accesor Series.arr | 37 | Específico de ClickHouse |
| Accesor Series.json | 13 | Específico de ClickHouse |
| Accesor Series.url | 15 | Específico de ClickHouse |
| Accesor Series.ip | 9 | Específico de ClickHouse |
| Accesor Series.geo | 14 | Específico de ClickHouse |
| Total de métodos de la API | 630+ | - |
Primeros pasos
- Inicio rápido - Instalación y uso básico
- Migración desde Pandas - Guía de migración paso a paso
Referencia de la API
- Métodos de fábrica - Creación de DataStore a partir de varias fuentes
- Construcción de consultas - Operaciones de consulta al estilo SQL
- Compatibilidad con pandas - Los 209 métodos compatibles con pandas
- Accesores - Accesores de String, DateTime, Array, JSON, URL, IP y Geo
- Agregación - Funciones de agregación y de ventana
- Operaciones de E/S - Lectura y escritura de datos
Temas avanzados
- Modelo de ejecución - evaluación diferida y almacenamiento en caché
- Referencia de class - Referencia completa de la API
Configuración y depuración
- Configuración - Todas las opciones de configuración
- Modo de rendimiento - Modo centrado en SQL para obtener el máximo rendimiento
- Depuración - Explain, perfilado y registro
Guías para usuarios de Pandas
- Recetario de Pandas - Patrones comunes
- Diferencias clave - Diferencias importantes con respecto a pandas
- Guía de rendimiento - Consejos de optimización
- SQL para usuarios de Pandas - Comprender el SQL que hay detrás de las operaciones de pandas
Ejemplo rápido
from chdb import datastore as pd
# Read data from various sources
ds = pd.read_csv("sales.csv")
# or: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# or: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")
# Familiar pandas operations - automatically optimized to SQL
result = (ds
.filter(ds['amount'] > 1000) # WHERE amount > 1000
.groupby('region') # GROUP BY region
.agg({'amount': ['sum', 'mean']}) # SUM(amount), AVG(amount)
.sort_values('sum', ascending=False) # ORDER BY sum DESC
.head(10) # LIMIT 10
)
# View the generated SQL
print(result.to_sql())
# Execute and get results
df = result.to_df() # Returns DataFrame de PandasPróximos pasos
- ¿Es la primera vez que usas DataStore? Empieza con la Guía de inicio rápido
- ¿Vienes de pandas? Lee la Guía de migración
- ¿Quieres saber más? Consulta la Referencia de la API