মংগোডিবি-তে ভাগ করে নেওয়া এবং প্রতিরূপের মধ্যে পার্থক্য


77

আমি কেবল ভাগ করে নেওয়ার প্রতিলিপি সম্পর্কে দ্বিধা বোধ করছি যে তারা কীভাবে কাজ করে ... সংজ্ঞা অনুসারে

প্রতিলিপি: মঙ্গোডিবিতে একটি প্রতিলিপি সেট হ'ল মঙ্গোড প্রক্রিয়াগুলির একটি গ্রুপ যা একই ডেটা সেটটি বজায় রাখে।

ভাগ করে নেওয়া: একাধিক মেশিনে ডেটা সঞ্চয় করার জন্য শ্যাডিং একটি পদ্ধতি।

আমার উপলব্ধি অনুসারে যদি 75 গিগাবাইটের ডেটা থাকে তবে প্রতিলিপি দ্বারা (3 সার্ভার), এটি প্রতিটি সার্ভারে 75 জিবি ডেটা সংরক্ষণ করবে মানে সার্ভার -1 এ 75 গিগাবাইট, সার্ভার -2 এ 75 গিগাবাইট এবং সার্ভার -3 এ 75 গিগাবাইট .. (আমাকে সংশোধন করুন যদি আমি ভুল হয়ে থাকি) .. এবং তীক্ষ্ণভাবে এটি সার্ভার -1 এ 25 গিগাবাইট ডেটা, সার্ভার -2 এ 25 গিগাবাইট ডেটা এবং সার্ভার -3 এ 25 জিবি ডেটা হিসাবে সংরক্ষণ করা হবে। (ঠিক?) ... তবে আমি এই লাইনের মুখোমুখি হয়েছি টিউটোরিয়াল

শার্ডস ডেটা সঞ্চয় করে। উচ্চ প্রাপ্যতা এবং ডেটা ধারাবাহিকতা সরবরাহ করতে, একটি উত্পাদন শারড ক্লাস্টারে প্রতিটি শারড একটি প্রতিরূপ সেট

যেমন রেপ্লিকা সেটটি 75৫ গিগাবাইটের তবে তীক্ষ্ণ 25 জিবি এর হয় তবে তারা কীভাবে সমতুল্য হতে পারে ... এটি আমাকে অনেকটা বিভ্রান্ত করে তোলে ... আমি মনে করি এতে আমি দুর্দান্ত কিছু অনুভব করছি। এই আমাকে সাহায্য করুন।

উত্তর:


111

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

প্রতিরূপ-সেটগুলিও ত্রুটি-সহনশীলতার প্রস্তাব দেয়। প্রতিরূপ-সেটের কোনও সদস্য নিচে নেমে গেলে, অন্যরা তা গ্রহণ করে। মাস্টার নীচে গেলে, দাসরা নতুন মাস্টারকে নির্বাচন করবে। এজন্য উত্পাদনশীল মোতায়েনের জন্য সর্বদা কমপক্ষে তিনটি সার্ভারের প্রতিলিপি-সেট হিসাবে ব্যবহার করার পরামর্শ দেওয়া হয় , যার মধ্যে দুটি হোল্ডিং ডেটা (তৃতীয়টি একটি ডেটা-কম "আরবিটার" যা নতুন মাস্টার নির্ধারণের জন্য প্রয়োজন দাসদের একজন নেমে যায়)।

একটি শার্যাড ক্লাস্টারের অর্থ হ'ল ক্লাস্টারের প্রতিটি শারড (যা রেপ্লিকা-সেটও হতে পারে) ডেটা অংশের যত্ন নেয়। প্রতিটি অনুরোধ, উভয়ই পড়ে এবং লেখেন, ক্লাস্টার দ্বারা পরিবেশন করা হয় যেখানে ডেটা থাকে। এর অর্থ হ'ল পঠন-লেখার কর্মক্ষমতা উভয়ই একটি ক্লাস্টারে আরও শারড যুক্ত করে বাড়ানো যেতে পারে। প্রতিটি সংকলনের শার্ট কী দ্বারা কোন ডকুমেন্টের উপর নির্ভর করে কোন শারডটি নির্ধারিত হয় । এটি এমনভাবে বাছাই করা উচিত যাতে সমস্ত ক্লাস্টারে ডেটা সমানভাবে বিতরণ করা যায় এবং যাতে শারড-কী থাকে সেখানে সবচেয়ে সাধারণ প্রশ্নগুলির জন্য এটি স্পষ্ট হয়ে যায় (উদাহরণস্বরূপ: আপনি যখন প্রায়শই জিজ্ঞাসা করেন তখন 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 ডেটা থাকে।

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


2
বিস্তারিত উত্তরের জন্য অনেক অনেক ধন্যবাদ ... আরও একটি প্রশ্ন ... লেখার বা পড়ার অপারেশন চলাকালীন প্রাথমিক যদি ডাউন হয় তবে ১.১) দ্বিতীয় এবং দ্বিতীয়টি থেকে প্রাথমিক নির্বাচন করতে দেরি কী) এই বিলম্বের সময় ডেটা অস্থায়ীভাবে কোথায় সংরক্ষণ করা হবে?
সাদ সাদি

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

1
@ ফিলিপ: মাত্র দুটি মন্তব্য: (১) শারড কীটি সংশোধন করা যাবে না (অর্থাত্ আপনি আলাদা কী ব্যবহার করে শারদ করতে পারবেন না) এবং (২) আপনি প্রতিরূপ সেটের দ্বিতীয় নোড থেকে পড়তে পারেন তবে ধারাবাহিকতা লেখার উদ্বেগের উপর নির্ভর করে (মধ্যে ধারাবাহিক হওয়ার জন্য ডাব্লু বিকল্পটি প্রতিলিপি সেট স্টের সমান হওয়া উচিত যা কার্যকর নয় কারণ প্রতিটি শার্লের ইচ্ছাকৃতভাবে বা নোড ব্যর্থতার কারণে বিভিন্ন প্রতিরূপ সেট আকার থাকতে পারে)।
মাইক আরগেরিও

@ ফিলিপ্পস আপনি দয়া করে dba.stackexchange.com/questions/208482/… এ আরও ফলোআপ প্রশ্নের উত্তর দিতে পারেন ?
ব্যবহারকারী3198603

18
  • Sharding পার্টিশন ডেটা-সেট বিযুক্ত অংশে।
  • প্রতিলিপি ডেটা সেটটি সদৃশ।

এই দুটি জিনিস স্ট্যাক করতে পারে যেহেতু তারা আলাদা। উভয়টি ব্যবহার করে আপনি একাধিক গ্রুপের প্রতিরূপ জুড়ে আপনার ডেটা-সেটটি তীক্ষ্ণ করবেন। অন্য উপায় রাখুন, আপনি শারড প্রতিলিপি; কোনও শারডবিহীন ডেটা-সেটটি একটি একক 'শারড'।

একটি মোঙ্গো ক্লাস্টার সহ তিনটি শার্ড এবং 3 টি প্রতিলিপি 9 টি নোডের হবে।

  • 3 নোড প্রতিলিপি 3 সেট।
  • প্রতিটি প্রতিলিপি সেট একটি একক শারড ধারণ করে।

একটি বড় ফাইলের জন্য, এটি কি একটি শারড বা একাধিক শারডে সংরক্ষণ করা হয় (এভাবে নোডগুলি জুড়ে)?
টনি

মনে রাখবেন যে মঙ্গোডিবি 3.4 বা ততোধিক সংস্করণে আপনাকে কনফিগারেশনের জন্য মঙ্গোডিবি সার্ভার এবং মঙ্গোস রাউটার হিসাবে কাজ করার জন্য একটি অতিরিক্ত সার্ভারেরও প্রয়োজন হবে। এটি আপনার উদাহরণের 3x3 ক্লাস্টারের মোট 13 টি সার্ভারে নিয়ে আসে।
dthrasher

9

দ্বারা sharding , আপনি বিভিন্ন অংশে আপনার সংগ্রহ বিভক্ত। আপনার ডাটাবেসটির
অনুলিপি করার অর্থ আপনি আপনার ডেটা-সেটের আয়না তৈরি করেন।


4

কার্যকারিতা শর্তাবলী বিতরণ। ভাগ করে নেওয়া স্কেলিবিলিটি এবং সমান্তরালতা সরবরাহ করে। প্রতিলিপি উপলব্ধতা উপলব্ধ করে


না, প্রতিলিপি কেবল স্কেলাবিলিটি এবং সমান্তরালতা সরবরাহ করে যা পাঠ্য লেখার চেয়ে অনেক বেশি ঘন ঘন হয়
ক্রিস্টফ স্মায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.