একটি সম্পর্কিত ডেটাবেজে ক্যাটালগ এবং একটি স্কিমা মধ্যে পার্থক্য কি?


99

আমি মনে করতাম যে ডেটাবেস নিজেই স্কিমা হ'ল "উপরের মোড়ক" বস্তু। মানে DB.schema.<what_ever_object_name_under_schema>

ওয়েল, ক্যাটালগ "মোড়ক" এখন বেশ বিভ্রান্তিকর। কেন আমাদের একটি ক্যাটালগ দরকার? কী উদ্দেশ্যে, সঠিকভাবে ক্যাটালগটি ব্যবহার করা উচিত?

উত্তর:


75

আপেক্ষিক দিক থেকে:

ক্যাটালগটি সেই জায়গা যেখানে - অন্যান্য জিনিসগুলির মধ্যে - বিভিন্ন স্কিমার সমস্ত (বহিরাগত, ধারণাগত, অভ্যন্তরীণ) এবং সংশ্লিষ্ট ম্যাপিংগুলির সমস্ত (বহিরাগত / ধারণাগত, ধারণাগত / অভ্যন্তরীণ) রাখা হয়।

অন্য কথায়, ক্যাটালগটিতে সিস্টেমের নিজস্ব আগ্রহী বিভিন্ন বিষয় সম্পর্কিত বিশদ তথ্য (কখনও কখনও ডেস্ক্রিপ্টর তথ্য বা মেটাডেটা বলা হয় ) রয়েছে।

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

ডাটাবেস সিস্টেমগুলির একটি ভূমিকা, সপ্তম সংস্করণ, সিজে তারিখ, পি 69-70।


এসকিউএল স্ট্যান্ডার্ড দৃষ্টিকোণ থেকে:

ক্যাটালগগুলি এসকিউএল-পরিবেশে স্কিমার সংগ্রহের নামকরণ করা হয়। একটি এসকিউএল-পরিবেশে শূন্য বা আরও ক্যাটালগ থাকে। একটি ক্যাটালগে এক বা একাধিক স্কিমা থাকে তবে সর্বদা INFORMATION_SCHEMA নামে একটি স্কিমা থাকে যা তথ্য স্কিমার দর্শন এবং ডোমেন ধারণ করে।

ডাটাবেস ল্যাঙ্গুয়েজ এসকিউএল , (ডিআইএস 9075 এর প্রস্তাবিত সংশোধিত পাঠ্য), পি 45


এসকিউএল দৃষ্টিকোণ থেকে:

একটি ক্যাটালগ প্রায়শই ডাটাবেসের সমার্থক হয় । বেশিরভাগ এসকিউএল ডিবিএম-তে, আপনি যদি তথ্য_স্কেমার দর্শনগুলি জিজ্ঞাসা করেন তবে আপনি "টেবিল_ক্যাটালগ" কলাম মানচিত্রে একটি ডাটাবেসের নামের মান খুঁজে পাবেন।

আপনি যদি এই তিনটি সংজ্ঞার যে কোনওটির চেয়ে বৃহত্তর উপায়ে ক্যাটালগ ব্যবহার করে আপনার প্ল্যাটফর্মটি দেখতে পান তবে এটি সম্ভবত একটি ডেটাবেস - একটি ডাটাবেস ক্লাস্টার, একটি সার্ভার, বা একটি সার্ভার ক্লাস্টারের চেয়ে আরও বিস্তৃত কিছু উল্লেখ করছে। তবে আমি সন্দেহ করি যেহেতু আপনি আপনার প্ল্যাটফর্মের ডকুমেন্টেশনে এটি সহজেই খুঁজে পেয়েছেন।


184

মাইক শেরিল 'ক্যাট রিকল' একটি দুর্দান্ত উত্তর দিয়েছে । আমি কেবল একটি উদাহরণ যুক্ত করব: পোস্টগ্র্রেস

ক্লাস্টার = একটি পোস্টগ্রিস ইনস্টলেশন

আপনি যখন কোনও মেশিনে পোস্টগ্রিস ইনস্টল করেন, সেই ইনস্টলেশনটিকে ক্লাস্টার বলা হয় । 'ক্লাস্টার' এখানে একাধিক কম্পিউটার একসাথে কাজ করার হার্ডওয়্যার অর্থে বোঝানো হয়নি । পোস্টগ্রিসে, ক্লাস্টারটি বোঝায় যে আপনি একই পোস্টগ্রিস সার্ভার ইঞ্জিনটি ব্যবহার করে একাধিক সম্পর্কযুক্ত ডেটাবেস থাকতে পারেন।

ক্লাস্টার শব্দটি এসকিউএল স্ট্যান্ডার্ড দ্বারা পোস্টগ্রিসের মতোই সংজ্ঞায়িত করা হয়েছে। এসকিউএল স্ট্যান্ডার্ডকে ঘনিষ্ঠভাবে অনুসরণ করা পোস্টগ্রিজ প্রকল্পের একটি প্রাথমিক লক্ষ্য।

এসকিউএল 92 স্পেসিফিকেশন বলেছেন:

একটি ক্লাস্টার হল ক্যাটালগগুলির একটি বাস্তবায়ন-সংজ্ঞায়িত সংগ্রহ।

এবং

ঠিক একটি ক্লাস্টার এসকিউএল-সেশনের সাথে জড়িত

এটি একটি ক্লাস্টারটি একটি ডাটাবেস সার্ভার বলে বলার একটি অবাস্তব উপায় (প্রতিটি ক্যাটালগ একটি ডাটাবেস)।

ক্লাস্টার> ক্যাটালগ> স্কিমা> সারণী> কলাম এবং সারি

সুতরাং পোস্টগ্র্রেস এবং এসকিউএল স্ট্যান্ডার্ড উভয় ক্ষেত্রেই আমাদের এই ধারক স্তরক্রমটি রয়েছে:

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

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

একাধিক ক্লাস্টার

এই চিত্রটি একটি একক ক্লাস্টারের প্রতিনিধিত্ব করে। পোস্টগ্রিসের ক্ষেত্রে, আপনার কাছে প্রতি হোস্ট কম্পিউটারে একাধিক ক্লাস্টার (বা ভার্চুয়াল ওএস) থাকতে পারে। একাধিক ক্লাস্টার সাধারণত পোস্টগ্রিসের নতুন সংস্করণ (উদাহরণস্বরূপ: 9.0 , 9.1 , 9.2 , 9.3 , 9.4 , 9.5 ) পরীক্ষা ও স্থাপনের জন্য করা হয় ।

আপনার যদি একাধিক ক্লাস্টার থাকে তবে উপরের চিত্রটি সদৃশ হয়ে নিন imagine

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

উদাহরণ পরিস্থিতি

উদাহরণস্বরূপ, একটি সংস্থার দুটি পৃথক সফ্টওয়্যার বিকাশ দল থাকতে পারে। একজন গুদাম পরিচালনা করার জন্য সফটওয়্যার লেখেন, অন্য দল বিক্রয় ও বিপণন পরিচালনার জন্য সফ্টওয়্যার তৈরি করে। প্রতিটি দেব দলের নিজস্ব ডাটাবেস থাকে, অপরটির সম্পর্কে সুখী অজানা।

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

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

তদুপরি, প্রতিটি দল অবশেষে 'খাতা "নামে অ্যাকাউন্টিংয়ের উদ্দেশ্যে একটি সারণী তৈরি করে। আবার নামকরণের সংঘর্ষ নেই।

আপনি এই উদাহরণটিকে শ্রেণিবিন্যাস হিসাবে ভাবতে পারেন ...

  • কম্পিউটার (হার্ডওয়্যার বাক্স বা ভার্চুয়ালাইজড সার্ভার)
    • Postgres 9.2 গুচ্ছ (ইনস্টলেশন)
      • warehouse ক্যাটালগ (ডাটাবেস)
        • inventory স্কিমা
          • [… কিছু টেবিল]
        • accounting স্কিমা
          • ledger টেবিল
          • [… কিছু অন্যান্য সারণী]
      • sales ক্যাটালগ (ডাটাবেস)
        • selling স্কিমা
          • [… কিছু টেবিল]
        • accounting স্কিমা (উপরের মত কাকতালীয় একই নাম)
          • ledger টেবিল (উপরের মত কাকতালীয় একই নাম)
          • [… কিছু অন্যান্য সারণী]
    • Postgres 9.3 গুচ্ছ
      • [… অন্যান্য স্কিমা এবং টেবিল]

প্রতিটি দেব দলের সফ্টওয়্যার ক্লাস্টারে একটি সংযোগ তৈরি করে। এটি করার সময়, তাদের অবশ্যই নির্ধারণ করতে হবে যে ক্যাটালগ (ডাটাবেস) তাদের। পোস্টগ্রিসের প্রয়োজন হয় যে আপনি একটি ক্যাটালগের সাথে সংযোগ স্থাপন করুন তবে আপনি সেই ক্যাটালগের মধ্যে সীমাবদ্ধ নন। আপনার এসকিউএল বিবৃতি কোনও ক্যাটালগের নাম বাদ দিলে সেই প্রাথমিক ক্যাটালগটি কেবলমাত্র একটি ডিফল্ট used

সুতরাং যদি ডেভ টিমকে অন্য দলের টেবিলগুলি অ্যাক্সেসের প্রয়োজন হয় তবে ডাটাবেস প্রশাসক যদি তাদের এটি করার সুযোগ দেয় তবে তারা তা করতে পারে। অ্যাক্সেস প্যাটার্নে সুস্পষ্ট নামকরণের সাথে তৈরি করা হয়: ক্যাটালগ.স্কেমা.টিটেবল । সুতরাং যদি 'গুদাম' টিমকে অন্য দলের ('বিক্রয়' দল) খাতাটি দেখার দরকার হয়, তারা এসকিউএল বিবৃতি দিয়ে লিখবে sales.accounting.ledger। তাদের নিজস্ব খাতা অ্যাক্সেস করতে, তারা কেবল লিখেন accounting.ledger। যদি তারা উভয় সূত্রে একই কোডের সোর্স কোডে অ্যাক্সেস করে তবে তারা তাদের নিজস্ব (alচ্ছিক) ক্যাটালগের নাম, warehouse.accounting.ledgerবনাম অন্তর্ভুক্ত করে বিভ্রান্তি এড়াতে বেছে নিতে পারে sales.accounting.ledger


যাইহোক ...

আপনি আরও সাধারণ অর্থে ব্যবহৃত স্কিমা শব্দটি শুনতে পাবেন , যার অর্থ কোনও নির্দিষ্ট ডাটাবেসের টেবিল কাঠামোর পুরো নকশা। বিপরীতে, এসকিউএল স্ট্যান্ডার্ডে শব্দের অর্থ Cluster > Catalog > Schema > Tableহায়ারার্কির নির্দিষ্ট স্তর নির্দিষ্ট করে ।

Postgres দুটিই ব্যবহার করে শব্দ ডাটাবেসের সেইসাথে ক্যাটালগ যেমন বিভিন্ন স্থানে ডেটাবেস তৈরি করে কমান্ড।

সমস্ত ডাটাবেস সিস্টেম এর সম্পূর্ণ শ্রেণিবদ্ধতা সরবরাহ করে না Cluster > Catalog > Schema > Table। কারও কারও কাছে একটি মাত্র ক্যাটালগ (ডাটাবেস) রয়েছে। কারও কাছে স্কিমা নেই, কেবলমাত্র এক সেট টেবিল। পোস্টগ্রিস একটি ব্যতিক্রমী শক্তিশালী পণ্য।


8
যদি এটি হয় তবে ...Catalog > Schema...কেউ কি আমাকে বলতে পারেন যে ক্যাটালগের চাইল্ড নোড হিসাবে স্কিমা নোডের পরিবর্তে পিজিএডমিনে (পোস্টগ্রিএসকিউএল ইউআই) "ক্যাটালগ" এবং "স্কিমা" নোডগুলি কেন ভাইবোন নোডগুলি করছে?
লাল মটর

6
"স্কিমা" নোডটি আপনার, তবে "ক্যাটালগস" নোডটি নেই। "ক্যাটালগগুলির" নোড ঠিক দুই আইটেম রয়েছে: (1) PostgreSQL (pg_catalog), সিস্টেম ক্যাটালগ, যেমন "pg_" টেবিল যে আপনার ডেটাবেস মেটাডেটা সংজ্ঞা সঞ্চয় কয়েক ডজন pg_index, pg_triggerএবং pg_constraint। (2) ANSI (information_schema), এসকিউএল স্ট্যান্ডার্ড হিসাবে সংজ্ঞায়িত একই সিস্টেম ক্যাটালগের পঠনযোগ্য ভিউ information_schema। পিজিএডমিনে "ক্যাটালগগুলি" নোডের আরও ভাল নাম হতে পারে "সিস্টেম" বা "সিস্টেম সারণী"।
তুলসী বাউরক

ধন্যবাদ "সমস্ত ডাটাবেস সিস্টেমই ক্লাস্টার> ক্যাটালগ> স্কিমা> টেবিলের এই সম্পূর্ণ শ্রেণিবিন্যাস সরবরাহ করে না" "আমি ভাবছি যে এটি মাইএসকিএল এবং এসকিউএল সার্ভারের মতো কী?
টিম

+1 একটি স্কিমাতে সমস্ত টেবিলের কি একই সম্পর্কযুক্ত স্কিমা রয়েছে (অর্থাত্ একই বৈশিষ্ট্যের একই সেট, এবং / অথবা একই বাধাগুলির একটি সেট)? আপনি কি আমার প্রশ্ন দেখতে পাচ্ছেন stackoverflow.com/questions/48232448/… ? ধন্যবাদ
টিম

4
@ টিম একটি স্কিমা হ'ল সারণীর গোছানো নামমাত্র স্থান , যেমন ফোল্ডারগুলি কোনও ফাইল সিস্টেমে ফাইলের নাম-স্থান সংগঠিত করে (স্কিমার কোনও নেস্টিং ব্যতীত)। সারণীগুলি সারি অনুসারে আপনার অ্যাপের ডেটা বৈশিষ্ট্য / কলাম হিসাবে সংরক্ষণ করে store
বেসিল বাউরক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.