তথাকথিত "NoSQL" ডাটাবেসে ডেটা মডেল স্কেলাবিলিটি এবং পারফরম্যান্সকে কতটা প্রভাবিত করে?


13

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

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

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

আমি কি ঠিক এখানে আছি? আমি কি এক এপি বা সিপি ডাটাবেসটিকে এক এসি থেকে একটির বেশি উদাহরণ তৈরি না করে পরিবর্তন করতে পারি? নাকি এমন কিছু আছে যা আমি মিস করছি?

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

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

দুঃখিত, এটি অনেক প্রশ্ন, তবে আমি সম্প্রতি নোএসকিউএল ডাটাবেস সম্পর্কে অনেক কিছু পড়েছি এবং আমার কাছে মনে হয় যে এগুলি ব্যবহারের সবচেয়ে বড় সুবিধা হ'ল তারা কেবলমাত্র পার্টিশনের পরিবর্তে আপনার ডেটার "আকৃতি" ফিট করে, সিএপি এবং এসিডি সম্মতি ত্যাগ করা। সর্বোপরি, প্রত্যেকেরই এত বেশি ডেটা নেই যে তাদের এটি ভাগ করে নেওয়া দরকার। এমনকি আমার ডেটা বিভাজন সম্পর্কে চিন্তা করার আগেও কি সম্পর্কযুক্ত মডেলটি ব্যবহার না করার জন্য কোনও পারফরম্যান্স / স্কেলাবিলিটি সুবিধা রয়েছে ?

উত্তর:


8

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

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

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

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

সুতরাং আমি মনে করি যে এটির অধিকার আপনার রয়েছে যাতে ডেটা কীভাবে সংরক্ষণ করা যায় তাতে একটি বড় সুবিধা রয়েছে। এমন কিছু জিনিস রয়েছে যা সম্পর্কিত মডেলগুলিতে ভালভাবে খাপ খায় না যা অন্যান্য মডেলগুলিতে ভাল ফিট করে (অন্য সংক্ষিপ্ত উদাহরণ হিসাবে, অ্যামাজন পণ্যগুলির জন্য তাদের সুপারিশ ইঞ্জিনের জন্য গ্রাফ ডাটাবেসগুলির কিছু ফর্ম ব্যবহার করে)।

আমি কি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি?

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

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


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

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

1
আমি আমার প্রতিক্রিয়া সম্পাদনা করেছি কারণ এটি আরও মন্তব্য যুক্ত করার চেয়ে সহজ ছিল।
হরথ

2
+1 এটি পি.এসইতে একটি দুর্দান্ত শুরু, আশা করি আপনি কিছুটা সময় ধরে থাকবেন এবং এর মতো মানের সামগ্রী যুক্ত করা চালিয়ে যাবেন!
জিমি হোফা

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