راهاندازی ساده با HTTP
فقط با یک درخواست `GET /migrate/{mongoCollection}/{sqlTable}` میتوانید مهاجرت را اجرا کنید.
مخزن باز · Java · Spring Boot

یک سرویس ساده برای انتقال کالکشنهای MongoDB به MariaDB با ساخت خودکار جدول و join-table برای فیلدهای آرایهای.
این سرویس Spring Boot یک endpoint ساده در اختیار شما میگذارد تا یک کالکشن از MongoDB را به یک جدول در MariaDB منتقل کنید. برای فیلدهای آرایهای، یک join-table جدا میسازد و مقادیر را آنجا ذخیره میکند.
اسکیما (Schema) بر اساس «اولین سند» از کالکشن حدس زده میشود؛ بنابراین برای کالکشنهای بسیار متنوع بهتر است قبل از استفاده، نگاشت فیلدها و نوعها را متناسب با نیاز خودتان بهبود دهید.
مناسب برای مهاجرتهای سریع و پروژههای کوچک/متوسط.
فقط با یک درخواست `GET /migrate/{mongoCollection}/{sqlTable}` میتوانید مهاجرت را اجرا کنید.
جدول SQL بر اساس فیلدهای سند ساخته میشود (با نگاشت ساده برای عدد/اعشاری/رشته).
`_id` به عنوان `mongo_id` در جدول ذخیره میشود تا قابلیت ردیابی رکوردها حفظ شود.
برای هر فیلد آرایهای یک جدول `{parent}_{field}` ساخته میشود و مقادیر آرایه در آن درج میشود.
یک Scheduler نمونه هم وجود دارد که هر ساعت اجرا میشود (قابل تغییر/حذف بسته به نیاز شما).
استفاده از Spring Data MongoDB و JdbcTemplate برای اجرای مهاجرت.
تنظیم اتصالها و اجرای اولین مهاجرت
در `application.yml` آدرس Mongo (`spring.data.mongodb.uri`) و دیتابیس MariaDB (`spring.datasource.*`) را تنظیم کنید.
با `./mvnw spring-boot:run` سرویس را اجرا کنید (پورت پیشفرض 9009).
با `GET /migrate/{mongoCollection}/{sqlTable}` مهاجرت را اجرا کنید. مثال: `/migrate/users/users`.
جدول اصلی و join-tableهای مربوط به آرایهها را بررسی کنید و در صورت نیاز نوع ستونها/طول رشتهها را سفارشی کنید.
اگر کالکشن شما nested یا بسیار متنوع است، نگاشت نوعها، طول رشتهها و کنترل خطا را مطابق نیاز خودتان ارتقا دهید.
چند دستور کلیدی برای اجرا
از ریشه پروژه
./mvnw spring-boot:runاجرای سرویس Spring Boot.
GET /migrate/{mongoCollection}/{sqlTable}اجرای مهاجرت از MongoDB به MariaDB.
مخزن و فهرست پروژهها
سورس و README انگلیسی پروژه.
https://github.com/mbasirmajd/rmshub-mongo2maria
اسکیما از روی اولین سند حدس زده میشود؛ قبل از استفاده در تولید، روی دیتاهای واقعی تست کنید.
برای دادههای بزرگ، بهتر است batching/streaming و مدیریت خطا را اضافه کنید.
اگر نمیخواهید مهاجرت زمانبندیشده داشته باشید، Scheduler نمونه را تغییر دهید یا حذف کنید.