जवाबों:
संबंधपरक दृष्टिकोण से:
कैटलॉग वह जगह है जहां - अन्य चीजों के बीच - सभी विभिन्न स्कीमाओं (बाहरी, वैचारिक, आंतरिक) और सभी संबंधित मैपिंग (बाहरी / वैचारिक, वैचारिक / आंतरिक) को रखा जाता है।
दूसरे शब्दों में, कैटलॉग में विभिन्न वस्तुओं के बारे में विस्तृत जानकारी (कभी-कभी डिस्क्रिप्टर सूचना या मेटाडेटा ) शामिल होती है जो सिस्टम के लिए रुचि रखते हैं।
उदाहरण के लिए, अनुकूलक अनुक्रमणिका और अन्य भौतिक संग्रहण संरचनाओं के बारे में कैटलॉग जानकारी, साथ ही साथ अन्य सूचनाओं का उपयोग करता है, ताकि यह तय करने में मदद मिल सके कि उपयोगकर्ता अनुरोधों को कैसे लागू किया जाए। इसी तरह, सुरक्षा उपप्रणाली उपयोगकर्ताओं और सुरक्षा बाधाओं के बारे में कैटलॉग जानकारी का उपयोग पहले स्थान पर इस तरह के अनुरोधों को देने या अस्वीकार करने के लिए करती है।
डेटाबेस सिस्टम का परिचय, 7 वां संस्करण।, CJ दिनांक, पृष्ठ 69-70।
कैटलॉग को SQL- वातावरण में स्कीमा के संग्रह का नाम दिया गया है। SQL- वातावरण में शून्य या अधिक कैटलॉग होते हैं। एक कैटलॉग में एक या अधिक स्कीमा होते हैं, लेकिन हमेशा INFORMATION_SCHEMA नाम का एक स्कीमा होता है जिसमें सूचना स्कीमा के विचार और डोमेन शामिल होते हैं।
डेटाबेस भाषा एसक्यूएल , (डीईएस 9075 का प्रस्तावित संशोधित पाठ), पी 45
एक कैटलॉग अक्सर डेटाबेस का पर्याय बन जाता है । अधिकांश SQL dbms में, यदि आप information_schema दृश्यों की क्वेरी करते हैं, तो आपको डेटाबेस के नाम पर "table_catalog" कॉलम मैप में मान मिलेंगे।
यदि आप इन तीन परिभाषाओं में से किसी एक से अधिक व्यापक तरीके से कैटलॉग का उपयोग करते हुए अपना प्लेटफ़ॉर्म पाते हैं , तो हो सकता है कि यह किसी डेटाबेस की तुलना में कुछ व्यापक हो - डेटाबेस क्लस्टर, सर्वर या सर्वर क्लस्टर। लेकिन मुझे संदेह है कि, जब से आपने पाया है कि आपके प्लेटफ़ॉर्म के दस्तावेज़ में आसानी से।
माइक शेरिल 'कैट रिकॉल' ने एक बेहतरीन जवाब दिया । मैं केवल एक उदाहरण जोड़ूंगा : पोस्टग्रेज ।
जब आप किसी मशीन पर Postgres स्थापित करते हैं, तो उस अधिष्ठापन को a कहा जाता है क्लस्टर । यहाँ 'क्लस्टर' एक साथ काम करने वाले कई कंप्यूटरों के हार्डवेयर अर्थ में नहीं है। Postgres में, क्लस्टर इस तथ्य को संदर्भित करता है कि आपके पास एक से अधिक असंबंधित डेटाबेस हो सकते हैं और एक ही Postgres सर्वर इंजन का उपयोग करके चल सकते हैं।
शब्द क्लस्टर भी SQL मानक द्वारा उसी तरह परिभाषित किया गया है जैसे पोस्टग्रेज में। एसक्यूएल स्टैंडर्ड का बारीकी से पालन करना पोस्टग्रेज प्रोजेक्ट का एक प्राथमिक लक्ष्य है।
SQL-92 विनिर्देश का कहना है:
एक क्लस्टर कैटलॉग का कार्यान्वयन-परिभाषित संग्रह है।
तथा
बिल्कुल एक क्लस्टर SQL-सत्र से संबद्ध है
यह एक क्लस्टर सर्वर डेटाबेस (प्रत्येक कैटलॉग एक डेटाबेस है) कहने का एक तरीका है।
तो Postgres और SQL Standard दोनों में हमारे पास यह समरूपता पदानुक्रम है:
यह आरेख एकल क्लस्टर का प्रतिनिधित्व करता है। Postgres के मामले में, आपके पास प्रति होस्ट कंप्यूटर (या वर्चुअल OS) में एक से अधिक क्लस्टर हो सकते हैं। एकाधिक क्लस्टर आमतौर पर पोस्टग्रेज के नए संस्करणों (उदाहरण: 9.0 , 9.1 , 9.2 , 9.3 , 9.4 , 9.5 ) के परीक्षण और तैनाती के लिए किया जाता है ।
यदि आपके पास कई क्लस्टर हैं, तो डुप्लिकेट से ऊपर आरेख की कल्पना करें।
अलग-अलग पोर्ट नंबर एक साथ कई क्लस्टर को एक साथ चलाने और चलाने की अनुमति देते हैं। प्रत्येक क्लस्टर को अपना पोर्ट नंबर सौंपा जाएगा। सामान्य 5432
केवल डिफ़ॉल्ट है, और आपके द्वारा सेट किया जा सकता है। प्रत्येक क्लस्टर आने वाले डेटाबेस कनेक्शन के लिए अपने स्वयं के असाइन किए गए पोर्ट पर सुन रहा है।
उदाहरण के लिए, एक कंपनी में दो अलग-अलग सॉफ़्टवेयर डेवलपमेंट टीमें हो सकती हैं। एक वेयरहाउस का प्रबंधन करने के लिए सॉफ़्टवेयर लिखता है जबकि दूसरी टीम बिक्री और विपणन का प्रबंधन करने के लिए सॉफ़्टवेयर बनाती है। प्रत्येक देव टीम का अपना डेटाबेस होता है, दूसरे के आनंद से अनजान होता है।
लेकिन आईटी ऑपरेशन टीम ने एक ही कंप्यूटर बॉक्स (लिनक्स, मैक, जो भी हो) पर दोनों डेटाबेस को चलाने का निर्णय लिया। तो उस बॉक्स पर उन्होंने Postgres स्थापित किया। तो एक डेटाबेस सर्वर (डेटाबेस क्लस्टर)। उस क्लस्टर में, वे दो कैटलॉग बनाते हैं, प्रत्येक देव टीम के लिए एक कैटलॉग: एक का नाम 'वेयरहाउस' और एक का नाम 'बिक्री' है।
प्रत्येक देव टीम विभिन्न प्रयोजनों और पहुंच भूमिकाओं के साथ कई दर्जनों तालिकाओं का उपयोग करती है। इसलिए प्रत्येक देव टीम अपने टेबल को स्कीमा में व्यवस्थित करती है। संयोग से, दोनों देव टीम लेखांकन डेटा का कुछ ट्रैकिंग करते हैं, इसलिए प्रत्येक टीम के पास 'लेखांकन' नाम का एक स्कीमा होता है। समान स्कीमा नाम का उपयोग करना कोई समस्या नहीं है क्योंकि कैटलॉग प्रत्येक का अपना नामस्थान है इसलिए कोई टक्कर नहीं है।
इसके अलावा, प्रत्येक टीम अंततः लेखांकन उद्देश्यों के लिए एक तालिका बनाती है जिसका नाम 'खाता बही' है। फिर, कोई नामकरण टकराव नहीं।
आप इस उदाहरण को एक पदानुक्रम के रूप में सोच सकते हैं ...
Postgres 9.2
क्लस्टर (स्थापना)
warehouse
कैटलॉग (डेटाबेस)
inventory
योजना
accounting
योजना
ledger
तालिकाsales
कैटलॉग (डेटाबेस)
selling
योजना
accounting
स्कीमा (ऊपर जैसा संयोग)
ledger
तालिका (ऊपर जैसा संयोग है)Postgres 9.3
समूह
प्रत्येक देव टीम का सॉफ्टवेयर क्लस्टर से संबंध बनाता है। ऐसा करते समय, उन्हें यह निर्दिष्ट करना होगा कि कौन सा कैटलॉग (डेटाबेस) उनका है। पोस्टग्रेज के लिए आवश्यक है कि आप एक कैटलॉग से कनेक्ट करें, लेकिन आप उस कैटलॉग तक सीमित नहीं हैं। यह प्रारंभिक कैटलॉग केवल एक डिफ़ॉल्ट है, जिसका उपयोग तब किया जाता है जब आपके SQL कथन एक कैटलॉग के नाम को छोड़ देते हैं।
इसलिए अगर देव टीम को कभी भी दूसरी टीम के टेबल का उपयोग करने की आवश्यकता होती है, तो वे ऐसा कर सकते हैं यदि डेटाबेस व्यवस्थापक ने उन्हें ऐसा करने के लिए विशेषाधिकार दिया हो। प्रवेश पैटर्न में स्पष्ट नामकरण के साथ किया जाता है: कैटलॉग ।schema.table । इसलिए अगर 'वेयरहाउस' टीम को दूसरी टीम की ('सेल्स' टीम) लीडर को देखने की जरूरत होती है, तो वे एसक्यूएल स्टेटमेंट लिखते हैं sales.accounting.ledger
। अपने स्वयं के नेतृत्वकर्ता तक पहुँचने के लिए, वे केवल लिखते हैं accounting.ledger
। यदि वे स्रोत कोड के एक ही टुकड़े में दोनों बही-खातों का उपयोग करते हैं, तो वे अपने स्वयं के (वैकल्पिक) कैटलॉग नाम, warehouse.accounting.ledger
बनाम सहित भ्रम से बचने के लिए चुन सकते हैं sales.accounting.ledger
।
वैसे…
आप अधिक सामान्य अर्थ में प्रयुक्त स्कीमा शब्द सुन सकते हैं , जिसका अर्थ है किसी विशेष डेटाबेस की तालिका संरचना का संपूर्ण डिजाइन। इसके विपरीत, SQL मानक में शब्द का अर्थ विशेष रूप से Cluster > Catalog > Schema > Table
पदानुक्रम में विशेष परत है ।
पोस्टग्रेट्स शब्द डेटाबेस दोनों के साथ-साथ विभिन्न स्थानों जैसे कैटलॉग डेटाबेस कमांड का उपयोग करता है।
सभी डेटाबेस सिस्टम इस की पूरी पदानुक्रम प्रदान नहीं करते हैं Cluster > Catalog > Schema > Table
। कुछ के पास केवल एक सूची (डेटाबेस) है। कुछ में कोई स्कीमा नहीं है, बस एक सेट टेबल है। Postgres एक असाधारण शक्तिशाली उत्पाद है।
PostgreSQL (pg_catalog)
, सिस्टम सूची, जैसे कि "pg_" टेबल कि अपने डेटाबेस के मेटाडाटा परिभाषाओं की दुकान, के दर्जनों pg_index
, pg_trigger
और pg_constraint
। (2) ANSI (information_schema)
, एसक्यूएल मानक द्वारा परिभाषित उसी सिस्टम कैटलॉग का रीड-ओनली व्यू information_schema
। PgAdmin में "कैटलॉग" नोड का एक बेहतर नाम "सिस्टम" या "सिस्टम टेबल्स" हो सकता है।
...Catalog > Schema...
, तो कोई मुझे बता सकता है कि क्यों "कैटलॉग" और "स्कीमा" नोड्स में pgAdmin (PostgreSQL UI) नोड्स हैं, कैटलॉग के एक बच्चे के नोड के रूप में स्कीमा नोड के बजाय नोड?