| LEI-STORE-FORMAT(5) | public-inbox user manual | LEI-STORE-FORMAT(5) |
نام (NAME)
lei-store-format - قالب ذخیرهسازی پیامها و پایگاهداده lei
توضیحات (DESCRIPTION)
"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" الزامی نیستند؛ که اجازه میدهد پیشنویس پیامهای ارسالنشده نیز ذخیره و نمایهسازی شوند.
ساختار دایرکتوری (DIRECTORY LAYOUT)
ذخیرهسازی blob در قالب دورهها (epochs) به سبک v2 وجود دارد. این دورهها در زیر دایرکتوری "local/" (به جای "git/") قرار دارند تا از تلقی تصادفی آنها به عنوان یک صندوق ورودی v2 جلوگیری شود.
نمای کلی و تعاریف نمایه (INDEX OVERVIEW AND DEFINITIONS)
$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
حذف دادههای تکراری XREF3 (XREF3 DEDUPLICATION)
حذف دادههای تکراری نمایه از extindex پیروی میکند؛ برای اطلاعات بیشتر بخش «XREF3 DEDUPLICATION» را در public-inbox-extindex-format(5) ببینید.
حذف دادههای تکراری BLOB (BLOB DEDUPLICATION)
محتوای مخازن "local/*.git" بر اساس شناسههای شیء blob در گیت (در حال حاضر SHA-1) حذف تکرار میشود. این ویژگی امکان ذخیره چندین نسخه از پیامهای ارسالشده همزمان به چند گروه (cross-posted) و رونوشتشده شخصی (Cc-ed) را با سرآیندهای متفاوت مانند "Received:"، "X-Spam-Status:" و موارد مشابه جهت عیبیابی فراهم میسازد.
فرامدادههای فرار (VOLATILE METADATA)
اطلاعات کلیدواژهها و برچسبها (همانطور که در RFC 8621 برای JMAP توصیف شده است) در قطعات (shards) موجود Xapian ("ei$SCHEMA_VERSION/$SHARD") ذخیره میشوند. امکان جستجوی پیامهای منطبق با برچسبها و کلیدواژهها به ترتیب با استفاده از "L:" و "kw:" وجود دارد. مانند تمامی دادههای ذخیرهشده در نمایههای Xapian، فرامدادههای فرار به سند Xapian مرتبط هستند، بنابراین بین blobهای مختلف از یک پیام «یکسان» به اشتراک گذاشته میشوند.
mail_sync.sqlite3
این پایگاهداده SQLite برای نگاشت دوطرفه بین blobهای git و شناسههای UID در IMAP، نام فایلهای Maildir و شماره مقالات NNTP نگهداری میشود.
همچنین برای بازیابی پیامها از Maildirهای نمایهشده توسط lei-index(1) استفاده میشود.
ارتباط بینفرایندی (IPC)
lei-daemon(8) با فرایند "lei/store" با استفاده از سوکتهای unix(7) "SOCK_SEQPACKET" ارتباط برقرار میکند.
هشدارها (CAVEATS)
نمایهسازی مجدد و همگامسازی هنوز پشتیبانی نمیشود.
تشکر و قدردانی (THANKS)
با تشکر از بنیاد لینوکس (Linux Foundation) به خاطر حمایت مالی از توسعه و آزمایش این پروژه.
حق نشر (COPYRIGHT)
حق نشر ۲۰۲۱ تمام مشارکتکنندگان <mailto:meta@public-inbox.org>
مجوز: AGPL-3.0+ http://www.gnu.org/licenses/agpl-3.0.txt
همچنین ببینید (SEE ALSO)
| 1993-10-02 | public-inbox.git |