LEI-STORE-FORMAT(5) public-inbox user manual LEI-STORE-FORMAT(5)

lei-store-format - قالب ذخیره‌سازی پیام‌ها و پایگاه‌داده lei

"lei/store" یک ذخیره‌ساز ترکیبی بر پایه public-inbox-extindex-format(5) («extindex») همراه با public-inbox-v2-format(5) («v2») برای ذخیره‌سازی blob است. اگرچه v2 برای بایگانی یک فهرست پستی عمومی منفرد ایده‌آل است؛ اما هرگز برای نامه‌های شخصی یا ذخیره‌سازی چندین blob از یک پیام «یکسان» در نظر گرفته نشده بود.

همانند extindex، این بخش می‌تواند سرآیندهای ناهمگون "List-Id" متعلق به پیام «یکسان» را با OIDهای متفاوت git blob نمایه کند. برخلاف v2 و extindex، سرآیندهای "Message-ID" الزامی نیستند؛ که اجازه می‌دهد پیش‌نویس پیام‌های ارسال‌نشده نیز ذخیره و نمایه‌سازی شوند.

ذخیره‌سازی blob در قالب دوره‌ها (epochs) به سبک v2 وجود دارد. این دوره‌ها در زیر دایرکتوری "local/" (به جای "git/") قرار دارند تا از تلقی تصادفی آن‌ها به عنوان یک صندوق ورودی v2 جلوگیری شود.

$EPOCH - Integer starting with 0 based on time
$SCHEMA_VERSION - DB schema version (for Xapian)
$SHARD - Integer starting with 0 based on parallelism
~/.local/share/lei/store
- local/$EPOCH.git                # normal bare git repositories
- mail_sync.sqlite3               # sync state IMAP, Maildir, NNTP

علاوه بر این، موارد زیر همان نقش‌هایی را دارند که در extindex ایفا می‌کنند:

- ei.lock                         # lock file to protect global state
- ALL.git                         # empty, alternates for local/*.git
- ei$SCHEMA_VERSION/$SHARD        # per-shard Xapian DB
- ei$SCHEMA_VERSION/over.sqlite3  # overview DB for WWW, IMAP
- ei$SCHEMA_VERSION/misc          # misc Xapian DB

حذف داده‌های تکراری نمایه از extindex پیروی می‌کند؛ برای اطلاعات بیشتر بخش «XREF3 DEDUPLICATION» را در public-inbox-extindex-format(5) ببینید.

محتوای مخازن "local/*.git" بر اساس شناسه‌های شیء blob در گیت (در حال حاضر SHA-1) حذف تکرار می‌شود. این ویژگی امکان ذخیره چندین نسخه از پیام‌های ارسال‌شده همزمان به چند گروه (cross-posted) و رونوشت‌شده شخصی (Cc-ed) را با سرآیندهای متفاوت مانند "Received:"، "X-Spam-Status:" و موارد مشابه جهت عیب‌یابی فراهم می‌سازد.

اطلاعات کلیدواژه‌ها و برچسب‌ها (همان‌طور که در RFC 8621 برای JMAP توصیف شده است) در قطعات (shards) موجود Xapian ("ei$SCHEMA_VERSION/$SHARD") ذخیره می‌شوند. امکان جستجوی پیام‌های منطبق با برچسب‌ها و کلیدواژه‌ها به ترتیب با استفاده از "L:" و "kw:" وجود دارد. مانند تمامی داده‌های ذخیره‌شده در نمایه‌های Xapian، فرامداده‌های فرار به سند Xapian مرتبط هستند، بنابراین بین blobهای مختلف از یک پیام «یکسان» به اشتراک گذاشته می‌شوند.

این پایگاه‌داده SQLite برای نگاشت دوطرفه بین blobهای git و شناسه‌های UID در IMAP، نام فایل‌های Maildir و شماره مقالات NNTP نگهداری می‌شود.

همچنین برای بازیابی پیام‌ها از Maildirهای نمایه‌شده توسط lei-index(1) استفاده می‌شود.

lei-daemon(8) با فرایند "lei/store" با استفاده از سوکت‌های unix(7) "SOCK_SEQPACKET" ارتباط برقرار می‌کند.

نمایه‌سازی مجدد و همگام‌سازی هنوز پشتیبانی نمی‌شود.

با تشکر از بنیاد لینوکس (Linux Foundation) به خاطر حمایت مالی از توسعه و آزمایش این پروژه.

حق نشر ۲۰۲۱ تمام مشارکت‌کنندگان <mailto:meta@public-inbox.org>

مجوز: AGPL-3.0+ http://www.gnu.org/licenses/agpl-3.0.txt

public-inbox-v2-format(5)، public-inbox-extindex(5)

1993-10-02 public-inbox.git