دیتابیس شما مدل داده نیست
خلاصهٔ کاملتر
جو ریس تو این مطلب از یک صحنهٔ آشنا شروع میکنه: یکی یک فایل DDL یا یک پوشه SQL و dbt یا یک ERD مهندسیمعکوسشده از پستگرس رو باز میکنه و میگه «این مدل دادهٔ ماست». به گفتهٔ نویسنده اون چیز یک اسکیماست، و مدلسازی داده خیلی بیشتر از طراحی اسکیماست.
تفکیکی که پیشنهاد میده سادهست: طراحی اسکیما کار پیادهسازیه و مدلسازی داده کار بازنمایی. نویسنده میگه این قاطی شدن تصادفی نیست؛ ریشهش تو تسلط دیتابیسهای رابطهایه، جایی که ساختار فیزیکی اونقدر پررنگ شد که معنایی رو که قرار بود نگه داره بلعید.
طعنهٔ ماجرا از نظر او اینجاست که مدل رابطهای خودش یک مدل بود. مقالهٔ ۱۹۷۰ کاد از استقلال داده دفاع میکرد؛ اینکه مصرفکنندهٔ داده نباید درگیر نحوهٔ ذخیرهسازی باشه. چن هم در ۱۹۷۶ مدلسازی موجودیت-رابطه رو آورد تا آدمها قبل از نوشتن کد سر واقعیت بحث کنن. ولی چیزی که موند طراحی فیزیکی بود، چون DDL دیدنی و ماندگار و اجراشدنی بود.
بعد ORMها کار رو تموم کردن: تو جنگو فایل models.py و تو ریلز پوشهٔ app/models. یک نسل یاد گرفت «مدل» یعنی کلاسی که یکبهیک به جدول نگاشت میشه. dbt هم به یک دستور SELECT میگه مدل. نویسنده اسم این وضعیت رو «کوریِ مدل» میذاره: وقتی یک واژه همهچیز باشه، هیچی نیست.
مثالی که میزنه «مشتری فعال»ه. مارکتینگ میگه هر کسی که ۳۰ روز اخیر لاگین کرده، فایننس میگه هر کسی که الان پول میده، ساپورت میگه هر حساب باز، و پروداکت میگه هر کسی که آنبوردینگ رو تموم کرده. هر چهارتا تو دنیای خودشون درستن و هر چهارتا یک کوئری قابلدفاع مینویسن؛ و هیچکدوم ربطی به دیتابیس نداره.
جهت درست از نظر او یکطرفهست: واقعیت ← فهم مشترک ← مدل داده ← طراحی اسکیما ← دیتابیس. یک مدل میتونه چند اسکیما داشته باشه، مثل نُتی که با پیانو یا گیتار اجرا میشه. خطر از سمت مخالف میاد: یک اسکیما که بیسروصدا چند مدل رو با هم نگه داشته و سه تیم سه جواب فنیدرست و آشتیناپذیر میگیرن.
نویسنده معتقده با ورود ایجنتها این بحث از حالت آکادمیک درمیاد. ایجنت اون ترد اسلک ۲۰۲۳ رو ندیده که توش قرار شد مشترک لغوکرده تا ۹۰ روز هنوز فعال حساب بشه؛ فقط جدول و ستون و کامنت رو میبینه و با اعتمادبهنفس جدولهایی رو جوین میکنه که قرار نبوده کنار هم بیان. دانش نانوشتهٔ آدمها مدل واقعیه و اسکیما فقط آرتیفکته.
به گفتهٔ او سمانتیک لیر هم مفیده ولی اغلب داره جای تصمیمهای مدلسازیِ گرفتهنشده رو پر میکنه و شما تا ابد اجارهٔ یک دیکشنری ترجمه رو میدید. صورتحساب این بدهی هم بالاخره میاد: مهاجرتهای دردناک، ادغام دادهای که شبیه باستانشناسیه، حکمرانی نمایشی، و هوش مصنوعیای که تقصیر داده رو گردن میگیره.
نکات کلیدی:
- مدلسازی داده میپرسه «این چی رو بازنمایی میکنه»، اسکیما میپرسه «چطور پیادهش کنیم»
- ORMها و dbt واژهٔ «مدل» رو تا حد بیمعنایی گسترش دادن
- یک مدل میتونه روی چند اسکیما اجرا بشه؛ عکسش خطرناکه
- ایجنتها دانش قبیلهای تیم رو نمیبینن و مدل شکسته رو جبران نمیکنن
- سمانتیک لیر اغلب جبران مدلسازیِ انجامنشدهست، نه جایگزینش
- معنا باید از ساختار عمر بیشتری داشته باشه، چون ساختار مدام عوض میشه




