Skip to main content
مثل معظم أنظمة قواعد البيانات، ينظّم ClickHouse الجداول منطقيًا ضمن قواعد بيانات. استخدم الأمر CREATE DATABASE لإنشاء قاعدة بيانات جديدة في ClickHouse:
CREATE DATABASE IF NOT EXISTS helloworld
وبالمثل، استخدم CREATE TABLE لتعريف جدول جديد. إذا لم تحدد اسم قاعدة البيانات، فسيُنشأ الجدول في قاعدة البيانات default. يُنشأ الجدول التالي المسمى my_first_table في قاعدة البيانات helloworld:
  CREATE TABLE helloworld.my_first_table
  (
      user_id UInt32,
      message String,
      timestamp DateTime,
      metric Float32
  )
  ENGINE = MergeTree()
  PRIMARY KEY (user_id, timestamp)
في المثال أعلاه، my_first_table هو جدول MergeTree يحتوي على أربعة أعمدة:
  • user_id: عدد صحيح غير موقّع من 32 بت
  • message: نوع بيانات String، يحل محل أنواع مثل VARCHAR وBLOB وCLOB وغيرها في أنظمة قواعد البيانات الأخرى
  • timestamp: قيمة DateTime، تمثل نقطة زمنية محددة
  • metric: عدد عشري من 32 بت
يحدد محرك الجدول ما يلي:
  • كيف وأين تُخزَّن البيانات
  • الاستعلامات التي يدعمها
  • ما إذا كانت البيانات مكررة أم لا
هناك العديد من المحركات للاختيار من بينها، ولكن بالنسبة إلى جدول بسيط على خادم ClickHouse أحادي العقدة، فمن المرجح أن يكون MergeTree هو خيارك الأنسب.

مقدمة موجزة عن المفاتيح الأساسية

قبل المتابعة، من المهم فهم كيفية عمل المفاتيح الأساسية في ClickHouse (فطريقة تنفيذها قد تبدو غير متوقعة!):
  • المفاتيح الأساسية في ClickHouse ليست فريدة لكل صف في الجدول
يحدِّد المفتاح الأساسي في جدول ClickHouse كيفية ترتيب البيانات عند كتابتها إلى القرص. فكل 8,192 صفًا أو 10 ميغابايت من البيانات (ويُشار إلى ذلك باسم index granularity) يُنشئ إدخالًا في ملف فهرس المفتاح الأساسي. وينتج عن مفهوم الحبيبية هذا فهرسًا متناثرًا يمكن أن يتسع في الذاكرة بسهولة، كما تمثل الـ granules مقطعًا يضم أصغر قدر من بيانات الأعمدة التي تُعالَج أثناء استعلامات SELECT. يمكن تعريف المفتاح الأساسي باستخدام المعلَمة PRIMARY KEY. وإذا أنشأت جدولًا من دون تحديد PRIMARY KEY، فسيكون المفتاح هو الـ tuple المحددة في عبارة ORDER BY. وإذا حددت كلًا من PRIMARY KEY وORDER BY، فيجب أن يكون المفتاح الأساسي بادئةً لترتيب الفرز. المفتاح الأساسي هو أيضًا مفتاح الفرز، وهو tuple مكوّنة من (user_id, timestamp). لذلك ستكون البيانات المخزنة في كل ملف عمود مرتبة حسب user_id ثم timestamp.
لمزيد من التفاصيل، اطّلع على وحدة التدريب Modeling Data في ClickHouse Academy.
Last modified on June 29, 2026