ম্যাপোদব সিএপি উপপাদ্যে কোথায় দাঁড়ায়?


121

আমি যেখানেই তাকাই, আমি দেখতে পাচ্ছি মঙ্গোডিবি সিপি is আমি যখন খনন করি তখন দেখি এটি শেষ পর্যন্ত সামঞ্জস্যপূর্ণ। আপনি যখন নিরাপদ = সত্য ব্যবহার করেন তখন কি সিপি হয়? যদি তা হয় তবে এর অর্থ কি এই যে আমি যখন নিরাপদ = সত্য দিয়ে লিখি, ফলাফল পাওয়ার আগে সমস্ত প্রতিলিপি আপডেট করা হবে?

উত্তর:


104

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

মঙ্গোডিবি প্রতিলিপি সেটগুলিতে স্বয়ংক্রিয় ব্যর্থতার মাধ্যমে উচ্চ-প্রাপ্যতা পেয়েছে: http://www.mongodb.org/display/DOCS/Replica+Sets


13
Aphyr.com/posts/322-call-me-maybe-mongodb-stale-reads অনুসারে আপনি যদি রেপ্লিকা সেটের প্রাথমিক নোড থেকে পড়ে থাকেন তবে আপনি বাসি বা নোংরা ডেটা পেতে পারেন। তাহলে কি মঙ্গোডিবি শক্তিশালী ধারাবাহিক ??
মাইক আরগেরিও

3
কাইল দ্বারা অসাধারণ পরীক্ষা। এটি সত্যিই নিচে মঙ্গো শিকার করে। আমি ভাবছি যদি সেখানে প্রোডাকশন সিস্টেম থাকে, উদাহরণস্বরূপ মোঙ্গোডিবি ব্যবহার করে পেমেন্ট লেনদেন করছেন? যদি এটি কেবলমাত্র একটি ব্যক্তিগত ওয়েবসাইট, তবে ততক্ষণ দৃ strong় ধারাবাহিকতা যত্নশীল।
xin

5
কেবল রেকর্ডের জন্য, মঙ্গোডিবি v3.4 কাইলের ডিজাইন করা পরীক্ষায় উত্তীর্ণ হয়েছে তাই হ্যাঁ, মঙ্গোডিবি দৃ Rep়ভাবে সামঞ্জস্যপূর্ণ, এমনকি রেপ্লিকাসেট এবং ভাগ করে নেওয়ার ক্ষেত্রেও: mongodb.com/mongodb-3.4-pes-jepsen-test
ম্যাক্সিম বিগনেট

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

36

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

    Scenario                   | Main Focus | Description
    ---------------------------|------------|------------------------------------
    No partition               |     CA     | The system is available 
                               |            | and provides strong consistency
    ---------------------------|------------|------------------------------------
    partition,                 |     AP     | Not synchronized writes 
    majority connected         |            | from the old primary are ignored                
    ---------------------------|------------|------------------------------------
    partition,                 |     CP     | only read access is provided
    majority not connected     |            | to avoid separated and inconsistent systems

সমন্নয়:

আপনি যখন কোনও একক সংযোগ বা সঠিক লিখন / পড়ুন কনসার্ন স্তর ( যা আপনাকে কার্যকর করার গতি ব্যয় করবে ) ব্যবহার করার সময় মঙ্গোডিবি দৃ strongly়ভাবে সামঞ্জস্যপূর্ণ । যতক্ষণ না আপনি এই শর্তগুলি পূরণ করেন না (বিশেষত যখন আপনি দ্বিতীয়-রেপ্লিকা থেকে পড়ছেন) মঙ্গোডিবি ঘটনাচক্রে সামঞ্জস্যপূর্ণ হয়।

উপস্থিতি:

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

পার্টিশন সহনশীলতা:

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


সুতরাং যদি আমি সঠিক লেখার / পড়ার উদ্বেগের স্তরটি ব্যবহার করি, তবে এর অর্থ সমস্ত অস্থিরতা এবং পাঠাগুলি প্রাথমিকের দিকে যায় (যদি আমি সঠিকভাবে বুঝতে পারি), তবে দ্বিতীয়টি কী করবে? প্রাইমারী নীচে নেমে যাওয়ার জন্য কেবল সেখানে স্ট্যান্ডবাইতে বসে থাকবেন?
tomer.z

@ tomer.z আপনি ম্যানুয়ালটির এই বিভাগটি পড়তে চাইতে পারেন : আপনি পড়ার জন্য সেকেন্ডারি ব্যবহার করতে পারেন। আপনি যদি "সংখ্যাগরিষ্ঠ" পঠন-স্তর ব্যবহার করেন তবে সংখ্যাগরিষ্ঠ সদস্যরা পঠন স্বীকার করার সাথে সাথে পাঠটি কার্যকর হবে। "সংখ্যাগরিষ্ঠ" লেখার স্তরের ক্ষেত্রেও এটি একই রকম। আপনি যদি উভয়ের জন্য "সংখ্যাগরিষ্ঠ" কনসার্ন-লেভেল ব্যবহার করেন তবে আপনার কাছে একটি সামঞ্জস্যপূর্ণ ডাটাবেস রয়েছে। ম্যানুয়ালটিতে আপনি এটি সম্পর্কে আরও পড়তে চাইতে পারেন ।
জোকা

18

একটি জমকালো নতুন নিবন্ধ যেমন প্রকাশিত হয়েছে এবং কাইলের এই ক্ষেত্রটিতে কিছু দুর্দান্ত পরীক্ষাও করেছে , মংডোডিবি এবং অন্যান্য ডাটাবেসগুলি সি বা এ হিসাবে লেবেল দেওয়ার সময় আপনার যত্নবান হওয়া উচিত you

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


10

হ্যাঁ, এটি ব্যবহার করার সময় সিপি হয় safe=true। এর সহজ অর্থ হল, ডেটা এটি মাস্টার্স ডিস্কে তৈরি করেছে। যদি আপনি এটি নিশ্চিত করতে চান যে এটি কিছু প্রতিলিপিতে এসেছিল, তবে 'ডাব্লু = এন' প্যারামিটারটি দেখুন যেখানে এনটি সেই রেপ্লিক্সের সংখ্যা যেখানে ডেটা সংরক্ষণ করতে হয়।

দেখতে এই এবং এই আরও তথ্যের জন্য।


3

আমি মঙ্গোর জন্য পি সম্পর্কে নিশ্চিত নই। পরিস্থিতিটি কল্পনা করুন:

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

এখানে সমস্যাটি হ'ল ডাম্প ফাইলের আকার সীমাবদ্ধ এবং যদি আপনার দীর্ঘকাল পার্টিশন থাকে তবে আপনি চিরকালের জন্য আপনার ডেটা আলগা করতে পারেন।

আপনি বলতে পারেন যে এটি হওয়ার সম্ভাবনা নেই - হ্যাঁ, যদি না এমন মেঘ না থাকে যেখানে এটি মনে করার চেয়ে সাধারণ হয় common

এই উদাহরণটি হ'ল কেন কোনও ডাটাবেসে কোনও চিঠি দেওয়ার আগে আমি খুব সাবধানতা অবলম্বন করব। অনেক পরিস্থিতিতে আছে এবং বাস্তবায়ন নিখুঁত হয় না।

কেউ যদি জানেন যে এই দৃশ্যটি মঙ্গোর পরবর্তী প্রকাশগুলিতে সম্বোধন করা হয়েছে কিনা দয়া করে মন্তব্য করুন! (আমি কিছু সময়ের জন্য যা ঘটেছিল সব অনুসরণ করি না ..)


2
মঙ্গোডিবির নির্বাচন প্রোটোকলটি (সর্বাধিক) একক প্রাথমিক থাকতে ডিজাইন করা হয়েছে। প্রাথমিকভাবে কেবলমাত্র কনফিগার করা প্রতিরূপ সেট ভোটিং সদস্যদের (এন / 2 +1) এর কঠোর সংখ্যাগরিষ্ঠ দ্বারা নির্বাচিত (এবং টেকসই) হতে পারেন। নেটওয়ার্ক বিভাজনের ক্ষেত্রে কেবলমাত্র একটি বিভাজন (ভোটার সদস্যদের সংখ্যাগরিষ্ঠ) একটি প্রাথমিক নির্বাচন করতে পারে; সংখ্যালঘু বিভাগে পূর্বের একটি প্রাথমিক পদটি পদত্যাগ করবে এবং গৌণ হয়ে উঠবে। প্রতিলিপি সেটগুলি সর্বদা এইভাবে কাজ করে। ইভেন্টটিতে প্রাক্তন প্রাথমিকের লেখাগুলি গ্রহণ করা হয়েছে যেগুলি পুনরায় প্রতিলিপি করা হয়নি, যখন সেই সদস্যটি প্রতিরূপ সেটটিতে পুনরায় যোগদান করবে তখন সেগুলি আবার ফিরিয়ে আনা হবে (ডিস্কে সংরক্ষণ করা হবে)।
স্টেনি

2

মংডব কখনই মাধ্যমিককে লেখার অনুমতি দেয় না। এটি মাধ্যমিক থেকে alচ্ছিক পড়ার অনুমতি দেয় তবে লেখায় না। সুতরাং আপনার প্রাথমিকটি যদি নিচে চলে যায় তবে আপনি কোনও মাধ্যমিক আবার প্রাথমিক হওয়া পর্যন্ত লিখতে পারবেন না। এইভাবে, আপনি সিএপি উপপাদ্যে উচ্চ উপলভ্যতা ত্যাগ করেন। কেবলমাত্র প্রাথমিক থেকে আপনার পাঠাগুলি রাখলে আপনার দৃ strong় ধারাবাহিকতা থাকতে পারে।


2

মোঙ্গোডিবি যখনই কোনও পার্টিশন রয়েছে তখন উপলভ্যতার উপর ধারাবাহিকতা নির্বাচন করে। এর অর্থ যা হ'ল যখন কোনও পার্টিশন (পি) থাকে তখন এটি উপলব্ধতা (এ) এর তুলনায় ধারাবাহিকতা (সি) চয়ন করে।

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

বিভাগ হিসাবে দুটি পরিস্থিতিতে ঘটতে পারে:

  • যখন প্রাথমিক নোড নেমে যায়: নতুন প্রাথমিক নির্বাচন না করা পর্যন্ত সিস্টেম অনুপলব্ধ হয়ে যায়।
  • যখন প্রাথমিক নোড অনেকগুলি মাধ্যমিক নোডগুলি থেকে সংযোগ হারিয়ে ফেলে: সিস্টেমটি অনুপলব্ধ হয়ে যায়। অন্যান্য সেকেন্ডারী একটি নতুন প্রাথমিক নির্বাচন করার চেষ্টা করবে এবং বর্তমান প্রাথমিক পদত্যাগ করবে।

মূলত, যখনই কোনও বিভাজন ঘটে এবং মঙ্গোডিবির সিদ্ধান্ত নেওয়ার দরকার হয় তবে এটি উপলব্ধতার উপর ধারাবাহিকতা বেছে নেবে। এটি সিস্টেমে লেখাগুলি গ্রহণ করা বন্ধ করে দেবে যতক্ষণ না এটি বিশ্বাস করে যে সেগুলি নিরাপদে সেই লেখাগুলি সম্পূর্ণ করতে পারে।


"এটা হবে থামাতে গ্রহণ লিখেছেন সিস্টেমে পর্যন্ত এটি বিশ্বাস করে যে এটা নিরাপদে ঐ লিখেছেন সম্পন্ন করতে পারবেন। " কি সম্পর্কে লেখা আছে ? এটি কি সেই সময়ে পঠনযোগ্য থাকবে?
জোশ

1

মংডোব ধারাবাহিকতা এবং পার্টিশন সহনশীলতা সরবরাহ করে

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

ধারাবাহিকতা - সিস্টেমটি শেষ পর্যন্ত সুসংগত হয়ে উঠবে। যত তাড়াতাড়ি বা পরে এটি হওয়া উচিত ডেটা সর্বত্র ছড়িয়ে পড়ে, তবে সিস্টেমটি ইনপুট পেতে থাকবে এবং পরবর্তীটিতে যাওয়ার আগে প্রতিটি লেনদেনের ধারাবাহিকতা পরীক্ষা করছে না।

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

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