কম্পিউটার

ক্যাশে সামঞ্জস্য বজায় রাখার তিনটি উপায়

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

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

ক্যাশে ধারাবাহিকতার তিনটি বাধা

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

1. যখন প্রাথমিক ডাটাবেসের পরিবর্তনগুলি ক্যাশে প্রতিফলিত হয় না

কারণ একটি ক্যাশের মাধ্যমে ডেটা অ্যাক্সেস করা, সংজ্ঞা অনুসারে, প্রাথমিক ডাটাবেসের মাধ্যমে ডেটা অ্যাক্সেস করার চেয়ে দ্রুত, যদি একটি নির্দিষ্ট আইটেম অনুরোধ করা হয়, ক্যাশে প্রথমে পরামর্শ করা হবে। আইটেমটি ক্যাশে বিদ্যমান রয়েছে বলে ধরে নিচ্ছি, এটি প্রাথমিক ডাটাবেসের চেয়ে অনেক দ্রুত ফেরত আসবে। এই কৌশলটি ক্যাশে-সাইড প্যাটার্ন নামে পরিচিত . ক্যাশে প্রথমে ডিফল্টরূপে চেক করা হয়। ডেটা ক্যাশে না থাকলে, অ্যাপ্লিকেশনটি প্রাথমিক ডাটাবেসকে জিজ্ঞাসা করে এবং ব্যবহারকারীর কাছে ফিরে যাওয়ার পথে ফলাফলটি ক্যাশে জমা করে৷

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

চ্যালেঞ্জটি মিষ্টি স্পটটি খুঁজে বের করার ক্ষেত্রে আসে, এক ধরণের গোল্ডিলক্স এলাকা যা খুব ঘন ঘন আপডেটের জন্য চেক করা বা যথেষ্ট নয়। অবশ্যই, যদি কোনও ব্যবহারকারী এই ফাঁকের সময় অপ্রচলিত ডেটা অ্যাক্সেস করার চেষ্টা করে, তাহলে সেই জুয়া হারিয়ে যাবে৷

ক্যাশে সামঞ্জস্য বজায় রাখার তিনটি উপায়

২. যখন ক্যাশে ফলাফল আপডেট করতে বিলম্ব হয়

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

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

3. যখন ক্যাশে করা নোডগুলি জুড়ে অসঙ্গতি থাকে

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

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

ক্যাশে অসামঞ্জস্যতার খরচ

একটি ক্যাশে ডাটাবেসের সমস্ত সুবিধার জন্য, ক্যাশে অসঙ্গতির সম্ভাব্যতা সম্ভবত এটির সবচেয়ে সুস্পষ্ট ত্রুটি। কিন্তু সমস্যা কত বড়? শেষ পর্যন্ত, ক্যাশে অসামঞ্জস্যতার খরচ প্রসঙ্গের উপর নির্ভর করে।

কিছু ক্যাশে অসঙ্গতি অনেক পরিণতি ছাড়াই ঘটতে পারে। উদাহরণস্বরূপ, যদি আপনার ক্যাশে থাকা মোট "লাইক" আপনার প্রাথমিক ডাটাবেসের প্রকৃত মোটের সাথে সাময়িকভাবে সিঙ্কের বাইরে থাকে, তাহলে সংক্ষিপ্ত বৈপরীত্য সমস্যা সৃষ্টি করার বা এমনকি লক্ষ্য করা যাবে না।

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

অসংগতি প্রতিরোধের তিনটি উপায়

সৌভাগ্যবশত, উপরের ক্যাশে অসামঞ্জস্যতার সম্ভাব্য উত্সগুলির প্রতিটির জন্য, একটি সংশ্লিষ্ট সংখ্যক সমাধান রয়েছে৷

1. ক্যাশে অবৈধতা

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

২. রাইট-থ্রু ক্যাশিং

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

3. রাইট-বিহাইন্ড ক্যাশিং

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

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

রেডিস এন্টারপ্রাইজ উদ্ধারের জন্য

ক্যাশে অকার্যকরকরণ ছাড়াও, রাইট-থ্রু এবং রাইট-বিহাইন্ড ক্যাশিং অনেক পরিস্থিতির সমাধান করতে পারে যা আপনাকে ক্যাশে সামঞ্জস্য অর্জন করতে সহায়তা করে। কিন্তু কোনো সমস্যার উত্তর খোঁজা তা বাস্তবায়ন করার মত নয়।

ক্যাশে সামঞ্জস্য বজায় রাখার তিনটি উপায়

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

রেডিস এন্টারপ্রাইজের অনন্য সক্রিয়-অ্যাকটিভ জিও-ডুপ্লিকেশন অত্যাধুনিক অ্যালগরিদম ব্যবহার করে যা সম্ভাব্য লেখার দ্বন্দ্ব মোকাবেলা করার জন্য ডিজাইন করা হয়েছে যা ক্যাশে অসঙ্গতি সৃষ্টি করতে পারে। এই অ্যালগরিদমগুলি দ্বন্দ্ব-মুক্ত প্রতিলিপিকৃত ডেটা প্রকারের (CRDTs) উপর ভিত্তি করে তৈরি করা হয়েছে, নিশ্চিত করে যে একাধিক প্রতিলিপি থেকে লেখাগুলিকে এমনভাবে একত্রিত করা যেতে পারে যাতে কার্যকরভাবে সামঞ্জস্য বজায় থাকে৷

হবগোবলিনের জন্য হুরে!

যেহেতু আপনার স্থাপত্যের বৃদ্ধির সাথে সাথে ক্যাশে সামঞ্জস্য বজায় রাখার চ্যালেঞ্জ আরও জটিল এবং ক্রমবর্ধমান ফলস্বরূপ হয়ে ওঠে, আপনার ব্যবসার যে ধারাবাহিকতা প্রয়োজন এবং আপনার গ্রাহকরা যেটি প্রত্যাশা করে তা নির্ভরযোগ্যভাবে সরবরাহ করার জন্য আপনার একটি এন্টারপ্রাইজ-স্তরের ক্যাশিং সমাধান প্রয়োজন৷

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

ক্যাশিং এর পুরো গল্প পান। পড়ুন রেডিসের সাথে স্কেলে ক্যাশিং , লি অ্যাচিসন দ্বারা।


  1. Windows 11 এ ক্যাশে সাফ করার 14 উপায়

  2. এক্সেল এ ডেটা আমদানি করা (3টি উপযুক্ত উপায়)

  3. কিভাবে এক্সেলে ডেটা লুকাবেন (6টি সহজ উপায়)

  4. এক্সেলে ডেটা ম্যাপিং কীভাবে করবেন (5টি সহজ উপায়)