Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

محرك الجدول StripeLog

غير مدعوم في ClickHouse Cloud

ينتمي هذا المحرك إلى عائلة محركات Log. اطّلع على الخصائص المشتركة لمحركات Log والفروق بينها في مقال عائلة محركات Log.

استخدم هذا المحرك عندما تحتاج إلى الكتابة إلى عدد كبير من الجداول مع كمية صغيرة من البيانات (أقل من مليون صف). على سبيل المثال، يمكن استخدام هذا الجدول لتخزين دفعات البيانات الواردة تمهيدًا لتحويلها عندما تكون معالجتها بشكل ذري مطلوبة. ويمكن لخادم ClickHouse التعامل عمليًا مع 100 ألف مثيل من هذا النوع من الجداول. يُفضَّل استخدام محرك الجدول هذا بدلًا من Log عند الحاجة إلى عدد كبير من الجداول، وإن كان ذلك على حساب كفاءة القراءة.

إنشاء جدول

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = StripeLog

اطّلع على الوصف المفصّل لعبارة CREATE TABLE.

كتابة البيانات

يخزّن المحرّك StripeLog جميع الأعمدة في ملف واحد. ولكل استعلام INSERT، يُلحِق ClickHouse كتلة البيانات بنهاية ملف الجدول، ويكتب الأعمدة واحدًا تلو الآخر.

لكل جدول، يكتب ClickHouse الملفات التالية:

  • data.bin — ملف البيانات.
  • index.mrk — ملف العلامات. تحتوي العلامات على إزاحات لكل عمود في كل كتلة بيانات تم إدراجها.

لا يدعم المحرّك StripeLog العمليتين ALTER UPDATE وALTER DELETE.

قراءة البيانات

يتيح الملف الذي يحتوي على العلامات لـ ClickHouse قراءة البيانات بالتوازي. وهذا يعني أن استعلام SELECT يعرض الصفوف بترتيب غير متوقع. استخدم عبارة ORDER BY لفرز الصفوف.

مثال للاستخدام

إنشاء جدول:

CREATE TABLE stripe_log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = StripeLog

إدراج البيانات:

INSERT INTO stripe_log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO stripe_log_table VALUES (now(),'REGULAR','The second regular message'),(now(),'WARNING','The first warning message')

استخدمنا استعلامَي INSERT لإنشاء كتلتَي بيانات داخل الملف data.bin.

يستخدم ClickHouse عدة خيوط تنفيذ عند استعلام البيانات. يقرأ كل خيط تنفيذ كتلة بيانات منفصلة ويُرجع الصفوف الناتجة بشكل مستقل فور انتهائه. ونتيجةً لذلك، لا يتطابق ترتيب كتل الصفوف في المخرجات، في معظم الحالات، مع ترتيب الكتل نفسها في المدخلات. على سبيل المثال:

SELECT * FROM stripe_log_table
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘

فرز النتائج (ترتيب تصاعدي افتراضيًا):

SELECT * FROM stripe_log_table ORDER BY timestamp
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message  │
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
Navigation