বড় ডেটাবেসে ভুল ডেটা আপডেটগুলি এড়াতে আপনি কী অনুশীলনগুলি অনুসরণ করেন?


20

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

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


11
ব্যাকআপগুলি কেবল যখন আপনি মোতায়েন করেন না তার জন্য নয়। আমি বলতে চাইছি, আপনার ডেটা ক্ষতি হ'ল কেবল একটি ডিস্ক-ক্র্যাশ হয়ে গেছে এবং সেগুলি অনুমানযোগ্য এবং আজ বা কাল হতে পারে। (রেইড অ্যারেগুলি উত্তর নয়, তারা ক্র্যাশও করে))
পিটার বি

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

1
আমি এখানে @ ডকব্রাউনের সাথে একমত ডেটা দুর্নীতি এবং ব্যাকআপগুলি খুব বেশি সময় নেওয়া এড়ানো সত্যই দুটি পৃথক প্রশ্ন।
রবি ডি

1
আপনি যখন দ্রুত গ্রহণ করেন তখন ততটা ইনপুট পাবেন না।
পাপারাজ্জো

1
"কোড স্থাপনার ক্ষেত্রে যৌক্তিক সমস্যা" বলতে কী বোঝ?
পাপারাজ্জো

উত্তর:


25

যে কেউ নিয়মিত আমাদের সফ্টওয়্যার আপগ্রেডগুলির জন্য গ্রাহকদের জন্য প্রোডাক্ট ডেটাবেস আপডেট করার বিষয়ে নিয়মিতভাবে কাজ করেন, আমি আপনাকে বলি যে ত্রুটিগুলি হ্রাস করার সর্বোত্তম উপায়টি যথাসম্ভব সোজা করে আপডেট করা।

আপনি যদি সুনির্দিষ্ট রেকর্ডের পরিবর্তে সমস্ত রেকর্ডে কোনও পরিবর্তন সম্পাদন করতে পারেন তবে এটি ভাল।

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

আপনি যদি সন্নিবেশ করতে পারেন তবে এটি ভাল।

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

আপনি যদি মুছে ফেলা এড়াতে পারেন তবে এটি ভাল।

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

একটি ধারাবাহিক আপডেট নীতি আছে।

আপনার যদি কোনও রেকর্ড আপডেট করার প্রয়োজন হয় তবে বেশ কয়েকটি জিনিসের একটি ঘটতে পারে:

  1. আপনার রেকর্ড বিদ্যমান নেই।
  2. আপনার রেকর্ড বিদ্যমান তবে ইতিমধ্যে এটি পরিবর্তন করা হয়েছে।
  3. আপনার রেকর্ড বিদ্যমান এবং পরিবর্তন প্রয়োজন।

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

ব্যাকআপ

এটি কোনও উপায়ে কোনও পরিবেশ পরিবেশে কোনও আপডেট সম্পাদনের আগে ব্যাকআপ সম্পাদন করতে আপনাকে ক্ষমা করবেন না! এমনকি ব্যাকআপ নিয়েও, আমি ব্যাকআপটি ব্যবহার করতে ব্যর্থতা হিসাবে বিবেচনা করি। সবচেয়ে খারাপ পরিস্থিতিতে এমনকি ডেটা হারানো কোনও সম্ভাবনা হতে পারে না ।

উপসংহার

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

শুভকামনা!


আপনি যা বলেছিলেন তার সাথে আমি একমত, তবে যখন 10 কে রেকর্ডের প্রয়োজন হয় এবং 10 টি রেকর্ড সন্নিবেশ করা / সমস্ত রেকর্ড আপডেট করা কার্যকর হয় না তখন লেনদেনের বিষয়ে আপনার চিন্তায় আমি আগ্রহী ছিলাম?
আমি শীতকালীন হাট

তারপরে আপনি কেবল 10 টি রেকর্ড আপডেট করবেন। আমি বললাম পারলে কর। এটি আপনার গ্রাহকের উত্পাদনের ডেটাবেস নষ্ট করে দিলেও এটি করুন বলিনি। দয়া করে আমার পরামর্শের সাথে এক দানা নুন দিন।
নিল

12

এই মুহুর্তে, আপনার একটি বাণিজ্যিক গ্রেড ডিবি সিস্টেম ব্যবহার করা উচিত যা স্ন্যাপশটগুলিকে সমর্থন করে (ওরাকলস এটিকে ফ্ল্যাশব্যাক বলে )) তারা ঠিক এ জাতীয় জিনিস for

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


আমি বলছি না আমি ব্যাকআপগুলি ফেলে দিতে চাই। নির্ধারিত ব্যাকআপ সবসময় থাকে। অ্যাড-হক ব্যাকআপগুলির চারপাশে প্রশ্নগুলি আরও বেশি, যা ছোট সিস্টেম নয় problem
প্রীতম বারহাতে 10

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

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

3
স্বয়ংক্রিয় ফেলিওভারের সাথে প্রতিলিপি হ'ল ডিস্কের জন্য RAID ব্যবহারের চেয়ে ডাটাবেসগুলির জন্য রিডান্ডেন্সি ব্যাকআপ কৌশল আর নয় ।
blrfl

1
ব্যাকআপ এবং স্ন্যাপশট সম্পর্কে সমস্ত ভাল পয়েন্ট, তবে বোটড ডাটাবেস অপারেশন পরিষ্কার করা (যদি বেশ কয়েক ঘন্টা নতুন ডেটা উপলব্ধ হওয়ার আগে যোগ করা হয়) দৃশ্যপট এবং অন্যান্য সিস্টেমগুলি এটি প্রভাবিত করে তার উপর নির্ভর করে (সময়সূচী, অন্যান্য ডাটাবেস এন্ট্রি) এটি এর উপর নির্ভর করে, যদি এটি বেশ কয়েকটি টেবিল, ক্যাশে, প্রমাণীকরণ ইত্যাদি স্প্যান করে। আমি সবসময় ধরে নিই যে আমাকে একটি ব্যাকআপ ব্যবহার করতে হবে তবে সর্বদা কমপক্ষে কখনও কখনও চেষ্টা করার দরকার নেই।
বেনামে পেঙ্গুইন

3

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

মার্ট / সংগ্রহস্থলের প্রয়োগ

আপনার যদি আপডেটের জন্য পৃথক ডাটাবেস এবং প্রত্যেকে ব্যবহার করে এমন একটি পৃথক ডাটাবেস থাকে তবে আপনি কিছুটা ঝুঁকি হ্রাস করতে পারেন। একসময় বিভিন্ন চেক হয়ে যাওয়ার পরে এটি কেবল একটি ডিবি থেকে অন্য ডিবিতে অনুলিপি করার ঘটনা case মার্ট / সংগ্রহস্থলটি কীভাবে এটি কখনও কখনও বর্ণনা করা হয় তবে আপনার প্রাথমিক / মাধ্যমিক, মাস্টার / স্লেভ ইত্যাদি থাকতে পারে Mart

সোর্স কোড

পরিবর্তিত হতে পারে এমন সমস্ত কিছুর জন্য, একটি উত্স কোড রয়েছে যা কীভাবে ডেটা আপডেট হয়েছিল to এর মধ্যে আপনার কতটি ডিবি থেকে ডিবিতে পরিবর্তিত হয় তবে আপনার প্রতিটি ব্যবহারকারীর জন্য ভূমিকা, ডেটা ফিড, কোড মডিউল ইত্যাদি থাকতে পারে one

তারিখ তৈরি / আপডেট করুন

কিছু ভুল হয়ে গেছে যেখানে ট্র্যাকিংয়ের সময় ব্যাপকভাবে সহায়তা করতে পারে এমন কিছু হ'ল প্রতিটি সারির জন্য একটি তথ্য তৈরি এবং আপডেট করা। তারপরে আপনি এক নজরে দেখতে পারবেন কোন সারিগুলি আপডেট হয়েছে।

সংক্ষিপ্তসার ETL

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

ব্যাকআপ

সম্পূর্ণ ব্যাকআপ অবশ্যই অবশ্যই প্রচুর স্থান নেয় তবে নিয়মিত বিরতিতে (ব্যাক্তিগতভাবে বলা হয়) এবং আরও ঘন ঘন (দৈনিক ইত্যাদিতে) আংশিক দিকগুলি সম্পূর্ণ ব্যাকআপ হওয়ার জন্য স্বাভাবিক দৃশ্যপট।

সময় পুনরুদ্ধারের পয়েন্ট

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

নিরীক্ষা

অডিট সারণী থাকা আপনাকে বলবে কে (বা কী) একটি সারিতে আপডেট করেছে made এটি আপনাকে তদন্তের জন্য একটি ভাল সূচনা পয়েন্ট দিতে পারে।

ইতিহাস

কিছু সমালোচনামূলক টেবিলের জন্য, প্রাসঙ্গিক সারির একটি অনুলিপি আপডেটের সময় নেওয়া হয় যাতে প্রয়োজন হলে ডেটা পুনরুদ্ধার করা যায়।

তথ্য বৈধতা

মৌলিক বৈধতা যাচাই এটি সংরক্ষণের আগে ডেটাতে করা হয় তা নিশ্চিত করুন - বেসিক ডেটা টাইপ চেকগুলি উপরে।

উল্লেখ সততা

রেফারেন্সিয়াল অখণ্ডতা কোনও রূপালী বুলেট নয় তবে এটি ডেটা সুগঠিত রয়েছে তা নিশ্চিত করতে সহায়তা করতে পারে।



2

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

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

আপনি যদি পুরো ডাটাবেসটি নিতে না পারেন (যদি সত্যিই বড় হয়) চেষ্টা করুন এবং একটি ছোট নমুনার আকার রফতানি করুন এবং আপডেটের (ছোট শুকনো রান) প্রকৃত ডেটার বিপরীতে চালান। পরীক্ষাটি যতটা সম্ভব সম্পন্ন হয়েছে তা নিশ্চিত করার জন্য আমি পুরো ডেটা সেটটিকে পছন্দ করব।

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