recno(3)

الاسم
recno - طريقة الوصول لقاعدة بيانات رقم السجل

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

موجز
#include <sys/types.h> #include <db.h>

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

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

بنية بيانات رقم السجل هي إما سجلات متغيرة الطول أو ثابتة الطول مخزنة بتنسيق ملف مسطح، ويُوصل إليها بواسطة رقم السجل المنطقي. وجود رقم السجل خمسة يعني وجود السجلات من واحد إلى أربعة، ويؤدي حذف رقم السجل واحد إلى إعادة تسمية رقم السجل خمسة إلى رقم السجل أربعة، بالإضافة إلى تحريك المؤشر، إذا كان موضوعًا بعد رقم السجل واحد، إلى أسفل بمقدار سجل واحد.

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

    typedef struct {
        unsigned long flags;
        unsigned int  cachesize;
        unsigned int  psize;
        int           lorder;
        size_t        reclen;
        unsigned char bval;
        char         *bfname;
    } RECNOINFO;

عناصر هذه البنية مُعرَّفة كما يلي:

flags
    تُحَدَّد قيمة العلم عن طريق إجراء عملية OR لأي من القيم التالية:

    R_FIXEDLEN
        السجلات ثابتة الطول، غير محددة بالبايت. يُحدد عنصر البنية reclen طول السجل، ويُستخدم عنصر البنية bval كحرف حشو. أي سجلات، تُدرج في قاعدة البيانات، تكون أقصر من reclen بايت تُحشى آليًا.

    R_NOKEY
        في الواجهة المحددة بواسطة dbopen(3)، يملأ استرجاع السجل المتسلسل كلاً من بنيتي المفتاح والبيانات الخاصة بالمستدعي. إذا تم تحديد العلم R_NOKEY، فإن دوال cursor ليست مطلوبة لملء بنية المفتاح. يسمح هذا للتطبيقات باسترجاع السجلات في نهاية الملفات دون قراءة جميع السجلات المتداخلة.

    R_SNAPSHOT
        يتطلب هذا العلم أخذ لقطة من الملف عند استدعاء dbopen(3)، بدلاً من السماح بقراءة أي سجلات غير معدلة من الملف الأصلي.

cachesize
    حجم أقصى مقترح، بالبايت، للخبيئة في الذاكرة. هذه القيمة استشارية فقط، وستخصص طريقة الوصول ذاكرة إضافية بدلاً من الفشل. إذا كان cachesize هو 0 (لم يُحدد حجم)، تُستخدم خبيئة مبدئية.

psize
    تخزن طريقة الوصول recno النسخ في الذاكرة لسجلاتها في شجرة btree. هذه القيمة هي حجم (بالبايت) الصفحات المستخدمة للعقد في تلك الشجرة. إذا كان psize هو 0 (لم يُحدد حجم صفحة)، يُختار حجم صفحة بناءً على حجم كتلة الإدخال/الإخراج لنظام الملفات الأساسي. انظر btree(3) لمزيد من المعلومات.

lorder
    ترتيب البايتات (byte order) للأعداد الصحيحة في البيانات الوصفية المخزنة لقاعدة البيانات. يجب أن يمثل الرقم الترتيب كعدد صحيح؛ على سبيل المثال، ترتيب النهاية الكبرى (big endian) سيكون الرقم 4,321. إذا كان lorder هو 0 (لم يُحدد أي ترتيب)، فسيُستخدم ترتيب المضيف الحالي.

reclen
    طول سجل ثابت الطول.

bval
    البايت الفاصل المستخدم لتعليم نهاية سجل للسجلات متغيرة الطول، وحرف الحشو للسجلات ثابتة الطول. إذا لم تُحدد قيمة، تُستخدم أسطر جديدة ("\n") لتعليم نهاية السجلات متغيرة الطول وتُحشى السجلات ثابتة الطول بمسافات.

bfname
    تخزّن طريقة الوصول recno النسخ المقيمة في الذاكرة لسجلاتها في شجرة btree. إذا كان bfname غير NULL، فإنه يُحدد اسم ملف btree، كما لو كان مُحددًا كاسم ملف لـ dbopen(3) لملف btree.

جزء البيانات من زوج المفتاح/البيانات المستخدم بواسطة طريقة الوصول recno هو نفسه طرق الوصول الأخرى. المفتاح مختلف. يجب أن يكون حقل data للمفتاح مؤشرًا إلى موقع ذاكرة من النوع recno_t، كما هو مُعرّف في ملف التضمين <db.h>. هذا النوع هو عادةً أكبر نوع صحيح غير مُوقّع متاح للتطبيق. يجب أن يكون حقل size للمفتاح هو حجم ذلك النوع.

نظرًا لعدم وجود بيانات وصفية مرتبطة بملفات طريقة الوصول recno الأساسية، يجب تحديد أي تغييرات تُجرى على القيم المبدئية (مثل طول السجل الثابت أو قيمة فاصل البايت) صراحةً في كل مرة يُفتح فيها الملف.

في الواجهة المُحددة بواسطة dbopen(3)، سيؤدي استخدام واجهة put لإنشاء سجل جديد إلى إنشاء سجلات متعددة وفارغة إذا كان رقم السجل أكبر بواحد من أكبر سجل موجود حاليًا في قاعدة البيانات.

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

EINVAL
    جرت محاولة لإضافة سجل إلى قاعدة بيانات ذات طول ثابت كان كبيرًا جدًا بحيث لا يتسع.

العلل
يُدعم ترتيب البايتات الكبير (big endian) والصغير (little endian) فقط.

انظر أيضًا
btree(3)، dbopen(3)، hash(3)، mpool(3)

معالجة المستندات في نظام قاعدة بيانات علائقية، مايكل ستونبراكر، هايدي شتينر، جوزيف كالاش، أنتونين غوتمان، نادين لين، مذكرة رقم. UCB/ERL M82/32، مايو 1982.

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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