আমি মনে করতাম যে ডেটাবেস নিজেই স্কিমা হ'ল "উপরের মোড়ক" বস্তু। মানে DB.schema.<what_ever_object_name_under_schema>
।
ওয়েল, ক্যাটালগ "মোড়ক" এখন বেশ বিভ্রান্তিকর। কেন আমাদের একটি ক্যাটালগ দরকার? কী উদ্দেশ্যে, সঠিকভাবে ক্যাটালগটি ব্যবহার করা উচিত?
উত্তর:
আপেক্ষিক দিক থেকে:
ক্যাটালগটি সেই জায়গা যেখানে - অন্যান্য জিনিসগুলির মধ্যে - বিভিন্ন স্কিমার সমস্ত (বহিরাগত, ধারণাগত, অভ্যন্তরীণ) এবং সংশ্লিষ্ট ম্যাপিংগুলির সমস্ত (বহিরাগত / ধারণাগত, ধারণাগত / অভ্যন্তরীণ) রাখা হয়।
অন্য কথায়, ক্যাটালগটিতে সিস্টেমের নিজস্ব আগ্রহী বিভিন্ন বিষয় সম্পর্কিত বিশদ তথ্য (কখনও কখনও ডেস্ক্রিপ্টর তথ্য বা মেটাডেটা বলা হয় ) রয়েছে।
উদাহরণস্বরূপ, অপ্টিমাইজার ব্যবহারকারীদের অনুরোধগুলি কীভাবে প্রয়োগ করতে হয় তা সিদ্ধান্ত নিতে সহায়তা করতে সূচি এবং অন্যান্য শারীরিক স্টোরেজ স্ট্রাকচার সম্পর্কিত ক্যাটালগ তথ্য এবং আরও অনেক তথ্য ব্যবহার করে। তেমনি, সুরক্ষা সাবসিস্টেমটি ব্যবহারকারীদের এবং সুরক্ষার সীমাবদ্ধতা সম্পর্কে ক্যাটালগ তথ্য ব্যবহার করে প্রথমে এই ধরনের অনুরোধগুলি প্রদান বা অস্বীকার করার জন্য।
ডাটাবেস সিস্টেমগুলির একটি ভূমিকা, সপ্তম সংস্করণ, সিজে তারিখ, পি 69-70।
ক্যাটালগগুলি এসকিউএল-পরিবেশে স্কিমার সংগ্রহের নামকরণ করা হয়। একটি এসকিউএল-পরিবেশে শূন্য বা আরও ক্যাটালগ থাকে। একটি ক্যাটালগে এক বা একাধিক স্কিমা থাকে তবে সর্বদা INFORMATION_SCHEMA নামে একটি স্কিমা থাকে যা তথ্য স্কিমার দর্শন এবং ডোমেন ধারণ করে।
ডাটাবেস ল্যাঙ্গুয়েজ এসকিউএল , (ডিআইএস 9075 এর প্রস্তাবিত সংশোধিত পাঠ্য), পি 45
একটি ক্যাটালগ প্রায়শই ডাটাবেসের সমার্থক হয় । বেশিরভাগ এসকিউএল ডিবিএম-তে, আপনি যদি তথ্য_স্কেমার দর্শনগুলি জিজ্ঞাসা করেন তবে আপনি "টেবিল_ক্যাটালগ" কলাম মানচিত্রে একটি ডাটাবেসের নামের মান খুঁজে পাবেন।
আপনি যদি এই তিনটি সংজ্ঞার যে কোনওটির চেয়ে বৃহত্তর উপায়ে ক্যাটালগ ব্যবহার করে আপনার প্ল্যাটফর্মটি দেখতে পান তবে এটি সম্ভবত একটি ডেটাবেস - একটি ডাটাবেস ক্লাস্টার, একটি সার্ভার, বা একটি সার্ভার ক্লাস্টারের চেয়ে আরও বিস্তৃত কিছু উল্লেখ করছে। তবে আমি সন্দেহ করি যেহেতু আপনি আপনার প্ল্যাটফর্মের ডকুমেন্টেশনে এটি সহজেই খুঁজে পেয়েছেন।
মাইক শেরিল 'ক্যাট রিকল' একটি দুর্দান্ত উত্তর দিয়েছে । আমি কেবল একটি উদাহরণ যুক্ত করব: পোস্টগ্র্রেস ।
আপনি যখন কোনও মেশিনে পোস্টগ্রিস ইনস্টল করেন, সেই ইনস্টলেশনটিকে ক্লাস্টার বলা হয় । 'ক্লাস্টার' এখানে একাধিক কম্পিউটার একসাথে কাজ করার হার্ডওয়্যার অর্থে বোঝানো হয়নি । পোস্টগ্রিসে, ক্লাস্টারটি বোঝায় যে আপনি একই পোস্টগ্রিস সার্ভার ইঞ্জিনটি ব্যবহার করে একাধিক সম্পর্কযুক্ত ডেটাবেস থাকতে পারেন।
ক্লাস্টার শব্দটি এসকিউএল স্ট্যান্ডার্ড দ্বারা পোস্টগ্রিসের মতোই সংজ্ঞায়িত করা হয়েছে। এসকিউএল স্ট্যান্ডার্ডকে ঘনিষ্ঠভাবে অনুসরণ করা পোস্টগ্রিজ প্রকল্পের একটি প্রাথমিক লক্ষ্য।
এসকিউএল 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
। কারও কারও কাছে একটি মাত্র ক্যাটালগ (ডাটাবেস) রয়েছে। কারও কাছে স্কিমা নেই, কেবলমাত্র এক সেট টেবিল। পোস্টগ্রিস একটি ব্যতিক্রমী শক্তিশালী পণ্য।
PostgreSQL (pg_catalog)
, সিস্টেম ক্যাটালগ, যেমন "pg_" টেবিল যে আপনার ডেটাবেস মেটাডেটা সংজ্ঞা সঞ্চয় কয়েক ডজন pg_index
, pg_trigger
এবং pg_constraint
। (2) ANSI (information_schema)
, এসকিউএল স্ট্যান্ডার্ড হিসাবে সংজ্ঞায়িত একই সিস্টেম ক্যাটালগের পঠনযোগ্য ভিউ information_schema
। পিজিএডমিনে "ক্যাটালগগুলি" নোডের আরও ভাল নাম হতে পারে "সিস্টেম" বা "সিস্টেম সারণী"।
...Catalog > Schema...
কেউ কি আমাকে বলতে পারেন যে ক্যাটালগের চাইল্ড নোড হিসাবে স্কিমা নোডের পরিবর্তে পিজিএডমিনে (পোস্টগ্রিএসকিউএল ইউআই) "ক্যাটালগ" এবং "স্কিমা" নোডগুলি কেন ভাইবোন নোডগুলি করছে?