تصور کنید یک تست رگرسیون در محیطی حساس و تحت نظارت (Regulated Environment) با وجود عدم تغییر در کد، شکست میخورد؛ مقصر معمولاً دادههای آزمایشی هستند که در هر بار تولید، تغییر میکنند. DATAMIMIC این مشکل را با برقراری یک قرارداد قطعی (Determinism Contract) سختگیرانه حل میکند: نسخه موتور، مدل و بذر (Seed) یکسان، همیشه خروجیهای بایتبهبایت مشابهی تولید میکنند، فارغ از اینکه روی کدام ماشین اجرا شوند.
بسیاری از توسعهدهندگان به ابزارهایی مثل Faker متکی هستند که خروجیهای تصادفی تولید میکنند و بازتولیدپذیری (Reproducibility) را از بین میبرند. در بخشهایی مانند بانکداری و بهداشت، این تصادفی بودن یک ریسک برای ردپای حسابرسی (Audit Trails) و انطباق با قوانین است. DATAMIMIC فراتر از تصادفیسازی ساده میرود تا روابط آگاه از دامنه (Domain-aware) و محدودیتهای منطق کسبوکار را فراهم کند. در حالی که Faker ممکن است یک فرد ۲۵ ساله را با بیماری آلزایمر تولید کند — نتیجهای که برای تست واقعی بیمعنی است — سرویسهای دامنه در این پلتفرم، شرایط متناسب با سن و دادههای دموگرافیک واقعگرایانه را تضمین میکنند.
همانطور که در تحلیلهای پیشین ما دربارهی امنیت دادههای مصنوعی اشاره کردیم، حذف دادههای واقعی از محیط تست، اولین قدم برای کاهش ریسک نشت اطلاعات است.
موتور قطعیت (The Determinism Engine)
طبق مستندات فنی، هسته این سیستم DATAMIMIC Community Edition (CE) است؛ یک موتور بومی پایتون با مجوز MIT که برای تولید دادههای مصنوعی قطعی و نام مستعارسازی (Pseudonymization) آگاه از اطلاعات حساس (PII) در هر گردشکار محلی، CI یا مبتنی بر عامل (Agent-driven) طراحی شده است. این ابزار به توسعهدهندگان اجازه میدهد بدون نیاز به هیچگونه دادههای منبع، مجموعهدادههای کاملاً مصنوعی تولید کنند.
قطعی بودن در نسخه CE در سه لایه کنترل میشود: نمای generate_domain (Facade)، هر سرویس دامنه که مستقیماً فراخوانی میشود و هر مولد لیترال (Literal Generator) که آرگومان rng= را میپذیرد. این موضوع در هر اجرای CI از طریق تست tests_ce/architecture/test_service_replay_determinism.py به ازای هر سرویس تأیید میشود. در سطح DSL، عبارت <setup rngSeed="N"> کل مدل را قطعی میکند. هر متغیر بدون بذر (<variable entity="…">) یک RNG فرزند بازتولیدپذیر از آن مشتق میکند، در حالی که متغیرهای دارای بذر (<variable rngSeed="…">) میتوانند برای بلوکهای خاص، مقدار را بازنویسی کنند. این فرآیند توسط tests_ce/integration_tests/test_determinism_seed_scenarios بیشتر اعتبارسنجی میشود.
به نقل از گزارشهای توسعه، از نسخه ۴.۰.۰ به بعد، این قطعی بودن به مولدهای لیترال مستقل (<key generator="…">)، کلیدهای تایپشده/الگویی (Typed/Pattern Keys)، DateTimeGenerator و انتخابهای منحصربهفرد بینصفحهای گسترش یافته است. سیستم از SPOTهای زمانسنج و RNG خاص در مسیر datamimic_ce/domains/domain_core/runtime/ استفاده میکند، از جمله spawn_rng ،now_utc_naive و resolve_clock. برای جلوگیری از عدم قطعیت، استفاده از datetime.now() خام در کد تولید ممنوع است و هرگونه بازگشت به آن باعث شکست در گیت معماری Clock-drift در CI میشود.
برای کسانی که دادههای موجود دارند، این سیستم نام مستعارسازی آگاه از PII را در دو حالت متمایز ارائه میدهد:
- حالت بذری (Seeded Mode): از یک بذر ثابت (از طریق
<setup rngSeed="N">) استفاده میکند تا یک رکورد منبع همیشه به یک مقدار مصنوعی یکسان نگاشت شود. این مورد برای خط لولههای CI/CD پایدار حیاتی است و طبق ماده ۴(۵) GDPR به عنوان نام مستعارسازی (Pseudonymization) طبقهبندی میشود. - حالت غیربذری (Non-seeded Mode): حریم خصوصی را برای تحویلهای یکباره دادهها به حداکثر میرساند تا هیچ نگاشت بازگشتپذیری در سطح فیلد وجود نداشته باشد و وضعیت حریم خصوصی بالاتری فراهم کند.
برای پشتیبانی از این تبدیلها، CE شامل ۱۳ مبدل داخلی است: Mask ،MiddleMask(start, end) ،CutLength(n) ،Substring(start, end) ،JavaHash ،RemoveNoneOrEmptyElement ،Hash(type, format[, salt]) ،DateFormat(fmt) ،Append ،UpperCase ،LowerCase ،Date2Timestamp و Timestamp2Date. فیلدهای PII در این نسخه بهصورت دستی در خط لوله XML مدل میشوند. برای مثال، استفاده از distribution="ordered" تضمین میکند که منبع با ترتیب فایل پایدار خوانده شود، که برای این است که ردیف N-ام منبع در هر اجرا به همان مقدار مصنوعی بذری نگاشت شود.
قابلیتهای فنی و یکپارچهسازی
DATAMIMIC طیف گستردهای از اهداف را پشتیبانی میکند. نسخه CE خط لولههای تکسیستمی را روی PostgreSQL، MySQL، Oracle، MS SQL، SQLite، MongoDB، CSV، JSON، XML، XLSX، DbUnit و فایلهای با عرض ثابت (.fcw) اجرا میکند. این پلتفرم یک DSL (زبان تخصصی دامنه) معرفی کرده است که مدلسازی پیچیده دادهها را ممکن میسازد:
مدلسازی و منطق:
- مدلسازی رفتاری: استفاده از ماشینهای حالت وزندار (Weighted State Machines)، مراجع چندفیلدی ترکیبی و تگهای جریان کنترلی مانند
<while>و<assert>. - تجمیع مرحلهای: یک memstore قابل اسکریپتنویسی که اجازه تجمیع دادهها را در طول فرآیند تولید میدهد.
- یکپارچگی ارجاعی: پشتیبانی از سلسلهمراتب رابطهای که در آن رکوردهای فرزند (مثلاً سفارشات) کلیدهای خارجی واقعی به رکوردهای والد (مثلاً مشتریان) دارند. این کار با قرار دادن محصولات در یک آرایه "children" و استفاده از اسکریپتهایی مانند
{"kind": "script", "script": "parent.id"}با نقشforeign_keyانجام میشود. یک FK تولید شده بهصورت تصادفی ممکن است از اعتبارسنجی شمای عبور کند اما در تست پذیرش تعداد-به-ازای-والد (per-parent-count acceptance) شکست میخورد.
تولید سریهای زمانی (Time-Series Generation):
- سازگاری با ISO 8601: ایجاد جریانهایی برای IoT یا تیکهای مالی با استفاده از ویژگیهای
start،endوinterval. این سیستم از بازهها از طریق کتابخانه isodate پشتیبانی میکند (مثلاًPT1Hبرای یک ساعت،PT15Mبرای ۱۵ دقیقه،PT0.001Sبرای ۱ میلیثانیه وPT0.000001Sبرای ۱ میکروثانیه). بازههای زیر میکروثانیه یا واحدهای تعریفنشده مانند ماه/سال با خطای واضح رد میشوند. - پایداری پیشوند (Prefix-Stability): این جریانها پیشوند-پایدار هستند؛ یعنی N تیک اول فارغ از طول کل پنجره، یکسان میمانند زیرا
ts.nowتابعی خالص از (شروع + بازه * گام) است. - دسترسی به فضای نام: سیستم یک فضای نام
tsفراهم میکند کهts.now(تاریخ و زمان)،ts.step(موقعیت در یک سری) وts.series(شناسه سری) را در اختیار قرار میدهد. - ترکیببندی: سریهای زمانی با مکانیسم
<variable>برای ادغامهای چندمنبع ترکیب میشوند (مثلاً پیوند دادن تیکها با یک CSV متادیتای سنسور از طریق<variable source="meta.csv" cyclic="True">)، فیلتر کردن با<key condition="...">و زیر-دامنه های<nestedKey>.
گردشکار عامل هوش مصنوعی و MCP
برای گردشکارهای مبتنی بر هوش مصنوعی، پلتفرم شامل یک آداپتور اختیاری MCP (پروتکل زمینه مدل) است (pip install "datamimic-ce[mcp]"). این قابلیت به عاملهای هوش مصنوعی اجازه میدهد مدلهای داده را با استفاده از یک داربست CLI استاندارد بنویسند، بررسی (Lint) کنند و تأیید نمایند. این آداپتور به چهار عملیات استاندارد نگاشت میشود: reference به datamimic_reference ،scaffold به datamimic_scaffold ،lint به datamimic_check و dry-run به datamimic_run.
عاملها برای جلوگیری از رد شدن، باید قراردادهای سختگیرانهای را دنبال کنند:
- حفظ قصد (Intent Preservation): قصد مدل باید به صورت
model.dm.jsonحفظ شود؛ نباید XML را دستی بنویسند. برای جلوگیری از نصبهای سراسری قدیمی، باید از.venv/bin/datamimicاستفاده کنند. - قوانین ساختاری: در سطح بالا فقط نسخه، بذر، محصولات و انتظارات مجاز هستند. "kind" در سطح محصول (generated/source/time_series) با "kind" در سطح فیلد (increment, values, weighted, int_range, decimal_range, pattern, constant, script) متفاوت است. فیلدهای بازه (Range) باید از
minimum/maximumاستفاده کنند و هرگز نباید ازmin/maxاستفاده شود. - حلقه تأیید: اجرای دستور
datamimic scaffold model.dm.json --format json. اصلاح خطاها بر اساس مسائل ساختاری (مسیر/کد/پیام/فیلدهای مجاز) و تشخیصهایfix_hint. اگر اصلاحmax_countدرخواست شود، عامل باید با حداقل همان مقدار بدون تغییر در قصد مدل، دوباره تلاش کند. - وضعیت نهایی: توقف تنها زمانی که سیستم
verified=trueرا برگرداند. پس از تأیید، عامل نباید دوباره عملیات lint یا dry-run را روی XML تولید شده انجام دهد. در صورت درخواست اجرای واقعی، عامل XML بازگشتی را به عنوان یک آرتیفکت ذخیره کرده و آن توصیفگر را اجرا میکند.
نسخه سازمانی در مقابل نسخه Community
در حالی که CE یک موتور پایتون مستقل است که از multiprocessing (با Ray اختیاری) استفاده میکند، DATAMIMIC Enterprise Platform (EE) یک موتور اجرای مجزا و بهینه شده برای حجمهای میلیاردی رکورد است. EE صرفاً یک نسخه CE با یک پرچم ویژگی (Feature Flag) نیست؛ بلکه یک هسته مستقل است که قرارداد قطعیت را به اجرای توزیعشده و چندسیستمی گسترش میدهد، از جمله یک ساعت دیواری (Wall-clock) قابل تنظیم/منجمد و SAFE_GLOBALS قطعی برای عبارات اسکریپتی در محیط سندباکس.
عملکرد و هسته EE:
- مسیر سریع Rust: بخشهای حساس به عملکرد برای حداکثر کردن توان عملیاتی به زبان Rust بازنویسی شدهاند.
- موتور ML: یک موتور خودبازگشتی (Autoregressive) که مدلهای آماری را با شرایط و مجموعهقوانین برای توزیعهای پیچیده ترکیب میکند.
- هوش شمای (Schema Intelligence): ساخت Keyset و Manifest از طریق خواندن شمای زنده پایگاهداده برای ایجاد برنامههای تولید هماهنگ چندجدولی.
- پروفایلهای زمان اجرا: EE از سه پروفایل پشتیبانی میکند:
Performance: حداکثر توان عملیاتی از طریق مسیر سریع Rust و توزیع مبتنی بر Ray برای حجمهای میلیاردی به PostgreSQL، Oracle و Kafka.Balanced: توان عملیاتی بهینه ترکیب شده با ثبت کامل حسابرسی (Audit Logging) برای خط لولههای استاندارد سازمانی.Flexibility: ارزیابیهای عمیق تودرتو و ترکیبات موتور ML برای مدلهای دامنه پیچیده و ساختارهای ارجاعی چندسطحی.
قابلیتهای پلتفرم EE:
- اسکنر PII: یک سیستم تشخیص فیلد خودکار با امتیازدهی احتمالی و آستانههای قابل تنظیم از طریق DataWorkbench که نیاز به نگاشت دستی را از بین میبرد.
- قالبهای صنعتی: پشتیبانی داخلی از فرمتهای پیامهای تحت نظارت شامل EDIFACT، SWIFT MT، HL7 v2.x و HL7 FHIR. موتور قالبها، ویرایش فرم آگاه از مشخصات (Spec-aware)، اعتبارسنجی در لحظه در برابر نسخههای مشخصات تثبیت شده و تبدیل دوطرفه بین نماهای فرم ساختاریافته و متن قالب معتبر را فراهم میکند. همچنین از آپلود مشخصات توسط مشتری برای گسترش کاتالوگ پشتیبانی میکند.
- لایه حاکمیتی: افزودن RBAC، ردپای حسابرسی، جریانهای تأیید و قالبهای سازمانی قابل استفاده مجدد. این لایه آرتیفکتهای شواهد حسابرسی را برای ماده ۳۰ GDPR، الزام ۶.۵.۵ PCI DSS 4.0 و بستههای شواهد HIPAA §164.312 فراهم میکند.
- اجرای چندسیستمی: گردشکارهای هماهنگ بین Oracle، MongoDB و Kafka با یکپارچگی ارجاعی سرتاسری (End-to-End).
- استقرار: پشتیبانی از محیطهای On-premise و Air-gapped از طریق podman-compose یا Helm، که اغلب از طریق استقرارهای تحت هدایت مشاوره ارائه میشود.
انطباق و قابلیت حسابرسی
DATAMIMIC بهطور خاص برای جایگذاری در برنامههای انطباق موجود طراحی شده است. این سیستم برای هر خروجی، هشهای منشأ (Provenance Hashes) فراهم میکند و یک تبار (Lineage) قابل اجرا ایجاد میکند که در آن ورودی یکسان همیشه منجر به determinism_proof.content_hash یکسانی میشود. قرارداد قطعیت در CI از طریق tests_ce/architecture/test_service_replay_determinism.py و test_determinism_seed_scenarios کنترل میشود.
نگاشت مقرراتی:
- DORA (Reg. 2022/2554): از طریق ارائه مجموعهدادههای آزمایشی بازتولیدپذیر برای تستهای تابآوری غیر TLPT، از ماده ۲۴ پشتیبانی میکند.
- ISO/IEC 27701:2019: از طریق به حداقل رساندن PII و استفاده از دادههای مصنوعی به بندهای A.7.2.8 و A.7.4.5 کمک میکند.
- قانون HIPAA: دادههای مصنوعی بیمار (Patient)، دستگاه پزشکی (MedicalDevice) و رویه پزشکی (MedicalProcedure) را برای جلوگیری از افشای ePHI تحت بند §164.312 فراهم میکند.
- GDPR: از طریق نام مستعارسازی بذری و غیربذری از ماده ۲۵ (حریم خصوصی در طراحی) و ماده ۳۲ (امنیت پردازش) پشتیبانی میکند. نکته: ناشناسسازی کامل به پوشش کامل فیلدها و ارزیابی ریسک شناسایی مجدد بستگی دارد.
- PCI DSS 4.0: با تولید PANهای مصنوعی و ممنوع کردن PANهای واقعی در محیطهای تست، الزام ۶.۵.۵ را برآورده میکند.
تحلیل: تغییر پارادایم دادههای آزمایشی
این رویکرد این فرض صنعتی را که دادههای آزمایشی باید یا «واقعی اما ریسکی» باشند یا «مصنوعی اما تصادفی»، تغییر میدهد. با تبدیل تولید داده به یک تابع قطعی، DATAMIMIC دادههای آزمایشی را به یک دارایی نسخهبندی شده (Versioned Asset) تبدیل میکند. این قطعیت در سه لایه برقرار است: نمای generate_domain ،سرویسهای دامنه مستقیم و مولدهای لیترال.
برای خواننده، این به معنای کاهش قابل توجه «تستهای لرزان» (Flaky Tests) و مسیری سریعتر برای تولید اپلیکیشنهای تحت نظارت است. قابلیت یکپارچهسازی از طریق MCP همچنین به آیندهای اشاره دارد که در آن عاملهای هوش مصنوعی فقط کد نمینویسند، بلکه بهطور خودکار دقیقترین مجموعهدادههای مورد نیاز برای تست استرس آن کد را معماری میکنند.
برای شروع، توسعهدهندگان میتوانند نسخه Community Edition را از طریق pip install datamimic-ce نصب کنند. آنها میتوانند سرویسهای دامنه داخلی را برای حوزههای زیر بررسی کنند:
- بهداشت: Patient, Doctor, Hospital, MedicalDevice, MedicalProcedure.
- مالی: Bank, BankAccount, CreditCard, Transaction.
- بیمه: InsuranceCompany, InsuranceProduct, InsurancePolicy, InsuranceCoverage.
- تجارت الکترونیک: Order, Product.
- بخش عمومی: AdministrationOffice, EducationalInstitution, PoliceOfficer.
- دموگرافیک: Person (با بستههای محلی DE, US, VN), Address, City, Country, Company.
اما تأثیر این رویکرد بر نحوه تعامل عاملهای هوش مصنوعی با پایگاهدادهها حتی عمیقتر است — به تحلیل ما درباره پروتکل MCP مراجعه کنید.




گفتگو