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 التقييم الكسول مع تنفيذ ثنائي المحرك:
- سلسلة عمليات كسولة: تُسجَّل العمليات ولا تُنفَّذ فورًا
- اختيار ذكي للمحرك: يوجّه QueryPlanner كل جزء إلى المحرك الأنسب (chDB لـ SQL، وPandas للعمليات المعقدة)
- تخزين مؤقت وسيط: تُخزَّن النتائج مؤقتًا عند كل خطوة لتسريع الاستكشاف التكراري
راجع نموذج التنفيذ لمزيد من التفاصيل.
الترحيل من 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 - دليل الترحيل خطوة بخطوة
مرجع واجهة برمجة التطبيقات
- دوال المصنع - إنشاء DataStore من مصادر متنوعة
- بناء الاستعلامات - عمليات استعلام بأسلوب SQL
- التوافق مع pandas - جميع الأساليب الـ 209 المتوافقة مع pandas
- Accessors - ملحقات String وDateTime وArray وJSON وURL وIP وGeo
- التجميع - الدوال التجميعية ودوال النافذة
- عمليات الإدخال والإخراج - قراءة البيانات وكتابتها
موضوعات متقدمة
- نموذج التنفيذ - التقييم الكسول والتخزين المؤقت
- مرجع الفئة - المرجع الكامل لواجهة برمجة التطبيقات
الإعداد واستكشاف الأخطاء وإصلاحها
- الإعداد - جميع خيارات الإعداد
- وضع الأداء - وضع يعتمد على SQL أولًا لتحقيق أقصى معدل نقل
- استكشاف الأخطاء وإصلاحها - Explain، وتحليل الأداء، والتسجيل
أدلة مستخدمي Pandas
- دليل وصفات Pandas - الأنماط الشائعة
- الاختلافات الرئيسية - اختلافات مهمة عن pandas
- دليل الأداء - نصائح لتحسين الأداء
- SQL لمستخدمي Pandas - فهم SQL وراء عمليات 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الخطوات التالية
- هل تستخدم DataStore للمرة الأولى؟ ابدأ بـدليل البدء السريع
- هل تنتقل من pandas؟ اقرأ دليل الترحيل
- هل تريد معرفة المزيد؟ اطّلع على مرجع واجهة برمجة التطبيقات