আপনি কীভাবে বিকাশ, পরীক্ষা এবং উত্পাদনে ডাটাবেস পরিচালনা করেন?


171

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

এখানে আমাদের সেটআপ। প্রতিটি বিকাশকারী আমাদের ভার্চুয়াল মেশিন এবং মাইএসকিউএল ডাটাবেস চালায়। তারা যা চায় তা করা তাদের ব্যক্তিগত স্যান্ডবক্স। বর্তমানে, বিকাশকারীরা এসকিউএল স্কিমাতে পরিবর্তন আনবে এবং তারা এসভিএন-তে সংঘটিত পাঠ্য ফাইলটিতে ডাটাবেসের একটি ডাম্প করবে।

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

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

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

যদি সমস্যাটি কেবল স্কিমা ছিল, তবে এটি একটি সহজ সমস্যা হতে পারে তবে ডেটাবেজে "বেস" ডেটা রয়েছে যা বিকাশের সময় আপডেট হয় যেমন সুরক্ষা এবং অনুমতি সারণীতে মেটা-ডেটা।

অবিচ্ছিন্ন সংহতকরণ এবং এক-পদক্ষেপ-বিল্ডসের দিকে এগিয়ে যাওয়ার ক্ষেত্রে এটিই সবচেয়ে বড় বাধা see আপনি কিভাবে আপনি তার সমাধানের?


একটি ফলো-আপ প্রশ্ন: আপনি কীভাবে ডাটাবেস সংস্করণগুলি ট্র্যাক করবেন যাতে আপনি জানেন যে কোনও প্রদত্ত ডাটাবেসের উদাহরণ আপগ্রেড করতে কোন স্ক্রিপ্টগুলি চালানো উচিত? ল্যান্সের মতো কোনও সংস্করণ টেবিলটি কি স্ট্যান্ডার্ড পদ্ধতির নীচে উল্লেখ করেছে?


ট্যারান্টিনো রেফারেন্সের জন্য ধন্যবাদ। আমি কোন নেট পরিবেশে নেই, তবে আমি তাদের ডেটাবেস চেঞ্জমেনজেন্ট উইকি পৃষ্ঠাটি খুব সহায়ক বলে মনে করেছি। বিশেষত এই পাওয়ারপয়েন্ট উপস্থাপনা (.ppt)

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


আমি এটির জন্য একটি ওয়ার্কিং স্ক্রিপ্ট পেয়েছি। এটি ডিবি উপস্থিত না থাকলে এবং প্রয়োজনীয় হিসাবে আপগ্রেড স্ক্রিপ্টগুলি পরিচালনা করে running একটি বিদ্যমান ডাটাবেস মুছা এবং একটি ফাইল থেকে পরীক্ষার ডেটা আমদানির জন্য সুইচও রয়েছে। এটি প্রায় ২০০ লাইন, তাই আমি এটি পোস্ট করব না (যদিও আগ্রহ থাকলে আমি এটি পেস্টবিনে রেখে দিতে পারি)।



"আমি একটি পাইথন স্ক্রিপ্ট লিখতে যাচ্ছি যা ডাটাবেসের একটি টেবিলের বিপরীতে প্রদত্ত ডিরেক্টরিতে *। এসকিএল স্ক্রিপ্টের নাম পরীক্ষা করে এবং প্রথমটি তৈরি করে এমন একটি পূর্ণসংখ্যার উপর ভিত্তি করে সেখানে নেই যা চালায় ফাইলের নাম। এটি যদি খুব সহজ সমাধান হয় তবে আমার সন্দেহ যেমন এটি হবে তবে আমি এটি এখানে পোস্ট করব "" মনে হচ্ছে আপনি ফ্লাইওয়ে বাস্তবায়ন করছেন।
মাস্টার্সিল্লো

উত্তর:


53

বেশ কয়েকটি ভাল বিকল্প রয়েছে। আমি "ব্যাকআপ পুনরুদ্ধার করুন" কৌশলটি ব্যবহার করব না।

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

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


28

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

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


13

দেখুন কীভাবে রুবেল অন রেলগুলি এটি করে।

প্রথমে তথাকথিত মাইগ্রেশন ফাইল রয়েছে যা মূলত ডাটাবেস স্কিমা এবং ডেটা রূপান্তর করে N সংস্করণ থেকে এন + 1 সংস্করণে (বা সংস্করণ এন + 1 থেকে এন থেকে ডাউনগ্রেডিংয়ের ক্ষেত্রে)। ডাটাবেসে টেবিল রয়েছে যা বর্তমান সংস্করণটি বলে।

পরীক্ষার ডাটাবেসগুলি সর্বদা ইউনিট-টেস্টের আগে পরিষ্কার হয়ে যায় এবং ফাইলগুলি থেকে স্থির ডেটা দিয়ে পপুলেট করা হয়।


10

রিফ্যাক্টরিং ডেটাবেসস: বিবর্তনীয় ডেটাবেস ডিজাইন বইটি আপনাকে কীভাবে ডাটাবেস পরিচালনা করবেন সে সম্পর্কে কিছু ধারণা দিতে পারে। একটি সংক্ষিপ্ত সংস্করণ http://martinfowler.com/articles/evodb.html এও পঠনযোগ্য

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


5
  • আপনার ডাটাবেসের নাম নিম্নরূপ দিন - dev_<<db>> , tst_<<db>> , stg_<<db>> , prd_<<db>>(অবশ্যই আপনার কখনই ডিবি নাম হার্ডকোড করা উচিত নয়
  • সুতরাং আপনি একই শারীরিক সার্ভারে এমনকি বিভিন্ন ধরণের ডিবি স্থাপন করতে সক্ষম হবেন (আমি এটি প্রস্তাব করি না, তবে আপনার যদি হতে পারে ... যদি সংস্থানগুলি শক্ত থাকে)
  • আপনি স্বয়ংক্রিয়ভাবে সেগুলির মধ্যে ডেটা সরাতে সক্ষম হবেন তা নিশ্চিত করুন
  • জনসংখ্যার থেকে ডিবি তৈরির স্ক্রিপ্টগুলি আলাদা করুন = স্ক্র্যাচ থেকে ডিবি পুনরায় তৈরি করা এবং এটি পপুলেট করা সর্বদা সম্ভব হওয়া উচিত (পুরানো ডিবি সংস্করণ বা বাহ্যিক ডেটা উত্স থেকে)
  • কোডটিতে হার্ডকোড সংযোগের স্ট্রিং ব্যবহার করবেন না (এমনকি কনফিগার ফাইলগুলিতেও নয়) - কনফিগারেশন ফাইলের সংযোগ স্ট্রিং টেম্পলেটগুলিতে ব্যবহার করুন, যা আপনি গতিময়ভাবে পপুলেট করেন, অ্যাপ্লিকেশন-লেয়ারের প্রতিটি পুনর্গঠন যা পুনরায় সংযোগের প্রয়োজন হয় তা BAD হয়
  • ডাটাবেস সংস্করণ এবং ডিবি অবজেক্টগুলির সংস্করণ ব্যবহার করুন - আপনি যদি এটি সামর্থ্য করতে পারেন তবে প্রস্তুত পণ্য ব্যবহার করুন, যদি নিজের কিছু তৈরি না করেন
  • প্রতিটি ডিডিএল পরিবর্তন ট্র্যাক করুন এবং এটি কিছু ইতিহাস সারণীতে সংরক্ষণ করুন ( উদাহরণস্বরূপ এখানে )
  • ডেইলি ব্যাকআপ! ব্যাকআপ থেকে হারিয়ে যাওয়া কিছু পুনরুদ্ধার করতে আপনি কতটা সক্ষম হন তা পরীক্ষা করুন (অটোমেথিক পুনরুদ্ধার স্ক্রিপ্টগুলি ব্যবহার করুন)
  • এমনকি আপনার ডিইভি ডাটাবেস এবং পিআরডি-র ঠিক একই ক্রিয়েটিভ স্ক্রিপ্ট রয়েছে আপনার ডেটা নিয়ে সমস্যা হবে, তাই বিকাশকারীদের প্রোডের সঠিক অনুলিপি তৈরি করতে এবং এটি দিয়ে খেলতে অনুমতি দিন (আমি জানি আমি এটির জন্য বিয়োগগুলি পাব, তবে পরিবর্তিত হব যখন ফ্যানটি ছিটকে যায় তখন মানসিকতা এবং ব্যবসায়িক প্রক্রিয়া আপনার জন্য অনেক কম ব্যয় করতে পারে - সুতরাং কোডারদের আইনত যা কিছু হোক না কেন তাকে সাবস্ক্রিপ্ট করতে বাধ্য করুন, তবে এটি নিশ্চিত করুন

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

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

4

এটি এমন একটি বিষয় যা আমি ক্রমাগত অসন্তুষ্ট - এই সমস্যাটির সমাধান করার জন্য আমাদের সমাধান। বেশ কয়েক বছর ধরে আমরা প্রতিটি প্রকাশের জন্য একটি পৃথক পরিবর্তন স্ক্রিপ্ট বজায় রেখেছি। এই স্ক্রিপ্টটিতে শেষ প্রযোজনার রিলিজের ডেল্টা থাকবে। অ্যাপ্লিকেশনটির প্রতিটি প্রকাশের সাথে সংস্করণ নম্বরটি বাড়বে, নিম্নলিখিতগুলির মতো কিছু দেবে:

  • dbChanges_1.sql
  • dbChanges_2.sql
  • ...
  • dbChanges_n.sql

আমরা উন্নয়নের দুটি লাইন বজায় রাখা শুরু না করা পর্যন্ত এটি যথেষ্ট ভাল কাজ করেছে: ট্রাঙ্ক / নতুন বিকাশের জন্য মেইনলাইন এবং বাগ ফিক্সগুলির জন্য একটি রক্ষণাবেক্ষণ শাখা, স্বল্পমেয়াদী বর্ধন ইত্যাদি etc. অবশ্যম্ভাবীভাবে, শাখায় স্কিমায় পরিবর্তন আনার প্রয়োজন দেখা দেয়। এই মুহুর্তে, আমরা ইতিমধ্যে ট্রাঙ্কে dbChanges_n + 1.sql রেখেছি, সুতরাং আমরা নিম্নলিখিতগুলির মতো একটি স্কিম নিয়ে শেষ করেছি:

  • dbChanges_n.1.sql
  • dbChanges_n.2.sql
  • ...
  • dbChanges_n.3.sql

আবার এটি যথেষ্ট পরিমাণে কাজ করেছে, যতক্ষণ না আমরা একদিন সন্ধান করলাম এবং মেইনলাইনে 42 ডেল্টা স্ক্রিপ্টগুলি এবং শাখায় 10 টি দেখতে পেলাম। আহা!

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

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


4

আপনি এসকিউএল এর মতো একটি সরঞ্জাম ব্যবহার করে দেখতে পারেন কোনও ডাটাবেসের বিভিন্ন সংস্করণের মধ্যে পার্থক্যের স্ক্রিপ্টের সাথে তুলনা করুন , আপনাকে দ্রুত সংস্করণগুলির মধ্যে স্থানান্তর করতে দেয়


3

ওপি-তে আমাদের খুব মিল রয়েছে set

ডেভেলপাররা প্রাইভেট ডিবির সাথে ভিএম-তে বিকাশ করে।

[বিকাশকারীরা শীঘ্রই ব্যক্তিগত শাখায় অঙ্গীকারবদ্ধ হবে]

পরীক্ষা বিভিন্ন মেশিনে চালিত হয় (আসলে কোনও সার্ভারে ভিএম হোস্ট করা আছে) [শীঘ্রই হাডসন সিআই সার্ভার দ্বারা চালানো হবে]

ডিবিতে রেফারেন্স ডাম্প লোড করে পরীক্ষা করুন। বিকাশকারীদের স্কিমা প্যাচগুলি প্রয়োগ করুন তারপরে বিকাশকারীদের ডেটা প্যাচগুলি প্রয়োগ করুন

তারপরে ইউনিট এবং সিস্টেম পরীক্ষা চালান।

উত্পাদন গ্রাহকদের ইনস্টলার হিসাবে স্থাপন করা হয়।

আমরা কি করি:

আমরা আমাদের স্যান্ডবক্স ডিবি এর স্কিমা ডাম্প নিই। তারপরে একটি স্ক্যালো ডেটা ডাম্প। আমরা পূর্ববর্তী বেসলাইন থেকে পৃথক। ডেল্টাসের সেই জুটি হ'ল এন -1 এ এন আপগ্রেড করা।

আমরা ডাম্প এবং ডেল্টাস কনফিগার করি।

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

(জুহা বর্তমান ডিবি সংস্করণ রেকর্ড করে একটি টেবিল রাখার রেলের ধারণা উল্লেখ করেছে এবং এটি আপডেটগুলি কম পরিপূর্ণ করা উচিত))

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


3

আমি আশঙ্কা করছি যে আমি অন্যান্য পোস্টারের সাথে একমত আছি। বিকাশকারীদের তাদের পরিবর্তনগুলি স্ক্রিপ্ট করা দরকার।

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

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

আপনি কীভাবে এটি সিআই সার্ভারে রেখেছেন, আমি জানি না। সম্ভবত আপনার সিআই সার্ভারে একটি জানা বিল্ড স্ন্যাপশট চালু থাকা দরকার যা এটি প্রতিটি রাতেই ফেরত দেয় এবং তারপরে থেকে সমস্ত পরিবর্তন প্রয়োগ করে। এটি সম্ভবত সেরা, অন্যথায় একটি ভাঙা স্থানান্তর লিপি কেবলমাত্র সেই রাতের তৈরিই নয়, পরবর্তী সমস্তগুলিই ভেঙে যাবে।


1

পরীক্ষা করে দেখুন dbdeploy সেখানে জাভা এবং .net সরঞ্জাম ইতিমধ্যে পাওয়া যায়, আপনি এসকিউএল ফাইল লেআউট এবং স্কিমা সংস্করণ টেবিল জন্য তাদের মান অনুসরণ করে এবং আপনার পাইথন সংস্করণ লিখতে পারেন।


1

আমরা কমান্ড-লাইন mysql-diff ব্যবহার করছি : এটি দুটি ডাটাবেস স্কিমার মধ্যে (লাইভ ডিবি বা স্ক্রিপ্ট থেকে) ALTER স্ক্রিপ্ট হিসাবে একটি পার্থক্য আউটপুট দেয়। mysql-diff অ্যাপ্লিকেশন শুরুতে কার্যকর করা হয় এবং যদি স্কিমা পরিবর্তন হয় তবে এটি বিকাশকারীকে রিপোর্ট করে। সুতরাং বিকাশকারীদের নিজেই ALTERs লেখার দরকার নেই, স্কিমা আপডেটগুলি অর্ধ-স্বয়ংক্রিয়ভাবে ঘটে।


1

যদি আপনি .NET পরিবেশে থাকেন তবে সমাধানটি হ'ল তারান্টিনো (সংরক্ষণাগারভুক্ত) । এটি একটি এনএএনটি বিল্ডে এই সমস্তগুলি (কোন স্কল স্ক্রিপ্টগুলি ইনস্টল করতে হবে) সহ পরিচালনা করে।


1
মৃত লিঙ্ক। : প্রকল্পের এখন পারেন এখানে উপস্থিত হতে পারে bitbucket.org/headspringlabs/tarantino/wiki/Home : অথবা এখানে github.com/HeadspringLabs/Tarantino
লি রিচার্ডসন

0

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

http://code.google.com/p/migrationscriptgenerator/ এসকিউএল সার্ভার কেবল আমিই ভীত :( এটি বেশ সুন্দর আলফাও তবে এটি খুব কম ঘর্ষণ হয় (বিশেষত যদি আপনি এটি ট্যারান্টিনো বা http://code.google এর সাথে একত্রিত করেন তবে .কম / পি / সরলস্ক্রিপ্টরুনার / )

আমি এটি যেভাবে ব্যবহার করি তা হ'ল আপনার .sln এ একটি এসকিউএল স্ক্রিপ্টস প্রকল্প। আপনার স্থানীয়ভাবে একটি db_next ডাটাবেস রয়েছে যা আপনি নিজের পরিবর্তনগুলি করেন (ম্যানেজমেন্ট স্টুডিও বা এনএইচবারনেট স্কিমা এক্সপোর্ট বা লিনকটোসকিএল ক্রিয়েটড্যাটাস অথবা অন্য কিছু ব্যবহার করে)। তারপরে আপনি মাইগ্রেশন স্ক্রিপ্ট জেনারেটরকে _ দেব এবং _ নেক্সট ডিবি দিয়ে কার্যকর করেন যা তৈরি করে। জুড়ে স্থানান্তরিত করার জন্য এসকিউএল আপডেট স্ক্রিপ্টগুলি।


0

ওরাকল ডাটাবেসের জন্য আমরা ওরাকল- ddl2svn সরঞ্জাম ব্যবহার করি ।

এই সরঞ্জামটি স্বয়ংক্রিয়ভাবে পরবর্তী প্রক্রিয়া ted

  1. প্রতিটি ডিবি স্কিমের জন্য স্কিম ddls পান
  2. এটি সংস্করণ কনটোলের আওতায় রাখুন

দৃষ্টান্তগুলির মধ্যে পরিবর্তনগুলি ম্যানুয়ালি সমাধান করা হয়

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