الگوی دیتابیس مارکداون
خلاصهٔ کاملتر
نویسنده، Rufus Pollock، با یه جملهٔ ساده شروع میکنه: فایلسیستم خودت از قبل یه دیتابیسه و فقط ابزارها اینجوری باهاش رفتار نمیکنن. به گفتهٔ اون مدیریت محتوا معمولاً یه انتخاب دروغین جلوت میذاره. یه طرف CMS که فیلد و تایپ و کوئری بهت میده ولی محتوات توی دیتابیس اختصاصی یه پلتفرم حبس میشه، طرف دیگه فایلهای مارکداون ساده که آزادی و گیت داری ولی نمیتونی بپرسی «هرچی تگ research داره و از ژانویه به بعد نوشته شده رو نشونم بده».
راهحلی که اسمش رو Markdown Database Pattern گذاشته اینه: مجموعهٔ فایلهای مارکداون رو یه دیتابیس حساب کن. هر فایل یه رکورده، فیلدهای frontmatter (یعنی همون بلوک YAML بالای فایل که بین دو خط --- میشینه) ستونها هستن و هر دایرکتوری یه جدول. تگها و ویکیلینکها و تسکهای داخل خود متن هم رابطههای اضافهای میسازن که میشه روشون کوئری زد.
مثالش یه پوشه یادداشت فیلمه. هر فایل بالاش چند خط متادیتا داره و پایینش متن معمولی:
---
year: 1983
director: Richard Marquand
budget_m: 32.7
tags: [sci-fi, space-opera]
---
# Return of the Jediهمین پوشه یه دیتابیسه، فقط یه ابزار میخوای که لایهٔ ساختاریافتهش رو بخونه. MarkdownDB پوشه رو ایندکس میکنه و میریزه توی SQLite و دو تا جدول files و file_tags بهت میده، بهعلاوهٔ یه API جاوااسکریپتی برای کوئریزدن. اگه اهل SQL نیستی، همون پوشه رو تو Obsidian باز کن و یه Base بهش وصل کن تا frontmatter به شکل جدول قابل مرتبسازی و فیلتر نشون داده شه، بدون هیچ زبان کوئری.
نویسنده محدودیتها رو هم صاف میگه: این الگو برای میلیونها رکورد و دادهٔ رابطهای پیچیده ساخته نشده و جایگزین دیتابیس رابطهای نیست. نقطهٔ شیرینش مجموعههایی تا حدود ده هزار فایله و بالاتر از اون باید سراغ دیتابیس واقعی بری. در عوض پرتابل بودن (فایل ساده هرجا میره)، ورژنکنترل با گیت، مستقل بودن از هر فریمورک و کوئریپذیری رو یکجا داری.
به گفتهٔ نویسنده وقتی اسم الگو رو بدونی همهجا میبینیش: پوشهٔ یادداشت شخصی با frontmatter، ویکی تیمی که هر صفحهش فیلد status و owner داره، یا بلاگی که پستهاش date و tags و author دارن. پیادهسازیش هم کد زیادی نمیخواد؛ frontmatter رو پارس کن، درخت دایرکتوری رو بگرد و نتیجه رو بریز تو SQLite. حرف آخرش اینه که مهمتر از هر ابزاری، خود الگوئه.
نکات کلیدی:
- نگاشت الگو: فایل مارکداون → رکورد، فیلد frontmatter → ستون، دایرکتوری → جدول، تگ و ویکیلینک و تسک → رابطه.
- سقف عملی الگو حدود ده هزار فایله؛ بالاتر از اون سراغ یه دیتابیس واقعی برو.
- MarkdownDB یه پوشهٔ مارکداون رو تو SQLite ایندکس میکنه و جدولهای files و file_tags و یه API جاوااسکریپتی میده.
- بدون SQL هم میشه: Base در Obsidian همون frontmatter رو به جدول قابل فیلتر تبدیل میکنه.
- چیزی که از دست میدی مقیاس و دادهٔ رابطهای پیچیدهست؛ چیزی که به دست میاری متن ساده، گیت و نبود قفل پلتفرمه.




