আমি মনে করি আপনি একটি ভুল উপায়ে সমস্যাটি সমাধান করার চেষ্টা করছেন। আপনি যা চান তা হ'ল ডাটাবেস ধারাবাহিকতার সর্বোচ্চ সুরক্ষা। যদি দু'জন ব্যক্তি একই সময়ে একটি সঞ্চিত প্রক্রিয়া চালায় তবে ডাটাবেসের ধারাবাহিকতা লঙ্ঘন হতে পারে।
বিভিন্ন ধরণের ডাটাবেসের অসঙ্গতি থেকে রক্ষা পেতে, এসকিউএল স্ট্যান্ডার্ডটিতে চারটি লেনদেনের বিচ্ছিন্নতা স্তর রয়েছে:
- অজ্ঞাত পড়ুন যেখানে মূলত লেনদেনগুলি তাদের মূল্য হ্রাস করে, অন্যান্য লেনদেনগুলি নোংরা ডেটা দেখে। এটি ব্যবহার করবেন না!
- সংস্থাগুলি পড়ুন যেখানে লেনদেনগুলি কেবল প্রতিশ্রুতিবদ্ধ ডেটা দেখতে পায়, তবে এমন অসঙ্গতি থাকতে পারে যেখানে দুটি লেনদেন একে অপরের পায়ের আঙ্গুলের উপর দিয়ে যেতে পারে
- পুনঃপঠনযোগ্য পড়ুন যেখানে এক ধরণের অসঙ্গতি, পুনরাবৃত্তযোগ্য পাঠযোগ্য সমাধান করা হয়
- সিরিয়ালযোগ্য যা গ্যারান্টি দেয় যে এখানে কিছু ভার্চুয়াল অর্ডার রয়েছে যাতে লেনদেনগুলি সম্পাদন করলে ফলাফল কার্যকর হতে পারে যে তাদের মৃত্যুদন্ড কার্যকর হয়েছিল
যাইহোক, এসকিউএল স্ট্যান্ডার্ডের এই ডাটাবেসগুলির অসঙ্গতিগুলির জন্য লকিং ভিত্তিক পদ্ধতি রয়েছে এবং কার্য সম্পাদনের কারণে অনেক ডাটাবেসগুলি স্ন্যাপশট বিচ্ছিন্নতা ভিত্তিক পদ্ধতির গ্রহণ করে যা মূলত এই স্তরগুলি রয়েছে:
- ভিত্তিক ডাটাবেস লক করার ক্ষেত্রে একইটি পড়ুন
- SNAPSHOT IOLATION যেখানে ডাটাবেস সমস্ত ডেটার স্ন্যাপশট দেখতে পায় এবং যদি এটি কোনও সারি আপডেট করার চেষ্টা করে যা অন্য কোনও লেনদেন দ্বারা আপডেট করা হয়, তবে এটি বাতিল হয়ে যায়, তবুও এমন কিছু সুপরিচিত ব্যঙ্গি রয়েছে যা স্থান নিতে পারে
- সিরিয়ালজ্যাবল যা ভিত্তিক ডাটাবেসগুলি লক করার মতো একই, তবে এবার আলাদাভাবে প্রয়োগ করা হয়েছে, তালা নিয়ে নয় তবে নিশ্চিত করা হয়েছে যে কোনও সিরিয়ালীকরণ লঙ্ঘন নেই এবং যদি এইরকম লঙ্ঘন ধরা পড়ে তবে লেনদেন বাতিল করে
এই স্ন্যাপশট বিচ্ছিন্নতা ভিত্তিক ডাটাবেসে লেনদেনের বাতিলগুলি উদ্বেগজনক মনে হতে পারে তবে আবার প্রতিটি একক ডাটাবেস একটি অচলাবস্থার কারণে একটি লেনদেন বাতিল করে দেবে, সুতরাং কোনও লেনদেন পুনরায় চেষ্টা করতে সক্ষম হওয়ার জন্য কোনও যুক্তিসঙ্গত অ্যাপ্লিকেশন প্রয়োজন needs
আপনি যা চান সেটি সিরিয়ালিজেবল বিচ্ছিন্নতা স্তর: এটি নিশ্চিত করে যে যদি লেনদেনের পরে একের পর এক স্বাধীনভাবে মৃত্যুদন্ড কার্যকর করা হয়, তবে কোনও লেনদেনের সমান্তরাল সম্পাদনও ভাল অবস্থানে আসে। সৌভাগ্যক্রমে, মাইকেল কাহিল তার ডক্টরাল গবেষণামূলক প্রবন্ধে জানতে পেরেছেন যে কীভাবে অল্প প্রচেষ্টা করে স্নিপশট বিচ্ছিন্ন ডাটাবেসের সাহায্যে সিরিয়ালি বিচ্ছিন্নতা স্তরকে সমর্থন করা যায়।
যদি স্ন্যাপশট বিচ্ছিন্ন ডাটাবেসে একটি সিরিয়ালিজেবল বিচ্ছিন্নতা স্তর ব্যবহার করা হয় , যদি দু'জন লোক একই সাথে স্টোরেজ প্রক্রিয়াটি চালানোর চেষ্টা করে এবং তারা একে অপরের পায়ের আঙ্গুলের উপর পদক্ষেপ নেয়, তবে একটি লেনদেন বাতিল হয়ে যাবে।
এখন, এসকিউএল সার্ভার সত্যই কী সিরিয়ালিজাবল বিচ্ছিন্নতার স্তরটিকে সমর্থন করে ( সিরিয়াল কিওয়ার্ডের পিছনে স্ন্যাপশট বিচ্ছিন্নকরণের পরিবর্তে )? একদম পরিষ্কার, আমি জানি না: আমি জানি যে কেবলমাত্র ডাটাবেসই এটি সমর্থন করে পোস্টগ্রিজ এসকিউএল।
যদিও আমি এসকিউএল সার্ভারকে সুনির্দিষ্ট পরামর্শ দিতে ব্যর্থ হয়েছি তবুও আমি এখনও এই উত্তরটি পোস্ট করছি, পোস্টগ্র্রেএসকিউএল এবং অন্যান্য ডেটাবেজের ব্যবহারকারীরা যারা পোস্টগ্রাইএসকিউএল-এ স্যুইচিং বিবেচনা করতে পারে তারা আমার উত্তরটি থেকে উপকৃত হতে পারে। এছাড়াও, পোস্টগ্রিজএসকিউএল ডেটাবেস ব্যবহারকারীরা যারা পোস্টগ্রিসকিউএল এ স্যুইচ করতে পারে না তারা তাদের প্রিয় ডাটাবেস বিক্রেতাকে জেনুইন সিরিয়ালিজাবল বিচ্ছিন্নতা স্তর সরবরাহ করতে চাপ দিতে পারে ।