Scroll to navigation

hash(3) Library Functions Manual hash(3)

الاسم

hash - طريقة الوصول إلى قاعدة بيانات التجزئة

المكتبة

مكتبة سي المعيارية (libc، -lc)

موجز

#include <sys/types.h> #include <db.h>

الوصف

ملاحظة جيدة: توثق هذه الصفحة الواجهات المقدمة حتى glibc 2.1. ومنذ الإصدار glibc 2.2، لم تعد glibc توفر هذه الواجهات. من المحتمل أنك تبحث عن واجهات برمجة التطبيقات (APIs) التي توفرها مكتبة libdb بدلاً من ذلك.

الدالة dbopen(3) هي واجهة المكتبة لملفات قاعدة البيانات. أحد صيغ الملفات المدعومة هي ملفات التجزئة. الوصف العام لطرق الوصول إلى قاعدة البيانات موجود في dbopen(3)، تصف صفحة الدليل هذه فقط المعلومات الخاصة بالتجزئة.

هيكل بيانات التجزئة هو مخطط تجزئة ديناميكي قابل للتوسيع.

هيكل البيانات الخاص بطريقة الوصول المُقدم إلى dbopen(3) يُعرَّف في ملف التضمين <db.h> كما يلي:


typedef struct {

unsigned int bsize;
unsigned int ffactor;
unsigned int nelem;
unsigned int cachesize;
uint32_t (*hash)(const void *, size_t);
int lorder; } HASHINFO;

عناصر هذا الهيكل هي كما يلي:

يُعرِّف حجم دلو جدول التجزئة، وهو مبدئيًا 256 بايت. قد يُفضل زيادة حجم الصفحة للجداول المقيمة على القرص والجداول ذات عناصر البيانات الكبيرة.
يشير إلى كثافة مرغوبة داخل جدول التجزئة. إنه تقريب لعدد المفاتيح المسموح بتراكمها في أي دلو واحد، ويحدد متى ينمو جدول التجزئة أو يتقلص. القيمة المبدئية هي 8.
هو تقدير للحجم النهائي لجدول التجزئة. إذا لم يُضبط أو ضُبط منخفضًا جدًا، ستتوسع جداول التجزئة بلطف مع إدخال المفاتيح، على الرغم من ملاحظة تدهور طفيف في الأداء. القيمة المبدئية هي 1.
هو الحجم الأقصى المقترح، بالبايت، للخبيئة الذاكرية. هذه القيمة استشارية فقط، وستخصص طريقة الوصول ذاكرة إضافية بدلاً من الفشل.
هي دالة تجزئة مُعرَّفة من قبل المستخدم. نظرًا لعدم وجود دالة تجزئة تؤدي بشكل جيد على جميع البيانات الممكنة، قد يجد المستخدم أن دالة التجزئة المضمنة تؤدي بشكل ضعيف على مجموعة بيانات معينة. يجب أن تأخذ دوال التجزئة المُحددة من قبل المستخدم معاملين (مؤشر لسلسلة محارف بايتية وطول) وتُعيد كمية 32 بت تُستخدم كقيمة التجزئة.
هو ترتيب البايت للأعداد الصحيحة في بيانات وصف قاعدة البيانات المخزنة. يجب أن يمثل الرقم الترتيب كعدد صحيح؛ على سبيل المثال، ترتيب big endian سيكون الرقم 4,321. إذا كان lorder يساوي 0 (لم يُحدد أي ترتيب)، يُستخدم ترتيب المضيف الحالي. إذا كان الملف موجودًا بالفعل، تُتجاهل القيمة المُحددة وتُستخدم القيمة المُحددة عند إنشاء الشجرة.

إذا كان الملف موجودًا بالفعل (ولم يُحدد العلم O_TRUNC)، تُتجاهل القيم المُحددة لـ bsize و ffactor و lorder و nelem وتُستخدم القيم المُحددة عند إنشاء الشجرة.

إذا حُددت دالة تجزئة، تحاول hash_open تحديد ما إذا كانت دالة التجزئة المُحددة هي نفسها التي أُنشئت بها قاعدة البيانات، وتفشل إذا لم تكن كذلك.

تُوفر واجهات متوافقة مع الإصدارات السابقة للدوال الموصوفة في dbm(3) و ndbm(3)، ومع ذلك هذه الواجهات غير متوافقة مع صيغ الملفات السابقة.

الأخطاء

قد تفشل دوال طريقة الوصول hash وتُعيِّن errno لأي من الأخطاء المُحددة لدالة المكتبة dbopen(3).

العلل

فقط ترتيب البايت big endian و little endian مدعومان.

انظر أيضًا

btree(3)، dbopen(3)، mpool(3)، recno(3)

جداول التجزئة الديناميكية، Per-Ake Larson، اتصالات رابطة مكائن الحوسبة، أبريل 1988.

حزمة تجزئة جديدة ليونكس، Margo Seltzer، وقائع USENIX، شتاء 1991.

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

21 سبتمبر 2025 4.4 Berkeley Distribution