আপনি কীভাবে এসকিউএল টেবিলগুলিতে পরিবর্তনগুলি ট্র্যাক / ট্র্যাক করবেন?


16

বিকাশকারীদের একটি দলে কাজ করার সময়, যেখানে প্রত্যেকে স্থানীয় সারণী এবং বিকাশ সারণিতে পরিবর্তন করে চলেছে, আপনি কীভাবে সমস্ত পরিবর্তন সিঙ্কে রাখবেন? একটি কেন্দ্রীয় লগ ফাইল যেখানে প্রত্যেকেরই তাদের স্কিল পরিবর্তন থাকে? টেবিলের বিবৃতি, স্বতন্ত্র। এসকিউএল ফাইলগুলি পরিবর্তনের জন্য একটি উইকি পৃষ্ঠা যা তাদের স্থানীয় ডিবি'র সর্বশেষ সংস্করণে আনতে চালাতে পারে? আমি এই সমাধানগুলির কয়েকটি ব্যবহার করেছি এবং আমি একসাথে একটি ভাল সলিউশন সমাধান পেতে টাইরিং করছি যা কার্যকর হয়, তাই আমি আপনার ধারণাগুলির প্রশংসা করব।

উত্তর:


4

আমি একটি কোড-ভিত্তিক ডেটাবেস মাইগ্রেশন সরঞ্জাম ব্যবহার করি এবং মাইগ্রেশন কোডটি উত্স নিয়ন্ত্রণে রাখি ।

সংস্করণ সংখ্যা হিসাবে টাইমস্ট্যাম্পগুলি ব্যবহার করে, যে কোনও সংখ্যক দেব তাদের পছন্দমতো মাইগ্রেশন যুক্ত করতে মুক্ত এবং আমরা আমাদের ডাটাবেসের যে কোনও অনুলিপি আত্মবিশ্বাসের সাথে মাইগ্রেশন সরঞ্জামটি চালাতে পারি।

আমি সংস্করণ নিয়ন্ত্রণের অধীনে এসকিউএল স্ক্রিপ্টগুলি ব্যবহার করতাম, তবে কোড-ভিত্তিক পদ্ধতির সন্ধান করলাম এটির সাথে কাজ করা অনেক সহজ, কারণ এগুলি সমস্তই একটি যৌক্তিক "স্পট" এবং একক কমান্ডের সাহায্যে প্রয়োজনীয় সমস্ত স্ক্রিপ্টগুলি কার্যকর করতে সক্ষম হয়েছিল।


4

আমি এটি নিজেই করি না, তবে কিছু বিকাশকারী সোর্স নিয়ন্ত্রণে এসকিউএল স্ক্রিপ্টগুলির সংগ্রহ বজায় রাখে যা কার্যকর করা হলে পরীক্ষার উদ্দেশ্যে ডেটাবেস টেবিলগুলি পুনরায় তৈরি করতে পারে এবং উত্পাদন উদ্দেশ্যে একটি খালি ডাটাবেস তৈরি করতে পারে।

গ্রাহক সাইটে ডেটাবেসটি সংস্করণ করতে একই কৌশলটি ব্যবহার করা যেতে পারে, যখন ক্ষেত্র বা সারণীগুলি যুক্ত করা বা সরিয়ে ফেলার প্রয়োজন হয় বা ডেটা ট্রান্সফর্মেশনগুলি হওয়া দরকার।


3

সংস্করণ নিয়ন্ত্রণের অধীনে স্ক্রিপ্টগুলি তৈরি করুন এবং সেগুলি যাচাই করার জন্য অবিচ্ছিন্ন একীকরণ

আমার পক্ষে কাজ করা একটি পদ্ধতির মধ্যে ছিল প্রতিটি বিকাশকারীকে তাদের নিজস্ব স্কিমা দিয়ে কাজ করা যা তারা যা পছন্দ করে তা করতে পারে। তাদের স্কিমা ধ্বংসাত্মক ছিল এবং সমস্ত ডেভেলপাররা এতে অবদান রেখেছিল এমন স্ক্রিপ্টগুলির একটি সংস্করণ নিয়ন্ত্রিত সেট থেকে নেওয়া টেস্ট ডেটা দিয়ে জনবহুল।

রাত্রে অবিচ্ছিন্ন ইন্টিগ্রেশন বিল্ড সমস্ত স্ক্রিপ্টগুলির সর্বশেষতম সংস্করণ নিয়েছিল এবং সেগুলি থেকে একটি সম্মিলিত পরীক্ষামূলক ডাটাবেস তৈরি করার চেষ্টা করেছিল। তারপরে বর্তমান স্কিমাটি বর্তমান রিলিজ প্রার্থীর সাথে সামঞ্জস্য ছিল কিনা তা যাচাই করতে অ্যাপ্লিকেশনটির বিরুদ্ধে এটির বিরুদ্ধে সিরিজ এবং ক্রিয়ামূলক পরীক্ষাগুলির একটি সিরিজ ছিল।

এই রাস্তাটি শুরু করার আগে, জায়গাটিতে বেশ শক্ত ডেটাবেস ডিজাইন ছিল এবং বিকাশকারীদের অস্বীকৃতি এবং অন্যান্য ভয়াবহতায় পাগল হওয়ার কারণে প্রতিরোধের জন্য একটি ডিবিএ সর্বদা নজর রাখছিল।

সংস্করণ নিয়ন্ত্রণ এখানে প্রচুর সাহায্য করেছে কারণ স্ক্রিপ্টগুলিতে পরিবর্তনগুলি তত্ক্ষণাত্ সুস্পষ্ট ছিল। আমরা ডাটাবেসের VERSIONসামগ্রিক অবস্থা চিহ্নিত করতে একটি ডাটাবেস টেবিল ব্যবহার করেছি । এটি একটি সাধারণ পূর্ণসংখ্যার ক্রম ছিল এবং এটি কোনও নির্দিষ্ট অ্যাপ্লিকেশনের সাথে লিঙ্কযুক্ত ছিল না।

সামগ্রিকভাবে, এটি ভালভাবে কাজ করেছে এবং এর অর্থ হ'ল বিকাশকারীরা অধ্যবসায় স্তর পরিবর্তন করতে ভয়ে থেমে থাকেন কারণ তারা অন্যদের প্রভাবিত না করে সর্বদা তাদের নিজস্ব স্কিমগুলি ফিরিয়ে আনতে পারে।


2

আপনি যদি এমএস শপটিতে থাকেন তবে ভিজ্যুয়াল স্টুডিও 2010 এর কয়েকটি দুর্দান্ত ডাটাবেস সংস্করণ নিয়ন্ত্রণ সরঞ্জাম রয়েছে যা দুটি ডাটাবেসের মধ্যে পার্থক্যের ভিত্তিতে পরিবর্তন / স্থাপনার স্ক্রিপ্টগুলিও তৈরি করতে পারে।


2

স্কিমাটা এবং অন্যান্য এসকিউএল স্ক্রিপ্টগুলি সংস্করণ নিয়ন্ত্রণে রাখার পাশাপাশি, আর একটি সহজ অনুশীলন হ'ল আসল ডিবিতে 'স্কিমা সংস্করণ' সারণী বজায় রাখা

create table schema_migrations (
    `appliedAt` timestamp not null default CURRENT_TIMESTAMP,
    `migrationCode` varchar(256) not null,
    `extraNotes` varchar(256),
    primary key (`migrationCode`)
)

2

মতবাদের একটি দুর্দান্ত মাইগ্রেশন সরঞ্জাম রয়েছে: http://www.doctrine-project.org/docamentation/manual/1_2/en/migration , সর্বোত্তম অংশটি হ'ল তারা স্বয়ংক্রিয়ভাবে জড়িত বা সহজেই হাত দিয়ে কোড করা যায়।


আমি বুঝতে পারি নি যে তারা সরবরাহ করেছে ... ঝরঝরে।
গ্যাবে

1

আমি যে পদ্ধতিটি ব্যবহার করি তা হ'ল পরামিতিগুলির জন্য একটি সারণী সরবরাহ করা। এই সারণীতে ডাটাবেস চালু আছে এমন সংস্করণের জন্য একটি নাম / মান জুটি থাকবে। এটি আমাকে দুটি সুবিধা দেয়: আমার কাছে একটি ডাটাবেস যাচাই করার একটি উপায় রয়েছে কেবলমাত্র প্রয়োগের মাধ্যমে ঠিক করা হয়েছে, এবং আমি আমার এসকিউএল স্ক্রিপ্টগুলির জন্য সেই মানটি ব্যবহার করতে পারি।

এসকিউএল স্ক্রিপ্টটি নতুন টেবিল তৈরি করবে, কলাম পরিবর্তন করবে এবং এর আগে সংস্করণ থেকে স্ক্রিপ্ট প্রচারের জন্য ডাটাবেসটিতে যা কিছু কাজ প্রয়োজন। আদর্শভাবে আমার কাছে রোলব্যাক স্ক্রিপ্টও থাকবে তবে বেশিরভাগ সময় আমি তা করি না।

বিটিডাব্লু, এই সম্পূর্ণ পদ্ধতির রবি অন রেলের অংশ হিসাবে স্বয়ংক্রিয়ভাবে সম্পন্ন হয়েছে, রোলব্যাক স্ক্রিপ্টগুলি দিয়ে সম্পূর্ণ। আমি সে ধারণাটি পছন্দ করি তবে সমস্ত ফ্রেমওয়ার্কগুলি এটি করে না। আমি যখন রুবেল অন রেলগুলি ব্যবহার করছি না, তখন আমি উপরে বর্ণিত পদ্ধতিটি ব্যবহার করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.