ক্যাশে ফিউশন, Oracle ® RealApplication Clusters (RAC) তে দুটি দৃষ্টান্তের মধ্যে ব্লক স্থানান্তর ছাড়া আর কিছুই নয়, RAC-এর প্রধান এবং সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য।
পরিচয়
ওরাকল আরএসি ক্যাশে ফিউশনে ওরাকলের মতে, প্রতিটি "উদাহরণ [একটি] আরএসি ক্লাস্টারের নিজস্ব স্থানীয় বাফার ক্যাশে আছে যেখানে এটি ক্যাশে কার্যকারিতা করে। কিন্তু যখন একাধিক ব্যবহারকারী বিভিন্ন নোডের সাথে সংযুক্ত থাকে, [ব্যবহারকারীদের] প্রায়ই [অন্য] উদাহরণের মালিকানাধীন একটি ডেটা ব্লক অ্যাক্সেস বা লক করতে হয়।
“এই ধরনের ক্ষেত্রে, [অনুরোধের] উদাহরণ সেই ডেটা ব্লকের জন্য একটি হোল্ডিং উদাহরণের অনুরোধ করে এবং [একটি] ইন্টারকানেক্ট মেকানিজমের মাধ্যমে এটি অ্যাক্সেস করে। এই ধারণাটি ক্যাশ ফিউশন নামে পরিচিত .”
একক দৃষ্টান্ত
ক্যাশে ফিউশন অন্বেষণ করার আগে, আসুন দেখে নেওয়া যাক নন-RAC ডাটাবেসগুলি কীভাবে আচরণ করে যখন একটি ডেটা ব্লকের অনুরোধ ঘটে৷
নিম্নলিখিত একটি একক উদাহরণে চার-পদক্ষেপ লেনদেন প্রক্রিয়া (গোপির ক্যাশে ফিউশন ব্লগ পোস্ট থেকে আঁকা:
- যখন একজন ব্যবহারকারী সম্প্রতি সংশোধিত ব্লক পড়েন, তখন এটি ব্লকে একটি সক্রিয় লেনদেন খুঁজে পেতে পারে।
- লেনদেনটি করা হয়েছে কিনা তা নির্ধারণ করতে ব্যবহারকারীকে পূর্বাবস্থায় ফেরানো সেগমেন্ট হেডারটি পড়তে হবে৷
- যদি লেনদেনটি প্রতিশ্রুতিবদ্ধ না হয়, প্রক্রিয়াটি ব্লকের ডেটা ব্যবহার করে বাফার ক্যাশে ব্লকের একটি সামঞ্জস্যপূর্ণ রিড (CR) সংস্করণ তৈরি করে এবং দ্য আনডো সেগমেন্টে সংরক্ষিত ডেটা।
- যদি পূর্বাবস্থায় ফেরানো সেগমেন্ট দেখায় যে লেনদেন করা হয়েছে, প্রক্রিয়াটিকে ব্লকটি পুনরায় দেখতে হবে এবং ব্লকটি পরিষ্কার করতে হবে এবং পরিবর্তনগুলির জন্য পুনরায় কাজ তৈরি করতে হবে৷
এখন, আসুন RAC-তে একই দৃশ্য দেখি একটি দুই-ইনস্ট্যান্স ক্লাস্টার সহ, যা ক্যাশে ফিউশন নামে পরিচিত।
ক্যাশ ফিউশন
৷গোপী চালিয়ে যান, “আরএসি-তে, একই ডাটাবেস ফাইল অ্যাক্সেস করার [দুই] বা তার বেশি ঘটনা রয়েছে [যেগুলি একই স্টোরেজে (যেমন, এএসএম)]। প্রতিটি দৃষ্টান্তের নিজস্ব SGA, ব্যাকগ্রাউন্ড প্রসেস রয়েছে, যার অর্থ প্রতিটি দৃষ্টান্তের নিজস্ব বাফার ক্যাশে রয়েছে (প্রতিটি উদাহরণে স্থানীয়)। এই বাফার [sic] ক্যাশগুলি স্বতন্ত্রভাবে [দ্য] ইনস্ট্যান্স লেভেলে এবং [দ্য] ডাটাবেস স্তরে একসাথে ফিউজ করে একক সত্তা (গ্লোবাল ক্যাশে) গঠন করে [তাদের মধ্যে ডেটা ব্লকগুলি ভাগ করে নেওয়ার জন্য]। এটিকে আমরা ক্যাশ ফিউশন বলে থাকি . ক্যাশে ফিউশন একটি ক্লাস্টারে ইনস্ট্যান্সের মধ্যে ডেটা ব্লকের ক্যাশে-টু-ক্যাশে স্থানান্তর প্রদান করতে একটি উচ্চ-গতির IPC আন্তঃসংযোগ ব্যবহার করে। এই ডেটা-ব্লকশিপিং ডিস্ক I/O বাদ দেয় এবং রিড/রাইট কনকারেন্সি অপ্টিমাইজ করে।"
এই বোঝাপড়া আমাদের গ্লোবাল ক্যাশে সার্ভিসে (GCS) নিয়ে আসে, যা দৃষ্টান্তগুলির মধ্যে স্থানান্তর ব্লক করার জন্য দায়ী৷
গোপির পোস্টে উল্লিখিত GCS ব্যাকগ্রাউন্ড প্রক্রিয়াগুলি নিম্নরূপ:
- গ্লোবাল ক্যাশে সার্ভিস প্রসেস (LMSn)
- গ্লোবাল এনকিউ সার্ভিস ডেমন (LMD)
গোপী বলেন, “এই ব্যাকগ্রাউন্ড প্রসেসগুলিতে যাওয়ার আগে, [sic] দেখা যাক কীভাবে ওরাকল ডেটা ব্লকের সাথে আচরণ করে এবং কীভাবে সেগুলি পরিচালনা করে৷
"ওরাকল ডেটা ব্লকগুলিকে সম্পদ হিসাবে বিবেচনা করে। এই সম্পদগুলির প্রতিটিকে উদাসীন মোড ধরে রাখা যেতে পারে, যা ডেটা অখণ্ডতা বজায় রাখার জন্য [একটি] গুরুত্বপূর্ণ প্রক্রিয়া। রিসোর্স হোল্ডার ডেটা পরিবর্তন করতে চান বা ডেটা পড়তে চান কিনা তার উপর নির্ভর করে এই মোডগুলিকে [তিন] প্রকারে শ্রেণীবদ্ধ করা হয়।"
গোপী মোডগুলিকে নিম্নরূপ তালিকাভুক্ত করে:
- নাল (N) মোড :নাল মোড সাধারণত একটি স্থানধারক হিসাবে রাখা হয়৷
- শেয়ারড (এস) মোড৷ :এই মোডে, একটি ডেটা ব্লক অন্য সেশন দ্বারা পরিবর্তিত হয় না কিন্তু সমসাময়িক ভাগ করা অ্যাক্সেসের অনুমতি দেয়৷
- এক্সক্লুসিভ (X) মোড :এই স্তর হোল্ডিং প্রক্রিয়া একচেটিয়া অ্যাক্সেস মঞ্জুরি. অন্যান্য প্রক্রিয়াগুলি সংস্থানে লিখতে পারে না। এতে সামঞ্জস্যপূর্ণ রিড ব্লক থাকতে পারে।
গ্লোবাল ক্যাশে সার্ভিস ডেমন (LMSn)
যখন একটি দৃষ্টান্ত থেকে একটি অনুরোধ আসে, তখন গোপী আমাদের বলেন, “জিসিএস মেমরিতে ব্লক কপিগুলি রেখে অন্য দৃষ্টান্তে ব্লক শিপিং সংগঠিত করে৷ এই জাতীয় প্রতিটি অনুলিপিকে একটি অতীত চিত্র (PI) বলা হয়। [] নোংরা পর্যায়ে কতবার ব্লক অনুরোধ করা হয়েছিল তার উপর নির্ভর করে ডেটা ব্লকের একাধিক [এক] পিআই থাকাও সম্ভব।”
দ্রষ্টব্য: গোপী যোগ করে, "আপনি যদি একটি ডেটা ব্লক পড়তে চান তবে এটি অবশ্যই [ক] সামঞ্জস্যপূর্ণ অবস্থায় পড়তে হবে। আপনাকে অন্যদের দ্বারা করা পরিবর্তনগুলি পড়ার অনুমতি দেওয়া হয় না।"
গ্লোবাল এনকিউ সার্ভিস ডেমন (LMD)
গোপী ব্যাখ্যা করেন, “গ্লোবালেনকিউ সার্ভিস (জিইএস) সমস্ত ওরাকল সারিবদ্ধ প্রক্রিয়ার অবস্থা ট্র্যাক করে। GES ডিকশনারি ক্যাশে লক, লাইব্রেরি ক্যাশে লক, এবং লেনদেনের উপর সঙ্গতি নিয়ন্ত্রণ করে। এটি একাধিক দৃষ্টান্ত দ্বারা অ্যাক্সেস করা সংস্থানগুলির জন্য এই অপারেশনটি সম্পাদন করে। GES ডেটা ফাইলগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করে এবং ফাইলগুলি নিয়ন্ত্রণ করে তবে ডেটা ব্লকগুলির জন্য নয়। "
নিম্নলিখিত GES পরিচালিত সংস্থানগুলি যা গোপি শেয়ার করে:
- লেনদেন লকগুলি৷ :এটি একচেটিয়া মোডে অর্জিত হয় যখন একটি লেনদেন পরিবর্তন শুরু করে (সন্নিবেশ করা, আপডেট করা, ইত্যাদি) লেনদেনটি প্রতিশ্রুতিবদ্ধ না হওয়া পর্যন্ত বা ফিরে আসা পর্যন্ত লকটি রাখা হয়৷
- লাইব্রেরি ক্যাশে লকগুলি৷ :যখন কোনো ডাটাবেস অবজেক্ট (যেমন একটি টেবিল, ভিউ, প্যাকেজ, প্যাকেজবডি, […] এবং আরও কিছু) SQL, DML বা DDL, PL/SQL, বা জাভা স্টেটমেন্টের পার্সিং বা কম্পাইলিংয়ের সময় উল্লেখ করা হয়, প্রক্রিয়া পার্সিং বা স্টেটমেন্ট কম্পাইল করলে সঠিক মোডে লাইব্রেরি ক্যাশে লক পাওয়া যায়।
- অভিধান ক্যাশে লক :গ্লোবাল সারিগুলি ক্লাস্টার ডাটাবেস মোডে ব্যবহৃত হয়। ক্লাস্টার ডাটাবেসের সমস্ত ওরাকল ইনস্ট্যান্সের জন্য থিডেটা ডিকশনারি কাঠামো একই।
- টেবিল লকগুলি৷ :এগুলি হল GES লক যা সমগ্র টেবিল(গুলি) রক্ষা করে৷ একটি টেবিল পরিবর্তন করা হলে একটি লেনদেন একটি টেবিল লক অর্জন করে। একটি টেবিল লক বিভিন্ন মোডে রাখা যেতে পারে:নাল (N), সারি শেয়ার (RS), রো এক্সক্লুসিভ (RX), শেয়ার লক (S), শেয়ার রো এক্সক্লুসিভ (SRX), বা এক্সক্লুসিভ (X)।
অতীত এবং সামঞ্জস্যপূর্ণ পঠিত ছবি
মূল দৃশ্যে যাওয়ার আগে, আমাদের অতীত চিত্র (PI) এবং সামঞ্জস্যপূর্ণ (CR) চিত্রগুলি বুঝতে হবে৷
অতীতের ছবি
রোহিত গুপ্ত তার নিবন্ধে, ওরাকল আরএসি ক্যাশে ফিউশন শেয়ার করেছেন, “অতীত চিত্রের ধারণাটি আরএসি সেটআপের জন্য খুব নির্দিষ্ট। আপডেটের জন্য একটি ডেটা ব্লকে একচেটিয়া লকন রাখা একটি উদাহরণ বিবেচনা করুন। যদি আরএসি-তে অন্য কোনও উদাহরণে ব্লকের প্রয়োজন হয়, হোল্ডিং ইনস্ট্যান্স তার বাফার ক্যাশে ব্লকের একটি পিআই (অতীত চিত্র) রেখে অনুরোধকারী উদাহরণে ব্লক পাঠাতে পারে (ডিস্কে এটি লেখার পরিবর্তে)। মূলত, PI হল ডিস্কে ব্লক লেখার আগে ডেটা ব্লকের অনুলিপি৷"
সঙ্গত পঠিত চিত্র:
গুপ্তা চালিয়ে যান, “যখন একটি নির্দিষ্ট ব্লকে লেনদেন[A1] দ্বারা অ্যাক্সেস/পরিবর্তন করা হয় তখন সামঞ্জস্যপূর্ণ পাঠের প্রয়োজন হয় এবং একই সময়ে আরেকটি লেনদেন [A2] ব্লকটি অ্যাক্সেস/পড়ার চেষ্টা করে। যদি [A1] প্রতিশ্রুতিবদ্ধ না হয়ে থাকে, তবে [A2] এগিয়ে যাওয়ার জন্য ব্লকের একটি ধারাবাহিক পঠিত [(অ-পরিবর্তিত ব্লক)] অনুলিপি প্রয়োজন। সেই ব্লকের জন্য UNDO ডেটা ব্যবহার করে একটি CR কপি তৈরি করা হয়৷”
ক্যাশ ফিউশন পরিস্থিতি
ক্যাশে ফিউশনের তিনটি ভিন্ন পরিস্থিতি রয়েছে:
- পড়ুন-পঠন দৃশ্য
- পড়া-লেখার দৃশ্য
- লিখুন-লিখুন দৃশ্যকল্প
পঠন-পড়া দৃশ্য:
এটি একটি অ-সমালোচনামূলক দৃশ্য কারণ যে দৃষ্টান্তটি একটি ব্লকের অনুরোধ করে এবং যে দৃষ্টান্তটি অনুরোধটিকে ব্লক করে উভয়ই পঠিত লেনদেনের অনুরোধ করে৷ এখানে, কোন একচেটিয়া লককোকার নেই। ইনস্ট্যান্স বি জিসিএস-এর কাছে একটি রিড ব্লকের অনুরোধ করে। GCS ব্লকের প্রাপ্যতা পরীক্ষা করে, যেটি উদাহরণ A এর মালিকানাধীন, এবং একটি ভাগ করা লক অর্জন করে। এখন GCS অনুরোধ করে যে Instance Aship অনুরোধ করা ব্লকটি ইন্সট্যান্স বি.
পঠন-লেখা দৃশ্য:
এটি একটি সমালোচনামূলক দৃশ্য।
ইনস্ট্যান্স A একটি ডেটা ব্লক আপডেট করছে, তাই এটিকে একটি এক্সক্লুসিভ লক অর্জন করতে হবে। কিছুক্ষণ পরে, ইনস্ট্যান্স বি একই ডেটা ব্লকের জন্য GCS-কে একটি পড়ার অনুরোধ পাঠায়।
GCS চেক করে এবং দেখে যে ইনস্ট্যান্স একই ব্লকে একটি এক্সক্লুসিভ লক পেয়েছে। তাই, GCS ইনস্ট্যান্স A কে ব্লক ছেড়ে দিতে বলে। এখন, ইন্সট্যান্স A তার নিজস্ব বাফার ক্যাশে একটি CR ইমেজ তৈরি করে এবং সেই অনুযায়ী জিসিএসকে ইনস্ট্যান্স বি-তে পাঠানোর জন্য সূচিত করে।
জিসিএস সিআর ইমেজ তৈরির সাথে জড়িত, এবং ক্যাশে ফিউশন চালু করার জন্য অনুরোধকৃত উদাহরণে এটি পাঠানো হয়।
লিখুন-লিখুন দৃশ্যকল্প
ইনস্ট্যান্স এ এবং ইনস্ট্যান্স বি উভয়ই একটি ডেটা ব্লকে একটি এক্সক্লুসিভ লক অর্জন করার চেষ্টা করছে।
ইনস্ট্যান্স বি জিসিএস-এ একটি ব্লক অনুরোধ পাঠায়। GCS উপলব্ধতা পরীক্ষা করে এবং খুঁজে পায় যে আহাস একটি লক অর্জন করেছে। এইভাবে, GCS ইন্সট্যান্স A-কে ইন্সট্যান্স B-এর জন্য ব্লক রিলিজ করতে বলে। এখন, ইনস্ট্যান্স A তার বাফারে তার নিজস্ব বর্তমান ব্লকের একটি PI তৈরি করে, পুনরায় এন্ট্রি করে এবং GCS কে ব্লকটিকে ইন্সট্যান্স B-এ পাঠানোর জন্য অবহিত করে।
ইন্সট্যান্স বি এখন ব্লক ব্যবহার করে এবং যথারীতি পরিবর্তন করে।
CR এবং PI-এর মধ্যে প্রধান পার্থক্য
গুপ্তা পিআই বনাম সিআর ইমেজ সম্পর্কে নিম্নলিখিত চূড়ান্ত চিন্তা যোগ করেছেন:“[ক] রিড-রাইট ধরনের বিরোধ এড়াতে [দ্যা] সিআর ইমেজ পাঠানো হয়েছিল কারণ অনুরোধকারী ইন্সট্যান্স একটি লেখার ক্রিয়াকলাপ সম্পাদন করতে চায় না এবং তাই এর প্রয়োজন হবে না ব্লকে একচেটিয়া লক। এইভাবে একটি রিড অপারেশনের জন্য, ব্লকের CR ইমেজই যথেষ্ট। যেহেতু লিখুন-লিখুন বিতর্কের জন্য, অনুরোধকারী উদাহরণটিকেও ডেটা ব্লকের জন্য একটি একচেটিয়া লকন অর্জন করতে হবে। লেখার ক্রিয়াকলাপের জন্য লকটি অর্জন করতে, এটির জন্য প্রকৃত ব্লক প্রয়োজন এবং CR চিত্র নয়। তাই হোল্ডিং ইন্সট্যান্স প্রকৃত ব্লক পাঠায় কিন্তু ব্লকটি ডিস্কে লেখা না হওয়া পর্যন্ত ব্লকের PI রাখতে পারে। সুতরাং, যদি কোনও দৃষ্টান্ত ব্যর্থতা বা ক্র্যাশ হয়, ওরাকল সমস্ত RAC দৃষ্টান্ত জুড়ে PIfrom ব্যবহার করে ব্লক তৈরি করতে সক্ষম। একবার ব্লকটি ডিস্কে লেখা হয়ে গেলে, ক্র্যাশের ক্ষেত্রে এটিকে পুনরুদ্ধারের প্রয়োজন হবে না, এবং তাই সংশ্লিষ্ট PIগুলি বাতিল করা যেতে পারে।"
আমাদের ডেটা পরিষেবাগুলি সম্পর্কে আরও জানুন৷
৷কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাব ব্যবহার করুন। আপনি আমাদের সাথে একটি কথোপকথনও শুরু করতে পারেন৷