উত্তর:
যদি আপনি শারডিং ব্যবহার করে থাকেন তবে "লোড ব্যালেন্সার" হ'ল মঙ্গোস প্রক্রিয়া - আসলে এটি আরও একটি রাউটারের মতো - এটি কনফিগার ডাটাবেসের একটি ইন-মেমরি অনুলিপি রাখে এবং শার্ড কীটির ভিত্তিতে সিদ্ধান্ত নিতে পারে।
যদি আপনি বোঝাতে চাইছেন অভিন্ন প্রতিলিপি সেটগুলি বা সেটের সদস্যদের জুড়ে ভারসাম্য বজায় রাখা হয় তবে মঙ্গোস সেই দৃশ্যটিও হ্যান্ডেল করার জন্য একটি বৈশিষ্ট্য অনুরোধ রইল ( https://jira.mongodb.org/browse/SERVER-1594 ), তবে দেওয়া হয়েছে ড্রাইভাররা কীভাবে এটি পরিচালনা করে তা সত্যিই প্রয়োজনীয় নয় (এটি চালকদের কম জটিল করে তুলবে)।
একটি একক প্রতিরূপে, আপনি লেখাগুলি বিতরণ করতে পারবেন না, তাদের সকলকে অবশ্যই প্রাথমিকের দিকে যেতে হবে। আপনি যথাযথ হিসাবে বিবেচনা হিসাবে পঠন পছন্দগুলি মাধ্যমে ইতিমধ্যে দ্বিতীয়গুলিতে পাঠ্য বিতরণ করতে পারেন । ড্রাইভার কোনটি প্রাথমিক এবং কোনটি মাধ্যমিক কী তা সঠিকভাবে অনুসন্ধান করে।
'লোড ব্যালেন্সিং' শারডিংয়ের মাধ্যমে অর্জন। শারডিংয়ের মাধ্যমে আপনি স্বতন্ত্র শারডগুলিতে লেখাগুলি / আপডেটগুলি বিতরণ করেন। কোনও নির্দিষ্ট অ্যালগরিদম নেই যা এটি করে মঙ্গো আপনাকে যে কী (গুলি) সমন্বয় করতে চায় তার উপর ভিত্তি করে ডেটা বিভাজন করতে দেয়। সেরা পার্টিশন অ্যালগরিদমগুলি হ'ল ক্রমযুক্ত এন্ট্রি এবং একটি এলোমেলো সংমিশ্রণ রয়েছে।
উদাহরণস্বরূপ একটি ব্যবহারকারীর আইডি নিম্নলিখিত হিসাবে বিভাজন করা যেতে পারে
xx-sha1(user email)
xx = time sequence
সচেতন থাকুন যে শর্ডিং বাস্তবায়নের জন্য আপনার কাছে তিনটি কনফিগার সার্ভার এবং ডেটা নোড থাকা দরকার। অপ্রয়োজনীয়তার জন্য ডেটা নোডগুলি রেপ্লিকা সেটগুলিতে বিভক্ত করা যেতে পারে এবং সেকেন্ডারি থেকে ডেটা পড়তে (কেবলমাত্র যদি আপনি পারেন) ব্যবহার করতে পারেন। আমি কেবল বলি যদি আপনি ডেটা পড়তে পারেন তবে প্রতিলিপিটি অ্যাসিনক্রোনাস হয়ে গেছে সুতরাং নতুন ডেটা সেকেন্ডারিগুলিতে কোয়েরি সময়ে পাওয়া যাবে তার কোনও গ্যারান্টি নেই।
মনে রাখবেন যে পার্টিশন অ্যালগরিদম সম্পূর্ণ আপনার উপর নির্ভর করে এবং আপনার অ্যাপ্লিকেশন প্রয়োজনীয়তার সাথে মিলিত হওয়া উচিত। এছাড়াও আপনি বিবেচনা করা উচিত যদি আপনি কেবল ডেটা লিখতে চান এবং কেবলমাত্র মাঝে মাঝে পড়েন বা আপনাকে এটি লেখার ঠিক পরে পড়তে হবে।