মাল্টি-টেন্যান্ট ডিবিগুলির কি একাধিক ডাটাবেস বা ভাগ করা টেবিল রয়েছে?


25

একটি বহু-ভাড়াটে ডাটাবেস:

  • একটি ডিবি সার্ভার যা প্রতিটি গ্রাহক / ভাড়াটে জন্য আলাদা (অভিন্ন) ডাটাবেস / স্কিমা আছে ;; অথবা
  • এমন একটি ডিবি সার্ভারের একটি ডাটাবেস / স্কিমা রয়েছে যেখানে গ্রাহকরা / ভাড়াটিয়ারা একই টেবিলে রেকর্ড ভাগ করে?

উদাহরণস্বরূপ, উপরের বিকল্প # 1 এর অধীনে, আমার কাছে একটি মাইএসকিউএল সার্ভার থাকতে পারে, বলুন mydb01.example.comএবং এটির customer1ভিতরে একটি ডাটাবেস থাকতে পারে । এই customer1ডাটাবেসটিতে 10 টি টেবিল থাকতে পারে যা সেই নির্দিষ্ট গ্রাহকের জন্য আমার অ্যাপ্লিকেশনটিকে শক্তি দেয় (গ্রাহক # 1)। customer2এটিতে একই একই 10 টি টেবিল সহ একটি ডাটাবেস থাকতে পারে , তবে কেবল # 2 গ্রাহকের জন্য ডেটা রয়েছে। এটিতে একটি customer3ডাটাবেস, একটি customer4ডাটাবেস এবং আরও কিছু থাকতে পারে ।

উপরের বিকল্প # 2 এ, কেবলমাত্র একটি একক ডাটাবেস / স্কিমা থাকবে, বলুন myapp_db, এতে আবার 10 টি টেবিল রয়েছে (উপরে যেমন রয়েছে)। তবে এখানে, সমস্ত গ্রাহকের জন্য ডেটা সেই 10 টি টেবিলের অভ্যন্তরে উপস্থিত রয়েছে এবং তারা টেবিলগুলি "ভাগ" করে। এবং অ্যাপ্লিকেশন স্তরে, যুক্তি এবং সুরক্ষা নিয়ন্ত্রণে গ্রাহকরা সেই 10 টি টেবিলের মধ্যে কোন রেকর্ডটিতে অ্যাক্সেস পেয়েছে এবং গ্রাহক # 1 কখনই অ্যাপ্লিকেশনটিতে লগইন না করে এবং গ্রাহক # 3 এর ডেটা ইত্যাদি দেখতে পাবে না তা নিশ্চিত করার জন্য দুর্দান্ত যত্ন নেওয়া হচ্ছে etc.

এর মধ্যে কোনটি dতিহ্যবাহী "বহু-ভাড়াটে" ডিবি গঠন করে? এবং যদি তা না হয় তবে কোনও মাল্টি-টেন্যান্ট ডিবি কী তা সম্পর্কে কোনও ব্যক্তি আমাকে (উপরে বর্ণিত পরিস্থিতি ব্যবহার করে) একটি উদাহরণ সরবরাহ করতে পারেন?


"বহু ভাড়াটে" কোথাও প্রয়োগ করা শক্তিশালী সুরক্ষা বোঝায় - যাতে কোনও ভাড়াটে অন্যের ডেটা দেখতে না পারে, এটি সংশোধন করতে না পারে, এতে অ্যাক্সেস অস্বীকার করতে পারে না, ইত্যাদি That সুরক্ষাটি কোনওভাবে প্রয়োগ করতে হবে। বিকল্পের # 1 এবং # 2 বিকল্প দুটিই কাজ করে তবে সুরক্ষা বিশ্লেষণ এবং সুরক্ষা বাস্তবায়নের জন্য প্রয়োজনীয় কাজটি আলাদা is এটির মূল্যের জন্য, আমি একটি স্টার্টআপে কাজ করেছিলাম যা বিকল্প # 2 এর মাধ্যমে বহু-প্রজাস্বত্ব বাস্তবায়িত করেছিল যেখানে টেবিলগুলি - একাধিক ভাড়াটে লোকের সারি সহ - সমস্ত শেষ ব্যবহারকারীদের কাছ থেকে গোপনে রাখা হয়েছিল (অনুমতি দিয়ে) এবং সুরক্ষিত পদ্ধতিতে সুরক্ষা সম্পূর্ণভাবে প্রয়োগ করা হয়েছিল।
ডেভিডবাক


1
যদি এটি ডুপ্লিকেট হিসাবে বন্ধ হয়ে যায়, তবে আমি মনে করি আমাদের এটিকে দুপ টার্গেটের সাথে একীভূত করতে ফ্ল্যাগ করা উচিত কারণ উভয় প্রশ্নের কিছু সত্যই ভাল উত্তর রয়েছে।

উত্তর:


30

এর মধ্যে কোনটি dতিহ্যবাহী "বহু-ভাড়াটে" ডিবি গঠন করে

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

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

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


ধন্যবাদ @ ডক ব্রাউন (+1) তবে তার পরে কীভাবে আপনি সম্ভবত এমন কোনও ডাটাবেস রাখতে পারেন যা মাল্টি টেন্যান্ট ছিল না ?!?
স্মিবিব

4
@ সিমিব: মাল্টি টেন্যান্সি হ'ল অ্যাপ্লিকেশনটির একটি সম্পত্তি যা বিভিন্ন ভাড়াটেদের দ্বারা ব্যবহৃত হয়, অ্যাপ্লিকেশনটির "পিছনে" ডাটাবেসের নয়। অবশ্যই, এটি সম্ভব করার জন্য ডিবি ধারণাটির বহু ভাড়াটে সমর্থন করা দরকার।
ডক ব্রাউন 15

4
@ সিমিব: ঠিক আছে ধরুন, আপনার ব্যবহারকারীর টেবিলটি এমন একটি প্রতিবন্ধকতা রয়েছে যা ব্যবহারকারীর নামটি অনন্য, এখন কোনও ভাড়াটে কিছু কর্মচারী আর একটি ব্যবহারকারীর নাম ব্যবহার করতে পারবেন না কারণ অন্য কোনও ভাড়াটে কর্মরত অন্য কেউ ইতিমধ্যে এটি ব্যবহার করছেন।
রিমকো গ্রিলিচ

5
@ সিমিব: যদি দুটি ভাড়াটেদের সেবা করার একমাত্র উপায় হ'ল দুটি পৃথক ডাটাবেস সহ দুটি ভিন্ন সার্ভারে দু'বার অ্যাপ্লিকেশন ইনস্টল করা এবং চালানো হয় তবে আমি মনে করি কেউ এই বহু-প্রজাস্বত্বকে কল করবেন না।
ডক ব্রাউন 15

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

36

মাইক্রোসফ্টের মতে, এই শব্দটির 3 টি সম্ভাব্য অর্থ রয়েছে (সমস্ত ভাড়াটেদের জন্য একটি ডাটাবেস, বা ভাড়াটে প্রতি এক ডাটাবেসার)।

আপনার উদাহরণ ব্যবহার করার জন্য, প্রতিটি গ্রাহক তার নিজস্ব ভাড়াটে হবে।

  1. ভাড়াটে প্রতি ডাটাবেস (গ্রাহক)

    • প্রতিটি ভাড়াটিয়াকে অন্যদের থেকে আলাদা করা হয় (অন্য ভাড়াটেদের ডেটাতে দুর্ঘটনাজনিত অ্যাক্সেস নেই)
    • বিচ্ছিন্নতা ভাড়াটেদের প্রয়োজনীয়তার জন্য ডেটা পুনরুদ্ধারের পাশাপাশি টেলরিং স্টোরেজ প্রয়োজনীয়তা পরিচালনা করাও সহজ করে তোলে।
  2. একটি ভাগ করা ডাটাবেস, পৃথক স্কিমা।

    • প্রতিটি ভাড়াটে ব্যক্তির নিজস্ব স্কিমা থাকে এবং তাদের ডেটা তাদের নিজস্ব টেবিলগুলিতে থাকে।
    • পুনরুদ্ধার করা আরও সময় সাশ্রয়ী হতে পারে, যেহেতু প্রত্যেকে একই ডাটাবেসে থাকে, আপনি কেবলমাত্র আগের ব্যাকআপে ডাটাবেসটি পুনরুদ্ধার করতে পারবেন না (এটি প্রতিটি ভাড়াটেদের ডেটা ফিরিয়ে আনবে)। একটি বিকল্প হ'ল নতুন ডাটাবেসে পুনরুদ্ধার করা এবং তারপরে কেবল 1 ভাড়াটেদের ডেটা মার্জ / কপি করা।
  3. একটি ভাগ করা ডাটাবেস, ভাগ করা স্কিমা।

    • প্রতিটি ভাড়াটেদের ডেটা একই টেবিলগুলিতে থাকে। উদাহরণস্বরূপ আপনি যদি অর্ডারগুলি ট্র্যাক করেন তবে প্রত্যেক ভাড়াটেদের আদেশগুলি "dbo.Orders" এ অবস্থিত।
    • ভাড়াটেদের তথ্য প্রতিটি টেবিলের কলাম দ্বারা আলাদা করা হয় (টেন্যান্টআইডি হতে পারে) এটি সারিটির মালিককে দেখায়।

এই নিবন্ধে প্রত্যেকটির পক্ষে ভাল মতামত রয়েছে যা ভালভাবে ব্যাখ্যা করা হয়েছে: https://msdn.microsoft.com/en-us/library/aa479086.aspx

বোনাস: আপনি এটিকে লিভিং কোয়ার্টার হিসাবে বিবেচনা করতে পারেন (চূড়ান্ত সরলীকৃত)।

  1. প্রত্যেক ভাড়াটে তার নিজস্ব বাড়ি আছে। তারা যা খুশি তা করতে পারে, এবং যদি এটি জ্বলে যায় তবে তা অন্য কারও পক্ষে সত্যই প্রভাবিত করে না।

  2. প্রতিটি ভাড়াটে একই বিল্ডিংয়ে রয়েছে, তবে তার নিজস্ব অ্যাপার্টমেন্ট রয়েছে।

  3. প্রত্যেকে একই অ্যাপার্টমেন্টে থাকে এবং কারা এর মালিক তা দেখানোর জন্য সমস্ত জিনিস একটি স্টিকি নোট দিয়ে চিহ্নিত করা হয়েছে।


2
আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আপনি কি দয়া করে আপনার উত্তরটি কিছুটা ব্যাখ্যা করতে পারেন? এটি আরও ভাল উত্তর তৈরি করতে পারে।
থমাস

1
আপনার বোনাসের উদাহরণটি দুর্দান্ত @ @ imms90
আরাভিন

3
মাইক্রোসফ্ট আপনার এমএসডিএন থেকে লিঙ্ক করা পৃষ্ঠাটি ফেলেছে। Wayback মেশিন এখনও একটি কপি আছে।
মাইক শেরিল 'ক্যাট

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