যদি কোনও লেনদেন "প্রতিশ্রুতিবদ্ধ" হয় তবে তা কি নিশ্চিতভাবে সংরক্ষণ করা যায়?


12

যদি কোনও লেনদেন সফলভাবে প্রতিশ্রুতিবদ্ধ হয় তবে আমি কী 100% নিশ্চিত হতে পারি যে এটি ডাটাবেস এবং লগ ফাইলগুলিতে লেখা হয়েছে? আমি কি নিশ্চিত যে ডেটা সংরক্ষণ করা হয়েছে?

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

প্রারম্ভকালে, সার্ভারটি একটি "ডাটাবেস পুনরুদ্ধার" করেছিল - আমি কি নিশ্চিত যে সবকিছু আবার ঠিক আছে কি?


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

1
@ অ্যারনবার্ট্র্যান্ড তবে যদি কোনও লেনদেন "প্রতিশ্রুতিবদ্ধ" অবস্থায় থাকে (যেমন প্রতিশ্রুতি সফল হয়েছিল) তবে কীভাবে সম্ভব হবে যে পুনরুদ্ধারের সময় এটি এখনও হারিয়ে যায়?
এসকিউএল পুলিশ

3
@ জিওসকো: এটি পারে না। "প্রতিশ্রুতিবদ্ধ" অর্থ এটি ডাটাবেসের লগ ফাইলে রয়েছে। এর পরে এটি হারাবার একমাত্র উপায় হ'ল হয় 1) লগ ফাইলটি ডেটা ফাইলে সংরক্ষণ করার আগে হারিয়ে ফেলুন, বা 2) লগ ফাইল এবং ডেটা ফাইল, বা 3) মানব ত্রুটি হারাবে। দ্রষ্টব্য যে (3) সাধারণত সাদৃশ্যযুক্ত।
আরবেরি ইয়ং

2
@ জিওসকো আপনি কীভাবে জানবেন যে পুরো ড্রাইভের সময় আপনার সমস্ত লেনদেন সফলভাবে প্রতিশ্রুতিবদ্ধ হয়েছিল?
অ্যারন বারট্র্যান্ড

2
সঞ্চিত পদ্ধতি <> লেনদেন - আপনার সঞ্চিত পদ্ধতিতে একাধিক সুস্পষ্ট লেনদেন হতে পারে, বা কেবল অন্তর্নিহিত, চেষ্টা করা / ধরার যুক্তি থাকতে পারে, সি # লেয়ারে লেনদেন পরিচালনাও হতে পারে ইত্যাদি। আবার ধরে নেওয়া, কোনও ব্যতিক্রম = সফল প্রতিশ্রুতি কম্বল স্টেটমেন্ট হিসাবে কিছুটা বিপজ্জনক হতে পারে।
অ্যারন বার্ট্র্যান্ড

উত্তর:


16

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

আরও তথ্যের জন্য আমি এআরআইএস কাগজ পড়ার পরামর্শ দিচ্ছি ।

লিখিত-এগিয়ে লগিং এবং পুনরুদ্ধার গ্যারান্টি দিতে পারে না যদি অন্তর্নিহিত স্টোরেজ হার্ডওয়্যারের ত্রুটি (দুর্নীতি) থাকে। এবং যে কোনও ইঞ্জিনিয়ারিং পণ্যতে ত্রুটি থাকতে পারে।

অন্যান্য অ্যাপ্লিকেশনগুলির মতো আপনার অ্যাপ্লিকেশনটিরও ক্র্যাশগুলির উপস্থিতি (ত্রুটি) উপস্থিতিতে সঠিকভাবে আচরণ করার জন্য সাবধানতার সাথে লিখতে হবে। কোন যাদু নেই।


যদি কোনও ক্লায়েন্ট অ্যাপ্লিকেশন একটি কমিট জারি করেছে তবে ক্লায়েন্টের সময়সীমা শেষ না হওয়া পর্যন্ত ডিবি থেকে কোনও প্রতিক্রিয়া পাওয়া যায় না। এই প্রতিশ্রুতি সম্পর্কে কি? সাফল্য নাকি ব্যর্থতা? কীভাবে চেক করবেন?
গ্যাব 好人 好人
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.