মঙ্গোডিবি-তে মাল্টি-টেন্যান্ট ডাটাবেসের প্রতি প্রস্তাবিত পদ্ধতির কী?


98

আমি মঙ্গোডিবি ব্যবহার করে একটি বহু-ভাড়াটে অ্যাপ তৈরির কথা ভাবছি। আমার কাছে এখনও কত ভাড়াটিয়া থাকবেন সে সম্পর্কে আমার কোনও অনুমান নেই তবে আমি হাজারে স্কেল করতে সক্ষম হতে চাই।

আমি তিনটি কৌশল সম্পর্কে ভাবতে পারি:

  1. সুরক্ষার জন্য ভাড়াটে-নির্দিষ্ট ক্ষেত্রগুলি ব্যবহার করে একই সংগ্রহের সমস্ত ভাড়াটে
  2. একক ভাগ ডিবিতে ভাড়াটে প্রতি 1 সংগ্রহ
  3. ভাড়াটে প্রতি 1 ডেটাবেস

আমার মাথার ভয়েসটি পরামর্শ দিচ্ছে যে আমি বিকল্প 2 দিয়ে চলেছি।

চিন্তা ও জড়িত, কেউ?


প্রিয় @ ব্র্যান্টাপ্পার, আমাদের আবেদনের সাথে আমরা এখন একই পরিস্থিতিতে রয়েছি যাদের বহু-ভাড়াটে-সক্ষম হওয়া দরকার। ভাগ করার জন্য আপনার কি কোনও অভিজ্ঞতা আছে? মহান হবে, আপনাকে ধন্যবাদ।
জোশুয়া মুহিম

4
আমার অ্যাপ্লিকেশনটির জন্য, আমি মংগাডিবি-র পরিবর্তে পোস্টগ্র্রেসকিএল (হস্টোর এক্সটেনশনের মাধ্যমে কিছু নোএসকিউএল-এর মতো কার্যকারিতা সহ একটি রিলেশনাল ডাটাবেসের সুবিধা পেয়েছি) এবং স্কুলে স্ক্র্যাপিং দিয়ে রেলগুলিতে মাল্টি-টেন্যান্সি হ্যান্ডেল করে শেষ করেছি। আমরা এই রেলকাস্টে ব্যবহৃত একটির সাথে একই রকম ব্যবহার করি: Railscasts.com/episodes/388-
Braintapper

4
আমি জানি যে এই প্রশ্নের উত্তর ইতিমধ্যে নেওয়া হয়েছে তবে অন্য যে কোনও ব্যক্তিকে মঙ্গোহাক সাইটে এই অফিশিয়াল ডকুমেন্টটি উল্লেখ করা উচিত: সমর্থন . mongohq.com/use-cases/m Multi-tenant.html । এটি নীচে @ ব্রেন্টাপ্পার সমাধানটির বিরুদ্ধে স্পষ্টভাবে সমর্থন করে

4
উত্তর আপডেট হয়েছে। আপনার লিঙ্ক তথ্য সহজলভ্য মে 2010 ছিল না
Braintapper

@ ব্র্যান্টাপ্পার আপনি কি এখনই পোস্টগ্রেসকিউএল সলিউশন (রেলস্কাস্ট.কমের উপর ভিত্তি করে) ব্যবহার করছেন? আমি এটি ব্যবহার করতে চাই তবে আমি নিশ্চিত নই যে এটি সুরক্ষা যুক্ত করে এবং এটি কয়টি ভাড়াটে সমর্থন করতে পারে! এই অভিজ্ঞতা সম্পর্কে আমার আপনার মতামত প্রয়োজন দয়া করে। ধন্যবাদ
medBouzid

উত্তর:


73

সমস্যাগুলি সমাধান করার জন্য এবং একই সাথে আমারও একই সমস্যা রয়েছে। যেহেতু আমার সাআস মাল্টি-টেন্যান্ট অ্যাপ্লিকেশনগুলি তৈরির বহু বছরের অভিজ্ঞতা রয়েছে আমিও সম্পর্কিত ডেটাবেসগুলির সাথে আমার পূর্ববর্তী অভিজ্ঞতার ভিত্তিতে দ্বিতীয় বিকল্পটি নির্বাচন করতে যাচ্ছিলাম।

আমার গবেষণা করার সময় আমি এই নিবন্ধটি মংডোব সমর্থন সাইটে খুঁজে পেয়েছি (যাবার পরে আবার যুক্ত হয়েছে): https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases/m -tenant.html

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

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

অবশ্যই আপনি ডেটাবেস / সার্ভার স্তরে অ্যাক্সেসকে সীমাবদ্ধ করতে মোংডব ভূমিকা ভিত্তিক সুরক্ষা ব্যবহার করতে পারেন। ( http://docs.mongodb.org/manual/core/authorization/ )

আমি প্রথম বিকল্পটি সুপারিশ করব যখন:

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

আমি ভেরিয়েন্ট 3 এ যাব যদি:

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

আপনি যদি আপনার অ্যাপ্লিকেশন সম্পর্কে অতিরিক্ত বিশদ পোস্ট করেন তবে সম্ভবত আমি আপনাকে আরও বিশদ পরামর্শ দিতে পারি।


9
আমার ধারণা মূল লিঙ্কটি মারা গেছে, সংরক্ষণাগারভুক্ত একটির জন্য গিয়েছিল: web.archive.org/web/20140812091703/http://support.mongohq.com/…
পিটার বাটকোভিক

হ্যালো, আমরা কীভাবে মঙ্গডব ব্যবহার করে বর্তমান ডিবি দিয়ে নতুন ডিবি তৈরি করতে পারি?
হেম্যাল

@ রুশীয় আমরা কীভাবে 1 টি বেছে নেওয়ার জন্য যাচ্ছি তবে আমরা কীভাবে সূচীকরণ পরিচালনা করব
রবিনস গুপ্ত

10

আমি এই লিঙ্কটিতে মন্তব্যগুলিতে একটি ভাল উত্তর পেয়েছি:

http

মূলত অপশন # 2 এ যাওয়ার সবচেয়ে ভাল উপায় বলে মনে হচ্ছে।

ডেভিড মেটনের মন্তব্য থেকে উদ্ধৃতি:

মঙ্গোডিবি যেভাবে ডেটা ফাইল বরাদ্দ করে সে কারণে আমরা গ্রাহক প্রতি ডাটাবেস না রাখার সিদ্ধান্ত নিয়েছি। প্রতিটি ডাটাবেস নিজস্ব ফাইলের সেট ব্যবহার করে:

ডাটাবেসের জন্য প্রথম ফাইলটি dbname.0, তারপরে dbname.1, ইত্যাদি d dbname.0 2GB অবধি 64MB, dbname.1 128MB, ইত্যাদি হবে। ফাইলগুলি 2 গিগাবাইট আকারে পৌঁছে গেলে প্রতিটি ক্রমাগত ফাইলও 2 জিবি হয়।

সুতরাং যদি উপস্থিত সর্বশেষ ডেটাফাইলে যদি বলা হয়, 1 গিগাবাইট, সেই ফাইলটি যদি সম্প্রতি পৌঁছে যায় তবে 90% খালি থাকতে পারে।

ম্যানুয়াল থেকে।

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

শেয়ারিং প্রতিটি সংগ্রহের ভিত্তিতে স্ট্যান্ডার্ড হিসাবে থাকবে যা একটি সমস্যা উপস্থাপন করে যেখানে সংগ্রহটি কখনই ন্যূনতম আকারে পৌঁছায় না শাড়িং শুরু করতে, যেমনটি আমাদের বেশ কয়েকটি ক্ষেত্রে রয়েছে (যেমন সংগ্রহগুলি কেবল ব্যবহারকারীর লগইন বিশদ সংরক্ষণ করে)। তবে আমরা অনুরোধ করেছি যে এটি প্রতি ডাটাবেস স্তরেও সক্ষম হবে। Http://jira.mongodb.org/browse/SHARDING-41 দেখুন

প্রচুর সংগ্রহ ব্যবহার করে কোনও পারফরম্যান্স ট্রেড অফ নেই। Http://www.mongodb.org/display/DOCS/Using+a+ লার্জ + নাম্বার +++ সংগ্রহগুলি দেখুন


4
অন্যান্য উত্তরে প্রস্তাবিত হিসাবে, # 2 একটি ভাল পদ্ধতির নয়। অনুগ্রহ করে গ্রহণযোগ্য উত্তর পরিবর্তন করতে বিবেচনা করুন, কারণ এটি অন্য বিকাশকারীদের নেতৃত্ব মিস করতে পারে।
ক্লোপেজ

4
২০১০ সাল থেকে প্রশ্নটি প্রথম যখন জিজ্ঞাসা করা হয়েছিল তখন জিনিসগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হওয়ায় গ্রহণযোগ্য উত্তর পরিবর্তিত হয়েছে।
ব্রিন্টাপার 21

3

নেই বহু-ভাড়াটিয়া তথ্য স্থাপত্য সম্পর্কে দুটিই MSDN উপর একটি যুক্তিসঙ্গত নিবন্ধ যা আপনি উল্লেখ করতে ইচ্ছুক হতে পারে। এই নিবন্ধটি দ্বারা স্পর্শ করা কিছু মূল বিষয়:

  • অর্থনৈতিক বিবেচনা
  • সুরক্ষা
  • ভাড়াটে বিবেচনা
  • নিয়ন্ত্রক (আইনী)
  • দক্ষতা উদ্বেগ সেট

সফ্টওয়্যার হিসাবে পরিষেবা (সাস) কনফিগারেশন হিসাবে কয়েকটি নিদর্শন স্পর্শ করা হয়েছে।

তদতিরিক্ত, একটি জাঁকজমকপূর্ণ মূল্য এসকিউএল যে কোনও জায়গায় বলছিদের থেকে একটি আকর্ষণীয় লিখন আপ

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


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

3

আমি বিকল্প 2 জন্য যেতে হবে।

তবে আপনি mongod.exe কমান্ড লাইন বিকল্প - স্মার্টফিলস সেট করতে পারেন। এর অর্থ হ'ল একটি পরিমাণের বৃহত্তম ফাইলের আকার হবে 0.5 গিগাবাইট এবং 2 গিগাবাইট নয়। আমি এটি মঙ্গো 1.42 দিয়ে পরীক্ষা করেছি। সুতরাং বিকল্প 3 অসম্ভব নয়।


ঠিক তাই এটি সাহায্য করে,
প্রত্নতাত্ত্বিক ক্ষেত্রে

0

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


-2

এখানে আলোচনাটি নোএসকিউএল এবং মূলত মঙ্গোডিবি-তে রয়েছে , আমরা সিটাসে পোস্টগ্র্রেএসকিউএল ব্যবহার করছি এবং বিতরণকৃত / শার্পযুক্ত বহু-ভাড়াটে ডাটাবেস তৈরি করছি।

আমাদের ব্যবহারের ক্ষেত্রে নির্দেশিকাটি স্কিমা এবং বিভিন্ন মাল্টি-টেন্যান্ট নির্দিষ্ট বৈশিষ্ট্যগুলি coveringেকে একটি উদাহরণস্বরূপ অ্যাপ্লিকেশনটি দিয়ে যায়।

আরও কাঠামোগত ডেটার জন্য আমরা পোস্টগ্র্রেএসকিউএল এর জেএসওএনবি কলামটি এ জাতীয় এবং ভাড়াটে-নির্দিষ্ট ডেটা সঞ্চয় করতে ব্যবহার করি।

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