একটি বড় ডেটাবেস বনাম কয়েকটি ছোট ছোট ব্যক্তি


14

আমাদের একটি পরিস্থিতি ছিল আমরা (ক) সারণি উপসর্গ ব্যবহার করে একটি মাইএসকিউএল ডাটাবেসে অ্যাপ্লিকেশনগুলির উদাহরণ স্থাপন করতে পারি বা (খ) অ্যাপ্লিকেশনটির প্রতিটি উদাহরণের জন্য বিভিন্ন মাইএসকিউএল ডাটাবেস ব্যবহার করতে পারি, উদাহরণস্বরূপ,

"এ" সেটআপ করুন:

central_database
  app1_table1
  app1_table2
  app1_tablen
...
  appn_table1
  appn_table2
  appn_tablen

শেষের ফলাফলটি অনেক টেবিল সহ একটি বৃহত ডিবি being

"বি" সেটআপ করুন:

app1_db
  table1
  table2
  tablen

...

appn_db
  table1
  table2
  tablen

শেষের ফলাফলটি কয়েকটি টেবিল সহ অনেকগুলি ডাটাবেস।

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

আপনার সময় এবং চিন্তাভাবনার জন্য অনেক ধন্যবাদ!



সম্পর্কিত: dba.stackex
بدل.

মাইএসকিউএল "ডাটাবেস" প্রকৃতপক্ষে স্কিমা (অর্থাত্ নেমস্পেস) হ'ল, কেবল রক্ষণাবেক্ষণের ক্ষেত্রে পারফরম্যান্সে কোনও পার্থক্য থাকবে না।
mustaccio

উত্তর:


14

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

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

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

একক বিশাল ডাটাবেস পদ্ধতির পরিবর্তে আমি এই পদ্ধতির সাথে যে কারণে চলেছি, সম্ভাব্য ডাটাবেসগুলির নিখুঁত আকারটি তৈরি করা হত ... 1000 ডাটাবেসের প্রত্যেকটিতে 200 টি টেবিল ছিল এবং প্রতিটিগুলির মধ্যে স্বতন্ত্র টেবিলের অনেকগুলি ছিল ডাটাবেসগুলিতে বহু মিলিয়ন মিলিয়ন সারি ডেটা রয়েছে!

একক ডাটাবেস কনফিগারেশনের জন্য নির্দিষ্ট পরিমাণের সারণীগুলির (প্রায় 8 টির মধ্যে) মাল্টি-বিলিয়ন সারি ডেটা থাকতে হবে, এবং মোট ডিবি আকার 10Tb এর বেশি হত। আমরা প্রতিটি একাধিক ডাটাবেস সহ 5 টিবি রেড 10 স্টোরেজ সহ একাধিক সার্ভার রাখতে সক্ষম হয়েছি।

এটাই আমি করতাম! আশা করি এটি আপনার সিদ্ধান্ত গ্রহণে সহায়তা করবে ... :)


দুর্দান্ত উত্তর !!! +1 !!!
RolandoMySQLDBA

@ ডেভ্রিক্স - আপনি কীভাবে ডাউনটাইম ছাড়াই নতুন সার্ভারে ডিবিএস স্থানান্তর করবেন?
প্রতীক বোথরা

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

আপনি যদি এই হাজার হাজার ডাটাবেসের প্রতিটিটির জন্য ডেটা স্ট্রাকচার পরিবর্তন করতে চান? পাছায় আসল ব্যথা ছিল না?
ভিনসেন্ট

@ ভিনসেন্ট সত্যই নয়, কারণ তারা একটি কাস্টম বিল্ট স্ক্রিপ্ট ব্যবহার করে কোনও টেমপ্লেটের সাথে সিঙ্ক্রোনাইজ হয়েছিল। টেমপ্লেটে পরিবর্তন করুন এবং অন্যান্য ডাটাবেসে ডেটা লোড হওয়ার সাথে সাথে সিঙ্ক স্ক্রিপ্টটি পরবর্তী কয়েকদিন ধরে এটি যাদুতে কাজ করতে দিন।
ডেভ রিক্স

11

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

মাল্টি-টেন্যান্ট ডেটা আর্কিটেকচারে মাইক্রোসফ্টের এই দুর্দান্ত সাদা কাগজটিও দেখুন

এটি আপনার উল্লেখ করা পদ্ধতির সুবিধাগুলি / অসুবিধাগুলিও তুলে ধরে।


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

9

সেটআপ বি পরিচালনা করা সহজ উপায়

প্রতিটি tablenপৃথক ফোল্ডারে বসে। যদি আপনি ওএস সীমা পরীক্ষা করতে চান না তবে এটি খুব উপকারী হতে পারে ।

উদাহরণস্বরূপ, আমার নিয়োগকর্তা গাড়ি ডিলারশিপের একটি সিআরএম সিস্টেমের জন্য মাইএসকিউএল হোস্ট করে। ক্লায়েন্টের 800 টি ডিলারশিপ রয়েছে। প্রতিটি ডিলারশিপ ডাটাবেসের 160 টি টেবিল রয়েছে। এটি 128,000 টেবিল।

  • সেটআপ এ এর ​​অধীনে, সমস্ত 128,000 টেবিল একটি ডাটাবেসের অধীনে বসত।
  • বি সেটআপ বি এর অধীনে, 160 টি টেবিলের প্রতিটি সেট / var / lib / mysql এর অধীনে একটি সাবফোল্ডারে বসে।

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

  • সেটআপ এ এর ​​অধীনে, আপনি এক ফোল্ডারের অধীনে 128,000 ফাইল সম্পর্কে চিন্তিত হবেন। আপনার ওএস কি একক ফোল্ডারে থাকা অনেকগুলি ফাইলকে সমর্থন করতে পারে?
  • সেটআপ বি এর অধীনে এরকম কোনও উদ্বেগ নেই।

আপনি যদি টেবিল কাঠামোগুলি ব্যবহার করতে ALTER TABLEবা অন্য কোনও ডিডিএল ব্যবহার করতে পারেন :

  • সেটআপ এ এর ​​অধীনে আপনাকে পিএইচপি (বা বিশেষায়িত মাইএসকিউএল স্ক্রিপ্টস) ব্যবহার করে প্রয়োজনীয় টেবিলের নাম এবং এটি সম্পর্কিত অ্যাক্সেস করার আগে এবং সম্পর্কিত পরিবর্তনগুলির সাথে সম্পর্কিত ডিপিএল স্ক্রিপ্ট করতে হবে
  • বি সেটআপ বি এর অধীনে ডান ডাটাবেসে কানেক্ট করুন, তারপরে প্রতিবার একই নামযুক্ত টেবিলটি অ্যাক্সেস করুন। অ্যাক্সেস দৃষ্টান্ত সর্বদা পরিষ্কার হবে:
    • নির্দিষ্ট ডাটাবেস
    • অধীনে নির্দিষ্ট ফোল্ডার /var/lib/mysql
    • স্পেসিফিক টেবিলের নাম।

আপনি যদি বিভিন্ন ডিস্কে বিভিন্ন ডাটাবেস রাখতে চান:

  • সেটআপ এ এর ​​অধীনে, প্রতিটি টেবিলের জন্য পৃথক ডিস্কে স্থানান্তরিত সিমলিংকগুলি কেবলমাত্র "ফোল্ডারে ইনোডের সংখ্যা" সমস্যাটিকে আরও বাড়িয়ে তুলবে। ডিস্ক I / O এবং সামগ্রিক সারণী অ্যাক্সেস আরও জটিল করে তোলে এবং .frmফাইলগুলি বারবার অ্যাক্সেস করা হওয়ায় সামগ্রিক সার্ভার লোড বৃদ্ধি করে ।
  • সেটআপ বি এর অধীনে, কেবল একটি সম্পূর্ণ ডাটাবেস ফোল্ডারটিকে একটি পৃথক ডেটা মাউন্টে সরান। চাহিদা অনুযায়ী ডিস্ক I / O বিতরণ করা যেতে পারে।
  • কায়েট: ইনোডিবি-র পক্ষে অত্যন্ত নিরুৎসাহিত

রূপকভাবে কথা বলছেন, আপনি বরং কি চান?

  • একটি বেডরুম, একটি বাথরুম এবং একটি রান্নাঘর সহ একটি বিশাল অ্যাপার্টমেন্ট (সেটআপ)
  • একাধিক অ্যাপার্টমেন্ট, প্রতিটি নিজস্ব শয়নকক্ষ, বাথরুম এবং রান্নাঘর (সেটআপবি) সহ

যখন কোনও অ্যাপার্টমেন্টে একটি রেডিয়েটার ঠিক করার বিষয়টি আসে:

  • সেটআপ এ দ্বারা, প্রতিটি ভাড়াটিয়া অসুবিধে হতে পারে এবং জড়িত থাকতে হবে কারণ আপনাকে সবার সামনে যেমন ক্ষতিগ্রস্থ ভাড়াটেদের সাথে কথা বলতে হয়, তেমনি এটি প্রত্যেকের ব্যবসা like
  • দেয়াল বা পাইপগুলিতে কিছু সুর বেঁধে শোনা ব্যতীত সেটআপ বি দিয়ে, ভাড়াটিয়ারা তাদের ব্যক্তিগত জীবন নিয়ে যেতে পারেন
  • এই তালিকা এবং এর রূপকগুলি এগিয়ে যেতে পারে

আইএইচএমও যদিও বাজেটগুলি নকশা / অবকাঠামোগত সিদ্ধান্তগুলি ডিজাইনের চালিকা শক্তি হতে পারে তবে আমি সহজেই ক্লায়েন্টের প্রতি পৃথক ডাটাবেসের পক্ষে হতে পারি।


3

আমার একটি সাস পণ্য রয়েছে এবং ডেভ রিক্স উল্লিখিত মত একই সেটআপটি ব্যবহার করুন।

প্রতিটি গ্রাহকের নিজস্ব ডাটাবেস রয়েছে

আমি আরও কিছু পরামর্শ দেব:

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

  • আপনার অ্যাপ্লিকেশনটি আপনি যে কোনও জায়গাতেই থাকতে পারেন - বিশ্বজুড়ে অনেকগুলি ডেটাসেন্টারের জন্য আপনার কাছে ডাটাবেস থাকতে পারে।

  • আপনার অ্যাপ্লিকেশন আপনি চান হিসাবে বৃদ্ধি করতে পারেন। এটি যদি কোনও ওয়েব সাএস হয়, আপনি গ্রাহক লগইন হিসাবে সময় হিসাবে প্রতিটি ডাটাবেসকে নির্দেশ করে একটি লোড-ভারসাম্য ওয়েবসার্ভার ফার্ম তৈরি করতে পারেন।

  • আপনি কিছু গ্রাহকের জন্য কাস্টমাইজড ভিউ / ডেটাবেস তৈরি করতে সক্ষম হবেন - অন্যকে প্রভাবিত না করে। আপনি যদি আপনার ব্যবসায়ের অংশ হিসাবে কাস্টমাইজেশন দেওয়ার চেষ্টা করেন তবে এটি গুরুত্বপূর্ণ।

  • আপনি দুটি ওয়েব ফার্ম + ডাটাবেস ফার্ম সেট আপ করতে পারেন: একটি "এজ" এবং অন্যটি "স্ট্যাবল" রিলিজের জন্য। তারপরে, আপনার সমস্ত গ্রাহকদের কাছে আবেদন করার আগে আপনার কাছে গ্রাহকদের একটি ছোট গ্রুপ থাকা দরকার যা পরীক্ষা করতে ইচ্ছুক এবং নিশ্চিত হয়ে যায় যে সবকিছু প্রত্যাশিতভাবে কাজ করছে (অন্য কথায়, মানের নিশ্চয়তা [QA]), আপনার সমস্ত গ্রাহকদের কাছে আবেদন করার আগে।

  • দিনে কমপক্ষে একবার আপনার ডাটাবেসটিতে একটি স্বয়ংক্রিয় ব্যাকআপ জব থাকা উচিত।

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

    উদাহরণস্বরূপ, বিভিন্ন পোর্টে 5 টি ডাটাবেস সহ 5 মাস্টার সার্ভার + 1 স্লেভ সার্ভার - এটি করার জন্য পর্যাপ্ত পরিমাণ র‌্যাম রয়েছে।

  • আপনি যে কোনও সময় অন্য সার্ভারে একটি ডাটাবেস স্থানান্তর করতে আপনার "মাইগ্রেশন" সরঞ্জামটি করা উচিত।

  • আপনার উপার্জন সুরক্ষিত রাখতে আপনার ভিআইপি গ্রাহকদের আরও সুরক্ষিত / উপলভ্য ডাটাবেস সার্ভারে স্থানান্তরিত করা উচিত। মনে রাখবেন, বহুবার 20% গ্রাহকরা আপনার আয়ের 80% উপস্থাপন করে। বিশেষ গ্রাহকদের যত্ন নিন।

  • যখন কোনও গ্রাহক আপনার সংস্থা ত্যাগ করবেন তখন একটি "শেষ ব্যাকআপ" করার জন্য এবং "ডাটাবেস মুছতে" আপনার "বর্জ্য সংগ্রহকারীর" ব্যাকআপ থাকা উচিত।

  • আপনার অবশ্যই একটি ডেটাবেস চিত্র থাকতে হবে যেখানে আপনি নতুন অ্যাকাউন্টগুলির জন্য রফতানি এবং ব্যবহার করেন।

  • বিদ্যমান অ্যাকাউন্টগুলিতে নতুন প্যাচ প্রয়োগ করতে আপনার অবশ্যই একটি ডেটাবেস প্যাচিং সরঞ্জাম থাকতে হবে।

  • সাবভার্শন বা গিটের মতো সংস্করণ সরঞ্জাম ব্যবহার করে আপনার সমস্ত এসকিউএল প্যাচগুলির সংস্করণ রাখুন এবং আপনার নিজস্ব নম্বরও তৈরি করুন। xxx-4.3.0.sql - কখনও কখনও প্যাচিং ভুল হয়ে যায় এবং প্যাচিংয়ের টাস্কটি কীভাবে পুনরুদ্ধার করবেন তা আপনার অবশ্যই জানা উচিত।

ঠিক আছে, আমি আমার কোম্পানিতে এমন একটি পণ্য দিয়ে করি যাতে প্রায় 600 টেবিলের সাথে প্রায় 5k ডেটাবেস থাকে।

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