تقدم هذه المقالة استخدام Flyway لـ Springboot لتمكين ترحيل قاعدة البيانات. تتم مشاركتها معك. التفاصيل كما يلي:
أولاً ، اسمحوا لي أولاً أن أفهم كيف يعمل Flyway.
أسهل حل هو توجيه الممر إلى قاعدة بيانات فارغة.
ستحاول العثور على طاولة البيانات الوصفية. عندما تكون قاعدة البيانات فارغة ، لن تجدها Flyway ، ولكن قم بإنشائها. لديك الآن قاعدة بيانات بها جدول فارغ واحد يسمى Schema_Version:
سيتم استخدام هذا الجدول لتتبع حالة قاعدة البيانات. بعد ذلك ، ستبدأ Flyway في مسح نظام ملفات التطبيق أو ClassPath للترحيل. يمكن كتابتها في SQL أو Java.
ثم فرز الترحيل برقم الإصدار الخاص بهم وتطبيقه بالترتيب:
عند تطبيق كل ترحيل ، سيتم تحديث جدول البيانات الوصفية وفقًا لذلك:
schema_version
مع وجود البيانات الوصفية والدولة الأولية في مكانها ، يمكننا الآن التحدث عن الترحيل إلى الإصدارات الأحدث.
ستقوم Flyway بمسح نظام ملفات التطبيق أو classpath مرة أخرى للترحيل. تحقق من الهجرات ضد جداول البيانات الوصفية. إذا كانت أرقام الإصدار أقل من أو تساوي رقم الإصدار الذي تم وضع علامة عليه على أنه الإصدار الحالي ، فسيتم تجاهلها.
الترحيل المتبقية في انتظار الترحيل: متوفرة ولكن لا يتم تطبيقها.
ثم ، يتم فرز رقم الإصدار ويتم تنفيذها بدورها:
تم تحديث جدول البيانات الوصفية هذا ، لذلك:
schema_version
هذا كل شيء! كلما احتجت إلى تطوير قاعدة بيانات ، سواء كانت بنية (DDL) أو بيانات المرجع (DML) ، ما عليك سوى إنشاء ترحيل جديد برقم إصدار أعلى من الإصدار الحالي. في المرة التالية التي تبدأ فيها Flyway ، يكتشف وترقيات قاعدة البيانات وفقًا لذلك.
2. استخدام Flyway في Springboot
تتمثل إحدى الطرق في تعيين خاصية hibernate.hbm2ddl.auto لإنشاء أو إنشاء أو تحديث عبر خاصية Spring Boot's Spring.jpa.hibernate.ddl-Auto. على سبيل المثال ، لتعيين hibernate.hbm2ddl.auto لإنشاء drop ، يمكننا إضافة المحتوى التالي في application.yml:
الربيع: JPA: Hibernate: DDL-Auto: Create-Drop
ومع ذلك ، هذا ليس مثاليًا لبيئات الإنتاج ، لأنه في كل مرة يقوم فيها التطبيق بإعادة تشغيل قاعدة البيانات ، سيتم إفراغ المخطط وإعادة بنائها من نقطة الصفر. يمكن ضبطه على التحديث ، لكن رغم ذلك ، لا نوصي باستخدامه لبيئات الإنتاج.
هناك طريقة أخرى. يمكننا تحديد المخطط في المخطط. في المدى الأول ، لا توجد مشكلة في القيام بذلك ، ولكن في كل مرة يتم فيها بدء التطبيق ، يفشل هذا البرنامج النصي للتهيئة لأن جدول البيانات موجود بالفعل. هذا يتطلب رعاية إضافية عند كتابة البرامج النصية للهيئة وعدم تكرار العمل الذي تم القيام به.
الخيار الأفضل هو استخدام مكتبة ترحيل قاعدة البيانات. يستخدم سلسلة من البرامج النصية للسجلات والسجلات التي تم استخدامها ولا تستخدم نفس البرنامج النصي عدة مرات. تحتوي كل حزمة نشر للتطبيق على هذه البرامج النصية ، ويمكن أن تكون قاعدة البيانات متسقة مع التطبيق. يوفر SPRING BOOT دعم التكوين التلقائي لمكتبات ترحيل قاعدة البيانات الشهيرة.
عندما تريد استخدام إحدى هذه المكتبات في SPRING BOOT ، تحتاج فقط إلى إضافة التبعيات المقابلة إلى المشروع وكتابة البرنامج النصي. لنبدأ مع Flyway.
1. استخدم الممر لتحديد عملية ترحيل قاعدة البيانات
Flyway هي مكتبة ترحيل قاعدة بيانات مفتوحة المصدر بسيطة للغاية تستخدم SQL لتحديد البرامج النصية للترحيل. والفكرة هي أن كل برنامج نصي يحتوي على رقم إصدار ، وسيقوم Flyway بتنفيذ هذه البرامج النصية بالتسلسل للحصول على قاعدة البيانات إلى الحالة المطلوبة. كما أنه يسجل حالة البرنامج النصي المنفذة ولن يتكرر. هنا في تطبيق قائمة القراءة ، نبدأ بقاعدة بيانات فارغة بدون جداول البيانات والبيانات. لذلك ، يحتاج هذا البرنامج النصي إلى إنشاء جداول القارئ والكتاب أولاً ، بما في ذلك قيود المفاتيح الخارجية وبيانات التهيئة. إدراج 8-2 من الكود هو برنامج نصي Flyway من قاعدة بيانات فارغة إلى حالة متوفرة.
برنامج Flyway Database Script
إنشاء قارئ الجدول (المفتاح الأساسي للمعرف ، اسم المستخدم Varchar (25) فريد من نوعه لا فارم ، كلمة مرور varchar (25) لا فارغ ، fullname varchar (50) وليس فارغا) ؛ إنشاء كتاب الجدول (المفتاح الأساسي للمعرف ، المؤلف Varchar (50) ، وليس NULL ، الوصف varchar (1000) ، غير فارغ ، ISBN VARCHAR (10) ليس فارغًا ، العنوان varchar (250) ليس فارغًا ، reader_username varchar (25) وليس NULL ، المفتاح الأجنبي (reader_username) References (username)) ؛ إنشاء تسلسل hibernate_sequence ؛ إدراج في القارئ (اسم المستخدم ، كلمة المرور ، fullname) قيم ('craig' ، 'password' ، 'craig walls') ؛ كما ترون ، نص Flyway هو SQL. ما يجعلها تعمل هو موقعها واسم الملف في ClassPath. تتبع كل من البرامج النصية Flyway مواصفات التسمية ، التي تحتوي على أرقام الإصدار ، كما هو موضح في الشكل 8-1.
تحتوي جميع البرامج النصية Flyway على أسماء تبدأ بـ Capital Letter V ، تليها رقم إصدار البرنامج النصي. تليها اثنين من السطح ووصف البرنامج النصي. نظرًا لأن هذا هو البرنامج النصي الأول في عملية الترحيل بأكملها ، فإن نسخته هو 1. يمكن أن يكون الوصف مرنًا للغاية ويستخدم بشكل أساسي للمساعدة في فهم الغرض من البرنامج النصي. في وقت لاحق ، نحتاج إلى إضافة جدول جديد إلى قاعدة البيانات ، أو إضافة حقل جديد إلى جدول البيانات الحالي. يمكنك إنشاء برنامج نصي آخر مع الإصدار رقم 2. يجب وضع البرنامج النصي Flyway تحت مسار /dB /Migration بالنسبة لمسار جذر Application Classpath. لذلك ، في المشروع ، يجب وضع البرنامج النصي في SRC/Main/Resources/DB/Migration. تحتاج أيضًا إلى تعيين spring.jpa.hibernate.ddl-auto إلى لا شيء ، بحيث لا ينشئ السبات جداول بيانات. يرتبط هذا بالمحتوى التالي في application.yml:
الربيع: JPA: Hibernate: DDL-AUTO: لا شيء
كل ما تبقى هو إضافة طريق ذبابة كاعتماد على المشروع. في Gradle ، يبدو هذا التبعية مثل هذا:
ترجمة ("org.flywaydb: flyway-core")في مشروع Maven ، يبدو هذا:
<Rependency> <roupiD> org.flywayfb </rougiD> <StifactId> flyway-core </shintifactid> </perimency>
بعد نشر التطبيق وتشغيله ، سيقوم SPRING BOOT باكتشاف Flyway في ClassPath وتكوين الفاصوليا المطلوبة تلقائيًا. ستعرض Flyway البرامج النصية في /dB /الترحيل بدورها ، وتشغيل هذه البرامج النصية إذا لم يتم تنفيذها. بعد تنفيذ كل نص ، اكتب سجلًا في جدول Schema_Version. في المرة التالية التي يتم فيها بدء الطلب ، سينظر Flyway أولاً إلى السجلات في Schema_version وتخطي تلك البرامج النصية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.