يوفّر ClickHouse دوال الجداول للاستعلام عن البيانات المخزّنة بتنسيقات الجداول المفتوحة مباشرةً من التخزين الكائني. ولا يتطلّب ذلك الاتصال بكتالوج خارجي، إذ يتم الاستعلام عن البيانات في موقعها مباشرةً، على غرار الطريقة التي يقرأ بها AWS Athena من S3.
يمكنك تمرير مسار التخزين وبيانات الاعتماد مباشرةً ضمن استدعاء الدالة، ويتولّى ClickHouse الباقي. تتوفر جميع صيغ ClickHouse SQL ودواله، كما تستفيد الاستعلامات من التنفيذ المتوازي في ClickHouse وقارئ Parquet الأصلي عالي الكفاءة.
تستخدم الأمثلة التالية مجموعة البيانات hits المخزّنة بكل تنسيق من تنسيقات lakehouse على S3. ولكل تنسيق lake، تتوفر دوال مخصّصة لكل موفّر من موفّري التخزين الكائني.
تقرأ دالة الجدول iceberg (اسم مستعار لـ icebergS3) جداول Iceberg مباشرةً من وحدة تخزين الكائنات. وتتوفر متغيرات لكل واجهة خلفية للتخزين: icebergS3 وicebergAzure وicebergHDFS وicebergLocal.
مثال على الصياغة:
icebergS3(url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])
icebergAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
icebergLocal(path_to_table, [,format] [,compression_method])مثال:
SELECT
url,
count() AS cnt
FROM icebergS3('https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/')
GROUP BY url
ORDER BY cnt DESC
LIMIT 5┌─url────────────────────────────────────────────────┬─────cnt─┐
│ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │ -- 3.29 million
│ http://kinopoisk.ru │ 1625250 │ -- 1.63 million
│ http://bdsm_po_yers=0&with_video │ 791465 │
│ http://video.yandex │ 582400 │
│ http://smeshariki.ru/region │ 514984 │
└────────────────────────────────────────────────────┴─────────┘
5 rows in set. Elapsed: 3.375 sec. Processed 100.00 million rows, 9.98 GB (29.63 million rows/s., 2.96 GB/s.)
Peak memory usage: 10.48 GiB.متغاير المجموعة
تُوزّع الدالة icebergS3Cluster عمليات القراءة على عدة عقد في مجموعة ClickHouse. تُنشئ عقدة المُبادِر اتصالات بجميع العقد وتُوزّع ملفات البيانات ديناميكيًا. تطلب كل عقدة عاملة المهام وتعالجها حتى تُقرأ جميع الملفات. icebergCluster هو اسم مستعار لـ icebergS3Cluster. كما تتوفر متغيرات لـ Azure (icebergAzureCluster) ولـ HDFS (icebergHDFSCluster).
مثال على الصياغة:
icebergS3Cluster(cluster_name, url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])
-- icebergCluster is an alias for icebergS3Cluster
icebergAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])مثال (ClickHouse Cloud):
SELECT
url,
count() AS cnt
FROM icebergS3Cluster(
'default',
'https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/'
)
GROUP BY url
ORDER BY cnt DESC
LIMIT 5محرك الجدول
كبديل عن استخدام دالة الجدول في كل استعلام، يمكنك إنشاء جدول دائم باستخدام محرك جدول Iceberg. تبقى البيانات مخزّنة في object storage وتُقرأ عند الطلب، دون نسخ أي بيانات إلى ClickHouse. تكمن الميزة في أن تعريف الجدول يُخزَّن في ClickHouse ويمكن مشاركته بين المستخدمين والجلسات دون الحاجة إلى أن يحدّد كل مستخدم مسار التخزين وبيانات الاعتماد. تتوفر متغيرات المحرك لكل backend تخزين: IcebergS3 (أو الاسم المستعار Iceberg)، وIcebergAzure، وIcebergHDFS، وIcebergLocal.
يدعم كلٌّ من محرك الجدول ودالة الجدول تخزين البيانات مؤقتًا، مستخدِمَين آليةَ التخزين المؤقت ذاتها المعتمدة في محركات التخزين S3 وAzureBlobStorage وHDFS. علاوةً على ذلك، تقوم ذاكرة التخزين المؤقت للبيانات الوصفية بتخزين معلومات ملف البيان في الذاكرة، مما يُقلّل من عمليات القراءة المتكررة لبيانات Iceberg الوصفية. هذا التخزين المؤقت مُفعَّل افتراضيًا عبر الإعداد use_iceberg_metadata_files_cache.
مثال على الصياغة:
محرك الجدول Iceberg هو اسم مستعار لـ IcebergS3.
CREATE TABLE iceberg_table
ENGINE = IcebergS3(url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])
CREATE TABLE iceberg_table
ENGINE = IcebergAzure(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])
CREATE TABLE iceberg_table
ENGINE = IcebergLocal(path_to_table, [,format] [,compression_method])مثال:
CREATE TABLE hits_iceberg
ENGINE = IcebergS3('https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/')
SELECT
url,
count() AS cnt
FROM hits_iceberg
GROUP BY url
ORDER BY cnt DESC
LIMIT 5┌─url────────────────────────────────────────────────┬─────cnt─┐
│ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │
│ http://kinopoisk.ru │ 1625250 │
│ http://bdsm_po_yers=0&with_video │ 791465 │
│ http://video.yandex │ 582400 │
│ http://smeshariki.ru/region │ 514984 │
└────────────────────────────────────────────────────┴─────────┘
5 rows in set. Elapsed: 2.737 sec. Processed 100.00 million rows, 9.98 GB (36.53 million rows/s., 3.64 GB/s.)
Peak memory usage: 10.53 GiB.للاطلاع على الميزات المدعومة، بما فيها تقليص الأقسام، وتطور المخطط، والتنقل عبر الزمن، والتخزين المؤقت، وغيرها، راجع مصفوفة الدعم. للاطلاع على المرجع الكامل، راجع توثيق دالة الجدول iceberg ومحرك الجدول Iceberg.
تقرأ دالة الجدول deltaLake (الاسم البديل لـ deltaLakeS3) جداول Delta Lake من تخزين الكائنات. وتتوفر متغيرات لخلفيات أخرى: deltaLakeAzure وdeltaLakeLocal.
مثال على الصياغة:
deltaLakeS3(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])
deltaLakeAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
deltaLakeLocal(path, [,format])مثال:
SELECT
URL,
count() AS cnt
FROM deltaLake('https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/')
GROUP BY URL
ORDER BY cnt DESC
LIMIT 5┌─URL────────────────────────────────────────────────┬─────cnt─┐
│ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │ -- 3.29 million
│ http://kinopoisk.ru │ 1625250 │ -- 1.63 million
│ http://bdsm_po_yers=0&with_video │ 791465 │
│ http://video.yandex │ 582400 │
│ http://smeshariki.ru/region │ 514984 │
└────────────────────────────────────────────────────┴─────────┘
5 rows in set. Elapsed: 3.878 sec. Processed 100.00 million rows, 14.82 GB (25.78 million rows/s., 3.82 GB/s.)
Peak memory usage: 9.16 GiB.متغاير المجموعة
تُوزِّع دالة deltaLakeCluster عمليات القراءة عبر عقد متعددة في مجموعة ClickHouse. تقوم عقدة المُبادِر بإرسال ملفات البيانات ديناميكيًا إلى عقد العمال لمعالجتها بالتوازي. deltaLakeS3Cluster هو اسم مستعار لـ deltaLakeCluster. كما يتوفر نوع بديل لـ Azure وهو (deltaLakeAzureCluster).
مثال على الصياغة:
deltaLakeCluster(cluster_name, url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])
-- deltaLakeS3Cluster is an alias for deltaLakeCluster
deltaLakeAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])مثال (ClickHouse Cloud):
SELECT
URL,
count() AS cnt
FROM deltaLakeCluster(
'default',
'https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/'
)
GROUP BY URL
ORDER BY cnt DESC
LIMIT 5محرك الجدول
كبديل عن استخدام دالة الجدول في كل استعلام، يمكنك إنشاء جدول دائم باستخدام محرك جدول DeltaLake عند الاستعانة بتخزين متوافق مع S3. تظل البيانات مخزّنة في object storage وتُقرأ عند الطلب، دون نسخ أي بيانات إلى ClickHouse. وتكمن الميزة في أن تعريف الجدول يُخزَّن في ClickHouse ويمكن مشاركته بين المستخدمين والجلسات دون الحاجة إلى أن يحدد كل مستخدم مسار التخزين وبيانات الاعتماد.
يدعم كلٌّ من محرك الجدول ودالة الجدول تخزين البيانات مؤقتًا، مستخدِمَين آلية التخزين المؤقت ذاتها المعتمدة في محركات التخزين S3 وAzureBlobStorage وHDFS.
مثال على الصياغة:
CREATE TABLE delta_table
ENGINE = DeltaLake(url [,aws_access_key_id, aws_secret_access_key])مثال:
CREATE TABLE hits_delta
ENGINE = DeltaLake('https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/')
SELECT
URL,
count() AS cnt
FROM hits_delta
GROUP BY URL
ORDER BY cnt DESC
LIMIT 5┌─URL────────────────────────────────────────────────┬─────cnt─┐
│ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │
│ http://kinopoisk.ru │ 1625250 │
│ http://bdsm_po_yers=0&with_video │ 791465 │
│ http://video.yandex │ 582400 │
│ http://smeshariki.ru/region │ 514984 │
└────────────────────────────────────────────────────┴─────────┘
5 rows in set. Elapsed: 3.608 sec. Processed 100.00 million rows, 14.82 GB (27.72 million rows/s., 4.11 GB/s.)
Peak memory usage: 9.27 GiB.للاطلاع على الميزات المدعومة، بما في ذلك خلفيات التخزين والتخزين المؤقت وغيرها، راجع مصفوفة الدعم. للاطلاع على المرجع الكامل، راجع توثيق دالة الجدول deltaLake ومحرك الجدول DeltaLake.
تقرأ دالة الجدول hudi جداول Hudi من S3.
البنية:
hudi(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])نسخة العنقود
توزّع الدالة hudiCluster عمليات القراءة عبر عدة عُقد في عنقود ClickHouse. وتتولى العقدة المُبادِرة توزيع ملفات البيانات ديناميكيًا على العُقد العاملة للمعالجة المتوازية.
hudiCluster(cluster_name, url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])محرك الجدول
كبديل لاستخدام table function في كل query، يمكنك إنشاء جدول دائم باستخدام محرك الجدول Hudi. تظل البيانات مخزنة في object storage وتُقرأ عند الطلب، من دون نسخ أي بيانات إلى ClickHouse. وتمتاز هذه الطريقة بأن table definition يُخزَّن في ClickHouse، ويمكن مشاركته بين المستخدمين والجلسات من دون أن يضطر كل مستخدم إلى تحديد path التخزين وcredentials.
الصيغة:
CREATE TABLE hudi_table
ENGINE = Hudi(url [,aws_access_key_id, aws_secret_access_key])للاطلاع على الميزات المدعومة، بما في ذلك أنظمة التخزين الخلفية وغيرها، راجع مصفوفة الدعم. وللاطلاع على المرجع الكامل، راجع توثيق دالة الجدول hudi ومحرك الجدول Hudi.
تقرأ دالة الجدول paimon (اسم بديل لـ paimonS3) جداول Paimon من تخزين الكائنات. وتتوفر متغيرات لكل نوع من أنواع التخزين: paimonS3 وpaimonAzure وpaimonHDFS وpaimonLocal.
الصيغة:
paimon(url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])
paimonS3(url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])
paimonAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
paimonHDFS(path_to_table, [,format] [,compression_method])
paimonLocal(path_to_table, [,format] [,compression_method])متغيّر العنقود
توزّع الدالة paimonS3Cluster عمليات القراءة عبر عدة عُقد في عنقود ClickHouse. وتُرسل العقدة المُبادِرة ملفات البيانات ديناميكيًا إلى العُقد العاملة من أجل المعالجة المتوازية. ويُعد paimonCluster اسمًا مستعارًا لـ paimonS3Cluster. وتوجد أيضًا متغيّرات لـ Azure (paimonAzureCluster) وHDFS (paimonHDFSCluster).
paimonS3Cluster(cluster_name, url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])
-- paimonCluster is an alias for paimonS3Cluster
paimonAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
paimonHDFSCluster(cluster_name, path_to_table, [,format] [,compression_method])محرك الجدول
يوفّر ClickHouse محركات الجداول التجريبية PaimonS3 وPaimonAzure وPaimonHDFS وPaimonLocal. فعّلها باستخدام allow_experimental_paimon_storage_engine = 1.
للاطلاع على الميزات المدعومة، بما في ذلك أنظمة التخزين الخلفية وغيرها، راجع مصفوفة الدعم. وللمرجع الكامل، راجع توثيق دالة الجدول paimon.