বাস্তবতা হ'ল আমরা যা চাই তা হ'ল: http://www.liquibase.org/
লিকুইবেস একটি ওপেন সোর্স (অ্যাপাচি ২.০ লাইসেন্সযুক্ত), ডাটাবেস পরিবর্তনগুলি ট্র্যাকিং, পরিচালনা ও প্রয়োগের জন্য ডাটাবেস-স্বতন্ত্র গ্রন্থাগার। এটি একটি সাধারণ ভিত্তিতে তৈরি করা হয়েছে: সমস্ত ডাটাবেস পরিবর্তনগুলি মানব পঠনযোগ্য তবে ট্র্যাকযোগ্য ফর্মায় সংরক্ষণ করা হয় এবং উত্স নিয়ন্ত্রণে চেক করা হয়।
তবে আমাদের উন্নয়ন প্রক্রিয়া এটি সমর্থন করে না। আমরা সাধারণত নিজেরাই লিখতে থাকি না এমন আলাদা স্ক্রিপ্টগুলির মাধ্যমে আমরা ডাটাবেসটি সংশোধন করি না, আমরা যেগুলি প্লাগইনগুলি সক্রিয় করি তা ব্যবহার করি। এরপরে আমরা সোর্স কোড কন্ট্রোলটি যাচাই করে লুকআপ ডেটা পরিবর্তন করতে ডিএমএল স্ক্রিপ্টগুলি লিখি না, আমরা অ্যাডমিন পৃষ্ঠায় একটি ইউআই ব্যবহার করি এবং তাই মাইগ্রেশন চলাকালীন সেই পরিবর্তনের প্রতিরূপে পরবর্তী ব্যবহারের জন্য কোনও উত্স কোড নেই।
তবে, আমরা এর কয়েকটি অনুকরণ করতে পারি - এই পৃষ্ঠায় তালিকাভুক্ত কয়েকটি সরঞ্জাম ব্যবহার করে:
/programming//q/225772/149060
উদাহরণস্বরূপ, লিকুইডবেসে একটি পৃথক বৈশিষ্ট্য রয়েছে যা optionচ্ছিকভাবে ডেটা পরিবর্তনগুলিও অন্তর্ভুক্ত করে। আমরা সম্ভাব্যভাবে স্কিমা এবং ডেটা আলাদা করে কোনও স্ক্রিপ্টের আউটপুট দিতে পারি (পরীক্ষার ডেটা (যেমন পোস্ট ইত্যাদি) অন্তর্ভুক্ত করার সম্ভাব্য কিছু সারণী বাদ দিয়ে এবং তারপর উত্পাদন ডেটাবেসে স্ক্রিপ্টটি প্রয়োগ করতে পারে)।
MySQLDiff (Stackoverflow প্রশ্নে আলোচনা) স্কিমা diffs করে, এবং এটি লেখক বিশেষ পরামর্শ দেওয়া হচ্ছে mysql_coldiff সারণীর-জ্ঞানী তথ্য diffs জন্য - উভয়, পার্ল বাস্তবায়িত হলে জাভা সরঞ্জাম (liquidbase) খুব আপনার সার্ভারের জন্য রিসোর্স ভারী হবে - যদিও উভয় ডাটাবেস স্থানীয় আনা এবং আপনার পিসিতে সরঞ্জাম চালনা সেই সমস্যার সমাধান করে ...
আমরা যদি সত্যিই এটি সঠিকভাবে করতে চাই, আমাদের সেটিংস, বিকল্পগুলি বা অন্যান্য কনফিগারেশন পরিবর্তনগুলি এবং কোনও স্কিমা পরিবর্তনের সাথে সম্পর্কিত যে কোনও এসকিএল লগ করা উচিত - এবং আমাদের প্রোডাকশন সার্ভারের বিপরীতে খেলতে লগড কোডটিকে মাইগ্রেশন স্ক্রিপ্টে রূপান্তর করতে হবে। সার্ভারের বিরুদ্ধে মাইগ্রেশন স্ক্রিপ্ট খেলুন, ওয়ার্ডপ্রেস সাইট ফাইলগুলি (প্রযোজ্য ক্ষেত্রে আপলোডগুলি বাদ দিয়ে) অনুলিপি করুন এবং আমরা সোনার।
সুতরাং, আমার কাছে মনে হয়, সর্বোত্তম পথটি হ'ল একটি বিকাশকারীর মাইগ্রেশন-বিল্ডার-প্লাগইন যা আমাদের প্রয়োজনীয় স্কেলটি ফাঁদে ফেলে, এটি সংরক্ষণ করে এবং তারপরে ডাটাবেসগুলিকে একীভূত করার উপায় তৈরির পরিবর্তে লগড কোড থেকে একটি মাইগ্রেশন স্ক্রিপ্ট উত্পন্ন করে is মঞ্চায়ন এবং উত্পাদন মধ্যে। খুব সহজেই সমাধান করার সমস্যা মনে হচ্ছে।
আমরা যদি অনুপ্রেরণার জন্য @ বেল্টজের ইন্সট্রুমেন্টিং হুক কল প্লাগইনের কোডটি দেখি: https://gist.github.com/1000143 (র্যাভ রেনিককে জি + এর মাধ্যমে আমাকে SAVEQUERIES এবং শটডাউন হুকের দিকে নির্দেশ করার জন্য ধন্যবাদ জানাই যে, আমাকে এটি সন্ধান করতে নেতৃত্ব দিন)
- পরিবর্তে SAVEQUERIES আউটপুট পেতে এটি পরিবর্তন করুন
- শুধুমাত্র প্রশাসক থাকাকালীন চালান
- সমস্ত নির্বাচন ফিল্টার
- শাটডাউন হুকের টেবিলে ফলাফলগুলি সংরক্ষণ করুন
- আমরা এই মুহুর্তে যা করছিলাম তার ভিত্তিতে আমরা আউটপুট ট্র্যাপিংকে বেছে বেছে টগল করতে পারি।
উদাহরণ স্বরূপ:
ক্যাপচারের নাম: প্লাগইন এক্সওয়াইজেড সক্রিয় ও কনফিগার করুন
স্টেট টগল ক্যাপচার করুন - চালু
... প্লাগইন এক্সওয়াইজেড ইনস্টল এবং কনফিগার করুন
স্টেট টগল ক্যাপচার করুন - বন্ধ
এক্সপোর্ট মাইগ্রেশন স্ক্রিপ্ট: প্লাগইন এক্সওয়াইজেড সক্রিয় ও কনফিগার করুন
ফিল্টারড আটকা পড়া এসকিউএল সহ একটি পপআপ পাঠ্য ক্ষেত্র তৈরি করতে এক্সপোর্ট বাটন টিপুন - আদর্শভাবে mysql তে কমান্ড-লাইন কল সহ শেল স্ক্রিপ্ট হিসাবে প্রাক-ফর্ম্যাট করা। আপনার মাইগ্রেশন কোড ফোল্ডারে এটি অনুলিপি করুন এবং আটকান এবং আপনার উত্স কোড ভাণ্ডারে যুক্ত করুন।
আপনি যখন কাজ করছেন তেমন ক্যাপচারটি টগল করার দিকে মনোযোগ সহকারে মনোযোগ দিন এবং আপনি আপনার স্টেজিং ডেটাবেজে আপনার প্রোডাকশন ডেটাবেসটিকে একটি সমমানের কনফিগারেশনে নিয়ে যাওয়ার জন্য নিখুঁত মাইগ্রেশন স্ক্রিপ্ট তৈরি করতে সক্ষম হবেন।
আরও ভাল, আপনি পরীক্ষা করতে পারেন এমন একটি স্ক্রিপ্ট (বা এরই ধারাবাহিক) থাকবে। প্রতিচ্ছবি, পরীক্ষাযোগ্য, মাইগ্রেশন স্ক্রিপ্টগুলি থাকা ইমেজিং !!
আমি ইতিমধ্যে প্রেমে আছি
অন্য কেউ?