الانتقال إلى المحتوى الرئيسي
إذا كنت تستخدم قاموسًا مع ClickHouse Cloud، فيُرجى استخدام خيار DDL query لإنشاء قواميسك، وإنشاء قاموسك كمستخدم default. تحقّق أيضًا من قائمة مصادر القواميس المدعومة في دليل التوافق مع Cloud.
توضح عبارة structure مفتاح القاموس والحقول المتاحة للاستعلامات. وصف XML:
<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Attribute parameters -->
        </attribute>

        ...

    </structure>
</dictionary>
تُوصَف السمات في العناصر التالية:
  • <id> — عمود المفتاح
  • <attribute> — عمود البيانات: يمكن أن يوجد أكثر من سمة واحدة.
استعلام DDL:
CREATE DICTIONARY dict_name (
    Id UInt64,
    -- attributes
)
PRIMARY KEY Id
...
تُوصَف السمات في نص الاستعلام:
  • PRIMARY KEY — عمود المفتاح
  • AttrName AttrType — عمود البيانات. يمكن أن تكون هناك عدة سمات.

المفتاح

يدعم ClickHouse الأنواع التالية من المفاتيح:
  • مفتاح رقمي. UInt64. يُعرَّف في الوسم <id> أو باستخدام الكلمة المفتاحية PRIMARY KEY.
  • مفتاح مركب. مجموعة من القيم من أنواع مختلفة. يُعرَّف في الوسم <key> أو باستخدام الكلمة المفتاحية PRIMARY KEY.
يمكن أن تحتوي بنية XML على <id> أو <key> فقط. ويجب أن يحتوي استعلام DDL على PRIMARY KEY واحد فقط.
يجب عدم وصف المفتاح على أنه سمة.

المفتاح الرقمي

النوع: UInt64. مثال على التهيئة:
<id>
    <name>Id</name>
</id>
حقول الإعداد:
  • name – اسم العمود الذي يحتوي على المفاتيح.
لاستعلام DDL:
CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – اسم العمود الذي يتضمن المفاتيح.

مفتاح مركب

يمكن أن يكون المفتاح tuple مكوَّنًا من حقول بأي أنواع. ويجب أن يكون التخطيط في هذه الحالة complex_key_hashed أو complex_key_cache.
يمكن أن يتكوّن المفتاح المركب من عنصر واحد. وهذا يتيح، على سبيل المثال، استخدام سلسلة نصية كمفتاح.
يُحدَّد تركيب المفتاح في العنصر <key>. وتُحدَّد حقول المفتاح بالتنسيق نفسه المستخدم في سمات القاموس. مثال:
<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...
أو
CREATE DICTIONARY (
    field1 String,
    field2 UInt32
    ...
)
PRIMARY KEY field1, field2
...
بالنسبة إلى استعلام للدالة dictGet*، تُمرَّر قيمة tuple كمفتاح. مثال: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

السمات

مثال على التهيئة:
<structure>
    ...
    <attribute>
        <name>Name</name>
        <type>ClickHouseDataType</type>
        <null_value></null_value>
        <expression>rand64()</expression>
        <hierarchical>true</hierarchical>
        <injective>true</injective>
        <is_object_id>true</is_object_id>
    </attribute>
</structure>
أو
CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)
حقول الإعداد:
الوسمالوصفمطلوب
nameاسم العمود.نعم
typeنوع بيانات ClickHouse: UInt8، UInt16، UInt32، UInt64، Int8، Int16، Int32، Int64، Float32، Float64، UUID، Decimal32، Decimal64، Decimal128، Decimal256،Date، Date32، DateTime، DateTime64، String، Array.
تحاول ClickHouse تحويل القيمة من القاموس إلى نوع البيانات المحدد. على سبيل المثال، في MySQL، قد يكون الحقل TEXT أو VARCHAR أو BLOB في جدول المصدر في MySQL، لكن يمكن تحميله في ClickHouse على أنه String.
يُدعَم Nullable حاليًا في قواميس Flat، وHashed، وComplexKeyHashed، وDirect، وComplexKeyDirect، وRangeHashed، وPolygon، وCache، وComplexKeyCache، وSSDCache، وSSDComplexKeyCache. أمّا في قواميس IPTrie، فلا تُدعَم أنواع Nullable.
نعم
null_valueالقيمة الافتراضية لعنصر غير موجود.
في المثال، هي سلسلة نصية فارغة. لا يمكن استخدام قيمة NULL إلا مع الأنواع Nullable (انظر السطر السابق لوصف الأنواع).
نعم
expressionتعبير تنفّذه ClickHouse على القيمة.
يمكن أن يكون التعبير اسم عمود في قاعدة بيانات SQL بعيدة. وبالتالي، يمكنك استخدامه لإنشاء اسم مستعار للعمود البعيد.

القيمة الافتراضية: لا يوجد تعبير.
لا
hierarchicalإذا كانت القيمة true، فستحتوي السمة على قيمة المفتاح الأب للمفتاح الحالي. راجع القواميس الهرمية.

القيمة الافتراضية: false.
لا
injectiveعلامة توضّح ما إذا كان التقابل id -> attribute تقابلًا أحاديًا.
إذا كانت القيمة true، يمكن لـ ClickHouse تلقائيًا وضع طلبات القواميس ذات الخاصية الأحادية بعد العبارة GROUP BY. وعادةً ما يقلّل ذلك بشكل كبير عدد هذه الطلبات.

القيمة الافتراضية: false.
لا
is_object_idعلامة توضّح ما إذا كان الاستعلام يُنفَّذ على مستند MongoDB باستخدام ObjectID.

القيمة الافتراضية: false.
آخر تعديل في ٢٥ يونيو ٢٠٢٦