الانتقال من SQLite إلى MySQL

تقديم SQLite

SQLite هو نوع من أنظمة إدارة قواعد البيانات ذات المصدر المفتوح تتميز عن معظم أنظمة إدارة قواعد البيانات الأخرى المبنية على نموذج العميل-الخادم حيث أنها قاعدة بيانات مدمجة بدون خادم. وهذا يعني أن قاعدة بيانات SQLite تعمل داخل البرنامج الذي يصل إلى البيانات، مما يقضي على الحاجة إلى خادم منفصل. ونظرًا لهذه الهندسة المعمارية، فإن SQLite نظام موثوق به للغاية وفعال يعمل بشكل مثالي في بيئات الذاكرة المنخفضة.

أحد أهم فوائد SQLite هو التوافق متعدد المنصات، مما يسمح له بالعمل على أنظمة تشغيل حديثة مختلفة. كنظام إدارة قواعد بيانات يتم تضمينه ضمن مكتبة C، يمكن استخدام SQLite من قبل التطبيقات المكتوبة بأي لغة برمجة يمكنها الاتصال بمكتبات خارجية مكتوبة بلغة C. على سبيل المثال، فإنه مثالي لتطوير البرامج المضمنة في الأجهزة الرقمية، مثل الهواتف المحمولة، وأجهزة ألعاب الفيديو، والكاميرات، وصناديق التلفزيون. بالإضافة إلى ذلك، يمكن لـ SQLite أن تكون مجموعة بيانات مؤقتة للتطبيقات لمعالجة البيانات.

وعلاوة على ذلك، تجعل بساطة SQLite وتنوع استخداماتها منها محرك قاعدة بيانات رائع لمعظم المواقع التي تتعامل مع طلبات HTTP منخفضة إلى متوسطة. وتُستخدم عادة في المؤسسات التعليمية لأغراض التدريب والتعلم بسبب سهولة الاستخدام والإعداد.

في حالة قاعدة بيانات صغيرة لا تتطلب قدرات إدارة مستخدم شاملة، فإن SQLite خيار مناسب. ومع ذلك، قد لا تكون الخيار الأفضل إذا كنت بحاجة إلى التعاون مع مستخدمين آخرين أو إذا كنت بحاجة إلى قابلية التوسيع والتخصيص.

MySQL، من ناحية أخرى، يمكن أن يدعم عدة مستخدمين ويتعامل مع كميات كبيرة من البيانات في شكل جداول. مع نمو عملك وتوسع قاعدة البيانات الخاصة بك، قد لا يعد SQLite كافيًا لاحتياجاتك. لذلك، إذا كنت تتعامل مع حجوم كبيرة من البيانات وتبحث عن نظام إدارة قواعد بيانات قوي يحتوي على مجموعة غنية من الميزات المتقدمة، فإنه من المعقول الانتقال من SQLite إلى MySQL.

تقديم MySQL

MySQL هو نظام إدارة قواعد بيانات علاقي مفتوح المصدر شهير للغاية موزع بموجب ترخيص غنو. يدعم معظم لغة الاستعلام المهيكلة القياسية (SQL) المستخدمة لتعريف قاعدة البيانات واستعلامها وتحديثها. يعتبر MySQL أسرع وأكثر توسعًا وأكثر ودية للمستخدم مقارنة بأنظمة إدارة قواعد البيانات الشائعة الأخرى.

يتبع نموذج العميل-الخادم، حيث يعمل قاعدة البيانات على الخادم، ويتم الوصول إلى البيانات من قبل العملاء ومحطات العمل عبر الشبكة. يستجيب الخادم بعد ذلك لطلبات واجهة المستخدم الرسومية من العملاء عن طريق إعادة الناتج المطلوب. يدعم MySQL أنظمة التشغيل المختلفة وعدة لغات برمجة مثل PHP وPERL وJAVA وC++ وC، إلخ.

تستخدم العديد من المؤسسات والشركات على نطاق واسع MySQL لتطوير الويب حيث تشكل جزءًا حرجيًا من مجموعة LAMP مع دعم لـ PHP وPerl الذي يسهل بناء مواقع الويب وتطبيقات الويب.

وبجانب ذلك، تسمح المرونة الكبيرة لـ MySQL لمحترفي قواعد البيانات بتكوين خادم قاعدة البيانات ليلائم أغراض مختلفة تتراوح من المتاجر عبر الإنترنت إلى الذكاء التجاري وتحليل البيانات. بفضل قدرات التحميل السريعة لديها، والذاكرة المخبأة الفريدة، وميزات تعزيز الأداء الأخرى، يمكن لـ MySQL أن تلبي جميع متطلبات الأداء لمستودعات البيانات على مستوى الشركات.

هل أحتاج إلى تحويل إلى MySQL؟

كل من SQLite و MySQL لهما مزاياهم وعيوبهم، لذلك من المهم تقييم ما إذا كانت فوائد التحويل تستحق الجهد. يعتبر SQLite خيارًا رائعًا لقاعدة بيانات مضمنة للبرمجيات المحمولة الصغيرة أو المتوسطة مثل تطبيقات الهواتف المحمولة أو الألعاب. ومع ذلك، ليس مُوصى به استخدام SQLite لـ:

  • حجم كبير من البيانات. يوصي موقع SQLite الرسمي بعدم استخدامه لقواعد بيانات تتجاوز 1 تيرابايت.
  • الوصول المتزامن للبيانات. نظرًا لأن SQLite يقرأ ويكتب البيانات مباشرة إلى القرص، فإنه يقيد القراءة المتزامنة ويسمح فقط بعملية كتابة واحدة في أي وقت.

من ناحية أخرى، تناسب MySQL بشكل مثالي المواقع الإلكترونية وتطبيقات الويب وتحقق التوسعية بفضل دعم النسخ الاحتياطي والتقسيم التلقائي (المتوفر في منتجات MySQL التجارية). في الوقت نفسه، لا تتوافق MySQL تمامًا مع معيار SQL، مما قد يكون عائقًا للمشاريع التي تتطلب على الأقل الامتثال القريب للـ SQL.

استراتيجية التحويل: SQLite3 + MySQL

أكثر الطرق شيوعًا ومباشرة لتحويل SQLite إلى MySQL تعتمد على مزيج من أدوات سطر الأوامر لـ SQLite3 و MySQL:

1. تصدير قاعدة بيانات SQLite إلى عبارات SQL تنشئ الجداول وتنسخ البيانات.

Shell

 

2. إنشاء قاعدة بيانات MySQL المستهدفة إذا كان ذلك ضروريًا.

Shell

 

3. تعديل ملف النص الخاص بالنصيب ليتوافق مع بنية MySQL.

  • إزالة جميع الأسطر التي تبدأ بـ PRAGMA، BEGIN TRANSACTION و COMMIT
  • استبدال علامات التنصيص و ‘[‘,’]’ التي قد تحيط بأسماء كائنات قاعدة البيانات بالمعادل الخاص ب MySQL ‘`’
  • استبدال AUTOINCREMENT بـ AUTO_INCREMENT
  • تحويل قيم البولين الممثلة بـ ‘t’ و ‘f’ إلى 1 و 0
  • تحويل أنواع البيانات VARCHAR بدون طول محدد إلى TEXT

4. استيراد ملف النص الناتج إلى قاعدة بيانات MySQL.

Shell

 

استراتيجية الهجرة: نص شبيه بالبايثون/Django

يمكن تنفيذ عملية هجرة قاعدة البيانات من SQLite إلى MySQL عبر نص بيرل أو بايثون. ومع ذلك، هذا النهج معقد إلى حد ما وقد يتطلب مهارات برمجية في بيرل أو بايثون.

أدناه مثال على كيفية نقل قاعدة بيانات SQLite إلى MySQL باستخدام بايثون/Django:

1. تحديد قواعد البيانات في ملف تكوين settings.py لإخبار جانغو بالخوادم التي سيتم استخدامها.

Python

 

2. إنشاء نص برمجي بيثون مثل هذا:

Python

 

الشفرة المقدمة هي بوضوح مجرد عرض للطريقة وقد لا تكون كافية لإتمام عملية نقل قاعدة بيانات SQLite إلى MySQL بالكامل. في هذه الحالة، يمكن النظر في حلول تجارية من طرف ثالث لتأتيمت الإجراء الشامل للهجرة.

استراتيجية الهجرة: محول مخصص

هناك أدوات تجارية تجمع بين واجهات رسومية سهلة الاستخدام مع إمكانيات قوية لترحيل قاعدة بيانات من SQLite إلى MySQL في وضع تلقائي بالكامل. لا يحتاج المستخدمون إلى أي مهارات في إدارة قواعد البيانات أو تطويرها للقيام بالترحيل باستخدام مثل هذا البرنامج. يجب توفير الميزات الرئيسية من قبل أدوات ترحيل SQLite إلى MySQL عالية الجودة:

  • دعم لإصدارات القواعد البيانات المناسبة لقاعدة البيانات المصدر والهدف
  • دعم لتنوعات خدمة قاعدة بيانات MySQL مثل Azure for MySQL وAmazon RDS، يعتبر ميزة إضافية
  • ترحيل الإدخالات الرئيسية في قاعدة البيانات — الهياكل، البيانات، الفهارس، والعلاقات بين الجداول (المفاتيح الخارجية)
  • دمج ومزامنة قاعدة البيانات الهدف مع بيانات SQLite عبر المفتاح الرئيسي أو الفهرس الفريد
  • دعم سطر الأوامر هو ميزة إضافية مناسبة لأغراض البرمجة النصية والجدولة

الاستنتاج

يقدم المقال مقدمة عن SQLite وMySQL، نظامي إدارة قواعد البيانات العلاقية مفتوحة المصدر مع نطاق مناسب لاستخدام كل نظام. يكشف المحتوى عن ثلاث طرق للترحيل من SQLite إلى MySQL، MariaDB، أو Percona، مسلطًا الضوء على مزايا وعيوب كل طريقة.

Source:
https://dzone.com/articles/migrate-from-sqlite-to-mysql