Skip to main content
يوفّر ClickHouse Connect عددًا من الخيارات الإضافية لحالات الاستخدام المتقدمة.

الإعدادات العامة

هناك عدد من الإعدادات التي تتحكم في سلوك ClickHouse Connect على مستوى عام. ويمكن الوصول إليها من الحزمة common ذات المستوى الأعلى:
اضبط إعدادات إنشاء العميل قبل إنشاء العملاء. تُنسخ إعدادات مثل معرّفات الجلسات والاستعلامات المُولَّدة وتعريف المنتج إلى حالة خاصة بكل عميل، لذا لا تؤثر التغييرات العامة اللاحقة في العملاء الحاليين. تختلف إعدادات الربط والإدراج عن ذلك. تُقرأ قيمتا naive_datetime_binding وdict_parameter_format عند ربط المعلمات. وتُقرأ قيمة naive_datetime_insert عند إجراء تسلسل لعمود إدراج أصلي يحتوي على كائنات datetime من بايثون أو سلاسل ISO لـ DateTime64. تؤثر التغييرات في هذه الإعدادات في العملاء الحاليين. ويستخدم سياق إدراج قابل لإعادة الاستخدام قيمة naive_datetime_insert الحالية لكل عملية إدراج.
الإعدادات العامة التالية معرّفة حاليًا:

الضغط

يدعم ClickHouse Connect ضغط الاستجابة باستخدام lz4 وzstd وbrotli وgzip وdeflate. كما تدعم عمليات الإدراج Native كلاً من lz4 وzstd وbrotli وgzip. يوازن الضغط بين استهلاك وقت CPU وتقليل حجم النقل عبر الشبكة. لتلقّي بيانات مضغوطة، يجب ضبط enable_http_compression على ClickHouse server إلى 1، أو يجب أن تكون لدى المستخدم permission لتغيير هذا الإعداد على أساس “لكل query”. يُتحكَّم في الضغط من خلال الوسيط compress في get_client وget_async_client. تشير القيمة الافتراضية True إلى جميع ترميزات الاستجابة المتاحة، وتضغط insert blocks الخاصة بـ Native باستخدام lz4. اضبط compress=False لتعطيل الضغط، أو مرّر إحدى القيم "lz4" أو "zstd" أو "br" أو "gzip" لطلب طريقة محددة. لا تستخدم methods الخاصة بالعميل الخام إعداد compress على مستوى client. تُرجع raw_query وraw_stream بيانات غير مضغوطة، بينما يستخدم raw_insert وسيط compression خاصًا به يصف الضغط المطبّق مسبقًا على payload. يُثبَّت دعم lz4 وzstd مع ClickHouse Connect. في بايثون 3.14، يستخدم zstd وحدة المكتبة القياسية compression.zstd. وتستخدم إصدارات بايثون من 3.10 إلى 3.13 backports.zstd. وحتى إذا كان مفسّر CPython 3.14+ مخصصًا ومبنيًا دون دعم zstd، فيمكن استيراده؛ إذ يُستبعد zstd من methods المتاحة، ولا يظهر error إلا عند طلب zstd صراحةً. أما Brotli فهو اختياري ويجب تثبيته بشكل منفصل قبل استخدام compress="br". يكون gzip أبطأ عمومًا من lz4 أو zstd في workloads الخاصة بـ ClickHouse.

دعم HTTP وكيل support

يتعرّف ClickHouse Connect على متغيرَي البيئة القياسيين HTTP_PROXY وHTTPS_PROXY. تنطبق هذه المتغيرات على جميع العملاء داخل العملية. لتهيئة وكيل لكل عميل على حدة، مرّر http_proxy أو https_proxy إلى get_client أو get_async_client. يستخدم العميل المتزامن urllib3. لاستخدام وكيل SOCKS، ثبّت PySocks ومرّر urllib3.contrib.socks.SOCKSProxyManager باعتباره الوسيط pool_mgr إلى get_client. لا يدعم العميل غير المتزامن الوسيط pool_mgr.

أنواع البيانات Variant وDynamic وJSON

يدعم ClickHouse Connect أنواع بيانات ClickHouse الحالية Variant وDynamic وJSON. وقد أُزيل النوع القديم Object('json') في clickhouse-connect 0.14، وهو غير مدعوم.

ملاحظات الاستخدام

  • تُقرأ قيم Variant باعتبارها نوع بايثون المطابق. وتختار عمليات insert الأصلية عضوًا بناءً على نوع قيمة بايثون.
  • عندما تتوافق عدة أعضاء في Variant مع نوع بايثون نفسه، غلّف القيمة باستخدام clickhouse_connect.datatypes.dynamic.typed_variant(value, "TypeName") لتحديد العضو صراحةً.
  • يعيد تنسيق القراءة typed لـ Variant كائنات TypedVariant(value, type_name) ويحتفظ بنوع العضو الأصلي. فعِّله باستخدام query_formats={"Variant": "typed"}.
  • تُقرأ قيم Dynamic باعتبارها نوع بايثون المطابق. وتُرسَل عمليات insert حاليًا عبر التمثيل String.
  • يمكن insert قيم JSON على هيئة قواميس بايثون أو سلاسل JSON object. ويعيد تنسيق القراءة الافتراضي قواميس؛ استخدم تنسيق القراءة "string" لإرجاع JSON string.
  • تُرجع الاستعلامات التي تحدد subcolumn من Variant أو Dynamic أو JSON النوع الفعلي لذلك الـ subcolumn.
تستخدم بعض القيم المخزنة في منطقة shared-data ضمن أعمدة JSON أو Dynamic أنواعًا لا يستطيع client فك ترميزها بعد. وتُعاد هذه القيم على شكل raw bytes. كما تستخدم هذه الأنواع المعقدة أيضًا مسار التحويل في بايثون الخالص، لذا قد تكون أبطأ من الأنواع scalar المعروفة.
آخر تعديل في ١٤ أغسطس ٢٠٢٦