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

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

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

البنية المعمارية

يستخدم 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، لا سيما في التجميع ومسارات المعالجة المعقّدة:
OperationPandasDataStoreSpeedup
GroupBy count347ms17ms19.93x
Complex pipeline2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
GroupBy agg406ms141ms2.88x
اختبار معياري على 10 ملايين صف. راجع سكريبت الاختبار المعياري ودليل الأداء لمزيد من التفاصيل.

متى تستخدم DataStore

استخدم DataStore عندما:
  • تعمل مع مجموعات بيانات كبيرة (ملايين الصفوف)
  • تُجري عمليات التجميع وgroupby
  • تستعلم عن البيانات من الملفات أو قواعد البيانات أو التخزين السحابي
  • تبني مسارات معالجة بيانات معقدة
  • تريد واجهة pandas API بأداء أفضل
استخدم واجهة raw SQL API عندما:
  • تفضّل كتابة SQL مباشرةً
  • تحتاج إلى تحكم دقيق في تنفيذ الاستعلام
  • تعمل مع ميزات خاصة بـ ClickHouse غير المتاحة في pandas API

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

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

إحصاءات API

الفئةالعددالتغطية
دوال DataFrame209100% من pandas
ملحق Series.str56100% من pandas
ملحق Series.dt42+100%+ (يشمل إضافات ClickHouse)
ملحق Series.arr37خاص بـ ClickHouse
ملحق Series.json13خاص بـ ClickHouse
ملحق Series.url15خاص بـ ClickHouse
ملحق Series.ip9خاص بـ ClickHouse
ملحق Series.geo14خاص بـ ClickHouse
إجمالي دوال API630+-

البدء

مرجع API

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

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

أدلة مستخدمي 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

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

آخر تعديل في ٢٩ يونيو ٢٠٢٦