sql - যবহ - রিলেশনাল ডাটাবেজ কি




ডাটাবেস কাঠামোর পরিবর্তনের জন্য কি কোনও সংস্করণ নিয়ন্ত্রণ ব্যবস্থা আছে? (15)

আপনার প্রাথমিক সংস্করণ নিয়ামকটিতে টেবিলের বিবরণী তৈরি করুন, তারপরে পরিবর্তনীয় টেবিলের স্টেটমেন্ট যুক্ত করুন, তবে কখনও ফাইল সম্পাদনা করবেন না, কেবলমাত্র আরও কিছু ফাইল পরিবর্তন করুন যা আদর্শভাবে নাম অনুসারে বা "পরিবর্তন সেট" হিসাবে নামকরণ করা হয়, যাতে আপনি কোনও নির্দিষ্ট স্থাপনার জন্য সমস্ত পরিবর্তনগুলি খুঁজে পেতে পারেন।

সবচেয়ে শক্ত অংশটি আমি দেখতে পাচ্ছি, নির্ভরতাগুলি ট্র্যাক করছে, উদাহরণস্বরূপ, একটি নির্দিষ্ট স্থাপনার টেবিলের জন্য বি টেবিল এ এর ​​আগে আপডেট করা প্রয়োজন be

আমি প্রায়শই নিম্নলিখিত সমস্যার মধ্যে চলে যাই।

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

সুতরাং, আমি লাইভ সিস্টেমে একটি ধাক্কা দিচ্ছি এবং একটি বড়, স্পষ্ট ত্রুটি NewColumnX যে NewColumnX নেই NewColumnX

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


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


আমরা বেশ ভাল সাফল্যের সাথে এমএস টিম সিস্টেম ডেটাবেস সংস্করণ ব্যবহার করেছি। এটি টিএফএস সংস্করণ নিয়ন্ত্রণ এবং ভিজুয়াল স্টুডিওর সাথে কম-বেশি নির্বিঘ্নে সংহত করে এবং সহজেই সঞ্চিত প্রকট, ভিউ, ইত্যাদি পরিচালনা করতে দেয়। দ্বন্দ্বের সমাধানটি ব্যথা হতে পারে তবে সংস্করণ ইতিহাস শেষ হয়ে গেলে এটি শেষ হয়ে যায়। এরপরে, কিউএ এবং উত্পাদনে স্থানান্তর অত্যন্ত সহজ।

এটি বলা ঠিক যে এটি একটি সংস্করণ 1.0 পণ্য, যদিও, এবং এটি কয়েকটি সমস্যা ছাড়াই নয়।


আমি অত্যন্ত এসকিউএল ডেল্টা সুপারিশ। আমি যখন আমার বৈশিষ্ট্যটি কোডিংয়ের কাজটি করি এবং আমার উত্স নিয়ন্ত্রণ সরঞ্জামে এই স্ক্রিপ্টগুলি পরীক্ষা করি (মার্চুয়াল :))

তাদের একটি এসকিউএল সার্ভার এবং ওরাকল সংস্করণ উভয়ই রয়েছে।


আমি এটি বছরের পর বছর ধরে করেছি - স্কিমা সংস্করণগুলি পরিচালনা (বা পরিচালনা করার চেষ্টা) করছি। সেরা সরঞ্জামগুলি আপনার কাছে থাকা সরঞ্জামগুলির উপর নির্ভর করে। আপনি যদি কোয়েস্ট সফ্টওয়্যার সরঞ্জাম "স্কিমা পরিচালক" পেতে পারেন তবে আপনি ভাল অবস্থানে থাকবেন। ওরাকলের নিজস্ব, নিকৃষ্ট সরঞ্জাম রয়েছে যা "স্কিমা ম্যানেজার" (অনেকটা বিভ্রান্তিকর) নামেও ডাকা হয় যা আমি প্রস্তাব করি না।

একটি স্বয়ংক্রিয় সরঞ্জাম ছাড়াই (ডেটা ডুড সম্পর্কে এখানে অন্যান্য মন্তব্য দেখুন) তারপরে আপনি সরাসরি স্ক্রিপ্ট এবং ডিডিএল ফাইল ব্যবহার করবেন। একটি পদ্ধতির চয়ন করুন, এটি নথিভুক্ত করুন এবং কঠোরভাবে এটি অনুসরণ করুন। আমি যে কোনও মুহুর্তে ডাটাবেসটি পুনরায় তৈরি করার ক্ষমতা অর্জন করতে চাই, তাই আমি পুরো ডাটাবেসটির একটি সম্পূর্ণ ডিডিএল রফতানি করতে পছন্দ করি (যদি আমি ডিবিএ থাকি), বা বিকাশকারী স্কিমা (আমি যদি পণ্যটিতে থাকি তবে) -ডভেলপমেন্ট মোড)।


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

যখন ডাটাবেস পরিবর্তন হয়, আমি প্রথমে প্রজেক্ট-ডাটাবেস.এসকিউএল-র মূল স্কিমা আপডেট করি, তারপরে প্রজেক্ট-আপডেট.এসকিউএল-তে প্রাসঙ্গিক তথ্যটি অনুলিপি করে রাখি, উদাহরণস্বরূপ টেবিলের বিবরণী বিকল্পটি। আমি উন্নত ডাটাবেস, পরীক্ষা, পুনরাবৃত্তি ভাল না হওয়া পর্যন্ত পুনরায় প্রয়োগ করতে আপডেটগুলি প্রয়োগ করতে পারি। তারপরে, ফাইলগুলি চেক ইন করুন, আবার পরীক্ষা করুন এবং উত্পাদনের জন্য প্রয়োগ করুন।

এছাড়াও, আমার সাধারণত ডিবি - কনফিগারেশনে একটি টেবিল থাকে: যেমন:

এসকিউএল

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

তারপরে, আমি আপডেট বিভাগে নিম্নলিখিতগুলি যুক্ত করছি:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

ডাটাবেসটি পুনরায় তৈরি করা হলে কেবল db_version পরিবর্তন হয় এবং db_revision আমাকে ইঙ্গিত দেয় যে ডিবি db_revision কত দূরে রয়েছে।

আমি আপডেটগুলি তাদের নিজস্ব পৃথক ফাইলগুলিতে রাখতে পারি, তবে আমি সেগুলি একসাথে ম্যাশ করতে এবং প্রাসঙ্গিক বিভাগগুলি নিষ্কাশন করতে কাট এবং পেস্ট ব্যবহার করতে পছন্দ করেছি। আরও কিছুটা বাড়ির রক্ষণাবেক্ষণের ব্যবস্থা রয়েছে, যেমন, তাদের হিমায়িত করতে $ সংশোধন 1.1 from থেকে ':' সরান।


আমি দুটি পদ্ধতির একটির প্রস্তাব দিই। প্রথমে PowerDesigner থেকে পাওয়ার ডিজাইনার বিনিয়োগ করুন। এন্টারপ্রাইজ এডিশন. এটি আপনাকে দৈহিক ডেটামোডেলগুলি এবং আরও অনেক কিছু ডিজাইনের অনুমতি দেয়। তবে এটি এমন একটি সংগ্রহস্থল নিয়ে আসে যা আপনাকে আপনার মডেলগুলি পরীক্ষা করতে দেয়। প্রতিটি নতুন চেক ইন একটি নতুন সংস্করণ হতে পারে, এটি যে কোনও সংস্করণ অন্য যে কোনও সংস্করণের সাথে এবং আপনার ডেটাবেজে থাকা সেই সময়ের সাথে তুলনা করতে পারে। এরপরে এটি প্রতিটি পার্থক্যের একটি তালিকা উপস্থাপন করবে এবং কোনটি স্থানান্তরিত করা উচিত তা জিজ্ঞাসা করবে ... এবং তারপরে এটি এটির জন্য স্ক্রিপ্ট তৈরি করে। এটি সস্তা নয় তবে এটি দ্বিগুণ দামের দর কষাকষি এবং এটি আরওআই প্রায় 6 মাস।

অন্য ধারণাটি হ'ল ডিডিএল নিরীক্ষণ চালু করা (ওরাকলে কাজ করে)। এটি আপনার করা প্রতিটি পরিবর্তন সহ একটি সারণী তৈরি করবে। আপনি যদি টাইমস্ট্যাম্প থেকে শেষবারের জন্য আপনার ডেটাবেস পরিবর্তনগুলি এখনই উন্নত করে সরিয়ে নিয়েছেন তবে আপনি যা কিছু করেছেন তার একটি আদেশযুক্ত তালিকা থাকবে। কয়েকটি যেখানে শূন্য-সমষ্টি পরিবর্তনগুলি যেমন টেবিল ফু তৈরি করতে পারে সেগুলি বাদ দেওয়ার জন্য ধারাগুলি; ড্রপ টেবিল ফু; এবং আপনি সহজেই একটি আধুনিক স্ক্রিপ্ট তৈরি করতে পারেন। কেন উইকিতে পরিবর্তন রাখুন, এটি দ্বিগুণ কাজ। আপনার জন্য ডাটাবেসগুলি সেগুলি ট্র্যাক করুন।


ওরাকল এর জন্য স্কিমা তুলনা এমন একটি সরঞ্জাম যা বিশেষভাবে আমাদের ওরাকল ডাটাবেস থেকে অন্যটিতে পরিবর্তনগুলি স্থানান্তর করতে ডিজাইন করা হয়। ডাউনলোড লিঙ্কের জন্য দয়া করে নীচের URL টি দেখুন, যেখানে আপনি সম্পূর্ণ কার্যকরী পরীক্ষার জন্য সফ্টওয়্যারটি ব্যবহার করতে সক্ষম হবেন।

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm


ওরাকল-এর জন্য আমি Toad ব্যবহার করি, যা স্কিমাটিকে বিভিন্ন সংখ্যক বিযুক্ত ফাইলের (যেমন, প্রতি টেবিলের জন্য একটি ফাইল) ডাম্প করতে পারে। আমার কাছে কিছু স্ক্রিপ্ট রয়েছে যা পেরফোর্সে এই সংগ্রহটি পরিচালনা করে, তবে আমি মনে করি এটি কেবল কোনও পুনর্বিবেচনা নিয়ন্ত্রণ ব্যবস্থায় খুব সহজেই করা উচিত।


টেবিল পরিবর্তনের জন্য ভিসিএসের অভাবে আমি এগুলিকে উইকিতে লগ করছি। কমপক্ষে তবে আমি কখন এবং কেন এটি পরিবর্তন করা হয়েছে তা দেখতে পাচ্ছি। এটি নিখুঁত থেকে দূরে যেহেতু সবাই এটি করছে না এবং আমাদের একাধিক পণ্য সংস্করণ ব্যবহার রয়েছে তবে কিছুই না থেকে ভাল।


পিএলএসকিউএল বিকাশকারী, অলআরউন্ড অটোমেশনগুলির একটি সরঞ্জাম, ভিজ্যুয়াল সোর্স সেফের সাহায্যে ঠিকঠাক (তবে দুর্দান্ত নয়) কাজ করার জন্য একটি প্লাগইন রয়েছে।

ওয়েব থেকে:

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

http://www.allroundautomations.com/plsvcs.html


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


রুবেলে অন রেলগুলিতে, migration ধারণা রয়েছে - ডাটাবেস পরিবর্তন করার জন্য একটি দ্রুত স্ক্রিপ্ট।

আপনি একটি মাইগ্রেশন ফাইল তৈরি করেন, যার ডিবি সংস্করণ (যেমন একটি কলাম যুক্ত করা) বাড়ানোর নিয়ম রয়েছে এবং সংস্করণটি ডাউনগ্রেড করার নিয়ম রয়েছে (যেমন কোনও কলাম অপসারণ)। প্রতিটি মাইগ্রেশন নম্বরযুক্ত, এবং একটি টেবিল আপনার বর্তমান ডিবি সংস্করণ ট্র্যাক করে।

স্থানান্তরিত করতে , আপনি "ডিবি: মাইগ্রেট" নামে একটি কমান্ড চালান যা আপনার সংস্করণটি দেখায় এবং প্রয়োজনীয় স্ক্রিপ্টগুলি প্রয়োগ করে। আপনি একইভাবে মাইগ্রেট করতে পারেন।

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


রেডগেটে এসকিউএল সোর্স কন্ট্রোল নামে একটি পণ্য রয়েছে। এটি টিএফএস, এসভিএন, সোর্সগিয়ার ভল্ট, ভল্ট প্রো, মার্কিউরিয়াল, পারফোর্স এবং গিটের সাথে সংহত করে।


ইআর স্টুডিও আপনাকে আপনার ডাটাবেস স্কিমাটিকে সরঞ্জামে বিপরীত করতে দেয় এবং তারপরে আপনি এটি লাইভ ডাটাবেসের সাথে তুলনা করতে পারেন।

উদাহরণ: আপনার বিকাশের স্কিমাটি ইআর স্টুডিওতে বিপরীত করুন - এটি উত্পাদনের সাথে তুলনা করুন এবং এটি সমস্ত পার্থক্য তালিকাভুক্ত করবে। এটি পরিবর্তনগুলি স্ক্রিপ্ট করতে পারে বা কেবল স্বয়ংক্রিয়ভাবে এটিকে চাপ দিতে পারে।

একবার আপনার ইআর স্টুডিওতে স্কিমা হয়ে গেলে আপনি তৈরি স্ক্রিপ্টটি সংরক্ষণ করতে পারেন বা একটি মালিকানাধারী বাইনারি হিসাবে সংরক্ষণ করতে পারেন এবং এটি সংস্করণ নিয়ন্ত্রণে সংরক্ষণ করতে পারেন। আপনি যদি কখনও এই স্কিমের অতীত সংস্করণে ফিরে যেতে চান তবে কেবল এটি পরীক্ষা করে দেখুন এবং এটি আপনার ডিবি প্ল্যাটফর্মে ধাক্কা দিন।






version-control