هذه ميزة تجريبية، وقد تتغير مستقبلًا على نحو غير متوافق مع الإصدارات السابقة.
فعِّل استخدام محرك الجدول TimeSeries
باستخدام الإعداد allow_experimental_time_series_table.
أدخِل الأمر
set allow_experimental_time_series_table = 1.الصياغة
للكلمة المفتاحية
SAMPLES اسم مستعار هو DATA، وقد أُبقي عليه للحفاظ على التوافق مع الإصدارات السابقة.الاستخدام
TimeSeries من دون تحديد قائمة بالأعمدة):
الأعمدة الخارجية
مثال:
metric_name فارغة عند الإدخال، ما يعني أن اسم المقياس يُحدَّد في tags ضمن __name__، على سبيل المثال:
metric_family وtype وunit وhelp:
تحديد الأعمدة الخارجية
time_series صراحةً في عبارة CREATE TABLE لاستبدال نوعه الافتراضي Array(Tuple(DateTime64(3), Float64)). يستخرج ClickHouse نوعَي الطابع الزمني والقيمة القياسية من الـ tuple ويُمرّرهما إلى جدول العينات الداخلي:
INNER COLUMNS الخاصة بجدول samples:
CREATE TABLE نفسها، فيجب أن تتطابق الأنواع المُعلنة.
الجداول الهدف
TimeSeries على بيانات خاصة به، إذ يُخزَّن كل شيء في جداوله الهدف.
وهذا يشبه طريقة عمل العرض المادي،
مع فارق أن العرض المادي له جدول هدف واحد،
بينما يحتوي جدول TimeSeries على ثلاثة جداول هدف باسم samples وtags وmetrics.
يمكن تحديد الجداول الهدف صراحةً في استعلام CREATE TABLE
أو يمكن لمحرك جدول TimeSeries إنشاء الجداول الهدف الداخلية تلقائيًا.
تُحوَّل الصفوف المُدرجة في جدول TimeSeries، وتُقسَّم إلى كتل، ثم تُدرج في هذه الجداول الهدف الثلاثة.
الجداول الهدف هي كما يلي:
جدول العينات
يحتوي جدول tags على المعرّفات المحسوبة لكل توليفة من اسم مقياس والوسوم.
يجب أن يحتوي جدول tags على الأعمدة التالية:
جدول المقاييس
الإنشاء
TimeSeries.
أبسط تعليمة
SHOW CREATE TABLE my_table):
INNER COLUMNS.
تحمل الجداول الهدف الداخلية أسماء مثل .inner_id.samples.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,
.inner_id.tags.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx، و.inner_id.metrics.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ولكل جدول هدف مجموعة الأعمدة الخاصة به:
إنشاء جدول AS من جدول موجود
CREATE TABLE new_table AS existing_table من existing_table ما يلي:
SETTINGSINNER COLUMNSلكل نوعINNER ENGINEلكل نوع
existing_table يحتوي على أهداف خارجية.
يُعاد توليد قائمة الأعمدة الخارجية ولا تُنسخ.
ضبط أنواع الأعمدة
INNER COLUMNS. على سبيل المثال، لتخزين الطوابع الزمنية بالميكروثانية والقيم كـ Float32:
العمود id
id على معرّفات، ويُحتسب كل معرّف استنادًا إلى تركيبة من اسم المقياس والوسوم.
يمكن تخصيص النوع وتعبير DEFAULT المستخدم لتوليد المعرّفات عبر البند TAGS INNER COLUMNS:
id واحدًا من UUID أو UInt64 أو UInt128 أو FixedString(16). إذا لم يتم تحديد التعبير DEFAULT، فسيختاره ClickHouse تلقائيًا بناءً على نوع id. يجب أن تتطابق أنواع id المُعلنة في الجدولين الداخليين samples وtags.
يوفّر الإعداد id_generator مستوى التخصيص نفسه من دون استخدام العبارة INNER COLUMNS:
id حتى إذا كانت قيمة DEFAULT الخاصة بالعمود تحتوي على تعبير مختلف.
هناك عمودان يحتويان على قيم خريطة للوسوم، هما tags وall_tags. في هذا المثال، يشيران إلى المعنى نفسه، لكن قد يختلفان
إذا استُخدم الإعداد tags_to_columns. يتيح هذا الإعداد تحديد وسم معيّن لتخزينه في عمود منفصل بدلًا من تخزينه
في خريطة داخل العمود tags:
instance وjob إلى جدول الوسوم الهدف الداخلي.
في هذه الحالة، لن يحتوي العمود tags على الوسمين instance وjob،
لكن العمود all_tags سيحتوي عليهما. العمود all_tags مؤقت، والغرض الوحيد منه هو استخدامه في تعبير DEFAULT
للعمود id.
محركات الجداول الخاصة بالجداول الهدف الداخلية
- يستخدم جدول العينات محرك MergeTree;
- يستخدم جدول الوسوم محرك AggregatingMergeTree لأن البيانات نفسها تُدرج في هذا الجدول غالبًا عدة مرات، لذا نحتاج إلى طريقة
لإزالة التكرارات، وكذلك لأن التجميع مطلوب للعمودين
min_timeوmax_time; - يستخدم جدول المقاييس محرك ReplacingMergeTree لأن البيانات نفسها تُدرج في هذا الجدول غالبًا عدة مرات، لذا نحتاج إلى طريقة لإزالة التكرارات.
الجداول الهدف الخارجية
TimeSeries لاستخدام جدول أُنشئ يدويًا:
id وtimestamp وvalue وأعمدة <tag_value_column> المدرجة في tags_to_columns) مع ما كان جدول TimeSeries سيُنشئه داخليًا في الحالة العادية (راجع جدول العينات وجدول الوسوم وجدول المقاييس للاطلاع على قيود الأنواع). ويُبلَّغ عن أي عدم تطابق في الأنواع عند تنفيذ CREATE.
يُحدَّد تعبير مولِّد المعرّف لهدف وسوم خارجي عند وقت INSERT بالترتيب التالي: الإعداد id_generator (إذا كان معيَّنًا)، ثم DEFAULT المعرَّف في عمود id للجدول الخارجي (إن وجد)، ثم المولِّد القياسي المشتق من نوع id. لذلك، يتجاوز هذا الإعداد أي قيمة DEFAULT معرَّفة في الجدول الخارجي — راجع عمود id للتفاصيل.
تعديل الإعدادات
CREATE:
id_generatorfilter_by_min_time_and_max_time
id_generator بعد وجود بيانات بالفعل في جدول Tags قد يؤدي إلى إنشاء معرّفات مختلفة لنفس تركيبة metric+tag — إذ تحتفظ الصفوف القديمة بمعرّفاتها القديمة، بينما تستخدم الصفوف الجديدة المولِّد الجديد.
ولا يمكن تغيير الإعدادات الأخرى باستخدام ALTER ... MODIFY SETTING لأنها تكون مدمجة في مخطط الجداول الداخلية عند CREATE.
الإعدادات
TimeSeries:
الدوال
TimeSeries كوسيطة: