> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> وثائق المجموعات المُسمّاة

# المجموعات المُسمّاة

توفر المجموعات المسماة طريقة لتخزين مجموعات من أزواج المفتاح والقيمة لاستخدامها
في تهيئة عمليات التكامل مع المصادر الخارجية. يمكنك استخدام المجموعات المسماة مع
القواميس والجداول ودوال الجداول وتخزين الكائنات.

<Note>
  يمكن تمكين المجموعات المسماة المُنشأة باستخدام DDL في بعض خدمات ClickHouse Cloud. اتصل بالدعم للتأكد من التوافر. المجموعات المسماة المحددة في ملفات التهيئة غير متاحة لأن المستخدمين لا يمكنهم تعديل ملفات تهيئة الخادم في ClickHouse Cloud.
</Note>

يمكن تهيئة المجموعات المسماة باستخدام DDL أو ضمن ملفات التهيئة، ويُعمل بها
عند بدء تشغيل ClickHouse. وهي تُبسّط إنشاء الكائنات وإخفاء بيانات الاعتماد
عن المستخدمين الذين لا يملكون صلاحية وصول إدارية.

يجب أن تتطابق المفاتيح في المجموعة المسماة مع أسماء المعلَمات الخاصة بما يقابلها من
دالة أو محرك جدول أو قاعدة بيانات، وما إلى ذلك. في الأمثلة أدناه، أُدرج رابط إلى قائمة المعلَمات
الخاصة بكل نوع.

يمكن تجاوز المعلَمات المضبوطة في مجموعة مسماة داخل SQL، وهذا موضح في الأمثلة
أدناه. ويمكن تقييد هذه الإمكانية باستخدام الكلمات المفتاحية `[NOT] OVERRIDABLE` وسمات XML
و/أو خيار التهيئة `allow_named_collection_override_by_default`.

<Warning>
  إذا كان السماح بالتجاوز مفعّلًا، فقد يتمكن المستخدمون الذين لا يملكون وصولًا إداريًا من
  معرفة بيانات الاعتماد التي تحاول إخفاءها.
  إذا كنت تستخدم المجموعات المسماة لهذا الغرض، فينبغي عليك تعطيل
  `allow_named_collection_override_by_default` (وهو مفعّل افتراضيًا).
</Warning>

<h2 id="storing-named-collections-in-the-system-database">
  تخزين المجموعات المسماة في قاعدة بيانات النظام
</h2>

<h3 id="ddl-example">
  مثال على DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION name AS
key_1 = 'value' OVERRIDABLE,
key_2 = 'value2' NOT OVERRIDABLE,
url = 'https://connection.url/'
```

في المثال أعلاه:

* يمكن دائمًا استبدال قيمة `key_1`.
* لا يمكن أبدًا استبدال قيمة `key_2`.
* يمكن استبدال قيمة `url` أو عدم استبدالها بحسب قيمة `allow_named_collection_override_by_default`.

<h3 id="permissions-to-create-named-collections-with-ddl">
  الأذونات اللازمة لإنشاء المجموعات المسماة باستخدام DDL
</h3>

لإدارة المجموعات المسماة باستخدام DDL، يجب أن يمتلك المستخدم امتياز `named_collection_control`. ويمكن تعيين ذلك بإضافة ملف إلى `/etc/clickhouse-server/users.d/`. ويوضح المثال منح المستخدم `default` امتيازي `access_management` و`named_collection_control`:

```xml title='/etc/clickhouse-server/users.d/user_default.xml' highlight={6} theme={null}
<clickhouse>
  <users>
    <default>
      <password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex replace=true>
      <access_management>1</access_management>
      <named_collection_control>1</named_collection_control>
      <!-- Uncomment to also let this user see the values stored in named collections. -->
      <!-- <show_named_collections_secrets>1</show_named_collections_secrets> -->
    </default>
  </users>
</clickhouse>
```

<Tip>
  في المثال أعلاه، تمثّل قيمة `password_sha256_hex` القيمة السداسية العشرية لـ SHA256 hash لكلمة المرور. تحتوي تهيئة المستخدم `default` هذه على سمة ‏`replace=true`، لأن التهيئة الافتراضية تتضمن `password` بنص عادي، ولا يمكن تعيين كلمة مرور بنص عادي وكلمة مرور بتنسيق sha256 hex للمستخدم نفسه في الوقت ذاته.
</Tip>

يتيح `named_collection_control` للمستخدم إنشاء المجموعات المسماة وتعديلها وحذفها، لكنه لا يتيح له قراءة القيم المخزّنة فيها بالفعل. فتلك امتياز منفصل هو `SHOW NAMED COLLECTIONS SECRETS`، ويُفعَّل عبر الإعداد [`show_named_collections_secrets`](/ar/concepts/features/configuration/settings/settings-users#show_named_collections_secrets-user-setting). ولا يمكن للمستخدم منح سوى الامتيازات التي يمتلكها هو نفسه، لذا فما دام `show_named_collections_secrets` معطّلًا، فإن المستخدم لا يمتلك المجموعة الكاملة من الامتيازات، ويُرفض `GRANT ALL ON *.* TO another_user WITH GRANT OPTION` مع الرسالة `(Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *)`.

<h3 id="storage-for-named-collections">
  تخزين المجموعات المُسمّاة
</h3>

يمكن تخزين المجموعات المُسمّاة إما على القرص المحلي أو في ZooKeeper/Keeper. ويُستخدم التخزين المحلي افتراضيًا.
كما يمكن تخزينها باستخدام التشفير، بالخوارزميات نفسها المستخدمة في [تشفير القرص](/ar/concepts/features/configuration/server-config/storing-data#encrypted-virtual-file-system)،
حيث يُستخدم `aes_128_ctr` افتراضيًا.

لتهيئة تخزين المجموعات المُسمّاة، تحتاج إلى تحديد `type`. ويمكن أن تكون هذه القيمة إما `local` أو `keeper`/`zookeeper`. أما في حالة التخزين المشفّر،
فيمكنك استخدام `local_encrypted` أو `keeper_encrypted`/`zookeeper_encrypted`.

لاستخدام ZooKeeper/Keeper، نحتاج أيضًا إلى إعداد `path` (المسار في ZooKeeper/Keeper الذي ستُخزَّن فيه المجموعات المُسمّاة) ضمن
قسم `named_collections_storage` في ملف التهيئة. يستخدم المثال التالي التشفير وZooKeeper/Keeper:

```xml theme={null}
<clickhouse>
  <named_collections_storage>
    <type>zookeeper_encrypted</type>
    <key_hex>bebec0cabebec0cabebec0cabebec0ca</key_hex>
    <algorithm>aes_128_ctr</algorithm>
    <path>/named_collections_path/</path>
    <update_timeout_ms>1000</update_timeout_ms>
  </named_collections_storage>
</clickhouse>
```

القيمة الافتراضية لمَعلمة التهيئة الاختيارية `update_timeout_ms` هي `5000`.

يمكنك فحص نوع التخزين النشط عبر `system.server_settings` و`getServerSetting`:

```sql theme={null}
SELECT value, getServerSetting('named_collections_storage_type')
FROM system.server_settings
WHERE name = 'named_collections_storage.type';
```

يتطلب تغيير نوع التخزين إعادة تشغيل الخادم؛ ولا يغيّر `SYSTEM RELOAD CONFIG` الواجهة الخلفية النشطة.

<h2 id="storing-named-collections-in-configuration-files">
  تخزين المجموعات المسماة في ملفات التهيئة
</h2>

<h3 id="xml-example">
  مثال بتنسيق XML
</h3>

```xml title='/etc/clickhouse-server/config.d/named_collections.xml' theme={null}
<clickhouse>
     <named_collections>
        <name>
            <key_1 overridable="true">value</key_1>
            <key_2 overridable="false">value_2</key_2>
            <url>https://connection.url/</url>
        </name>
     </named_collections>
</clickhouse>
```

في المثال أعلاه:

* يمكن دائمًا إعادة تعريف `key_1`.
* لا يمكن مطلقًا إعادة تعريف `key_2`.
* يمكن إعادة تعريف `url` أو عدم إعادة تعريفه بحسب قيمة `allow_named_collection_override_by_default`.

<h2 id="modifying-named-collections">
  تعديل المجموعات المسماة
</h2>

يمكن تعديل المجموعات المسماة المُنشأة باستعلامات DDL أو إسقاطها باستخدام DDL. أما المجموعات المسماة المُنشأة بملفات XML، فيمكن إدارتها عبر تحرير ملف XML المقابل أو حذفه.

<h3 id="alter-a-ddl-named-collection">
  تعديل مجموعة مسماة مُعرَّفة بـ DDL
</h3>

غيّر أو أضف المفتاحين `key1` و`key3` في المجموعة `collection2`
(لن يؤدّي هذا إلى تغيير قيمة العلامة `overridable` لهذين المفتاحين):

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4, key3='value3'
```

غيّر المفتاح `key1` أو أضِفه، واسمح دائمًا باستبداله:

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4 OVERRIDABLE
```

احذف المفتاح `key2` من `collection2`:

```sql theme={null}
ALTER NAMED COLLECTION collection2 DELETE key2
```

غيّر المفتاح `key1` أو أضِفه، واحذف المفتاح `key3` في المجموعة `collection2`:

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4, DELETE key3
```

لفرض استخدام مفتاحٍ ما للإعدادات الافتراضية الخاصة بالعلامة `overridable`، عليك
إزالة المفتاح ثم إعادة إضافته.

```sql theme={null}
ALTER NAMED COLLECTION collection2 DELETE key1;
ALTER NAMED COLLECTION collection2 SET key1=4;
```

<h3 id="drop-the-ddl-named-collection-collection2">
  احذف المجموعة المُسمّاة لـ DDL `collection2`:
</h3>

```sql theme={null}
DROP NAMED COLLECTION collection2
```

<h2 id="named-collections-for-accessing-s3">
  المجموعات المسماة للوصول إلى S3
</h2>

للاطلاع على وصف المعلمات، راجع [الدالة الجدولية S3](/ar/reference/functions/table-functions/s3).

<h3 id="ddl-example-1">
  مثال على DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION s3_mydata AS
access_key_id = 'AKIAIOSFODNN7EXAMPLE',
secret_access_key = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
format = 'CSV',
url = 'https://s3.us-east-1.amazonaws.com/yourbucket/mydata/'
```

<h3 id="xml-example-1">
  مثال بتنسيق XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <s3_mydata>
            <access_key_id>AKIAIOSFODNN7EXAMPLE</access_key_id>
            <secret_access_key>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</secret_access_key>
            <format>CSV</format>
            <url>https://s3.us-east-1.amazonaws.com/yourbucket/mydata/</url>
        </s3_mydata>
    </named_collections>
</clickhouse>
```

<h3 id="s3-function-and-s3-table-named-collection-examples">
  أمثلة على الدالة `s3()` والمجموعة المسماة لجدول S3
</h3>

يستخدم كلٌّ من المثالين التاليين المجموعة المسماة نفسها `s3_mydata`:

<h4 id="s3-function">
  الدالة s3()
</h4>

```sql theme={null}
INSERT INTO FUNCTION s3(s3_mydata, filename = 'test_file.tsv.gz',
   format = 'TSV', structure = 'number UInt64', compression_method = 'gzip')
SELECT * FROM numbers(10000);
```

<Tip>
  الوسيطة الأولى للدالة `s3()` أعلاه هي اسم المجموعة المسماة، `s3_mydata`. ومن دون المجموعات المسماة، سيتعيّن تمرير معرّف مفتاح الوصول والمفتاح السري والتنسيق وURL في كل استدعاء للدالة `s3()`.
</Tip>

<h4 id="s3-table">
  جدول S3
</h4>

```sql theme={null}
CREATE TABLE s3_engine_table (number Int64)
ENGINE=S3(s3_mydata, url='https://s3.us-east-1.amazonaws.com/yourbucket/mydata/test_file.tsv.gz', format = 'TSV')
SETTINGS input_format_with_names_use_header = 0;

SELECT * FROM s3_engine_table LIMIT 3;
┌─number─┐
│      0 │
│      1 │
│      2 │
└────────┘
```

<h2 id="named-collections-for-accessing-mysql-database">
  المجموعات المسماة للوصول إلى قاعدة بيانات MySQL
</h2>

للاطلاع على وصف المعلمات، راجع [mysql](/ar/reference/functions/table-functions/mysql).

<h3 id="ddl-example-2">
  مثال على DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION mymysql AS
user = 'myuser',
password = 'mypass',
host = '127.0.0.1',
port = 3306,
database = 'test',
connection_pool_size = 8,
replace_query = 1
```

<h3 id="xml-example-2">
  مثال بتنسيق XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <mymysql>
            <user>myuser</user>
            <password>mypass</password>
            <host>127.0.0.1</host>
            <port>3306</port>
            <database>test</database>
            <connection_pool_size>8</connection_pool_size>
            <replace_query>1</replace_query>
        </mymysql>
    </named_collections>
</clickhouse>
```

<h3 id="mysql-function-mysql-table-mysql-database-and-dictionary-named-collection-examples">
  أمثلة على المجموعة المسماة الخاصة بـ قاموس والدالة mysql() وجدول MySQL وقاعدة بيانات MySQL
</h3>

تستخدم الأمثلة الأربعة التالية المجموعة المسماة نفسها `mymysql`:

<h4 id="mysql-function">
  دالة mysql()
</h4>

```sql theme={null}
SELECT count() FROM mysql(mymysql, table = 'test');

┌─count()─┐
│       3 │
└─────────┘
```

<Note>
  لا تتضمن المجموعة المسماة المَعلمة `table`، لذا جرى تحديدها في استدعاء الدالة بالشكل `table = 'test'`.
</Note>

<h4 id="mysql-table">
  جدول MySQL
</h4>

```sql theme={null}
CREATE TABLE mytable(A Int64) ENGINE = MySQL(mymysql, table = 'test', connection_pool_size=3, replace_query=0);
SELECT count() FROM mytable;

┌─count()─┐
│       3 │
└─────────┘
```

<Note>
  تتجاوز عبارة DDL إعداد connection\_pool\_size المحدد في المجموعة المسماة.
</Note>

<h4 id="mysql-database">
  قاعدة بيانات MySQL
</h4>

```sql theme={null}
CREATE DATABASE mydatabase ENGINE = MySQL(mymysql);

SHOW TABLES FROM mydatabase;

┌─name───┐
│ source │
│ test   │
└────────┘
```

<h4 id="mysql-dictionary">
  قاموس MySQL
</h4>

```sql theme={null}
CREATE DICTIONARY dict (A Int64, B String)
PRIMARY KEY A
SOURCE(MYSQL(NAME mymysql TABLE 'source'))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'B', 2);

┌─dictGet('dict', 'B', 2)─┐
│ two                     │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-postgresql-database">
  المجموعات المسماة للوصول إلى قاعدة بيانات PostgreSQL
</h2>

للاطلاع على وصف المعلمات، راجع [postgresql](/ar/reference/functions/table-functions/postgresql). بالإضافة إلى ذلك، تتوفر الأسماء المستعارة التالية:

* `username` بدلًا من `user`
* `db` بدلًا من `database`.

يمكن أيضًا تخزين إعدادات تجمّع الاتصالات الخاصة بـ [PostgreSQL table engine](/ar/reference/engines/table-engines/integrations/postgresql) (`postgresql_connection_pool_size` وإعدادات `postgresql_*` الأخرى) في المجموعة أو تمريرها كتجاوزات بصيغة `key = value`. وهي تنطبق على محرك الجدول `PostgreSQL`، والدالة الجدولية `postgresql`، ومحرك قاعدة البيانات `PostgreSQL`؛ وتكون لعبارة `SETTINGS` الصريحة على الجدول أولوية على القيم الواردة من المجموعة.

تُستخدم المعلمة `addresses_expr` في المجموعة بدلًا من `host:port`. وهذه المعلمة اختيارية، لأن هناك معلمات اختيارية أخرى، وهي: `host` و`hostname` و`port`. توضّح الشيفرة الزائفة التالية ترتيب الأولوية:

```sql theme={null}
CASE
    WHEN collection['addresses_expr'] != '' THEN collection['addresses_expr']
    WHEN collection['host'] != ''           THEN collection['host'] || ':' || if(collection['port'] != '', collection['port'], '5432')
    WHEN collection['hostname'] != ''       THEN collection['hostname'] || ':' || if(collection['port'] != '', collection['port'], '5432')
END
```

مثال على عملية الإنشاء:

```sql theme={null}
CREATE NAMED COLLECTION mypg AS
user = 'pguser',
password = 'jw8s0F4',
host = '127.0.0.1',
port = 5432,
database = 'test',
schema = 'test_schema'
```

مثال على التهيئة:

```xml theme={null}
<clickhouse>
    <named_collections>
        <mypg>
            <user>pguser</user>
            <password>jw8s0F4</password>
            <host>127.0.0.1</host>
            <port>5432</port>
            <database>test</database>
            <schema>test_schema</schema>
        </mypg>
    </named_collections>
</clickhouse>
```

<h3 id="example-of-using-named-collections-with-the-postgresql-function">
  مثال على استخدام المجموعات المُسمّاة مع الدالة postgresql
</h3>

```sql theme={null}
SELECT * FROM postgresql(mypg, table = 'test');

┌─a─┬─b───┐
│ 2 │ two │
│ 1 │ one │
└───┴─────┘
SELECT * FROM postgresql(mypg, table = 'test', schema = 'public');

┌─a─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
```

<h3 id="example-of-using-named-collections-with-database-with-engine-postgresql">
  مثال على استخدام المجموعات المُسمّاة مع قاعدة بيانات تعمل بمحرك PostgreSQL
</h3>

```sql theme={null}
CREATE TABLE mypgtable (a Int64) ENGINE = PostgreSQL(mypg, table = 'test', schema = 'public');

SELECT * FROM mypgtable;

┌─a─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
```

<Note>
  ينسخ PostgreSQL البيانات من المجموعة المُسمّاة عند إنشاء الجدول. وأي تغيير يطرأ على المجموعة لا يؤثر في الجداول الحالية.
</Note>

<h3 id="example-of-using-named-collections-with-database-with-engine-postgresql-1">
  مثال على استخدام المجموعات المسماة مع قاعدة بيانات تستخدم محرك PostgreSQL
</h3>

```sql theme={null}
CREATE DATABASE mydatabase ENGINE = PostgreSQL(mypg);

SHOW TABLES FROM mydatabase

┌─name─┐
│ test │
└──────┘
```

<h3 id="example-of-using-named-collections-with-a-dictionary-with-source-postgresql">
  مثال على استخدام المجموعات المسماة مع قاموس مصدره POSTGRESQL
</h3>

```sql theme={null}
CREATE DICTIONARY dict (a Int64, b String)
PRIMARY KEY a
SOURCE(POSTGRESQL(NAME mypg TABLE test))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'b', 2);

┌─dictGet('dict', 'b', 2)─┐
│ two                     │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-a-remote-clickhouse-database">
  المجموعات المسماة للوصول إلى قاعدة بيانات ClickHouse بعيدة
</h2>

للاطلاع على وصف المعلمات، راجع [remote](/ar/reference/functions/table-functions/remote#parameters).

مثال على التهيئة:

```sql theme={null}
CREATE NAMED COLLECTION remote1 AS
host = 'remote_host',
port = 9000,
database = 'system',
user = 'foo',
password = 'secret',
secure = 1
```

```xml theme={null}
<clickhouse>
    <named_collections>
        <remote1>
            <host>remote_host</host>
            <port>9000</port>
            <database>system</database>
            <user>foo</user>
            <password>secret</password>
            <secure>1</secure>
        </remote1>
    </named_collections>
</clickhouse>
```

`secure` غير ضروري للاتصال بسبب `remoteSecure`، لكن يمكن استخدامه مع القواميس.

<h3 id="example-of-using-named-collections-with-the-remoteremotesecure-functions">
  مثال على استخدام المجموعات المُسمّاة مع الدالتين `remote`/`remoteSecure`
</h3>

```sql theme={null}
SELECT * FROM remote(remote1, table = one);
┌─dummy─┐
│     0 │
└───────┘

SELECT * FROM remote(remote1, database = merge(system, '^one'));
┌─dummy─┐
│     0 │
└───────┘

INSERT INTO FUNCTION remote(remote1, database = default, table = test) VALUES (1,'a');

SELECT * FROM remote(remote1, database = default, table = test);
┌─a─┬─b─┐
│ 1 │ a │
└───┴───┘
```

<h3 id="example-of-using-named-collections-with-a-dictionary-with-source-clickhouse">
  مثال على استخدام المجموعات المسماة مع قاموس مصدره ClickHouse
</h3>

```sql theme={null}
CREATE DICTIONARY dict(a Int64, b String)
PRIMARY KEY a
SOURCE(CLICKHOUSE(NAME remote1 TABLE test DB default))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'b', 1);
┌─dictGet('dict', 'b', 1)─┐
│ a                       │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-kafka">
  المجموعات المسماة للوصول إلى Kafka
</h2>

راجع وصف المعلمات في [Kafka](/ar/reference/engines/table-engines/integrations/kafka).

<h3 id="ddl-example-3">
  مثال على DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION my_kafka_cluster AS
kafka_broker_list = 'localhost:9092',
kafka_topic_list = 'kafka_topic',
kafka_group_name = 'consumer_group',
kafka_format = 'JSONEachRow',
kafka_max_block_size = '1048576';

```

<h3 id="xml-example-3">
  مثال بتنسيق XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <my_kafka_cluster>
            <kafka_broker_list>localhost:9092</kafka_broker_list>
            <kafka_topic_list>kafka_topic</kafka_topic_list>
            <kafka_group_name>consumer_group</kafka_group_name>
            <kafka_format>JSONEachRow</kafka_format>
            <kafka_max_block_size>1048576</kafka_max_block_size>
        </my_kafka_cluster>
    </named_collections>
</clickhouse>
```

<h3 id="oauthbearer-oidc-authentication">
  مصادقة OAUTHBEARER/OIDC
</h3>

تُعدّ خيارات `OAUTHBEARER` إعدادات موسّعة لـ `librdkafka`، لذا يجب تضمينها داخل `<kafka>` في كل مجموعة مسمّاة (named collection). أما مفاتيح `kafka_*` في المستوى الأعلى فتُستخدم لتهيئة محرك الجدول Kafka. يحوّل ClickHouse الشرطات السفلية (underscores) في أسماء عناصر XML المتداخلة إلى نقاط قبل تمريرها إلى `librdkafka`.

يوضّح المثال التالي كيفية تهيئة بيانات اعتماد عميل OAuth لمساحة أسماء Azure Event Hubs:

```xml title='/etc/clickhouse-server/config.d/named_collections.xml' theme={null}
<clickhouse>
    <named_collections>
        <eventhub_one>
            <!-- Kafka table-engine settings -->
            <kafka_broker_list>domain.one.servicebus.windows.net:9093</kafka_broker_list>
            <kafka_topic_list>my-topic</kafka_topic_list>
            <kafka_group_name>my-group</kafka_group_name>
            <kafka_format>JSONEachRow</kafka_format>
            <kafka_security_protocol>sasl_ssl</kafka_security_protocol>
            <kafka_sasl_mechanism>OAUTHBEARER</kafka_sasl_mechanism>

            <!-- Extended librdkafka settings -->
            <kafka>
                <sasl_oauthbearer_method>oidc</sasl_oauthbearer_method>
                <sasl_oauthbearer_client_id from_env="EVENTHUB_CLIENT_ID"/>
                <sasl_oauthbearer_client_secret from_env="EVENTHUB_CLIENT_SECRET"/>
                <sasl_oauthbearer_token_endpoint_url>https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token</sasl_oauthbearer_token_endpoint_url>
                <sasl_oauthbearer_scope>https://domain.one.servicebus.windows.net/.default</sasl_oauthbearer_scope>
            </kafka>
        </eventhub_one>
    </named_collections>
</clickhouse>
```

عندما يستخدم `ENGINE = Kafka(eventhub_one)` مجموعة مسمّاة (named collection)، فإن ClickHouse لا يدمج معها تهيئة `<kafka>` العامة للخادم. لذا أنشئ مجموعة مستقلة لكل مساحة أسماء في Event Hubs إذا اختلف عنوان الوسيط (broker) أو نطاق OAuth، واحرص على تضمين جميع خصائص OIDC المطلوبة في تلك المجموعة.

تنطبق سمات `from_env` في هذا المثال على المجموعات المسمّاة المعرّفة بصيغة XML، إذ تقرأ قيمها من بيئة عملية خادم ClickHouse. راجع [الاستبدال بواسطة متغيرات البيئة](/ar/concepts/features/configuration/server-config/configuration-files#from_env_zk) للاطلاع على تفاصيل النشر والقيم الافتراضية، و[تشفير التهيئة وإخفاؤها](/ar/concepts/features/configuration/server-config/configuration-files#encryption) لحماية البيانات السرية في ملفات التهيئة الناتجة عن المعالجة المسبقة.

<h3 id="example-of-using-named-collections-with-a-kafka-table">
  مثال على استخدام المجموعات المسماة مع جدول Kafka
</h3>

يستخدم المثالان التاليان المجموعة المسماة نفسها `my_kafka_cluster`:

```sql theme={null}
CREATE TABLE queue
(
    timestamp UInt64,
    level String,
    message String
)
ENGINE = Kafka(my_kafka_cluster)

CREATE TABLE queue
(
    timestamp UInt64,
    level String,
    message String
)
ENGINE = Kafka(my_kafka_cluster)
SETTINGS kafka_num_consumers = 4,
         kafka_thread_per_consumer = 1;
```

<h2 id="named-collections-for-backups">
  المجموعات المسماة الخاصة بالنسخ الاحتياطية
</h2>

للاطلاع على وصف المعلمات، راجع [النسخ الاحتياطي والاستعادة](/ar/concepts/features/backup-restore/overview).

<h3 id="ddl-example-4">
  مثال على DDL
</h3>

```sql theme={null}
BACKUP TABLE default.test to S3(named_collection_s3_backups, 'directory')
```

<h3 id="xml-example-4">
  مثال بتنسيق XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <named_collection_s3_backups>
            <url>https://my-s3-bucket.s3.amazonaws.com/backup-S3/</url>
            <access_key_id>ABC123</access_key_id>
            <secret_access_key>Abc+123</secret_access_key>
        </named_collection_s3_backups>
    </named_collections>
</clickhouse>
```

<h2 id="named-collections-for-accessing-mongodb-table-and-dictionary">
  المجموعات المسماة للوصول إلى جدول MongoDB والقاموس
</h2>

للاطلاع على وصف المعلمات، راجع [mongodb](/ar/reference/functions/table-functions/mongodb).

<h3 id="ddl-example-5">
  مثال على DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION mymongo AS
user = '',
password = '',
host = '127.0.0.1',
port = 27017,
database = 'test',
collection = 'my_collection',
options = 'connectTimeoutMS=10000'
```

<h3 id="xml-example-5">
  مثال بتنسيق XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <mymongo>
            <user></user>
            <password></password>
            <host>127.0.0.1</host>
            <port>27017</port>
            <database>test</database>
            <collection>my_collection</collection>
            <options>connectTimeoutMS=10000</options>
        </mymongo>
    </named_collections>
</clickhouse>
```

<h4 id="mongodb-table">
  جدول MongoDB
</h4>

```sql theme={null}
CREATE TABLE mytable(log_type VARCHAR, host VARCHAR, command VARCHAR) ENGINE = MongoDB(mymongo, options='connectTimeoutMS=10000&compressors=zstd')
SELECT count() FROM mytable;

┌─count()─┐
│       2 │
└─────────┘
```

<Note>
  تتجاوز عبارة DDL إعدادات الخيارات المحددة في المجموعة المسماة.
</Note>

<h4 id="mongodb-dictionary">
  قاموس MongoDB
</h4>

```sql theme={null}
CREATE DICTIONARY dict
(
    `a` Int64,
    `b` String
)
PRIMARY KEY a
SOURCE(MONGODB(NAME mymongo COLLECTION my_dict))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED())

SELECT dictGet('dict', 'b', 2);

┌─dictGet('dict', 'b', 2)─┐
│ two                     │
└─────────────────────────┘
```

<Note>
  تحدِّد المجموعة المُسمّاة اسم الـ `collection` على أنه `my_collection`. وفي استدعاء الدالة، يُتجاوز هذا الإعداد باستخدام `collection = 'my_dict'` لاختيار `collection` أخرى.
</Note>
