hashed
يُخزَّن القاموس بالكامل في الذاكرة على هيئة جدول تجزئة. ويمكن أن يحتوي على أي عدد من العناصر بأي معرّفات. وعمليًا، قد يصل عدد المفاتيح إلى عشرات الملايين من العناصر.
مفتاح القاموس من النوع UInt64.
جميع أنواع المصادر مدعومة. وعند التحديث، تُقرأ البيانات بالكامل (من ملف أو من جدول).
مثال على التهيئة:
LAYOUT(HASHED())<layout>
<hashed />
</layout>مثال على التهيئة مع الإعدادات:
LAYOUT(HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<hashed>
<!-- إذا كانت قيمة shards أكبر من 1 (القيمة الافتراضية هي `1`)، فسيحمّل القاموس
البيانات بالتوازي، وهذا مفيد إذا كان لديك عدد كبير جدًا من العناصر في
قاموس واحد. -->
<shards>10</shards>
<!-- حجم التراكم للـ blocks في الطابور المتوازي.
بما أن عنق الزجاجة في التحميل المتوازي هو إعادة التجزئة، فمن أجل تجنّب
التوقف لأن أحد الخيوط ينفّذ إعادة التجزئة، تحتاج إلى وجود
قدر من التراكم.
تُعد القيمة 10000 توازنًا جيدًا بين الذاكرة والسرعة.
وحتى مع 10e10 عنصر، يمكنها استيعاب الحمل بالكامل دون حدوث تجويع. -->
<shard_load_queue_backlog>10000</shard_load_queue_backlog>
<!-- الحد الأقصى لمعامل التحميل لجدول التجزئة. ومع القيم الأعلى،
تُستغل الذاكرة بكفاءة أكبر (أي يُهدر قدر أقل منها)، لكن أداء
القراءة قد يتراجع.
القيم الصالحة: [0.5, 0.99]
القيمة الافتراضية: 0.5 -->
<max_load_factor>0.5</max_load_factor>
</hashed>
</layout>sparse_hashed
يشبه hashed، لكنه يستخدم ذاكرة أقل مقابل زيادة في استخدام CPU.
يكون نوع مفتاح القاموس UInt64.
مثال على التهيئة:
LAYOUT(SPARSE_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<sparse_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</sparse_hashed>
</layout>يمكن أيضًا استخدام shards مع هذا النوع من القواميس، وهي أكثر أهمية في sparse_hashed منها في hashed لأن sparse_hashed أبطأ.
complex_key_hashed
يُستخدم هذا النوع من التخزين مع المفاتيح المركّبة. وهو مشابه لـ hashed.
مثال على التهيئة:
LAYOUT(COMPLEX_KEY_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<complex_key_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</complex_key_hashed>
</layout>complex_key_sparse_hashed
يُستخدم هذا النوع من التخزين مع المفاتيح المركبة. وهو مشابه لـ sparse_hashed.
مثال على التهيئة:
LAYOUT(COMPLEX_KEY_SPARSE_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<complex_key_sparse_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</complex_key_sparse_hashed>
</layout>