Skip to main content
يعمل التكامل مع كتالوج SeaweedFS مع جداول Iceberg فقط.
يدعم ClickHouse التكامل مع عدة كتالوجات (Unity وGlue وREST وPolaris وغيرها). يوضح لك هذا الدليل خطوات الاستعلام عن بياناتك باستخدام ClickHouse وكتالوج SeaweedFS. SeaweedFS هو مخزن موزّع مفتوح المصدر للملفات والكائنات، مزود ببوابة متوافقة مع S3. توفر S3 Table Buckets فيه جانبي نشر Iceberg: إذ يوفّر كتالوج Iceberg REST المضمّن البيانات الوصفية للجداول، بينما تخزن حاوية الجداول بياناتها كملفات Parquet عبر نقطة نهاية S3 نفسها:
  • خدمة واحدة - تُقدَّم البيانات الوصفية للكتالوج وبيانات Parquet من خلال عملية واحدة، دون قاعدة بيانات منفصلة للبيانات الوصفية
  • التوافق مع مواصفة كتالوج Iceberg REST عبر واجهة برمجة تطبيقات REST
  • صيانة من جانب الخادم - ضغط تلقائي لملفات Parquet وانتهاء صلاحية اللقطات، دون خدمة صيانة خارجية
بما أن هذه الميزة تجريبية، ستحتاج إلى تفعيلها باستخدام: SET allow_experimental_database_iceberg = 1;

إعداد بيئة التطوير المحلية

لأغراض التطوير والاختبار محليًا، يمكنك تشغيل SeaweedFS وClickHouse باستخدام Docker Compose. يُعد هذا النهج مثاليًا للتعلّم وإنشاء النماذج الأولية وبيئات التطوير.

المتطلبات الأساسية

  1. Docker وDocker Compose: تأكد من تثبيت Docker وتشغيله
  2. الإصدارات: SeaweedFS 4.42 أو أحدث؛ وClickHouse 26.8 أو أحدث (تدعم الإصدارات بدءًا من 25.8 القراءة والإدراج، لكن إنشاء الجداول عبر كتالوج يتطلب الإصدار 26.8)
  3. بايثون مع PyIceberg (اختياري): يُستخدم أدناه لإدخال بيانات نموذجية أولية

إعداد كتالوج SeaweedFS المحلي

الخطوة 1: أنشئ مجلدًا جديدًا لتشغيل المثال، ثم أنشئ ملفًا باسم s3config.json يتضمن بيانات اعتماد بوابة S3 والكتالوج:
الخطوة 2: أنشئ ملفًا باسم docker-compose.yml يتضمن الإعدادات التالية:
يشغّل الأمر mini حزمة SeaweedFS كاملةً ضمن حاوية واحدة. ينشئ الخيار -tableBucket=analytics مسبقًا bucket لـ S3 Tables باسم analytics، ويُستخدم هذا الـbucket باعتباره warehouse لـ Iceberg. الخطوة 3: شغّل الأمر التالي لبدء الخدمات:

إضافة بيانات نموذجية

يكون الـ كتالوج فارغًا في البداية. أنشئ جدول وألحِق بها بضعة rows باستخدام PyIceberg (pip install pyiceberg pyarrow):

الاتصال بكتالوج SeaweedFS المحلي

اتصل بحاوية ClickHouse لديك:
ثم أنشئ اتصال قاعدة البيانات بكتالوج SeaweedFS:
تتضمن وسائط المحرك بيانات اعتماد S3 التي يستخدمها ClickHouse لقراءة بيانات الجدول، بينما تُستخدم catalog_credential وoauth_server_uri للمصادقة مع الكتالوج نفسه عبر تدفق بيانات اعتماد عميل OAuth2. يقبل SeaweedFS مفتاح الوصول والمفتاح السري نفسيهما لكليهما.

الاستعلام عن جداول كتالوج في SeaweedFS باستخدام ClickHouse

بعد إعداد الاتصال، يمكنك البدء بالاستعلام عن جداول كتالوج في SeaweedFS. على سبيل المثال:
علامات الاقتباس المعكوسة مطلوبةعلامات الاقتباس المعكوسة مطلوبة لأن ClickHouse لا يدعم أكثر من مساحة اسم واحدة.
للاستعلام عن جدول:

إنشاء الجداول وكتابة البيانات من ClickHouse

يمكنك أيضًا إنشاء جداول في كتالوج SeaweedFS والكتابة فيها مباشرةً من ClickHouse:
تحدد عبارة محرك IcebergS3 مسار التخزين للجدول الجديد، ويجعل write_full_path_in_iceberg_metadata ClickHouse يسجّل الموقع الكامل للجدول في الكتالوج.
يتطلب إنشاء الجداول عبر كتالوج استخدام ClickHouse 26.8 أو إصدار أحدث. تكتب الإصدارات من 26.4 إلى 26.7 ملفات الجدول قبل تسجيل مساحة الاسم، وهو ما يرفضه SeaweedFS ما لم تكن مساحة الاسم موجودة مسبقًا في الكتالوج؛ أما الإصدارات السابقة للإصدار 26.4 فتبدو ناجحة، لكن تُكتب ملفات الجدول في تخزين الكائنات دون تسجيلها في الكتالوج.
عندما يثبّت ClickHouse عملية إدراج، يصلح كتالوج SeaweedFS البيانات الوصفية التي لا ينتجها الكاتب التجريبي بعد: فيملأ معرّفات الحقول المفقودة في ملفات manifest، ويعيد كتابة مسارات الملفات النسبية بالنسبة إلى الحاوية لتصبح مواقع مطلقة، ويضيف تعيينًا افتراضيًا للأسماء إلى الجدول. عندئذٍ، يمكن للقارئات الصارمة مثل PyIceberg وSpark قراءة الصفوف التي كتبها ClickHouse. يتطلب ذلك SeaweedFS 4.42 أو إصدارًا أحدث.

تحميل البيانات من بحيرة البيانات إلى ClickHouse

إذا كنت بحاجة إلى تحميل البيانات من كتالوج SeaweedFS إلى ClickHouse، فابدأ بإنشاء جدول ClickHouse محلي:
ثم حمّل البيانات من جدول الكتالوج في SeaweedFS باستخدام INSERT INTO SELECT:
آخر تعديل في ١٦ أغسطس ٢٠٢٦