এই প্রশ্নটি স্থাপত্যের সেরা অভ্যাসগুলি সম্পর্কে।
আমাদের বর্তমান আর্কিটেকচার
আমার একটি পিএইচপি ক্লাস রয়েছে যা ব্যবহারকারীর তথ্যের জন্য মাইএসকিউএল অ্যাক্সেস করে। এটি কল করুন User
। User
বহুবার অ্যাক্সেস করা হয়েছে, তাই আমরা লোড হ্রাস করতে ক্যাশে স্তরগুলি প্রয়োগ করেছি।
প্রথম স্তরটি আমরা "প্রতি অনুরোধ" ক্যাশে বলি। মাইএসকিউএল থেকে ডেটা পুনরুদ্ধার করার পরে, আমরা একটি ব্যক্তিগত সম্পত্তিতে ডেটা সংরক্ষণ করি User
। তথ্যের জন্য পরবর্তী কোনও অনুরোধ মাইএসকিউএল থেকে ডেটা পুনরায় অনুরোধ করার পরিবর্তে সম্পত্তিটি ফেরত দেয়।
যেহেতু ওয়েব অনুরোধটি প্রতি অনুরোধের ভিত্তিতে বেঁচে থাকে এবং মারা যায়, এই ক্যাশেটি কেবলমাত্র একক অনুরোধে অ্যাপ্লিকেশনটিকে মাইএসকিউএল অ্যাক্সেস করতে বাধা দেয়।
আমাদের দ্বিতীয় স্তরটি মেমক্যাচড। যখন ব্যক্তিগত সম্পত্তি খালি থাকে, আমরা প্রথমে ডেটার জন্য মেমক্যাচড চেক করি। মেমক্যাচড ফাঁকা থাকলে আমরা ডেটাগুলির জন্য মাইএসকিউএলকে জিজ্ঞাসা করি, মেমক্যাচ আপডেট করি এবং এর ব্যক্তিগত সম্পত্তি আপডেট করি User
।
প্রশ্নটি
আমাদের অ্যাপ্লিকেশনটি একটি গেম, এবং কখনও কখনও এটি আবশ্যক হয় যে কিছু ডেটা যতটা সম্ভব আপ টু ডেট। প্রায় পাঁচ মিনিটের ব্যবধানে, ব্যবহারকারীর ডেটা পড়ার অনুরোধটি 10 বা 11 বার হতে পারে; তারপরে একটি আপডেট হতে পারে। পরবর্তী পড়ার অনুরোধগুলি আপ টু ডেট হওয়া বা গেম মেকানিক্স ব্যর্থ হওয়া দরকার।
সুতরাং, আমরা যা করেছি তা হ'ল একটি টুকরো কোড প্রয়োগ করে যা এক্সপ্লোর করা হয় যখন একটি ডাটাবেস আপডেট ঘটে। এই কোডটি আপডেট হওয়া ডেটা সহ মেমচেডে কীটি সেট করে, তাই মেমকেচেড পরবর্তী সমস্ত অনুরোধগুলি আপ টু ডেট।
এটি কি সর্বোত্তম? এই জাতীয় "লিভিং ক্যাশে" বাছাই করার চেষ্টা করার সময় কি কোনও পারফরম্যান্স উদ্বেগ বা অন্যান্য "গোটচস" রয়েছে সে সম্পর্কে আমাদের সচেতন হওয়া উচিত?