Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DataStore: واجهة برمجة تطبيقات متوافقة مع pandas مع تحسينات SQL

DataStore هي واجهة برمجة تطبيقات chDB المتوافقة مع pandas، وتجمع بين واجهة pandas DataFrame المألوفة وقوة تحسين استعلامات SQL، ما يتيح لك كتابة شيفرة بأسلوب pandas مع الحصول على أداء ClickHouse.

الميزات الرئيسية

  • التوافق مع pandas: ‏209 طريقة في pandas DataFrame، و56 طريقة لـ .str، وأكثر من 42 طريقة لـ .dt
  • تحسين SQL: تُترجَم العمليات تلقائيًا إلى استعلامات SQL مُحسَّنة
  • التقييم الكسول: تُؤجَّل العمليات إلى أن تصبح النتائج مطلوبة
  • أكثر من 630 طريقة في واجهة برمجة تطبيقات: واجهة برمجة تطبيقات شاملة لمعالجة البيانات
  • امتدادات ClickHouse: ملحقات إضافية (.arr, .json, .url, .ip, .geo) غير متوفرة في pandas

معمارية

معمارية DataStore

يستخدم DataStore التقييم الكسول مع تنفيذ ثنائي المحرك:

  1. سلسلة عمليات كسولة: تُسجَّل العمليات ولا تُنفَّذ فورًا
  2. اختيار ذكي للمحرك: يوجّه QueryPlanner كل جزء إلى المحرك الأنسب (chDB لـ SQL، وPandas للعمليات المعقدة)
  3. تخزين مؤقت وسيط: تُخزَّن النتائج مؤقتًا عند كل خطوة لتسريع الاستكشاف التكراري

راجع نموذج التنفيذ لمزيد من التفاصيل.

الترحيل من 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()

تعمل شيفرة pandas الحالية لديك كما هي، لكنها تعمل الآن على محرك ClickHouse.

مقارنة الأداء

يوفّر DataStore تحسينات ملحوظة في الأداء مقارنةً بـ pandas، لا سيما في عمليات التجميع ومسارات المعالجة المعقّدة:

العملية Pandas DataStore التسريع
GroupBy count 347ms 17ms 19.93x
Complex pipeline 2,047ms 380ms 5.39x
Filter+Sort+Head 1,537ms 350ms 4.40x
GroupBy agg 406ms 141ms 2.88x

اختبار قياس أداء على 10M صف. راجع برنامج نصي لقياس الأداء ودليل الأداء للاطلاع على التفاصيل.

متى تستخدم DataStore

استخدم DataStore عندما:

  • تعمل مع مجموعات بيانات كبيرة (ملايين الصفوف)
  • تُجري عمليات التجميع وGroupBy
  • تستعلم عن البيانات من الملفات أو قواعد البيانات أو التخزين السحابي
  • تبني مسارات بيانات معقدة
  • تريد واجهة pandas البرمجية مع أداء أفضل

استخدم واجهة برمجة تطبيقات Raw SQL عندما:

  • تفضل كتابة SQL مباشرةً
  • تحتاج إلى تحكم دقيق في تنفيذ الاستعلامات
  • تعمل مع ميزات خاصة بـ ClickHouse غير المتاحة في واجهة pandas البرمجية

مقارنة الميزات

الميزة Pandas Polars DuckDB DataStore
متوافق مع واجهة برمجة تطبيقات Pandas - جزئي لا كامل
التقييم الكسول لا نعم نعم نعم
دعم استعلامات SQL لا نعم نعم نعم
دوال ClickHouse لا لا لا نعم
ملحقات الخاصة بـ String/DateTime نعم نعم لا نعم + إضافات
Array/JSON/URL/IP/Geo لا جزئي لا نعم
الاستعلام المباشر من الملفات لا نعم نعم نعم
دعم التخزين السحابي لا محدود نعم نعم

إحصاءات واجهة برمجة التطبيقات

الفئة العدد التغطية
طرق DataFrame 209 100% من pandas
accessor ‏Series.str 56 100% من pandas
accessor ‏Series.dt 42+ 100%+ (يتضمن إضافات ClickHouse)
accessor ‏Series.arr 37 خاص بـ ClickHouse
accessor ‏Series.json 13 خاص بـ ClickHouse
accessor ‏Series.url 15 خاص بـ ClickHouse
accessor ‏Series.ip 9 خاص بـ ClickHouse
accessor ‏Series.geo 14 خاص بـ ClickHouse
إجمالي طرق واجهة برمجة التطبيقات 630+ -

البدء

مرجع واجهة برمجة التطبيقات

موضوعات متقدمة

الإعداد واستكشاف الأخطاء وإصلاحها

أدلة مستخدمي Pandas

مثال سريع

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 pandas DataFrame

الخطوات التالية

Navigation