বিতরণ ডাটাবেস সিস্টেম 101
অথবা, বিতরণ করা ডেটাবেস - এফকে ' ওয়েব স্কেল ' বলতে আসলে কী বোঝায়?
বিতরণ করা ডাটাবেস সিস্টেমগুলি জটিল সমালোচক এবং বিভিন্ন স্বাদে আসে। আমি যদি বিশ্ববিদ্যালয়ে এই বিষয়ে আমার স্মরণে পড়া স্মৃতির পড়াশোনার গভীরতা সন্ধান করি তবে আমি বিতরণকৃত ডাটাবেস সিস্টেম গঠনের মূল ইঞ্জিনিয়ারিংয়ের কিছু সমস্যা ব্যাখ্যা করার চেষ্টা করব।
প্রথমত, কিছু পরিভাষা
এসিডি (পারমাণবিকতা, ধারাবাহিকতা, বিচ্ছিন্নতা এবং স্থায়িত্ব) বৈশিষ্ট্য: এগুলি হ'ল মূল আক্রমণকারীগুলি যা অনাকাঙ্ক্ষিত পার্শ্ব প্রতিক্রিয়া সৃষ্টি না করে নির্ভরযোগ্যভাবে কার্যকর করার জন্য কোনও লেনদেনের জন্য প্রয়োগ করতে হয়।
পারমাণবিকতার জন্য লেনদেন সম্পূর্ণরূপে বা রোলব্যাকের সম্পূর্ণ প্রয়োজন। আংশিক সমাপ্ত লেনদেনগুলি কখনই দৃশ্যমান হওয়া উচিত নয় এবং সিস্টেমটি এমনভাবে তৈরি করতে হবে যা এটি ঘটতে বাধা দেয়।
ধারাবাহিকতার প্রয়োজন যে কোনও লেনদেনের ফলে ডেটাবেস স্কিমা দ্বারা গ্যারান্টিযুক্ত কোনও আক্রমণকারী (যেমন ঘোষণাযুক্ত রেফারেন্সিয়াল অখণ্ডতা) লঙ্ঘন করা উচিত নয়। উদাহরণস্বরূপ, যদি কোনও বিদেশী কী উপস্থিত থাকে তবে অস্তিত্বহীন পিতামাতার প্রতি শ্রদ্ধার সাথে চাইল্ড রেকর্ড সন্নিবেশ করা অসম্ভব হওয়া উচিত।
বিচ্ছিন্নতা প্রয়োজন যে লেনদেন একে অপরের সাথে হস্তক্ষেপ করা উচিত নয়। সমান্তরাল বা ধারাবাহিকভাবে লেনদেনগুলি কার্যকর করা হলে সিস্টেমের একই ফলাফলের গ্যারান্টি দেওয়া উচিত। অনুশীলনে বেশিরভাগ আরডিবিএমএস পণ্য এমন মোডগুলিকে অনুমতি দেয় যা পারফরম্যান্সের বিরুদ্ধে বিচ্ছিন্নতার বাণিজ্য করে।
স্থায়িত্বের প্রয়োজন যে একবার প্রতিশ্রুতিবদ্ধ হয়ে গেলে, লেনদেনটি এমনভাবে স্থির স্টোরেজ থেকে যায় যা হার্ডওয়্যার বা সফ্টওয়্যার ব্যর্থতার পক্ষে শক্ত।
আমি নীচে বিতরণ করা সিস্টেমগুলিতে এই প্রয়োজনীয়তাগুলির কয়েকটি প্রযুক্তিগত বাধা কিছু ব্যাখ্যা করব।
শেয়ার্ড ডিস্ক আর্কিটেকচার: এমন একটি আর্কিটেকচার যেখানে ক্লাস্টারের সমস্ত প্রসেসিং নোডের সমস্ত স্টোরেজ অ্যাক্সেস থাকে। এটি ডেটা অ্যাক্সেসের জন্য একটি কেন্দ্রীয় বাধা উপস্থাপন করতে পারে। শেয়ারড ডিস্ক সিস্টেমের উদাহরণ হ'ল ওরাকল আরএসি বা এক্সাডেটা ।
অংশীদারি কিছুই নয় আর্কিটেকচার: একটি আর্কিটেকচার যেখানে ক্লাস্টারের নোডগুলির প্রসেসিং নোডের স্থানীয় স্টোরেজ থাকে যা অন্যান্য ক্লাস্টার নোডগুলিতে দৃশ্যমান হয় না। ভাগ করা কিছুই নেই সিস্টেমের উদাহরণগুলি হল টেরাদাতা এবং নেটিজা ।
শেয়ার্ড মেমোরি আর্কিটেকচার: এমন একটি আর্কিটেকচার যেখানে একাধিক সিপিইউ (বা নোড) মেমরির একটি ভাগ করা পুল অ্যাক্সেস করতে পারে। বেশিরভাগ আধুনিক সার্ভারগুলি একটি ভাগ করা মেমরির ধরণের। ভাগ করা মেমরি কিছু নির্দিষ্ট ক্রিয়াকলাপ যেমন: ক্যাশে বা পারমাণবিক সিঙ্ক্রোনাইজেশন আদিমগুলি সহজতর করে যা বিতরণকারী সিস্টেমে করা আরও কঠিন।
সিঙ্ক্রোনাইজেশন: একাধিক প্রক্রিয়া বা থ্রেড দ্বারা ভাগ করা রিসোর্সে অবিচ্ছিন্ন অ্যাক্সেস নিশ্চিত করার জন্য বিভিন্ন পদ্ধতি বর্ণনা করার একটি জেনেরিক শব্দ। ভাগ করা মেমরি সিস্টেমের চেয়ে বিতরণকারী সিস্টেমে এটি করা খুব শক্ত, যদিও কিছু নেটওয়ার্ক আর্কিটেকচারের (যেমন টেরাদাতার বিওয়াইএনটি) নেটওয়ার্ক প্রোটোকলে সিঙ্ক্রোনাইজেশন প্রিমিটিভ ছিল। সিঙ্ক্রোনাইজেশন উল্লেখযোগ্য পরিমাণে ওভারহেডের সাথেও আসতে পারে।
আধা-যোগ: একটি বিতরণ সিস্টেমের দুটি পৃথক নোডে রাখা ডেটা যোগদানের জন্য ব্যবহৃত একটি আদিম। মূলত এটিতে সারিটি সংযুক্ত হওয়ার জন্য জড়িত হওয়ার এবং এক নোড দিয়ে অন্য নোডের সাথে যোগ দেওয়ার সমাধানের জন্য পর্যাপ্ত তথ্য রয়েছে। একটি বড় প্রশ্নে এটি উল্লেখযোগ্য নেটওয়ার্ক ট্র্যাফিক জড়িত হতে পারে।
পরিণামের ধারাবাহিকতা: একটি শব্দটি লেনদেনের শব্দার্থবিজ্ঞানের বর্ণনা দেওয়ার জন্য ব্যবহৃত হয় যা লেখার সময় পারফরম্যান্সের জন্য বিতরণ করা সিস্টেমের সমস্ত নোডগুলিতে তাত্ক্ষণিক আপডেট (পড়ার বিষয়ে ধারাবাহিকতা) বন্ধ করে দেয় writes অবশেষে ধারাবাহিকতা হ'লবিতরণকৃত ডাটাবেসে লেনদেনের গতি বাড়ানোর জন্য পারফরম্যান্স অপটিমাইজেশন হিসাবে কোরামের প্রতিরূপ ব্যবহার করার একটি পার্শ্ব প্রতিক্রিয়াযেখানে পৃথক নোডগুলিতে একাধিক তথ্যের অনুলিপি রাখা হয়।
ল্যাম্পোর্টের অ্যালগরিদম: ভাগ করা স্মৃতিবিহীন সিস্টেমগুলিতে পারস্পরিক বর্জন (সিঙ্ক্রোনাইজেশন) বাস্তবায়নের জন্য একটি অ্যালগরিদম। একটি সিস্টেমের মধ্যে সাধারণত পারস্পরিক বর্জন একটি পারমাণবিক পঠন-তুলনা-লেখার বা একটি ভাগ অনুরূপ নির্দেশ সাধারণত একটি শেয়ার্ড মেমরি সিস্টেমে সাধারণত ব্যবহারিক প্রয়োজন। অন্যান্য বিতরিত সিঙ্ক্রোনাইজেশন অ্যালগরিদমগুলি বিদ্যমান, তবে ল্যাম্পোর্টস অন্যতম ছিল এবং এটি সর্বাধিক পরিচিত। বেশিরভাগ বিতরণ করা সিঙ্ক্রোনাইজেশন প্রক্রিয়াগুলির মতো, ল্যাম্পোর্টের অ্যালগরিদম যথাযথ সময় এবং ক্লক সিঙ্ক্রোনাইজেশন বেন্টিন ক্লাস্টার নোডের উপর খুব বেশি নির্ভর করে।
টু ফেজ কমিট (২ পিসি): প্রোটোকলের একটি পরিবার যা নিশ্চিত করে যে একাধিক শারীরিক সিস্টেমের সাথে জড়িত ডেটাবেস আপডেটগুলি ধারাবাহিকভাবে প্রতিশ্রুতিবদ্ধ বা রোল ব্যাক করে। কোনও সিস্টেমের মধ্যে বা একাধিক সিস্টেমে লেনদেন পরিচালকের মাধ্যমে 2PC ব্যবহৃত হয় তা তা উল্লেখযোগ্য ওভারহেড বহন করে।
দ্বি-পর্বের কমিট প্রোটোকলে লেনদেন পরিচালক অংশগ্রহীতা নোডকে লেনদেনকে এমনভাবে চালিয়ে যেতে বলে যাতে তারা গ্যারান্টি দিতে পারে যে এটি প্রতিশ্রুতিবদ্ধ হবে, তারপরে এই স্থিতিটি সংকেত করুন। সমস্ত নোড যখন একটি 'হ্যাপি' স্থিতি ফিরিয়ে দেয় তবে তা নোডগুলি কমিট করার সংকেত দেয়। সমস্ত নোডের প্রতিশ্রুতি সম্পূর্ণ হওয়ার ইঙ্গিত দিয়ে একটি উত্তর প্রেরণ না করা পর্যন্ত লেনদেনটি এখনও উন্মুক্ত হিসাবে বিবেচিত হয়। কমিটের সিগন্যাল দেওয়ার আগে যদি কোনও নোড নেমে যায় তবে লেনদেন পরিচালক নোডটি পুনরায় জিজ্ঞাসা করবেন যখনই এটি ইতিবাচক উত্তর না পাওয়া পর্যন্ত লেনদেনটি প্রতিশ্রুতিবদ্ধ নির্দেশ করে।
মাল্টি-ভার্সন কনকুরেন্সি কন্ট্রোল (এমভিসিসি): ডেটার নতুন সংস্করণটিকে আলাদা আলাদা জায়গায় লিখে কনটেন্ট পরিচালনা করা এবং অন্যান্য লেনদেনকে নতুন সংস্করণ প্রতিশ্রুতি না দেওয়া পর্যন্ত ডেটার পুরাতন সংস্করণটি দেখার অনুমতি দেয়। এটি নতুন সংস্করণটি লেখার জন্য অতিরিক্ত কিছু লেখার ট্রাফিকের ব্যয় করে ডাটাবেস বিষয়বস্তু হ্রাস করে এবং পুরানো সংস্করণটিকে অপ্রচলিত হিসাবে চিহ্নিত করে।
নির্বাচন অ্যালগরিদম: ব্যর্থতার আরও মোড থাকায় একাধিক নোড জড়িত বিতরণকারী সিস্টেমগুলি একক সিস্টেমের চেয়ে সহজাতভাবে কম নির্ভরযোগ্য। নোডের ব্যর্থতা মোকাবেলায় ক্লাস্টার্ড সিস্টেমগুলির জন্য বেশ কয়েকটি ক্ষেত্রে কিছু প্রক্রিয়া প্রয়োজন। নির্বাচনী অ্যালগরিদমগুলি এমন এক শ্রেণীর অ্যালগরিদম যেখানে 'লিডার' নোড 100% নির্ধারিত বা নির্ভরযোগ্য নয় এমন পরিস্থিতিতে বিতরণকৃত গণনার সমন্বয় করতে নেতা নির্বাচন করতে ব্যবহৃত হয়।
অনুভূমিক পার্টিশন: একটি টেবিলটি তার কী দ্বারা একাধিক নোড বা স্টোরেজ ভলিউম জুড়ে বিভক্ত হতে পারে। এটি একটি বড় ডেটা ভলিউমকে ছোট অংশগুলিতে বিভক্ত করতে এবং স্টোরেজ নোডগুলিতে বিতরণ করতে দেয়।
ভাগ করে নেওয়া: কোনও ডেটা সেট ভাগ করা-কিছুই নয়, আর্কিটেকচারে একাধিক ভৌত নোড জুড়ে অনুভূমিকভাবে বিভাজন করা যেতে পারে। যেখানে এই বিভাজনটি স্বচ্ছ নয় (যেমন ক্লায়েন্টকে অবশ্যই পার্টিশন স্কিম সম্পর্কে সচেতন থাকতে হবে এবং কোন্ নোডটি স্পষ্টভাবে জিজ্ঞাসা করতে হবে) এটি শারডিং হিসাবে পরিচিত। কিছু সিস্টেম (যেমন টেরাদাতা) নোড জুড়ে বিভক্ত ডেটা করে তবে অবস্থানটি ক্লায়েন্টের কাছে স্বচ্ছ; শব্দটি সাধারণত এই ধরণের সিস্টেমের সাথে ব্যবহার হয় না।
ধারাবাহিক হ্যাশিং: একটি অ্যালগরিদম কী এর উপর ভিত্তি করে পার্টিশনে ডেটা বরাদ্দ করতে ব্যবহৃত হয়। এটি হ্যাশ কীগুলি এমনকি বিতরণ এবং দক্ষতার সাথে বালতিগুলির সংখ্যা বাড়িয়ে বা হ্রাস করার ক্ষমতা দ্বারা চিহ্নিত করা হয়। এই বৈশিষ্ট্যগুলি ডেটা বিভাজনের জন্য বা নোডগুলির একটি ক্লাস্টার জুড়ে লোডের জন্য দরকারী যেখানে নোড যুক্ত হওয়ার সাথে বা ক্লাস্টারটি ছাড়ার ফলে (সম্ভবত ব্যর্থতার কারণে) আকার পরিবর্তনশীল হতে পারে।
মাল্টি-মাস্টার প্রতিলিপি: একটি কৌশল যা একটি ক্লাস্টারে একাধিক নোড জুড়ে অন্য নোডগুলিতে প্রতিলিপি করতে দেয় allows এই কৌশলটি কিছু টেবিলগুলি পার্টিশনযুক্ত বা সার্ভারগুলি জুড়ে শার্ড করার বা অন্যকে ক্লাস্টার জুড়ে সিঙ্ক্রোনাইজ করার অনুমতি দিয়ে স্কেলিংয়ের সুবিধা দেয়। কোরামের বিপরীতে সমস্ত নোডে লিখিত প্রতিলিপি তৈরি করতে হবে, সুতরাং কোরামের প্রতিলিপি করা ব্যবস্থার চেয়ে মাল্টি-মাস্টার প্রতিলিপিযুক্ত আর্কিটেকচারে লেনদেন কমিটগুলি বেশি ব্যয়বহুল।
নন-ব্লকিং স্যুইচ: একটি নেটওয়ার্ক সুইচ যা কোনও অভ্যন্তরীণ বাধা ছাড়াই পোর্টগুলির সংখ্যার সাথে আনুপাতিক থ্রুপুট অর্জনের জন্য অভ্যন্তরীণ হার্ডওয়্যার সমান্তরালতা ব্যবহার করে। একটি নিষ্পাপ বাস্তবায়ন ক্রসবার মেকানিজম ব্যবহার করতে পারে, তবে এটি এন বন্দরগুলির জন্য ও (N ^ 2) জটিলতা রয়েছে, এটি ছোট স্যুইচগুলিতে সীমাবদ্ধ করে। বৃহত্তর সুইচগুলি O (N ^ 2) হার্ডওয়্যার প্রয়োজন ছাড়াই লিনিয়ার থ্রুপুট স্কেলিং অর্জনের জন্য একটি অ-ব্লকিং ন্যূনতম স্প্যানিং সুইচ নামে আরও একটি জটিল অভ্যন্তরীণ টপোলজি ব্যবহার করতে পারে।
বিতরণ করা ডিবিএমএস করা - এটি কতটা কঠিন হতে পারে?
বেশ কয়েকটি প্রযুক্তিগত চ্যালেঞ্জ অনুশীলনে এটি করা বেশ কঠিন করে তোলে। বিতরণ ব্যবস্থা তৈরির অতিরিক্ত জটিলতা ছাড়াও একটি বিতরণ করা ডিবিএমএসের স্থপতিটিকে কিছু জটিল ইঞ্জিনিয়ারিং সমস্যা কাটিয়ে উঠতে হবে।
বিতরণ সিস্টেমে পারমাণবিকতা: যদি কোনও লেনদেনের মাধ্যমে আপডেট হওয়া ডেটা একাধিক নোডে ছড়িয়ে থাকে তবে নোডের কমিট / রোলব্যাক সমন্বিত করতে হবে। এটি ভাগ করা-কিছুই নয় সিস্টেমগুলিতে একটি উল্লেখযোগ্য ওভারহেড যুক্ত করে। শেয়ার্ড-ডিস্ক সিস্টেমে এটি কোনও সমস্যা কম কারণ সমস্ত স্টোরেজ সমস্ত নোডের দ্বারা দেখা যায় তাই একটি একক নোড কমিটিকে সমন্বয় করতে পারে।
বিতরণ ব্যবস্থাগুলিতে ধারাবাহিকতা: সিস্টেমের উপরে উল্লিখিত বিদেশী কী উদাহরণ গ্রহণ করতে অবশ্যই একটি সামঞ্জস্যপূর্ণ রাষ্ট্রের মূল্যায়ন করতে সক্ষম হতে হবে। উদাহরণস্বরূপ, যদি কোনও বিদেশী কী সম্পর্কের পিতামাতা এবং সন্তানের বিভিন্ন নোডে বসবাস করতে পারে তবে লেনদেনকে বৈধতা দেওয়ার জন্য পুরানো তথ্য ব্যবহার করা হচ্ছে না তা নিশ্চিত করার জন্য কোনও ধরণের বিতরণ করা লকিং প্রক্রিয়া প্রয়োজন। যদি এটি প্রয়োগ করা না হয় তবে আপনি (দৃষ্টান্ত) একটি রেসের শর্ত থাকতে পারেন যেখানে সন্তানের প্রবেশের অনুমতি দেওয়ার আগে পিতামাতার উপস্থিতি যাচাই করার পরে মুছে ফেলা হয়।
সীমাবদ্ধতা বিলম্বিত প্রয়োগের (অর্থাত্ ডিআরআই অনুমোদনের অপেক্ষায় অপেক্ষা করা) লেনদেনের সময়কালের জন্য লকটি রাখা দরকার। এই ধরণের বিতরণ লকিং একটি উল্লেখযোগ্য ওভারহেড সহ আসে।
যদি উপাত্তের একাধিক অনুলিপি রাখা হয় (আধা-যুক্ত হতে অপ্রয়োজনীয় নেটওয়ার্ক ট্র্যাফিক এড়ানোর জন্য এটি ভাগ করা-কিছুই নয় এমন সিস্টেমে প্রয়োজনীয় হতে পারে) তবে অবশ্যই ডেটার সমস্ত অনুলিপি আপডেট করতে হবে।
বিতরণকারী সিস্টেমে বিচ্ছিন্নতা: যেখানে কোনও লেনদেনের উপর প্রভাবিত ডেটা একাধিক সিস্টেম নোডে থাকে সেগুলি লক এবং সংস্করণে (যদি এমভিসিসি ব্যবহার করা হয়) অবশ্যই নোডগুলিতে সিঙ্ক্রোনাইজ করতে হবে। ক্রিয়াকলাপের সিরিয়ালযোগ্যতার গ্যারান্টি দেওয়া, বিশেষত ভাগ-কিছুই নয় এমন আর্কিটেকচারে যেখানে তথ্যগুলির অনর্থক অনুলিপিগুলি সংরক্ষণ করা যেতে পারে ল্যাম্পোর্টের অ্যালগরিদমের মতো বিতরিত সিঙ্ক্রোনাইজেশন প্রক্রিয়া প্রয়োজন, যা নেটওয়ার্ক ট্র্যাফিকের ক্ষেত্রেও একটি উল্লেখযোগ্য ওভারহেড নিয়ে আসে।
বিতরণ সিস্টেমে স্থায়িত্ব: একটি শেয়ার্ড ডিস্ক সিস্টেমে স্থায়িত্ব ইস্যুটি মূলত একটি শেয়ার্ড-মেমরি সিস্টেমের মতোই ব্যতিক্রম হয় যে বিতরণ করা সিঙ্ক্রোনাইজেশন প্রোটোকলগুলি নোড জুড়ে এখনও প্রয়োজনীয় still ডিবিএমএস অবশ্যই জগতে লগতে লিখতে এবং অবিচ্ছিন্নভাবে ডেটা লিখতে হবে। কোনও ভাগ করা-না থাকা সিস্টেমে ডেটা বা একাধিক নকল বিভিন্ন নোডে সঞ্চিত ডেটার অংশবিশেষ থাকতে পারে। নোডগুলি জুড়ে কমিটগুলি সঠিকভাবে ঘটে তা নিশ্চিত করার জন্য একটি দ্বি-ফেজ কমিট প্রোটোকল প্রয়োজন। এটি উল্লেখযোগ্য ওভারহেডও অনুপ্রবেশ করে।
একটি ভাগ করা-না-করা সিস্টেমে নোডের ক্ষতি হ্রাসের অর্থ সিস্টেমে ডেটা উপলব্ধ নেই। এই ডেটা প্রশমিত করতে একাধিক নোড জুড়ে প্রতিলিপি করা যেতে পারে। এই পরিস্থিতিতে ধারাবাহিকতার অর্থ হ'ল ডেটাটি সমস্ত নোডে প্রতিলিপি করা উচিত যেখানে এটি সাধারণত থাকে। এটি লেখার উপর যথেষ্ট ওভারহেড ব্যয় করতে পারে।
নোএসকিউএল সিস্টেমে করা একটি সাধারণ অপ্টিমাইজেশন হ'ল কোরামের প্রতিলিপি এবং শেষ অব্যাহত ব্যবহারের মাধ্যমে লেনদেনকে প্রতিশ্রুতিবদ্ধ হওয়ার আগে কোরামের কাছে লিখিতভাবে নির্দিষ্ট পরিমাণের স্থিতিস্থাপকতার গ্যারান্টি দেওয়ার সময় তথ্যটিকে অলসভাবে প্রতিলিপি করা যায়। এরপরে ডেটা অনুলিপি করে অন্যান্য নোডগুলিতে প্রতিলিপি করা হয় যেখানে তথ্যের অনুলিপি থাকে।
নোট করুন যে 'ইভেন্টের ধারাবাহিকতা' ধারাবাহিকতার উপর একটি বড় বাণিজ্য-অফ যা লেনদেনের প্রতিশ্রুতি হওয়ার সাথে সাথে ডেটা ধারাবাহিকভাবে দেখতে হবে যদি তা গ্রহণযোগ্য হবে না। উদাহরণস্বরূপ, একটি আর্থিক অ্যাপ্লিকেশনটিতে একটি আপডেট ব্যালেন্স অবিলম্বে পাওয়া উচিত।
শেয়ারড-ডিস্ক সিস্টেম
একটি ভাগ করা ডিস্ক সিস্টেম এমন এক যেখানে সমস্ত নোডের সমস্ত স্টোরেজে অ্যাক্সেস থাকে। সুতরাং, গণনা অবস্থানের থেকে পৃথক। অনেক ডিবিএমএস প্ল্যাটফর্মও এই মোডে কাজ করতে পারে - ওরাকল আরএসি যেমন একটি স্থাপত্যের উদাহরণ is
শেয়ারড ডিস্ক সিস্টেমগুলি স্টোরেজ নোড এবং প্রসেসিং নোডের মধ্যে এম: এম সম্পর্ককে সমর্থন করতে পারে বলে তারা যথেষ্ট পরিমাণে স্কেল করতে পারে। একটি সান একাধিক কন্ট্রোলার থাকতে পারে এবং একাধিক সার্ভার ডাটাবেস চালাতে পারে। এই আর্কিটেকচারগুলিতে কেন্দ্রীয় বাধা হিসাবে একটি স্যুইচ রয়েছে তবে ক্রসবার স্যুইচগুলি এই স্যুইচটিতে প্রচুর পরিমাণে ব্যান্ডউইদথ রাখার অনুমতি দেয়। কিছু প্রক্রিয়াকরণ স্টোরেজ নোডগুলিতে (ওরাকল এর এক্সাডাটার ক্ষেত্রে যেমন) অফলোড করা যায় যা স্টোরেজ ব্যান্ডউইথের ট্র্যাফিক হ্রাস করতে পারে।
যদিও স্যুইচটি তাত্ত্বিকভাবে ব্যান্ডউইথের উপলব্ধ একটি বাধা হ'ল মানে শেয়ার্ড ডিস্ক আর্কিটেকচারগুলি বেশ কার্যকরভাবে বড় লেনদেনের পরিমাণে স্কেল করবে। বেশিরভাগ মূলধারার ডিবিএমএস আর্কিটেকচারগুলি এই পদ্ধতিকে গ্রহণ করে কারণ এটি 'যথেষ্ট ভাল' স্কেলিবিলিটি এবং উচ্চ নির্ভরযোগ্যতা দেয়। ফাইন্ড চ্যানেলের মতো অপ্রয়োজনীয় স্টোরেজ আর্কিটেকচারের সাথে ব্যর্থতার কোনও একক বিন্দু নেই কারণ কোনও প্রসেসিং নোড এবং কোনও স্টোরেজ নোডের মধ্যে কমপক্ষে দুটি পাথ রয়েছে।
শেয়ারড-কিছুই না সিস্টেম
অংশীদারি-কিছুই নেই সিস্টেমগুলি এমন সিস্টেম যেখানে কমপক্ষে কিছু ডেটা স্থানীয়ভাবে কোনও নোডে রাখা হয় এবং অন্য নোডের কাছে সরাসরি দৃশ্যমান হয় না। এটি একটি কেন্দ্রীয় স্যুইচ এর বাধাটি সরিয়ে দেয়, নোডের সংখ্যা সহ ডাটাবেসকে স্কেল করতে (কমপক্ষে তত্ত্বে) allowing অনুভূমিক পার্টিশনটি নোডগুলিতে ডেটা বিভক্ত করতে দেয়; এটি ক্লায়েন্টের কাছে স্বচ্ছ বা নাও হতে পারে (উপরে ভাগ করে নেওয়া দেখুন)।
ডেটা সহজাতভাবে বিতরণ করা হয়েছে কারণ একটি প্রশ্নের একাধিক নোড থেকে ডেটা প্রয়োজন হতে পারে। যদি একটি জোড়কে বিভিন্ন নোড থেকে ডেটার প্রয়োজন হয় তবে একটি নোড থেকে অন্য নোডে জোড়কে সমর্থন করার জন্য পর্যাপ্ত ডেটা স্থানান্তর করতে একটি আধা-যোগ ক্রিয়াকলাপ ব্যবহৃত হয়। এটি বিপুল পরিমাণ নেটওয়ার্ক ট্র্যাফিকের ফলে, তাই ডেটা বন্টন অনুকূলিতকরণ কর্মক্ষমতা জিজ্ঞাসা করতে একটি বড় পার্থক্য করতে পারে।
প্রায়শই, অর্ধ-যোগদানের প্রয়োজনীয়তা হ্রাস করার জন্য কোনও ভাগ করা-না-করা সিস্টেমের নোডগুলিতে ডেটাগুলি প্রতিলিপি করা হয়। এটি ডেটা গুদাম সরঞ্জামগুলিতে বেশ ভালভাবে কাজ করে কারণ মাত্রাগুলি হ'ল ফ্যাক্ট টেবিলের চেয়ে ছোট আকারের অনেকগুলি অর্ডার এবং সহজেই নোড জুড়ে অনুলিপি করা যায়। এগুলি সাধারণত ব্যাচে লোড করা হয় যাতে প্রতিলিপি ওভারহেড কোনও ট্রান্সজেকশনাল অ্যাপ্লিকেশনটির চেয়ে কম সমস্যার থাকে।
কোনও অংশীদারি আর্কিটেকচারের অন্তর্নিহিত সমান্তরালতা এগুলি ডেটা গুদামের বৈশিষ্ট্যযুক্ত টেবিল-স্ক্যান / সামগ্রিক প্রশ্নের বৈশিষ্ট্যগুলিতে ভালভাবে উপযুক্ত করে তোলে। এই ধরণের ক্রিয়াকলাপটি প্রসেসিং নোডের সংখ্যার সাথে প্রায় রৈখিকভাবে স্কেল করতে পারে। নোডগুলি জুড়ে বড় বড় যোগগুলিতে বেশি ওভারহেড জড়িত থাকে কারণ আধা-যোগদানের ক্রিয়াকলাপ প্রচুর নেটওয়ার্ক ট্র্যাফিক তৈরি করতে পারে।
লেনদেন প্রক্রিয়াজাতকরণ অ্যাপ্লিকেশনগুলির জন্য বৃহত ডেটা ভলিউম সরিয়ে নেওয়া কম দরকারী, যেখানে একাধিক আপডেটের ওভারহেড এই ধরণের আর্কিটেকচারকে একটি ভাগ করা ডিস্কের চেয়ে কম আকর্ষণীয় করে তোলে। সুতরাং, এই ধরণের আর্কিটেকচারটি ডেটা গুদাম অ্যাপ্লিকেশনগুলির বাইরে ব্যাপকভাবে ব্যবহৃত হয় না।
ভাগ করে নেওয়া, কোরামের প্রতিরূপ এবং পরিণামের ধারাবাহিকতা
কোরামের প্রতিলিপি এমন একটি সুবিধা যেখানে কোনও ডিবিএমএস উচ্চ প্রাপ্যতার জন্য ডেটার প্রতিলিপি করে। এটি স্যানের মতো বিল্ট-ইন উচ্চ-প্রাপ্যতা বৈশিষ্ট্যগুলি না থাকা সস্তা পণ্য হার্ডওয়্যারটিতে কাজ করার উদ্দেশ্যে তৈরি সিস্টেমগুলির জন্য দরকারী। এই ধরণের সিস্টেমে সিস্টেমটি কোনও নোডের হার্ডওয়্যার ব্যর্থতার জন্য সিস্টেমকে স্থিতিশীল করতে রিড পারফরম্যান্স এবং রিডান্ট্যান্ট স্টোরেজ করার জন্য একাধিক স্টোরেজ নোড জুড়ে ডেটা প্রতিলিপি করা হয়।
যাইহোক, সমস্ত নোডে লেখার অনুলিপি হ'ল এম (নোডের জন্য এন (এক্স)) এবং এন লিখেছেন। লেনদেনের প্রতিশ্রুতি দেওয়ার আগে লেখাকে অবশ্যই সমস্ত নোডে প্রতিলিপি তৈরি করতে হবে যদি তা লেখাগুলিকে ব্যয়বহুল করে তোলে। কোরামের প্রতিলিপিটি হ'ল একটি সমঝোতা যা লিখনকে সঙ্গে সঙ্গে নোডের একটি সাবসেটে অনুলিপি করা যায় এবং তারপরে অলসভাবে একটি পটভূমি টাস্ক দ্বারা অন্যান্য নোডে লিখিত হয়। ক্লায়েন্টের কাছে লেনদেনের প্রতিবেদন করার আগে নোদের একটি ন্যূনতম সাবসেট (কোরাম) এ প্রতিলিপি করা হয়েছে তা নিশ্চিত করে একটি নিখরচু ডিগ্রী সরবরাহ করার সময় রাইটগুলি আরও দ্রুত প্রতিশ্রুতিবদ্ধ হতে পারে।
এর অর্থ এই যে, কোরামের বাইরে নোডগুলি পড়া শেষ না হওয়া অবধি পটভূমি প্রক্রিয়াটি বাকী নোডগুলিতে ডেটা লেখা শেষ না হওয়া পর্যন্ত ডেটাটির অপ্রচলিত সংস্করণগুলি দেখতে পারে। শব্দার্থবিজ্ঞানগুলি 'ইভেন্ট অব্যাহত ধারাবাহিকতা' নামে পরিচিত এবং আপনার আবেদনের প্রয়োজনীয়তার উপর নির্ভর করে গ্রহণযোগ্য হতে পারে বা নাও হতে পারে তবে এর অর্থ হ'ল সংস্থানগুলি সংস্থান ব্যবহারে ও (এন) এর চেয়ে ও (1) এর কাছাকাছি রয়েছে।
ভাগ করে নেওয়ার জন্য ক্লায়েন্টকে ডেটাবেসগুলির মধ্যে ডেটা বিভাজন সম্পর্কে সচেতন হওয়া প্রয়োজন, প্রায়শই 'ধারাবাহিক হ্যাশিং' নামে পরিচিত এক ধরণের অ্যালগরিদম ব্যবহার করে। একটি তীক্ষ্ণ ডাটাবেসে ক্লায়ারটি ক্লাস্টারে কোন সার্ভারে কোয়েরি ইস্যু করতে হবে তা নির্ধারণ করার জন্য কীটি হ্যাশ করে। অনুরোধগুলি ক্লাস্টারে নোডগুলিতে বিতরণ করার সাথে সাথে একক কোয়েরি সমন্বয়কারী নোডের সাথে কোনও বাধা নেই।
এই কৌশলগুলি ক্লাস্টারে নোড যোগ করে একটি ডাটাবেসটিকে একটি লিনিয়ার হারে স্কেল করতে দেয়। তাত্ত্বিকভাবে, যদি অন্তর্নিহিত স্টোরেজ মাধ্যমটি অবিশ্বস্ত হিসাবে বিবেচনা করা হয় তবে কোরামের প্রতিলিপিটি কেবলমাত্র প্রয়োজনীয়। পণ্য সার্ভারগুলি ব্যবহার করতে হয় তবে এটি দরকারী তবে অন্তর্নিহিত স্টোরেজ মেকানিজমের নিজস্ব উচ্চ প্রাপ্যতা স্কিম রয়েছে (উদাহরণস্বরূপ মিররড কন্ট্রোলার এবং হোস্টগুলিতে মাল্টি-পাথ সংযোগ সহ একটি SAN))
উদাহরণস্বরূপ, গুগলের বিগ টেবিল নিজেই কোরামের প্রতিলিপি প্রয়োগ করে না, যদিও এটি জিএফএসে বসে, একটি ক্লাস্টারযুক্ত ফাইল সিস্টেম যা কোরামের প্রতিলিপি ব্যবহার করে। বিগ টেবিল (বা কোনও ভাগ করা-কিছুই নয়) একাধিক নিয়ামক সহ একটি নির্ভরযোগ্য স্টোরেজ সিস্টেম ব্যবহার করতে পারে এবং নিয়ন্ত্রণকারীদের মধ্যে ডেটা বিভাজন করে। সমান্তরাল অ্যাক্সেস তখন ডেটা বিভাজন মাধ্যমে অর্জন করা হবে।
আরডিবিএমএস প্ল্যাটফর্মগুলিতে ফিরে যান
আরডিবিএমএসের সাহায্যে এই কৌশলগুলি ব্যবহার করা যায়নি এমন কোনও অন্তর্নিহিত কারণ নেই। তবে এ জাতীয় সিস্টেমে লক এবং সংস্করণ পরিচালনা বেশ জটিল হবে এবং এই জাতীয় ব্যবস্থার জন্য যে কোনও বাজার যথেষ্ট বিশেষজ্ঞ হবে। মূলধারার আরডিবিএমএস প্ল্যাটফর্মগুলির কোনওটিই কোরামের প্রতিলিপি ব্যবহার করে না এবং আমি কোনও আরডিবিএমএস পণ্য (কমপক্ষে কোনও তাৎপর্যপূর্ণ আপটেকের সাথে কমপক্ষে একটিও নেই) এর সম্পর্কে বিশেষভাবে অবগত নই।
ভাগ করা-ডিস্ক এবং ভাগ করে নেওয়া-তেমন সিস্টেমগুলি খুব বড় কাজের চাপ পর্যন্ত স্কেল করতে পারে। উদাহরণস্বরূপ, ওরাকল আরএসি 63৩ টি প্রসেসিং নোডগুলি (যা তাদের নিজস্ব ডানদিকে বড় এসএমপি মেশিন হতে পারে) এবং এসএএন-তে স্ট্রোচার কন্ট্রোলারের একটি নির্বিচার সংখ্যক সমর্থন করতে পারে। একটি আইবিএম সিসপ্লেক্স (জেডরিজ মেইনফ্রেমগুলির একটি ক্লাস্টার) একাধিক মেইনফ্রেমগুলি (প্রতিটি নিজস্ব প্রসেসিং পাওয়ার এবং I / O ব্যান্ডউইথের নিজস্ব) এবং একাধিক SAN নিয়ামককে সমর্থন করতে পারে। এই আর্কিটেকচারগুলি ACID শব্দার্থবিজ্ঞানের সাহায্যে খুব বড় লেনদেনের পরিমাণকে সমর্থন করতে পারে, যদিও তারা নির্ভরযোগ্য স্টোরেজ অনুমান করে। টেরাদাতা, নেতেজা এবং অন্যান্য বিক্রেতারা অত্যন্ত বড় ডেটা ভলিউমকে স্কেল করে এমন কিছু ভাগ করে নেওয়ার ভিত্তিতে উচ্চ-কর্মক্ষমতা বিশ্লেষণ প্ল্যাটফর্ম তৈরি করে।
এখনও অবধি, সস্তা তবে অতি-উচ্চমাত্রার পুরোপুরি এসিডি আরডিবিএমএস প্ল্যাটফর্মের বাজার মাইএসকিউএল দ্বারা প্রভাবিত, যা শার্পিং এবং মাল্টি-মাস্টার প্রতিলিপি সমর্থন করে। মাইএসকিউএল রাইটিং থ্রুপুট অনুকূলিতকরণের জন্য কোরামের প্রতিরূপ ব্যবহার করে না, সুতরাং লেনদেনের কমিটগুলি কোনও নোএসকিউএল সিস্টেমের চেয়ে ব্যয়বহুল। ভাগ করে নেওয়া খুব উচ্চ পঠিত থ্রুপুটগুলিকে অনুমতি দেয় (উদাহরণস্বরূপ ফেসবুক মাইএসকিউএল ব্যাপকভাবে ব্যবহার করে), তাই এই ধরণের আর্কিটেকচারটি পঠন-ভারী কাজের চাপের উপর ভাল স্কেল করে।
একটি আকর্ষণীয় বিতর্ক
Bigtable একটি ভাগ-কিছুই আর্কিটেকচার (মূলত একটি বিতরণ কী-মান জোড়া) হিসেবে মাইকেল Hausenblas দ্বারা নির্দিষ্ট হয় নিচে । আমার এটির মূল মূল্যায়নে ম্যাপ্রেডস ইঞ্জিন অন্তর্ভুক্ত ছিল যা বিগ টেবিলের একটি অংশ নয় তবে সাধারণত এর সবচেয়ে সাধারণ বাস্তবায়নের সাথে যেমন (হ্যাডোপ / এইচবিজ এবং গুগলের ম্যাপ্রেডস ফ্রেমওয়ার্ক) ব্যবহার করা হবে।
এই আর্কিটেকচারটি টেরাদাতার সাথে তুলনা করুন, যার স্টোরেজ এবং প্রসেসিংয়ের মধ্যে শারীরিক সখ্যতা রয়েছে (যেমন নোডগুলিতে ভাগ করা স্যানের পরিবর্তে স্থানীয় স্টোরেজ রয়েছে) আপনি যুক্তি দিতে পারেন যে বিশ্বব্যাপী দৃশ্যমান সমান্তরাল স্টোরেজ সিস্টেমের মাধ্যমে বিগ টেবিল / ম্যাপ্রেডুস একটি ভাগ করা ডিস্ক আর্কিটেকচার।
হ্যাডোপের মতো মানচিত্রের স্টাইল সিস্টেমের প্রসেসিং থ্রুপুটটি একটি নন-ব্লকিং নেটওয়ার্ক সুইচের ব্যান্ডউইথ দ্বারা সীমাবদ্ধ। 1 অ-ব্লক করা স্যুইচগুলি তবে নকশার অন্তর্নিহিত সমান্তরালতার কারণে বৃহত ব্যান্ডউইথের সমষ্টিগুলি পরিচালনা করতে পারে, তাই এগুলি কার্য সম্পাদনের ক্ষেত্রে খুব কমই একটি গুরুত্বপূর্ণ ব্যবহারিক বাধা। এর অর্থ হ'ল একটি শেয়ারড ডিস্ক আর্কিটেকচার (সম্ভবত একটি শেয়ারড-স্টোরেজ সিস্টেম হিসাবে ভাল হিসাবে পরিচিত) বৃহত ওয়ার্কলোডগুলিতে স্কেল করতে পারে যদিও তাত্ত্বিকভাবে নেটওয়ার্ক সুইচ একটি কেন্দ্রীয় বাধা।
মূল বক্তব্যটি লক্ষ্য করা যায় যে যদিও এই কেন্দ্রীয় বাধাটি শেয়ার্ড-ডিস্ক সিস্টেমে বিদ্যমান রয়েছে, তবুও একাধিক স্টোরেজ নোড (যেমন বিগ টেবিল ট্যাবলেট সার্ভার বা সান নিয়ন্ত্রক) সহ একটি পার্টিশনযুক্ত স্টোরেজ সাবসিস্টেমটি এখনও বড় কাজের চাপ পর্যন্ত স্কেল করতে পারে। একটি অ-ব্লকিং স্যুইচ আর্কিটেকচার (তত্ত্ব অনুসারে) পোর্ট রয়েছে যতগুলি বর্তমান সংযোগগুলি পরিচালনা করতে পারে।
1 অবশ্যই প্রসেসিং এবং আই / ও থ্রুপুট উপলব্ধ কর্মক্ষমতা একটি সীমা গঠন করে কিন্তু নেটওয়ার্ক সুইচ একটি কেন্দ্রীয় পয়েন্ট যার মাধ্যমে সমস্ত ট্র্যাফিক পাস হয়।