إنشاء جدول
معلمات المحرّك
endpoint— عنوان URL لنقطة نهاية AzureBlobStorage مع الحاوية والبادئة. ويمكن أن يتضمن اختياريًا account_name إذا كانت طريقة المصادقة المستخدمة تتطلب ذلك. (http://azurite1:{port}/[account_name]{container_name}/{data_prefix}) أو يمكن توفير هذه المعلمات بشكل منفصل باستخدام storage_account_url و account_name و container. ولتحديد البادئة، يجب استخدام endpoint.endpoint_contains_account_name- يُستخدم هذا العلَم لتحديد ما إذا كان endpoint يتضمن account_name، لأنه لا يلزم إلا لبعض طرق المصادقة. (القيمة الافتراضية: true)connection_string|storage_account_url— يتضمن connection_string اسم الحساب والمفتاح (Create connection string) أو يمكنك أيضًا توفير عنوان URL لحساب التخزين هنا، مع اسم الحساب ومفتاح الحساب كمعلمات منفصلة (انظر المعلمتين account_name و account_key)container_name- اسم الحاويةblobpath- مسار الملف. يدعم أحرف البدل التالية في وضع readonly:*,**,?,{abc,def}و{N..M}حيث إنNوM— أرقام، و'abc'و'def'— سلاسل نصية.account_name- إذا استُخدم storage_account_url، فيمكن تحديد اسم الحساب هناaccount_key- إذا استُخدم storage_account_url، فيمكن تحديد مفتاح الحساب هناformat— تنسيق الملف.compression— القيم المدعومة:none,gzip/gz,brotli/br,xz/LZMA,zstd/zst. افتراضيًا، سيُكتشف الضغط تلقائيًا من امتداد الملف. (وهو ما يعادل ضبطه علىauto).partition_strategy– الخيارات:wildcardأوhive. يتطلبwildcardوجود{_partition_id}في المسار، ويُستبدل بمفتاح التقسيم. أماhiveفلا يسمح بأحرف البدل، ويفترض أن المسار هو جذر الجدول، ويُنشئ أدلة تقسيم بنمط Hive مع Snowflake IDs كأسماء ملفات وتنسيق الملف كامتداد. وتكون القيمة الافتراضية وفق إعدادfile_like_engine_default_partition_strategy(wildcardضمن إعداداتcompatibilityالأقدم من26.6، وhiveبخلاف ذلك).partition_columns_in_data_file- يُستخدم فقط مع استراتيجية التقسيمhive. ويُخبر ClickHouse ما إذا كان ينبغي توقّع كتابة أعمدة التقسيم في ملف البيانات. والقيمة الافتراضيةfalse.extra_credentials- استخدمclient_idوtenant_idللمصادقة. إذا جرى توفير extra_credentials، فستُعطى أولوية علىaccount_nameوaccount_key.
http://localhost:10000 بـ http://azurite1:10000 في الأوامر أدناه، حيث نفترض أن Azurite متاح على المضيف azurite1.
الأعمدة الافتراضية
_path— مسار الملف. النوع:LowCardinality(String)._file— اسم الملف. النوع:LowCardinality(String)._size— حجم الملف بالبايت. النوع:Nullable(UInt64). إذا كان الحجم غير معروف، تكون القيمةNULL._time— وقت آخر تعديل للملف. النوع:Nullable(DateTime). إذا كان الوقت غير معروف، تكون القيمةNULL.
المصادقة
Managed Identity- يمكن استخدامها عبر توفيرendpointأوconnection_stringأوstorage_account_url.SAS Token- يمكن استخدامها عبر توفيرendpointأوconnection_stringأوstorage_account_url. ويُستدلّ عليها بوجود ’?’ في عنوان URL. راجع azureBlobStorage للاطلاع على أمثلة.Workload Identity- يمكن استخدامها عبر توفيرendpointأوstorage_account_url. إذا تم تعيين المعلَمةuse_workload_identityفيconfig، فستُستخدم workload identity للمصادقة.
التخزين المؤقت للبيانات
Azure التخزين المؤقت للبيانات على القرص المحلي.
راجع خيارات تهيئة ذاكرة التخزين المؤقت لنظام الملفات وطريقة استخدامها في هذا القسم.
يعتمد التخزين المؤقت على المسار وETag لكائن التخزين، لذلك لن يقرأ ClickHouse نسخة قديمة من ذاكرة التخزين المؤقت.
لتمكين التخزين المؤقت، استخدم الإعداد filesystem_cache_name = '<name>' وenable_filesystem_cache = 1.
- أضِف القسم التالي إلى ملف إعدادات ClickHouse:
- إعادة استخدام إعدادات ذاكرة التخزين المؤقت (وبالتالي مساحة تخزينها) من قسم
storage_configurationفي ClickHouse، كما هو موضح هنا
PARTITION BY
PARTITION BY — اختياري. في معظم الحالات، لا تحتاج إلى مفتاح تقسيم، وحتى إذا احتجت إليه، فغالبًا لا تحتاج إلى مفتاح تقسيم أكثر تفصيلًا من التقسيم حسب الشهر. لا يؤدي التقسيم إلى تسريع الاستعلامات (على عكس تعبير ORDER BY). يجب ألّا تستخدم أبدًا تقسيمًا مفرط الدقة. لا تقسّم بياناتك حسب معرّفات العملاء أو أسمائهم (واجعل بدلًا من ذلك معرّف العميل أو اسمه هو العمود الأول في تعبير ORDER BY).
للتقسيم حسب الشهر، استخدم التعبير toYYYYMM(date_column)، حيث إن date_column هو عمود يحتوي على تاريخ من النوع Date. وتكون أسماء الأقسام هنا بالتنسيق "YYYYMM".
استراتيجية التقسيم
wildcard: يستبدل حرف البدل {_partition_id} في مسار الملف بمفتاح التقسيم الفعلي. القراءة غير مدعومة. يُحدَّد افتراضيًا فقط ضمن إعدادات compatibility الأقدم من 26.6؛ بخلاف ذلك تكون القيمة الافتراضية هي hive (راجع الإعداد file_like_engine_default_partition_strategy).
يطبّق hive التقسيم بنمط Hive لعمليات القراءة والكتابة. تُنفَّذ القراءة باستخدام نمط glob تكراري. وتُنشئ الكتابة ملفات بالتنسيق التالي: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>.
ملاحظة: عند استخدام استراتيجية التقسيم hive، لا يكون للإعداد use_hive_partitioning أي تأثير.
مثال على استراتيجية التقسيم hive: