একটি প্রতিরূপ সেট মানে আপনার কাছে মঙ্গোডিবি এর একাধিক উদাহরণ রয়েছে যা প্রতিটি একে অপরের সমস্ত ডেটা আয়না করে। একটি প্রতিরূপ সেট একটি মাস্টার ("প্রাথমিক" নামে পরিচিত) এবং এক বা একাধিক স্লেভ (ওরফে মাধ্যমিক) নিয়ে গঠিত। রিড-অপারেশনগুলি যে কোনও দাস দ্বারা পরিবেশন করা যেতে পারে, যাতে আপনি রেপ্লিকা সেটটিতে আরও ক্রীতদাস যোগ করে পঠন-কার্যকারিতা বাড়িয়ে তুলতে পারেন (আপনার ক্লায়েন্টের অ্যাপ্লিকেশনটি আসলে বিভিন্ন সেট-সদস্যকে ব্যবহার করতে সক্ষম হয়)) তবে লেখার ক্রিয়াগুলি সর্বদা প্রতিলিপি-সেট মাস্টারের উপর সঞ্চালিত হয় এবং তারপরে দাসদের কাছে প্রচার করা হয়, সুতরাং যখন আপনি আরও দাস যুক্ত করেন তখন লেখাগুলি দ্রুততর হয় না।
প্রতিরূপ-সেটগুলিও ত্রুটি-সহনশীলতার প্রস্তাব দেয়। প্রতিরূপ-সেটের কোনও সদস্য নিচে নেমে গেলে, অন্যরা তা গ্রহণ করে। মাস্টার নীচে গেলে, দাসরা নতুন মাস্টারকে নির্বাচন করবে। এজন্য উত্পাদনশীল মোতায়েনের জন্য সর্বদা কমপক্ষে তিনটি সার্ভারের প্রতিলিপি-সেট হিসাবে ব্যবহার করার পরামর্শ দেওয়া হয় , যার মধ্যে দুটি হোল্ডিং ডেটা (তৃতীয়টি একটি ডেটা-কম "আরবিটার" যা নতুন মাস্টার নির্ধারণের জন্য প্রয়োজন দাসদের একজন নেমে যায়)।
একটি শার্যাড ক্লাস্টারের অর্থ হ'ল ক্লাস্টারের প্রতিটি শারড (যা রেপ্লিকা-সেটও হতে পারে) ডেটা অংশের যত্ন নেয়। প্রতিটি অনুরোধ, উভয়ই পড়ে এবং লেখেন, ক্লাস্টার দ্বারা পরিবেশন করা হয় যেখানে ডেটা থাকে। এর অর্থ হ'ল পঠন-লেখার কর্মক্ষমতা উভয়ই একটি ক্লাস্টারে আরও শারড যুক্ত করে বাড়ানো যেতে পারে। প্রতিটি সংকলনের শার্ট কী দ্বারা কোন ডকুমেন্টের উপর নির্ভর করে কোন শারডটি নির্ধারিত হয় । এটি এমনভাবে বাছাই করা উচিত যাতে সমস্ত ক্লাস্টারে ডেটা সমানভাবে বিতরণ করা যায় এবং যাতে শারড-কী থাকে সেখানে সবচেয়ে সাধারণ প্রশ্নগুলির জন্য এটি স্পষ্ট হয়ে যায় (উদাহরণস্বরূপ: আপনি যখন প্রায়শই জিজ্ঞাসা করেন তখন user_name
আপনার শারড-কীটি অন্তর্ভুক্ত করা উচিত) ক্ষেত্র user_name
যাতে প্রতিটি ক্যোয়ারিকে কেবলমাত্র একটি শार्ডে দেওয়া যেতে পারে যার সাথে ডকুমেন্টটি থাকে)।
অপূর্ণতা হ'ল দোষ-সহনশীলতা ভোগ করে। যখন ক্লাস্টারের একটি শারড নীচে যায়, তখন এর কোনও ডেটা অ্যাক্সেসযোগ্য। সেই কারণে ক্লাস্টারের প্রতিটি সদস্যের একটি প্রতিরূপ-সেট হওয়া উচিত। এটি প্রয়োজন হয় না। আপনি যখন উচ্চ-প্রাপ্যতার বিষয়ে চিন্তা করবেন না, তখন একটি শারড কোনও প্রতিলিপি ছাড়াই একটি একক মঙ্গোদ উদাহরণ হতে পারে । তবে উত্পাদন-ব্যবহারের জন্য আপনার সর্বদা প্রতিলিপি ব্যবহার করা উচিত ।
সুতরাং এটি আপনার উদাহরণের অর্থ কী?
Sharded Cluster
/ | \
Shard A Shard B Shard C
/ \ / \ / \
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
|Primary| |Secondary| |Primary| |Secondary| |Primary| |Secondary|
| 25GB |=| 25GB | | 25 GB |=| 25 GB | | 25GB |=| 25GB |
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
আপনি যখন 75GB এর ডেটা 25GB এর 3 টি শারডে বিভক্ত করতে চান তখন আপনার কমপক্ষে 6 টি ডাটাবেস সার্ভারের তিনটি প্রতিরূপ-সেটগুলিতে সংগঠিত হওয়া দরকার। প্রতিটি প্রতিলিপি-সেট দুটি সার্ভার নিয়ে থাকে যাদের একই 25GB ডেটা থাকে।
ক্লাস্টারের জন্য তিনটি প্রতিলিপি-সেটগুলির সালিশের পাশাপাশি মঙ্গোস রাউটার এবং কনফিগার সার্ভারেরও আপনার প্রয়োজন। সালিসকারীরা খুব লাইটওয়েট হয় এবং কেবল তখনই প্রয়োজন হয় যখন কোনও প্রতিলিপি-সেট সদস্য নিচে নেমে যায়, তাই তারা সাধারণত অন্য কিছু দিয়ে একই হার্ডওয়্যারটি ভাগ করতে পারে। তবে মঙ্গোস রাউটার এবং কনফিগারেশন-সার্ভারটি রিডানড্যান্ট এবং তাদের নিজস্ব সার্ভারে থাকা উচিত।