digital cityscape wired metropolitan vision (1)

ابعاد تغییر آهسته (Slowly Changing Dimension) چیست؟

انبارهای داده عناصر حیاتی برای سازمان‌ها هستند که داده‌های تاریخی گسترده را برای تحلیل کسب‌وکار مؤثر ذخیره می‌کنند. این داده‌های تاریخی می‌توانند به شما کمک کنند تا بینش‌های معنادار برای تصمیم‌گیری تأثیرگذار تولید کنید.

از آدرس‌های مشتری و نقش‌های کارکنان تا مشخصات محصول، ویژگی‌ها یا ابعاد در مخزن داده شما وجود دارند که ممکن است با گذشت زمان تغییر کنند. چنین ابعاد در حال تغییر، که به عنوان ابعاد تغییر آهسته (SCDها) شناخته می‌شوند، برای حفظ سوابق تاریخی در مدیریت داده ضروری هستند. با SCDها، می‌توانید مطمئن باشید که داده‌های تاریخی و جاری برای تولید بینش‌های شما در نظر گرفته می‌شوند.

این مقاله به طور جامع مفهوم تغییر آهسته بعد را بحث می‌کند، از جمله انواع، پیاده‌سازی و شیوه‌های نگهداری آن با استفاده از رویکردها و ابزارهای مدرن.

ابعاد تغییر آهسته چیست؟

ابعاد تغییر آهسته چارچوبی است که تعریف می‌کند چگونه داده‌ها در انبار داده شما با گذشت زمان تغییر می‌کنند. SCDها به شما امکان ذخیره و مدیریت داده‌های جاری و تاریخی را می‌دهند، که برای تحلیل روندها و اتخاذ تصمیمات کسب‌وکار آگاهانه ضروری است.

تغییرات در جداول بعد به آرامی و غیرقابل پیش‌بینی رخ می‌دهند بدون برنامه یا الگوی ثابت. اینکه فقط داده‌های جاری را ذخیره کنید یا داده‌های تاریخی را نیز شامل شوید، بستگی به نیازهای خاص کسب‌وکار و تحلیلی دارد. برای مثال، سناریویی را در نظر بگیرید که مدیر یک شعبه فرانچایز به طور دوره‌ای تغییر می‌کند. هنگامی که مدیر جدیدی مسئولیت را بر عهده می‌گیرد، رکورد نام مدیر، مرتبط با یک شناسه منحصر به فرد، به‌روزرسانی می‌شود تا اطلاعات جدید را منعکس کند.

در این سناریو، تحلیل داده‌های فروش تاریخی تحت مدیران قبلی دشوار است زیرا نام مدیر بازنویسی می‌شود. برای غلبه بر این محدودیت، می‌توانید به ابعاد تغییر آهسته تکیه کنید. پیاده‌سازی SCDها به شما اجازه می‌دهد سوابق تاریخی برای هر مدیر را همراه با داده‌های جاری حفظ کنید.

انواع اصلی SCDها چیست؟

اگرچه انواع متعددی از ابعاد تغییر آهسته وجود دارد، سه نوع در کاربردهای واقعی رایج هستند.

SCD نوع ۱ – بازنویسی

SCD نوع ۱، که به عنوان بازنویسی نیز شناخته می‌شود، معمولاً زمانی رخ می‌دهد که داده‌های جدید داده‌های موجود در جدول را جایگزین می‌کنند. داده‌های تاریخی حفظ نمی‌شوند، که ردیابی تغییرات با گذشت زمان را دشوار می‌کند. این روش مناسب است زمانی که تغییرات تاریخی برای تحلیل شما حیاتی نیستند.

هنگام پیاده‌سازی ابعاد تغییر آهسته نوع ۱، باید اطمینان حاصل کنید که روندها در ستون‌های داده جزء حیاتی جریان کاری شما نیستند. برای مثال، در یک پایگاه داده مشتری، می‌توانید ستون حاوی آدرس‌های مشتری را هنگام جابجایی مشتری بازنویسی کنید. اگر جان دو به مکان جدیدی نقل مکان کند، می‌توانید رکورد آدرس او را در پایگاه داده به‌روزرسانی کنید تا این تغییر را منعکس کند. حفظ فقط آدرس‌های به‌روزرسانی‌شده به شما اجازه می‌دهد محصولات را به مکان جاری مشتری تحویل دهید، که منجر به لجستیک و خدمات مشتری کارآمد می‌شود.

SCD نوع ۲ – ایجاد رکورد بعد دیگر

در مقابل SCD نوع ۱، SCD نوع ۲ هر دو رکورد تاریخی و جاری را حفظ می‌کند. این نوع شامل افزودن یک ردیف جدید به جدول برای هر به‌روزرسانی بدون بازنویسی یا حذف رکورد قبلی است. ردیف جدید کلید طبیعی یکسانی را به اشتراک می‌گذارد اما کلید اصلی متفاوتی دارد، که به شما اجازه می‌دهد تغییرات را در نسخه‌های مختلف ردیابی کنید.

برای مدیریت SCD نوع ۲، می‌توانید از دو روش متفاوت استفاده کنید:

ستون پرچم: یک ستون پرچم تعریف کنید که رکورد فعال جاری را نشان دهد. ستون زمان‌نگار: از یک ستون زمان‌نگار برای مشخص کردن زمان ایجاد رکورد استفاده کنید. جدیدترین زمان‌نگار نشان می‌دهد که رکورد جاری چه زمانی ایجاد یا فعال شده است. برای مثال، هنگام به‌روزرسانی آدرس، یک ردیف جدید با آدرس به‌روزرسانی‌شده اضافه می‌شود و به عنوان فعال (درست) علامت‌گذاری می‌شود. ردیف آدرس قبلی به وضعیت نادرست به‌روزرسانی می‌شود. با این کار، می‌توانید آدرس‌های تاریخی را برای ارجاع حفظ کنید در حالی که مطمئن می‌شوید آدرس جاری‌ترین برای استفاده عملیاتی در نظر گرفته می‌شود.

SCD نوع ۳ – ایجاد فیلد مقدار جاری

در SCD نوع ۳، به‌روزرسانی‌ها با افزودن یک ستون جدید به جای ردیف ردیابی می‌شوند. کلید اصلی یکسان باقی می‌ماند و یکتایی رکورد را حفظ می‌کند؛ فقط جدیدترین تاریخچه حفظ می‌شود.

یک ستون جدید تغییرات را ثبت می‌کند، که به شما اجازه می‌دهد یک تغییر تاریخی را در هر رکورد ردیابی کنید. بنابراین SCD نوع ۳ برای عناصر داده‌ای مناسب است که انتظار نمی‌رود به طور مکرر تغییر کنند. جدول حاصل هر دو آدرس جاری و قبلی را برجسته می‌کند بدون حفظ تاریخچه کامل آدرس‌های گذشته. به‌روزرسانی‌ها شامل انتقال آدرس جاری به ستون آدرس قبلی و افزودن آدرس جدید در ستون آدرس جاری است.

ابزارها و فناوری‌های مدرن برای پیاده‌سازی SCD چیست؟

پیاده‌سازی‌های مدرن SCD فراتر از اسکریپت‌نویسی ETL سنتی تکامل یافته‌اند تا معماری‌های بومی ابر، ضبط تغییرات داده خودکار و چارچوب‌های اعلانی را بپذیرند که چالش‌های پیچیدگی را که ۷۰٪ مهندسان داده امروز با آن روبرو هستند، حل می‌کنند.

پلتفرم‌های ETL بومی ابر

ابزارهای معاصر بر خدمات مدیریت‌شده و ادغام بدون درز با دریاچه‌ها و انبارهای داده تأکید دارند. ایربیات این تحول را با بیش از ۶۰۰ اتصال‌دهنده، قابلیت‌های CDC داخلی و پشتیبانی از پیاده‌سازی SCD نوع ۲ و ۳ از طریق عملیات MERGE در پلتفرم‌هایی مانند اسنوفلیک هدایت می‌کند. پایه منبع‌باز کنترل و قابلیت گسترش را فراهم می‌کند در حالی که از قفل شدن به فروشنده جلوگیری می‌کند، که آن را ایده‌آل برای تیم‌هایی که انعطاف‌پذیری را اولویت می‌دهند، می‌سازد.

فایوترن اتصال‌دهنده‌های پیش‌ساخته بهینه‌شده برای CDC با “حالت تاریخچه” برای SCD نوع ۲ ارائه می‌دهد که ستون‌های زمان‌نگار و حذف را به طور خودکار تولید می‌کند. این رویکرد تحلیل واقعی‌زمان را با حداقل الزامات کدنویسی فعال می‌کند، هرچند سفارشی‌سازی کمتری نسبت به جایگزین‌های منبع‌باز مانند ایربیات ارائه می‌دهد.

چارچوب‌های ETL اعلانی

چارچوب‌های مدرن پیچیدگی را از طریق خطوط لوله مبتنی بر پیکربندی انتزاعی می‌کنند. دیتابریکس دلتا لایو تیبلز این رویکرد را با اتوماسیون SCD نوع ۲ با استفاده از نحو APPLY CHANGES INTO نمونه می‌زند، که پردازش جریان و دسته‌ای را با بررسی‌های کیفیت داخلی ترکیب می‌کند. این رویکرد اعلانی سربار DevOps را کاهش می‌دهد در حالی که AIOps را برای نظارت خط لوله و مقیاس خودکار فراهم می‌کند.

AWS Glue جفت‌شده با Delta Lake ترکیب قدرتمند دیگری ارائه می‌دهد، به ویژه برای منابع JSON نیمه‌ساختاریافته مؤثر است. این ادغام از عملیات merge و overwrite دلتا لیک بهره می‌برد در حالی که حذف‌های منطقی را از طریق پرچم‌های CDC فراهم می‌کند، که آن را ایده‌آل برای سازمان‌هایی که راه‌حل‌های بومی AWS را اتخاذ می‌کنند، می‌سازد.

راه‌حل‌های بهینه‌شده CDC

ضبط تغییرات داده واقعی‌زمان ستون فقرات پیاده‌سازی‌های مدرن SCD را تشکیل می‌دهد. برخلاف پردازش دسته‌ای سنتی که تأخیر و گلوگاه‌های منابع ایجاد می‌کند، ابزارهای CDC مانند Debezium و Fivetran فایل‌های لاگ پایگاه داده را مستقیماً می‌خوانند تا تغییرات را تکثیر کنند، که ردیابی نوع ۲ واقعی‌زمان را بدون سربار نظرسنجی فعال می‌کند.

آپاچی اسپارک با Hudi رویکرد دیگری برای پردازش توزیع‌شده مقیاس بزرگ فراهم می‌کند. عملیات upsert هودی رکوردهای جدید برای SCD نوع ۲ بدون بازنویسی فایل ایجاد می‌کند، که از تغییرناپذیری ذخیره‌سازی ابر بهره می‌برد در حالی که تغییرات قیمت محصول را با ستون‌های زمان شروع و پایان مؤثر ردیابی می‌کند.

مقایسه مدرن در مقابل قدیمی

ابزارهای مدرن مزایای قابل توجهی نسبت به رویکردهای قدیمی ارائه می‌دهند:

  • مدل پردازش: CDC واقعی‌زمان و مبتنی بر رویداد در مقابل به‌روزرسانی‌های تحریک‌شده دسته‌ای
  • کارایی ذخیره‌سازی: فرمت‌های ستونی مانند Delta Lake و Iceberg برای پرس‌وجوهای سریع در مقابل ذخیره‌سازی مبتنی بر ردیف
  • ساختار هزینه: معماری‌های بدون سرور پرداخت به ازای استفاده در مقابل هزینه‌های زیرساخت ثابت
  • اتوماسیون: نحو اعلانی و ویژگی‌های مدیریت‌شده در مقابل اسکریپت‌نویسی دستی
  • MERGE مدیریت خطا: سیاست‌های تلاش مجدد داخلی و بررسی‌های کیفیت داده در مقابل مدیریت استثنا موردی مقیاس‌پذیری: راه‌حل‌های بومی ابر مقیاس خودکار در مقابل مدیریت دستی منابع

استراتژی‌های SCD هیبریدی و رویکردهای پیاده‌سازی پیشرفته چیست؟

با تکامل معماری‌های داده به سمت مدل‌های غیرمتمرکز و پردازش واقعی‌زمان، سازمان‌ها استراتژی‌های SCD هیبریدی را اتخاذ می‌کنند که رویکردهای سنتی را با تکنیک‌های پیشرفته ترکیب می‌کنند تا ذخیره‌سازی، عملکرد و هم‌ترازی کسب‌وکار را بهینه کنند.

انواع پیشرفته SCD و مدل‌های هیبریدی

فراتر از انواع سنتی ۱، ۲ و ۳، انواع نوظهور SCD نیازهای کسب‌وکار ظریف را از طریق رویکردهای هیبریدی حل می‌کنند. نوع ۵ بازنویسی‌های نوع ۱ را با تاریخچه نوع ۲ ترکیب می‌کند، ردیابی تاریخی کامل را برای ویژگی‌های حیاتی رزرو می‌کند در حالی که به‌روزرسانی‌های ساده‌تر را به فیلدهای کمتر مهم اعمال می‌کند. این رویکرد انتخابی هزینه‌های ذخیره‌سازی را کاهش می‌دهد در حالی که ردپاهای حسابرسی ضروری را حفظ می‌کند.

پیاده‌سازی‌های نوع ۶ رکوردهای جایگزین با پرچم‌های شدت اضافه می‌کنند تا سطح تأثیر تغییرات را نشان دهند. به‌روزرسانی‌های با تأثیر بالا مانند تغییرات آدرس مشتری ردیابی کامل نوع ۲ را فعال می‌کنند، در حالی که اصلاحات جزئی درمان نوع ۱ را دریافت می‌کنند. این رویکرد تدریجی تخصیص منابع را بر اساس حیاتی بودن کسب‌وکار بهینه می‌کند.

نوع ۷ شماره‌های نسخه را به همه تغییرات اختصاص می‌دهد، که تحلیل چه-اگر را در وضعیت‌های تاریخی مختلف فعال می‌کند. این رویکرد به ویژه برای سازمان‌هایی که نیاز به تحلیل زمانی پیچیده یا انطباق قانونی دارند که هر تغییر باید قابل حسابرسی و برگشت‌پذیر باشد، مفید است.

مدیریت SCD زمانی در مدل‌های غیرمتمرکز

ظهور معماری‌های مش داده مدیریت SCD را با توزیع مالکیت به تیم‌های دامنه تحول داده است. این غیرمتمرکزسازی نیاز به تکنیک‌های نسخه‌بندی پیشرفته دارد که سازگاری را در مجموعه‌های داده توزیع‌شده حفظ کند در حالی که بهینه‌سازی خاص دامنه را فعال کند.

ابزارهایی مانند SQLMesh زمان‌نگارهای valid_from و valid_to را پیاده‌سازی می‌کنند که پرس‌وجوهای زمانی را در مجموعه‌های داده توزیع‌شده فعال می‌کنند. این رویکرد سؤالات کسب‌وکار مانند “مکان مشتری X در سه‌ماهه دوم ۲۰۲۳ چه بود؟” را به طور سازگار در مجموعه‌های داده متعلق به دامنه‌های مختلف پاسخ می‌دهد، و تضمین می‌کند SCDها با فرآیندهای کسب‌وکار هم‌تراز باشند نه محدودیت‌های IT متمرکز.

منبع رویداد و نمای‌های مادی‌شده

پیاده‌سازی‌های پیشرفته به طور فزاینده از الگوهای منبع رویداد بهره می‌برند که هر تغییر به عنوان یک رویداد تغییرناپذیر ذخیره می‌شود. این رویکرد بازپخش تاریخی کامل را فعال می‌کند در حالی که استراتژی‌های SCD مختلف را برای نیازهای تحلیلی متنوع پشتیبانی می‌کند. نمای‌های مادی‌شده پرس‌وجوهای SCD رایج را از پیش محاسبه می‌کنند و تأخیر را برای گزارش‌هایی که از ابعاد پویا استفاده می‌کنند، کاهش می‌دهند.

پایگاه‌های داده جریان مانند RisingWave قابلیت‌های نمای مادی‌شده را با خطوط لوله CDC جریان ادغام می‌کنند. این نمای‌ها وضعیت‌های لحظه‌ای SCDها را در فواصل مشخص از پیش محاسبه می‌کنند و پرس‌وجوهای موردی سریع را بدون اسکن لاگ‌های تاریخچه خام فعال می‌کنند. برای مثال، نمای مادی‌شده روزانه مشخصات محصول تأخیر گزارش را کاهش می‌دهد در حالی که هم به‌روزرسانی‌های واقعی‌زمان و کامل بودن تاریخی را حفظ می‌کند.

استراتژی‌های بهینه‌سازی عملکرد

رویکردهای هیبریدی مدرن بر بهینه‌سازی عملکرد از طریق پارتیشن‌بندی و خوشه‌بندی استراتژیک تأکید دارند. پارتیشن‌بندی زمانی داده را بر اساس محدوده‌های تاریخ مؤثر بخش‌بندی می‌کند، در حالی که خوشه‌بندی رکوردهای فعال و جاری را برای دسترسی سریع‌تر گروه‌بندی می‌کند. این ترکیب سربار اسکن را در جداول نوع ۲ بزرگ که به طور سنتی از رشد نمایی رنج می‌برند، کاهش می‌دهد.

ترتیب Z و نمایه‌سازی کامپوزیت پرس‌وجوها را بر کلیدهای جایگزین و تاریخ‌های مؤثر بهینه می‌کنند و چالش‌های پیچیدگی را که historically پیاده‌سازی‌های SCD نوع ۲ را دشوار برای نگهداری کرده‌اند، حل می‌کنند. راه‌حل‌های بومی ابر این بهینه‌سازی‌ها را به طور خودکار بهره می‌برند و تنظیم دستی مورد نیاز در پیاده‌سازی‌های سنتی را کاهش می‌دهند.

چگونه ابعاد تغییر آهسته را در انبار داده پیاده‌سازی کنیم؟

پیاده‌سازی ابعاد تغییر آهسته معمولاً از مرحله طراحی انبار داده شروع می‌شود. هنگام کار با جداول موجود، این مراحل را دنبال کنید:

جداول موجود را ارزیابی کنید تا مشخص کنید کدام نوع SCD اعمال می‌شود. نیازهای کسب‌وکار را تحلیل کنید تا مطمئن شوید SCDها با اهداف گزارش‌گیری هم‌تراز هستند. تغییرات مورد نیاز را انتخاب کنید، برای مثال، آیا ستون‌های پرچم یا زمان‌نگار اضافه شود.

تکنیک‌های SQL

  • نوع ۱: از MERGE INTO (یا UPSERT) برای بازنویسی داده هنگام برآورده شدن شرایط تطبیق استفاده کنید.
  • نوع ۲: از یک جدول staging به علاوه MERGE INTO استفاده کنید، ردیف‌های جدید را وارد کنید و ستون‌های active_flag یا start_date/end_date را مدیریت کنید.
  • نوع ۳: از یک جدول staging استفاده کنید، مقادیر قبلی را به ستون‌های “تاریخچه” منتقل کنید و مقدار جدید را در ستون جاری وارد کنید.

چگونه ابعاد تغییر آهسته را نگهداری کنیم؟

نگهداری مناسب به درک فرآیندهای مدیریت داده شما بستگی دارد:

رکوردهای جدید چگونه اضافه می‌شوند؟ آیا روش ingestion شما ردیابی تاریخی را در نظر می‌گیرد؟ در زیر دو رویکرد اثبات‌شده آورده شده است.

۱. ETL

ETL استخراج، تحول، بارگذاری راه کلاسیک برای جابجایی و بازشکل‌دهی داده است. ابزارهایی مانند ایربیات ETL را با موارد زیر ساده می‌کنند:

۶۰۰+ اتصال‌دهنده پیش‌ساخته که پایگاه‌های داده، APIها، فایل‌ها و برنامه‌های SaaS را پوشش می‌دهند سازنده اتصال‌دهنده مبتنی بر هوش مصنوعی برای ایجاد سریع اتصال‌دهنده سفارشی بدون سربار توسعه پشتیبانی از پایگاه داده برداری شامل Milvus، Weaviate و Pinecone برای بارهای کاری هوش مصنوعی مدرن PyAirbyte برای ایجاد برنامه‌ریزی برنامه‌نویسی و توسعه برنامه‌های داده‌محور امنیت درجه سازمانی با رمزگذاری انتها به انتها، RBAC و انطباق SOC 2، GDPR، HIPAA گزینه‌های استقرار انعطاف‌پذیر، شامل مدیریت‌شده ابری، خودمیزبانی و معماری‌های هیبریدی

۲. CDC

ضبط تغییرات داده (CDC) تغییرات افزایشی را ردیابی می‌کند و آن‌ها را به مقصد همگام می‌کند. ایربیات CDC داخلی ارائه می‌دهد تا SCDها را به طور بدون درز با قابلیت‌های پردازش واقعی‌زمان حفظ کند که تأخیر و سربار منابع رویکردهای دسته‌ای سنتی را حذف می‌کند.

نتیجه‌گیری

ابعاد تغییر آهسته چارچوب‌های حیاتی برای ردیابی تغییرات داده تاریخی در انبار داده شما فراهم می‌کنند، با هر نوع SCD که نیازهای کسب‌وکار متفاوتی را خدمت می‌کند. ابزارهای مدرن مانند ایربیات، با ۶۰۰+ اتصال‌دهنده‌اش، پیاده‌سازی SCD را از طریق قابلیت‌های CDC پیشرفته و گزینه‌های استقرار انعطاف‌پذیر ساده می‌کنند. پیاده‌سازی و نگهداری مناسب SCDها دقت تاریخی و ارتباط داده جاری را تضمین می‌کنند و بینش‌های کسب‌وکار جامع‌تر و تصمیم‌گیری داده‌محور را فعال می‌کنند.

سؤالات متداول

تفاوت بین SCD نوع ۱ و نوع ۲ چیست؟

SCD نوع ۱ داده‌های موجود را با مقادیر جدید بازنویسی می‌کند و سوابق تاریخی را از دست می‌دهد، در حالی که SCD نوع ۲ تاریخچه را با ایجاد ردیف‌های جدید برای هر تغییر حفظ می‌کند. نوع ۱ مناسب است زمانی که ردیابی تاریخی مهم نیست، در حالی که نوع ۲ برای تحلیل روند و الزامات حسابرسی ضروری است.

چه زمانی باید از SCD نوع ۳ به جای نوع ۲ استفاده کنم؟

از SCD نوع ۳ استفاده کنید زمانی که فقط نیاز به ردیابی جدیدترین تغییر دارید و کارایی ذخیره‌سازی مهم است. نوع ۳ ستون‌ها را به جای ردیف‌ها اضافه می‌کند، که آن را برای بعدهایی مناسب می‌سازد که به ندرت تغییر می‌کنند و ردیابی تاریخی کامل مورد نیاز نیست.

ابزارهای CDC مدرن چگونه مدیریت SCD را بهبود می‌بخشند؟

ابزارهای CDC مانند ایربیات تأخیر و سربار منابع پردازش دسته‌ای را با ثبت تغییرات واقعی‌زمان از لاگ‌های تراکنش پایگاه داده حذف می‌کنند. این رویکرد پیچیدگی خط لوله را کاهش می‌دهد، تازگی داده را بهبود می‌بخشد و به‌روزرسانی‌های افزایشی مورد نیاز برای پیاده‌سازی مؤثر SCD را به طور خودکار مدیریت می‌کند.

چه ملاحظات عملکردی باید برای SCD نوع ۲ در نظر بگیرم؟

جداول SCD نوع ۲ می‌توانند به دلیل حفظ رکوردهای تاریخی به سرعت رشد کنند. پارتیشن‌بندی بر اساس تاریخ‌های مؤثر، استفاده از خوشه‌بندی بر کلیدهای کسب‌وکار و در نظر گرفتن آرشیو داده‌های تاریخی غیرفعال را پیاده‌سازی کنید. پلتفرم‌های ابری مدرن مانند اسنوفلیک و دیتابریکس ویژگی‌های بهینه‌سازی خودکار ارائه می‌دهند که الزامات تنظیم دستی را کاهش می‌دهند.

آیا می‌توانم انواع SCD مختلف را در یک جدول بعد ترکیب کنم؟

بله، استراتژی‌های SCD هیبریدی اجازه می‌دهند ویژگی‌های مختلف در یک بعد از انواع SCD متفاوت بر اساس نیازهای کسب‌وکار استفاده کنند. برای مثال، ممکن است از نوع ۱ برای اصلاحات جزئی و نوع ۲ برای تغییرات قابل توجه مانند به‌روزرسانی‌های آدرس استفاده کنید، که هم هزینه‌های ذخیره‌سازی و هم ارزش تحلیلی را بهینه می‌کند.

ادغام پایگاه داده به پایگاه داده چیست؟
تریگر (Trigger) پایگاه داده در SQL چیست؟

دیدگاهتان را بنویسید

سبد خرید
علاقه‌مندی‌ها
مشاهدات اخیر
دسته بندی ها