SLAPD-MDB(5) File Formats Manual SLAPD-MDB(5)

slapd-mdb - بک‌اند پایگاه‌داده نگاشت‌شده در حافظه برای slapd

/etc/openldap/slapd.conf

بک‌اند mdb برای slapd(8) از کتابخانه پایگاه‌داده نگاشت‌شده در حافظه (LMDB) پروژه OpenLDAP برای ذخیره‌سازی داده‌ها استفاده می‌کند. این بک‌اند برای مدیریت حافظه کاملاً به سیستم‌عامل متکی است و هیچ حافظه پنهانی از خود ندارد. این بک‌اند، بک‌اند پایگاه‌داده اصلی توصیه‌شده است.

بک‌اند mdb از ساختار پایگاه‌داده سلسله‌مراتبی استفاده می‌کند که از تغییر نام زیردرخت (subtree renames) پشتیبانی می‌نماید.

این گزینه‌های slapd.conf برای بک‌اند mdb اعمال می‌شوند. بدین معنا که باید پس از یک خط "backend mdb" و پیش از هر خط بعدی "backend" یا "database" قرار گیرند.

یک توان از ۲ را برای حداکثر اندازه یک اسلات شاخص مشخص می‌کند. مقدار پیش‌فرض ۱۶ است که حداکثر اندازه اسلات ۲^۱۶ یا ۶۵۵۳۶ را ایجاد می‌کند. پس از تنظیم، این گزینه برای هر نمونه پایگاه‌داده mdb اعمال می‌شود. مقدار مشخص‌شده باید در محدوده ۱۶ تا ۳۰ باشد.

این گزینه‌های slapd.conf برای پایگاه‌داده بک‌اند mdb اعمال می‌شوند. بدین معنا که باید پس از یک خط "database mdb" و پیش از هر خط بعدی "backend" یا "database" قرار گیرند. سایر گزینه‌های پایگاه‌داده در صفحه راهنمای slapd.conf(5) شرح داده شده‌اند.

بسامد تخلیه بافرهای دیسک پایگاه‌داده (flush) را مشخص می‌کند. این تنظیم تنها در صورتی نیاز است که گزینه dbnosync استفاده شده باشد. نقطه بازرسی (checkpoint) زمانی رخ می‌دهد که یا به اندازه <kbyte> داده نوشته شده باشد یا <min> دقیقه از آخرین نقطه بازرسی گذشته باشد. هر دو آرگومان به‌طور پیش‌فرض صفر هستند که در این حالت نادیده گرفته می‌شوند. هنگامی که آرگومان <min> غیرصفر باشد، یک وظیفه داخلی هر <min> دقیقه برای اجرای نقطه بازرسی اجرا می‌شود. توجه: در حال حاضر تنظیم <kbyte> پیاده‌سازی نشده است.
مشخص می‌کند که محتوای پایگاه‌داده روی دیسک نباید بلافاصله با تغییرات درون حافظه همگام‌سازی شود. فعال‌سازی این گزینه ممکن است کارایی را به قیمت امنیت داده‌ها افزایش دهد. به‌ویژه، اگر سیستم‌عامل پیش از تخلیه تغییرات از کار بیفتد، ممکن است تعدادی از تراکنش‌ها از دست بروند. به‌طور پیش‌فرض، هنگام ثبت (commit) هر تراکنش، یک تخلیه/همگام‌سازی کامل داده انجام می‌شود.
دایرکتوری محل قرارگیری فایل‌های LMDB شامل این پایگاه‌داده و شاخص‌های مرتبط را مشخص می‌کند. برای هر پایگاه‌داده باید یک دایرکتوری جداگانه مشخص شود. مقدار پیش‌فرض /var/lib/openldap/openldap-data است.
پرچم‌هایی را برای کنترل دقیق‌تر عملکرد کتابخانه LMDB مشخص می‌کند.
این پرچم دقیقاً مشابه دستورالعمل dbnosync است.
داده‌ها را در هنگام ثبت (commit) تخلیه می‌کند، اما از همگام‌سازی صفحه فراداده (meta page) صرف‌نظر می‌نماید. این حالت اندکی سریع‌تر از انجام یک همگام‌سازی کامل است، اما در صورت خرابی و از کار افتادن سیستم‌عامل، می‌تواند به‌طور بالقوه باعث از دست رفتن آخرین تراکنش ثبت‌شده شود. اگر هر دو پرچم nometasync و nosync تنظیم شده باشند، پرچم nosync اولویت خواهد داشت.
به‌جای حالت فقط‌خواندنی، از یک نگاشت حافظه قابل‌نوشتن استفاده می‌کند. این کار عملیات نوشتن را سریع‌تر می‌کند، اما در صورتی که هرگونه اشکال در slapd باعث نوشتن تصادفی در ناحیه mmap شود، پایگاه‌داده را در معرض خرابی قرار می‌دهد.
هنگام استفاده از نگاشت حافظه قابل‌نوشتن و انجام تخلیه در هر commit، به‌جای تخلیه همگام (پیش‌فرض) از تخلیه ناهمگام استفاده می‌کند. این گزینه در صورتی که writemap تنظیم نشده باشد، هیچ اثری ندارد. همچنین اگر nosync تنظیم شده باشد نیز بی‌اثر است.
خواندن پیش‌دستانه (readahead) فایل را غیرفعال می‌کند. معمولاً سیستم‌عامل برای هر درخواست خواندن، readahead انجام می‌دهد. این کار معمولاً کارایی خواندن را افزایش می‌دهد، اما در صورتی که حافظه سیستم پر باشد و پایگاه‌داده بزرگ‌تر از RAM باشد، می‌تواند به کارایی خواندن تصادفی آسیب برساند. این گزینه در ویندوز پیاده‌سازی نشده است.
شاخص‌هایی را که باید برای ویژگی داده‌شده (یا فهرستی از ویژگی‌ها) نگهداری شوند مشخص می‌کند. برخی ویژگی‌ها تنها از زیرمجموعه‌ای از شاخص‌ها پشتیبانی می‌کنند. اگر فقط یک <attr> داده شود، شاخص‌های مشخص‌شده برای default نگهداری می‌شوند. توجه داشته باشید که تعیین پیش‌فرض به این معنا نیست که همه ویژگی‌ها نمایه‌گذاری می‌شوند. همچنین برای بهترین کارایی، همیشه باید یک شاخص eq برای ویژگی objectClass پیکربندی شود.

تعدادی پارامتر ویژه شاخص نیز می‌تواند تعیین شود. نوع شاخص sub می‌تواند به شاخص‌های subinitial، subany و subfinal تجزیه شود. نوع ویژه nolang می‌تواند مشخص شود تا استفاده از این شاخص توسط زیرنوع‌های زبانی مجاز نباشد. نوع ویژه nosubtypes می‌تواند مشخص شود تا استفاده از این شاخص توسط زیرنوع‌های نام‌گذاری‌شده مجاز نباشد. توجه: تغییر تنظیمات index در slapd.conf(5) نیازمند بازسازی شاخص‌ها است؛ رجوع کنید به slapindex(8)؛ تغییر پویای تنظیمات index با استفاده از LDAPModify روی "cn=config" به‌طور خودکار باعث بازسازی برخط شاخص‌ها در یک وظیفه پس‌زمینه می‌گردد.

حداکثر اندازه یک مدخل را به بایت مشخص می‌کند. تلاش برای ذخیره مدخلی بزرگ‌تر از این اندازه با خطای LDAP_ADMINLIMIT_EXCEEDED رد خواهد شد. مقدار پیش‌فرض 0 است که به معنای نامحدود می‌باشد.
حداکثر تعداد نخ‌هایی (threads) را که می‌توانند به‌طور هم‌روند به پایگاه‌داده دسترسی خواندن داشته باشند مشخص می‌کند. ابزارهایی مانند slapcat علاوه بر نخ‌های موجود در فرایندهای فعال slapd، به‌عنوان یک نخ واحد محاسبه می‌شوند. مقدار پیش‌فرض 126 است.
حداکثر اندازه پایگاه‌داده را به بایت مشخص می‌کند. نگاشت حافظه‌ای با این اندازه در زمان راه‌اندازی تخصیص می‌یابد و پایگاه‌داده اجازه رشد فراتر از این اندازه را نخواهد داشت. مقدار پیش‌فرض 10485760 بایت است. در صورتی که حد پیکربندی‌شده نیاز به افزایش داشته باشد، این تنظیم می‌تواند به مقدار بالاتری تغییر یابد.

توجه: بسیار مهم است که این مقدار تا حد ممکن بزرگ تعیین شود (متناسب با رشد پیش‌بینی‌شده داده‌های واقعی در طول زمان)، چرا که افزایش اندازه بعداً در هنگامی که سیستم تحت بار کاری سنگین است ممکن است عملی نباشد.

حالت حفاظت از فایل (مجوزهای فایل) را که فایل‌های پایگاه‌داده تازه ایجادشده باید داشته باشند مشخص می‌کند. مقدار پیش‌فرض 0600 است.
تعداد مقادیری را که برای آن‌ها یک ویژگی چندمقداری در یک جدول جداگانه ذخیره می‌شود مشخص می‌کند. به‌طور معمول مدخل‌ها به‌صورت یک شیء داده‌ای واحد (blob) درون پایگاه‌داده ذخیره می‌شوند. زمانی که یک مدخل بسیار بزرگ می‌شود یا شامل ویژگی‌هایی با تعداد بسیار زیادی مقدار است، اعمال تغییرات روی آن مدخل می‌تواند بسیار کُند شود. تفکیک ویژگی‌های بزرگ در یک جدول جداگانه می‌تواند کارایی عملیات ویرایش و تغییر را بهبود بخشد. این آستانه به‌صورت یک جفت عدد صحیح مشخص می‌شود. اگر تعداد مقادیر از آستانه hi فراتر رود، مقادیر تفکیک خواهند شد. اگر تغییری به تعداد کافی مقادیر را حذف کند تا تعداد مقادیر ویژگی به زیر آستانه lo برسد، مقادیر از جدول جداگانه حذف شده و دوباره در بلوک اصلی مدخل ادغام می‌شوند. این آستانه می‌تواند برای یک فهرست مشخص از ویژگی‌ها تنظیم شود، یا این‌که مقدار پیش‌فرضی برای همه ویژگی‌های دیگر پیکربندی گردد. مقدار پیش‌فرض برای هر دو آستانه hi و lo برابر UINT_MAX است که تمام ویژگی‌ها را در بلوک اصلی نگه می‌دارد.
حداکثر تعداد مدخل‌هایی را برای پردازش در یک تراکنش خواندن منفرد هنگام اجرای یک جستجوی بزرگ مشخص می‌کند. تراکنش‌های خواندن طولانی‌مدت از استفاده مجدد از صفحات قدیمی پایگاه‌داده در تراکنش‌های نوشتن جلوگیری می‌کنند و بنابراین در صورت وجود ترافیک سنگین نوشتن، می‌توانند باعث رشد قابل‌توجه فایل پایگاه‌داده شوند. این تنظیم باعث می‌شود که در جستجوهای بزرگ، تراکنش خواندن پس از خوانده شدن تعداد معینی از مدخل‌ها آزاد شده و مجدداً دریافت گردد تا به نویسندگان فرصت بازپس‌گیری صفحات قدیمی پایگاه‌داده داده شود. مقدار پیش‌فرض 10000 است.
عمق پشتهٔ مورد استفاده برای ارزیابی فیلترهای جستجو را مشخص می‌کند. فیلترهای جستجو بر روی یک پشته ارزیابی می‌شوند تا با بندهای تودرتوی AND / OR مطابقت داشته باشند. به هر نخ سرور یک پشته اختصاصی تخصیص می‌یابد. عمق پشته تعیین می‌کند که تا چه حد فیلترهای پیچیده می‌توانند بدون نیاز به تخصیص حافظه اضافی ارزیابی شوند. فیلترهایی که تودرتویی عمیق‌تری نسبت به عمق پشته جستجو دارند، باعث می‌شوند یک پشته جداگانه برای آن عملیات جستجوی خاص تخصیص یابد. این تخصیص‌ها می‌توانند تأثیر منفی شدیدی بر کارایی سرور بگذارند، اما تعیین عمق بیش از حد بزرگ برای پشته نیز حافظه زیادی مصرف خواهد کرد. هر پشته جستجو به‌ازای هر سطح از 512 کیلوبایت استفاده می‌کند. عمق پیش‌فرض پشته 16 است، بنابراین به‌ازای هر نخ 8 مگابایت استفاده می‌شود.

بک‌اند mdb از قواعد و مفاهیم کنترل دسترسی همان‌گونه که در slapd.access(5) مشخص شده است، پیروی می‌کند.

/etc/openldap/slapd.conf
فایل پیکربندی پیش‌فرض slapd

slapd.conf(5), slapd-config(5), slapd(8), slapadd(8), slapcat(8), slapindex(8), slapmodify(8), مستندات OpenLDAP LMDB.

نرم‌افزار OpenLDAP توسط پروژه OpenLDAP در http://www.openldap.org توسعه یافته و نگهداری می‌شود. نرم‌افزار OpenLDAP از انتشار LDAP 3.3 دانشگاه میشیگان برگرفته شده است. نوشته‌شده توسط Howard Chu.

2026/03/09 OpenLDAP 2.6.13