পটভূমি
আমি একটি ক্লায়েন্টের জন্য এমন একটি অ্যাপে কাজ করছি যাতে কিছু সামাজিক নেটওয়ার্কিং বৈশিষ্ট্য অন্তর্ভুক্ত থাকে। আমি মূলত মোবাইলের ফ্রন্ট-এন্ড বিকাশ করছিলাম তবে পরিস্থিতি আমাকেও পিছনের প্রান্তটি বিকাশের দায়িত্বে ফেলেছে।
সাধারণ ব্যাকগ্রাউন্ড হিসাবে, আমাদের সিস্টেম ব্যবহারকারীদের অন্যান্য ব্যবহারকারীদের অনুসরণ করতে এবং তারা যেগুলি অনুসরণ করছে সে সম্পর্কে বিজ্ঞপ্তিগুলি গ্রহণ করার অনুমতি দেয়, যেমনটি আপনি একটি সামাজিক নেটওয়ার্ক থেকে আশা করেছিলেন। একটি সাবধানবাচকতা হ'ল কেবলমাত্র একটি ক্ষুদ্র উপসেট (বেশিরভাগ কয়েকশ) ব্যবহারকারী অনুসরণযোগ্য হবে, এই প্রত্যাশার সাথে যে বেশিরভাগ ব্যবহারকারীর বেস এই ব্যক্তিদের অন্তত একজনকে অনুসরণ করবে।
ইউআই পাশের, আমাদের কাছে একটি নম্বর সহ একটি বিজ্ঞপ্তি বোতাম থাকবে এবং বোতামটি ক্লিক করা আপনাকে বিজ্ঞপ্তি স্ক্রিনে নিয়ে যাবে।
সমস্যাটি
আমি বিজ্ঞপ্তিগুলি প্রয়োগ করার জন্য কৌশলগুলি এবং বেশিরভাগ সংস্থানগুলিতে ডেটাবেসে এক বা একাধিক বিজ্ঞপ্তি সারণী তৈরি করার বিষয়টি খুঁজে পেয়েছি research (আমি পছন্দ করি একটি উদাহরণ হ'ল গ্রহণযোগ্য উত্তর: /programming/9735578/building-a-notifications-s systemm )।
যে বিষয়টি আমাকে ফেলে দিচ্ছে তা হ'ল বিজ্ঞপ্তিগুলির জন্য বেশিরভাগ ডাটাবেস-চালিত কৌশলগুলির জন্য প্রতিটি অনুগামীের জন্য প্রতিটি বিজ্ঞপ্তির জন্য একটি সারি সন্নিবেশ করা প্রয়োজন। সুতরাং যদি হাজার জন লোক স্যালি অনুসরণ করে তবে আমরা সংশ্লিষ্ট সারণীতে এক হাজার সারি সন্নিবেশ করবো। এটা কি স্কেলেবল? দশম বা কয়েক সহস্রাধিক ব্যবহারকারী স্যালি অনুসরণ করছেন এবং তিনি প্রতিদিন কয়েক ডজন পোস্ট করছেন এমন জায়গায় পৌঁছলে কী ঘটে?
আমার আসল ধারণাটি ছিল প্রশ্নের সাথে সমস্ত কিছু পরিচালনা করার জন্য: বিজ্ঞপ্তি বোতামের নম্বরটি আপনি সর্বশেষে বিজ্ঞপ্তি স্ক্রিনে পরিদর্শন করার সময়ের চেয়ে সাম্প্রতিক পোস্ট করা সামগ্রীতে সারি-গণনাগুলির অনুরোধের মাধ্যমে প্রাপ্ত হবে, যখন পৃথক বিজ্ঞপ্তিগুলি আরও বিশদ অনুসন্ধান থেকে উত্পন্ন হবে আপনি যখন বিজ্ঞপ্তি স্ক্রিন পরিদর্শন করেছেন। এই পদ্ধতির জন্য কোনও লেখার জন্য বা অতিরিক্ত স্টোরেজ প্রয়োজন হবে না, তবে এটি জটিল নয় এবং সম্ভবত সার্ভারটি বেশ শক্তভাবে হাতুড়ি করে।
সেটআপ
ব্যাকএন্ড (পূর্ববর্তী বিকাশকারী দ্বারা প্রতিষ্ঠিত হিসাবে) কোডআইগনিটার এবং একটি মাইএসকিউএল ডাটাবেস ব্যবহার করে। এটি বর্তমানে একটি কৃপণ গোডাডি শেয়ার্ড হোস্টিং অ্যাকাউন্টে চলছে, তবে আমি ধরে নিচ্ছি (আশা?) আমরা উত্পাদনে যাওয়ার আগে এটি আপগ্রেড হবে এবং ব্যবহারকারীর বৃদ্ধির সাথে হোস্টিং প্যাকেজটি ছোট করে দেওয়া হবে।
বর্তমানে আমাদের একমাত্র ফ্রন্ট-এন্ড একটি মোবাইল অ্যাপ্লিকেশন, তবে আমরা পরে একটি ওয়েবসাইটও তৈরির পরিকল্পনা করি। বিজ্ঞপ্তিগুলি সম্পর্কে সার্ভার থেকে রিয়েল-টাইম পুশ আপডেটগুলি পাওয়ার সাথে আমি এই মুহুর্তে উদ্বিগ্ন নই।
অভিযোজ্য বস্তু
আমি ব্যাকেন্ডগুলিতে বিশেষীকরণ করি না এবং আমি সেই বিভাগে আমার মাথা ছাড়ি। ক্লায়েন্ট এটি জানেন, এবং আমি এই প্রকৃতির একটি প্রকল্পের ক্ষেত্রটি ব্যাখ্যা করার চেষ্টা করার জন্য যথাসাধ্য চেষ্টা করেছি, তবে তারা এটি স্পষ্ট করে জানিয়েছে যে এই মুহুর্তে তারা প্রকল্পে কাজ করার জন্য অন্য কাউকে বিশ্বাস করবে না। পরীক্ষকগণ যুক্ত করা শুরু করার আগে আমাদের সম্ভবত আরও একটি মাস কাজ করতে হবে এবং আমি কোনও ধরণের পারফরম্যান্স মেট্রিক পেতে পারি। আমরা সত্যিই অনুমান করতে পারি না যে আমাদের কতজন ব্যবহারকারী থাকতে পারে বা আগামী 5 বছরে আমরা কী হার্ডওয়্যার থাকতে পারি তবে আমি মনে করি ক্লায়েন্টটি কয়েক হাজার ব্যবহারকারী বা তারও বেশি লোকের জন্য আশা করছেন।
আমি আশা করি এটি এখানে পোস্ট করা কোনও সমস্যার যথেষ্ট নির্দিষ্ট; দরকার হলে আমি তা পরিমার্জন করতে পারি। আপনার যদি কোনও প্রশ্ন থাকে বা আমি গুরুত্বপূর্ণ বিবরণ বাদ দিয়েছি দয়া করে জিজ্ঞাসা করুন।
TL; ড
- যখন ব্যবহারকারীরা কেবল একই কয়েক শতাধিক ব্যক্তির অনুসরণ করছেন তখন কি কোনও ডাটাবেস-চালিত নোটিফিকেশন সিস্টেমের দীর্ঘমেয়াদী স্কেল্যাবিলিটির জন্য নেতিবাচক প্রভাব রয়েছে?
- প্রতিটি অনুসারীর জন্য প্রতিটি বিজ্ঞপ্তির জন্য পৃথক বিজ্ঞপ্তি সারির প্রয়োজন ছাড়াই কি বিজ্ঞপ্তিগুলি ডাটাবেস-চালিত করার কোনও উপায় আছে?
- পুরো ক্যোয়ারী-চালিত নোটিফিকেশন সিস্টেমটি কি স্কেলেবল হতে পারে, বা ডিবিতে কোনও তথ্য না লেখার পাশাপাশি কোনও সুবিধা রয়েছে?
- আমি কি খুব তাড়াতাড়ি ওভারথিংক করছি? ক্লায়েন্টের সীমিত বাজেট রয়েছে এবং চূড়ান্ত পণ্যটি জনপ্রিয় হবে কিনা তা আমরা কীভাবে জানাতে পেরেছি, এখনই যদি এমন কিছু তৈরি করা উচিত যা আমরা এটির জন্য উপযুক্ত হয়ে উঠি তবে এটি অনুকূল হয়ে উঠার বিষয়ে চিন্তা করতে পারি?