مخزن باز · Java · Spring Boot

لوگوی Mongo to MariaDB Migrator

Mongo to MariaDB Migrator

یک سرویس ساده برای انتقال کالکشن‌های MongoDB به MariaDB با ساخت خودکار جدول و join-table برای فیلدهای آرایه‌ای.

  • Java 17
  • Spring Boot
  • MongoDB
  • MariaDB
  • JDBC

این پروژه چه کاری انجام می‌دهد؟

این سرویس Spring Boot یک endpoint ساده در اختیار شما می‌گذارد تا یک کالکشن از MongoDB را به یک جدول در MariaDB منتقل کنید. برای فیلدهای آرایه‌ای، یک join-table جدا می‌سازد و مقادیر را آنجا ذخیره می‌کند.

اسکیما (Schema) بر اساس «اولین سند» از کالکشن حدس زده می‌شود؛ بنابراین برای کالکشن‌های بسیار متنوع بهتر است قبل از استفاده، نگاشت فیلدها و نوع‌ها را متناسب با نیاز خودتان بهبود دهید.

ویژگی‌ها

مناسب برای مهاجرت‌های سریع و پروژه‌های کوچک/متوسط.

راه‌اندازی ساده با HTTP

فقط با یک درخواست `GET /migrate/{mongoCollection}/{sqlTable}` می‌توانید مهاجرت را اجرا کنید.

ساخت خودکار جدول

جدول SQL بر اساس فیلدهای سند ساخته می‌شود (با نگاشت ساده برای عدد/اعشاری/رشته).

نگه‌داری شناسه Mongo

`_id` به عنوان `mongo_id` در جدول ذخیره می‌شود تا قابلیت ردیابی رکوردها حفظ شود.

پشتیبانی از آرایه‌ها با join-table

برای هر فیلد آرایه‌ای یک جدول `{parent}_{field}` ساخته می‌شود و مقادیر آرایه در آن درج می‌شود.

اجرای زمان‌بندی‌شده

یک Scheduler نمونه هم وجود دارد که هر ساعت اجرا می‌شود (قابل تغییر/حذف بسته به نیاز شما).

پشته استاندارد Spring

استفاده از Spring Data MongoDB و JdbcTemplate برای اجرای مهاجرت.

نحوه استفاده (خلاصه)

تنظیم اتصال‌ها و اجرای اولین مهاجرت

  1. تنظیم MongoDB و MariaDB

    در `application.yml` آدرس Mongo (`spring.data.mongodb.uri`) و دیتابیس MariaDB (`spring.datasource.*`) را تنظیم کنید.

  2. اجرای سرویس

    با `./mvnw spring-boot:run` سرویس را اجرا کنید (پورت پیش‌فرض 9009).

  3. اجرای مهاجرت با endpoint

    با `GET /migrate/{mongoCollection}/{sqlTable}` مهاجرت را اجرا کنید. مثال: `/migrate/users/users`.

  4. بررسی نتیجه در MariaDB

    جدول اصلی و join-tableهای مربوط به آرایه‌ها را بررسی کنید و در صورت نیاز نوع ستون‌ها/طول رشته‌ها را سفارشی کنید.

  5. سفارشی‌سازی برای سناریوی واقعی

    اگر کالکشن شما nested یا بسیار متنوع است، نگاشت نوع‌ها، طول رشته‌ها و کنترل خطا را مطابق نیاز خودتان ارتقا دهید.

راهنمای سریع

چند دستور کلیدی برای اجرا

Run

از ریشه پروژه

./mvnw spring-boot:run
اجرای سرویس Spring Boot.
GET /migrate/{mongoCollection}/{sqlTable}
اجرای مهاجرت از MongoDB به MariaDB.

لینک‌ها

مخزن و فهرست پروژه‌ها

مخزن GitHub

سورس و README انگلیسی پروژه.

https://github.com/mbasirmajd/rmshub-mongo2maria

همه پروژه‌های مخزن باز

بازگشت به فهرست

/open-source

نکات مهم

  • اسکیما از روی اولین سند حدس زده می‌شود؛ قبل از استفاده در تولید، روی دیتاهای واقعی تست کنید.
  • برای داده‌های بزرگ، بهتر است batching/streaming و مدیریت خطا را اضافه کنید.
  • اگر نمی‌خواهید مهاجرت زمان‌بندی‌شده داشته باشید، Scheduler نمونه را تغییر دهید یا حذف کنید.