না, আমি মনে করি না যে আপনার শর্তাবলীর ফলশ্রুতি এমন একটি সিস্টেমে পরিণত হয়েছে যা আমাদের সিরিয়ালাইজযোগ্য বিবেচনা করা উচিত।
স্ন্যাপশট বিচ্ছিন্নতা একটি কৌশল যা নিশ্চিত করে যে কোনও লেনদেন পুরো লেনদেনে একই ডেটাসেট দেখে। স্ন্যাপশট বিচ্ছিন্নতা কিছু গ্যারান্টি সরবরাহ করে তবে লেনদেন কীভাবে কাজ করে তা বোঝার জন্য প্রয়োজনীয় সমস্ত বৈশিষ্ট্যগুলি সংজ্ঞায়িত করে না (যদি না আমরা স্ন্যাপশট বিচ্ছিন্নতা এবং এমভিসিসি বিবাদ বেছে না নিই)।
স্ন্যাপশট বিচ্ছিন্নতা সাধারণত এমভিসিসি, মাল্টি সংস্করণ ধারাবাহিকতা নিয়ন্ত্রণ ব্যবহার করে প্রয়োগ করা হয়। এমভিসিসি তাদের স্ন্যাপশটের প্রসঙ্গে লেনদেনের আরও বিশদ সংজ্ঞায়িত করে: এটি বলা হয় যে কেবল দ্বন্দ্ব লেখার সময় তাদের পৃথকীকরণ প্রয়োজন (কেবলমাত্র অবস্থানগুলি, বা অবস্থানগুলি + মানগুলি বাস্তবায়নের উপর নির্ভর করে)। এমভিসিসি একটি স্বাচ্ছন্দ্যযুক্ত ধারাবাহিকতা মডেল সরবরাহ করে এবং লেখার স্কুতে ভুগছে।
স্বাচ্ছন্দ্যযুক্ত ধারাবাহিকতা মডেলগুলি বোঝা শক্ত কারণ তারা কোনও বিচ্ছিন্নতা এবং সম্পূর্ণ বিচ্ছিন্নতার মধ্যে একটি সংকরের মতো are
সুতরাং, প্রথমে একটি কঠোর সমঝোতা মডেল দিয়ে শুরু করি। দু'জন লেনদেন একে অপরের থেকে বিচ্ছিন্ন করা আবশ্যক যদি কেউ অন্য যে কোনও তথ্য লিখিত হয় যা অন্যটি পড়ে বা লিখেন (এবং বিপরীতে ...)।
যখন আমরা জানি না কেন কোনও লেনদেন ডেটা পড়ে, তখন আমাদের অবশ্যই ধরে নেওয়া উচিত যে একটি ভিন্ন মান পঠন ক্লায়েন্টের আচরণের সাথে জড়িত হতে পারে, যার কারণে ওভারল্যাপিং লেনদেনের শর্তটি বিচ্ছিন্নতা নির্দেশ করে। বিচ্ছিন্নতা ছাড়াই, একটি স্ন্যাপশটে বাসি ডেটা পড়লে সহজেই শিথিল সুসংগততা দেখাতে পারে, অন্য একটি শব্দ যার জন্য অসঙ্গতি বলা হয়, যা বলা যায় ত্রুটি।
আমাদের কেবল লেনদেনের দ্বারা পড়া বা লিখিত সঠিক ডেটা বিবেচনা করা দরকার, সেটের বাইরের কোনও ডেটা বিবেচনা করা দরকার না। যাইহোক, এটি উপলব্ধি করা সমালোচিত যে আমরা যখন কোনও লেনদেনের দ্বারা পড়া ডেটা নিয়ে কথা বলছি তখন অবশ্যই আমাদের অবশ্যই কোনও এবং সমস্ত "মেটা" ডেটা (এবং মেটা অপারেশন যেমন পড়া বাধা যেমন পরীক্ষা করার দ্বারা পড়া ডেটা এবং মেটাডেটা) অন্তর্ভুক্ত করতে হবে। মেটা ডেটাগুলির উদাহরণগুলি / মেটা অপারেশনগুলি হ'ল: একটি অনন্য নতুন প্রাথমিক কী সনাক্তকরণ; অন্যটি একটি সম্পূর্ণ কলামের যোগফল; অন্যটি হ'ল কিছু অনুসন্ধান করা এবং এটির সন্ধান না করা; পরিসীমা অনুসন্ধান বা যোগফল। এটি সদৃশ প্রতিরোধের বিষয়ে @ ম্যাথিউয়ের মন্তব্যে, পাশাপাশি @ টেরোসোরাস উত্তর, যাতে তিনি রাষ্ট্রকে বিবেচনা করেন to
উদাহরণস্বরূপ, এর অর্থ হ'ল দুটি লেনদেন ওভারল্যাপ হয় (বিচ্ছিন্নতা প্রয়োজন) যখন তারা উভয় একটি সারি সন্নিবেশ করায় (একটি অনন্য প্রাথমিক কী বাধা মনে করে) কারণ কী সীমাবদ্ধতা পরীক্ষা করা সম্পূর্ণ প্রাথমিক কী কলামটি পড়ার সমার্থক। অন্য উদাহরণ হিসাবে, কোনও কিছুর সন্ধান করা এবং এটি সন্ধান করা সেই এক মানটি পড়ার মতো, তবে এটি সন্ধান না করা কলামের প্রতিটি মান দেখার মতো।
এমভিসিসি কেবল ওভারল্যাপিং বা বিরোধমূলক লেখার বিরুদ্ধে সুরক্ষা দেয়, তবে পঠনগুলির বিরুদ্ধে রক্ষা করে না (যতক্ষণ না সেই লেনদেনের দ্বারা লিখিত না হয়)। এমভিসিসিতে একটি ধারাবাহিকতা ত্রুটি পেতে, আমাদের যা যা করা দরকার তা হ'ল অন্য লেনদেনের মাধ্যমে পরিবর্তন করা এমন কিছু পড়তে হবে (যেখানে পূর্বের স্ন্যাপশট প্রাপ্তির পরে অন্য লেনদেন হয়, তবে প্রথমে প্রতিশ্রুতি দেয়), অন্য লেনদেনটি বাসী ডেটা ব্যবহার করে এবং এটি আপ-টু-ডেট ডেটা কী করবে তার সাথে তুলনা করে সেই বাসি ডেটার ভিত্তিতে আলাদাভাবে কোনও সিদ্ধান্ত নেয়। আপনি যা ভাবেন তার চেয়ে বেশি কারণ কারণ।
স্বাচ্ছন্দ্যপূর্ণ ধারাবাহিকতা হ'ল সম্ভাব্য অসামঞ্জস্যপূর্ণ বা ত্রুটিযুক্ত প্রবণ বলার আর একটি উপায়। (রিলাক্সড অবিচ্ছিন্নতাটিকে চূড়ান্ত ধারাবাহিকতায় বিভ্রান্ত করা উচিত নয়, যা "নোএসকিউএল" থেকে প্রবণতাজনিত অন্যরকম জনপ্রিয় রূপ))
আপনার প্রশ্নে, যখন আপনি বলেন যে লেনদেনের জন্য কখনই একের বেশি অবজেক্টের প্রয়োজন হয় না, এটি অবশ্যই পড়া এবং লেখার এবং মেটাডেটা (এবং মেটা অপারেশন) উভয় ক্ষেত্রেই প্রয়োগ করা উচিত, এতে ধারাবাহিকতা পরীক্ষা করা, পুরো কলামের সমষ্টি, অনুপস্থিতি পরীক্ষা, পরিসীমা অনুসন্ধান ইত্যাদি etc. ।: যদি তাই হয় তবে এতদূর ভাল।
যাহোক...
আমি আপনার প্রশ্ন থেকে এটি নিয়েছি যে আপনি পৃথক বস্তুগুলিতে স্ন্যাপশট বিচ্ছিন্নতা (এমভিসিসি) ব্যবহার করছেন (অবজেক্ট লকিংয়ের চেয়ে বলুন)। (আপনি সিএএস-এর কথাও উল্লেখ করেছেন; আমি তুলনা-ও-বদলের কথা শুনেছি, এবং, পরীক্ষা-ও-সেট করেছি, তবে চেক-অ্যান্ড-সেট করি না, যদিও আমি মনে করি এটি একই রকম)।
আপনার প্রশ্ন আপ লেখার পরামর্শ দেয় যে "অবজেক্টস" এর একাধিক ক্ষেত্র রয়েছে, অন্যথায় প্রশ্নের অযৌক্তিকতা হবে would
অতএব, আপনার স্ন্যাপশট / এমভিসিসি-পরিচালিত অবজেক্টগুলির একটি ক্ষেত্রের বেশি রয়েছে, আপনি একক বস্তুর মধ্যে স্কু লিখতে প্রবণ। যদি দুটি লেনদেন একই সময়ে একই বস্তুকে আপডেট করে তবে একজন একই বস্তুর উপর অন্য একযোগে অন্য লেনদেনের সাহায্যে বাসীর তৈরি মানটির ক্ষেত্র পড়তে পারে এবং জেনেও চালিয়ে যেতে পারে, সম্ভাব্য অসঙ্গতি (ওরফে ত্রুটি)।
আপনি এর পরিবর্তে অবজেক্ট লকিং ব্যবহার করতে পারেন, যা অন্য লেনদেনটি ইতিমধ্যে এটি করার প্রক্রিয়াতে থাকলে একই বস্তুর দিকে তাকানো থেকে এমনকি দুটি লেনদেন (আপডেটের জন্য) প্রতিরোধ করবে।
আমি বিশ্বাস করি যে এমভিসিসির ভাঙা লিখিত-সেট কেবল তুলনা মডেলটি ব্যবহার না করে স্ন্যাপশট বিচ্ছিন্নতার একটি বিকল্প ফর্ম করা যেতে পারে। সুতরাং, আপনি (অ্যালগোরিদমিকভাবে) তুলনা সেটটি কেবল লেখার মধ্যে থেকে কেবল পাঠের সেটকে অন্তর্ভুক্ত করতে প্রচার করতে পারেন। তারপরে একই অবজেক্টটি আপডেট করার জন্য দুটি লেনদেন লেখার স্কিউ লেখার পক্ষে সক্ষম হবে না (কারণ যেটি পরে প্রতিশ্রুতি দেওয়ার চেষ্টা করে তাকে বাতিল করে দেওয়া হবে)। আমি মনে করি আপনি যে সমস্যার বর্ণনা দিচ্ছেন তার উপযুক্ত সমাধান এটিই হতে পারে, কারণ আপনি এমভিসিসি আমাদের কিনবেন এমন বেশিরভাগ সুবিধা পেয়ে যাচ্ছেন, মাল্টি-অবজেক্ট লেনদেনকে বাদ দিয়ে।
(আমাদের কেবল পাঠানো বা লিখিত সঠিক এবং নির্দিষ্ট আইটেম / ক্ষেত্রগুলি বিবেচনা করতে হবে, তবে লিখিত স্কিউ (যেমন ত্রুটি) রোধ করতে মেটা অপারেশন চলাকালীন আমাদের মেটাডেটা হিসাবে অবশ্যই পড়তে হবে। , বা আমরা মেটাডেটা বিবেচনা করতে ব্যর্থ (মেটা অপারেশনগুলি দ্বারা সম্ভাব্য ব্যবহৃত), তারপরে আমাদের কাছে এমন একটি মডেল রয়েছে যা ত্রুটির অনুমতি দেবে))