> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> وثائق تنسيق PuffinMetadata

# PuffinMetadata

<div id="description">
  ## الوصف
</div>

تنسيق إدخال خاص لقراءة البيانات الوصفية لتذييل ملفات [Apache Iceberg Puffin](https://iceberg.apache.org/puffin-spec/).
يُنتج صفًا واحدًا لكل إدخال blob في قائمة التذييل `BlobMetadata`.

`deletion-vector-v1` هو نوع blob الوحيد المدعوم؛ ويُرفض أي ملف يحتوي على نوع blob آخر (مثل `apache-datasketches-theta-v1`).

أعمدة الإخراج الثابتة:

* `blob_type` (`String`) - نوع blob، مثل `deletion-vector-v1`
* `snapshot_id` (`Int64`) - معرّف لقطة blob
* `sequence_number` (`Int64`) - رقم تسلسل blob
* `fields` (`Array(Int32)`) - قائمة معرّفات الحقول التي ينطبق عليها blob
* `offset` (`Int64`) - إزاحة حمولة blob في الملف
* `length` (`Int64`) - طول حمولة blob بالبايت
* `compression_codec` (`String`) - ترميز ضغط حمولة blob، إن وُجد
* `properties` (`Map(String, String)`) - خصائص خاصة بـ blob

تخضع `FileMetadata.properties` الاختيارية ذات المستوى الأعلى في التذييل (مثل `created-by`) للتحقق من النوع عند وجودها، لكنها لا تُعاد كأعمدة. إذا كان المفتاح موجودًا، فيجب أن تكون قيمته كائن JSON ذي قيم نصية (وتُرفض القيمة null).

تُدعم تذييلات Puffin المضغوطة بـ LZ4 وغير المضغوطة. يُقيَّد حجم حمولة التذييل (وحجم محتوى LZ4 المُعلن) بنسبة ضغط، عند الاقتضاء، وبحد أقصى مطلق؛ وتُرفض التذييلات كبيرة الحجم قبل تخصيص الذاكرة.

<div id="example-usage">
  ## مثال على الاستخدام
</div>

افحص كائنات blob في التذييل:

```sql theme={null}
SELECT blob_type, snapshot_id, sequence_number, offset, length, compression_codec,
       mapKeys(properties), mapValues(properties)
FROM file(deletes.puffin, PuffinMetadata);
```

استخدمه مع تنسيق `Puffin` لقراءة حمولات blob لـ `deletion-vector-v1`.
