Data Brewery؛ کارخونهٔ دادهٔ مصنوعی اطلسین
خلاصهٔ کاملتر
تیم Cloud Transition اطلسین کارش انتقال محصولات و اپهای اکوسیستم از نصب داخلی (on-premises) به ابره. توی این مقاله اومده که قبل از مهاجرت مشتریهای بزرگ، تیم میخواست مطمئن شه ابزار مهاجرتش از پس حجم دادهٔ اونها برمیاد، پس به دهها دیتاست مصنوعی با شکلهای مختلف نیاز داشت. سیستم قبلی داده رو از راه API خود محصول میساخت و همین گلوگاه شد: آماده کردن یه محیط تست چند هفته طول میکشید و محدودیت نرخ API جلوی تولید انبوه رو میگرفت.
به گفتهٔ تیم، مشکل اصلی foreign keyها بودن، یعنی ستونهایی که یه ردیف رو به ردیف جدول دیگه وصل میکنن. ابزارهای معمول تولید دادهٔ مصنوعی تکمرحلهای کار میکنن: ردیف رو میسازن و همون لحظه کلید خارجی رو هم حل میکنن. وقتی اسکیما بزرگ و پر از وابستگی باشه این مدل کند میشه، چون هر ردیف فرزند باید منتظر بمونه تا ردیف والدش ساخته و قابل خوندن شه و موازیسازی عملاً از بین میره.
راهحل Data Brewery دو فازیه. توی فاز اول همهٔ جدولها مستقل از هم ساخته میشن و فقط ستونهایی پر میشن که کلید خارجی نیستن. توی فاز دوم یه تزریقکنندهٔ جدا، کلیدهای خارجی رو با ردیفهای والد معتبر پر میکنه؛ والدهایی که یا توی همین اجرا ساخته شدن یا از قبل توی دیتابیس بودن. فاز دوم هیچ ردیف جدیدی نمیسازه و فقط تصمیم میگیره هر فرزند به کدوم والد وصل شه. یعنی مسیر اصلی و پرسرعتِ تولید داده سبک میمونه.
همین فاز دومه که شکل دادهٔ درخواستی رو اعمال میکنه، و شکل با صدک بیان میشه؛ مثلاً توزیع تعداد work item توی هر space که از حداقل ۱۰۰ شروع میشه، توی صدک ۵۰ میرسه به هزار و توی صدک ۹۹ به پنجاههزار. کل موتور هم کانفیگمحوره: جدولها، موجودیتها، ژنراتور فیلدها و رابطهها همه توی فایل کانفیگ تعریف میشن تا اضافه کردن یه موجودیت جدید کدنویسی اختصاصی نخواد. کارها هم تکهتکه اجرا میشن تا حافظه کنترلشده بمونه.
نکات کلیدی:
- Data Brewery برای جیرا، کانفلوئنس و اسکیمای اپهای اکوسیستم داده میسازه.
- مدل تولید دو فازیه: ساخت ردیف بدون کلید خارجی، بعد تزریق کلید خارجی به ترتیب وابستگی.
- تزریقکننده هر سه نوع کلید خارجی ساده، مرکب (composite) و چندریختی (polymorphic) رو پوشش میده.
- شکل داده با صدک تعریف میشه، مثلاً حداقل ۱۰۰ و حداکثر ۵۰۰ هزار work item توی هر space.
- اجرای تکهتکه باعث میشه حافظه محدود بمونه، خطای یه تکه کل اجرا رو خراب نکنه و کار بین ورکرها پخش شه.
- دو مشکل باز موندن: هماهنگ موندن کانفیگ با تغییر اسکیما، و قواعد شرطی بین فیلدها که کانفیگ اعلانی هنوز خوب بیانشون نمیکنه.




