“हैलो दोस्त! इस पोस्ट में हम DBMS / SQL के अक्सर पूछे जाने वाले इंटरव्यू प्रश्न और उनके उत्तर कवर करेंगे, जो Basic से लेकर Advance Level तक के topics को शामिल करते हैं। यह Post विशेष रूप से उन Computer Science Student के लिए तैयार किया गया है जो IT या Software Companies में SQL और Database Management Systems पर अपनी पकड़ मजबूत बनाना चाहते हैं। यहाँ दिए गए प्रश्न और उत्तर न केवल आपके ज्ञान को बढ़ाएंगे बल्कि आपको इंटरव्यू में खुद को कॉन्फिडेंटली प्रस्तुत करने में भी मदद करेंगे। चलिए, शुरुआत करते हैं और उन सवालों का सामना करने के लिए खुद को तैयार करते हैं जो इंटरव्यू में आपकी सफलता का कारण बन सकते हैं।”
1. Database क्या है?
Database एक संगठित संग्रह (organized collection) है जिसमें डेटा को इस प्रकार संग्रहीत (store) किया जाता है कि उसे आसानी से प्रबंधित (manage), एक्सेस (access), और अपडेट (update) किया जा सके। डेटाबेस का उद्देश्य डेटा को संरचित रूप में संग्रहीत करना है ताकि उसका उपयोग, पुनः प्राप्ति (retrieval), और विश्लेषण (analysis) आसानी से किया जा सके।
उदाहरण के लिए, एक स्कूल का डेटाबेस जिसमें छात्रों की जानकारी (जैसे नाम, रोल नंबर, कक्षा, आदि) संग्रहीत की जाती है। यह डेटाबेस स्कूल प्रशासन को छात्रों की जानकारी को सरलता और तेजी से एक्सेस करने की अनुमति देता है।
डेटाबेस के मुख्य घटक
डेटाबेस के कुछ मुख्य घटक निम्नलिखित हैं:
- Data: डेटाबेस का मुख्य हिस्सा डेटा है। डेटा विभिन्न रूपों में हो सकता है, जैसे Text, Numbers, Image, Picture आदि। डेटाबेस में डेटा को Records के रूप में संग्रहीत किया जाता है।
- DBMS: यह एक सॉफ़्टवेयर है, जो डेटा को प्रबंधित करने, संग्रहीत करने, और एक्सेस करने में मदद करता है। DBMS का उपयोग डेटाबेस को व्यवस्थित रखने, डेटा को जोड़ने, हटाने और Edit / Modify करने के लिए किया जाता है। Ex: Oracle, SQL Server
- Table: Table डेटा को पंक्तियों (rows) और स्तंभों (columns) में संग्रहीत करती है। प्रत्येक Table एक विशिष्ट प्रकार के डेटा को संग्रहीत करती है, जैसे कि छात्रों की जानकारी या पाठ्यक्रम की जानकारी। उदाहरण के लिए, एक
Students
Table में कॉलम हो सकते हैं:StudentID
,Name
,Class
, और Age. - Schema: स्कीमा डेटाबेस की संरचना का वर्णन करता है। यह बताता है कि डेटाबेस में कौन-कौन सी टेबल्स होंगी, हर टेबल में कौन-कौन से कॉलम होंगे और उनके डेटा प्रकार क्या होंगे।
- Primary Key: यह एक Key है जो Records को unique पहचान देती है। यह सुनिश्चित करती है कि Table में कोई भी दो Records समान Primary Key नहीं है।। उदाहरण के लिए,
StudentID
एक प्राथमिक कुंजी हो सकती है जो प्रत्येक छात्र को विशिष्ट रूप से पहचानती है। - Foreign Key: यह Table में एक Key होती है जो दूसरी Table की Primary Key को संदर्भित करती है। इससे Table के बीच Relation स्थापित होता है। उदाहरण के लिए, यदि हमारे पास
Courses
तालिका है जिसमेंStudentID
कॉलम है, तो यहStudents
तालिका कीStudentID
प्राथमिक कुंजी को संदर्भित कर सकता है। - Index: इंडेक्स एक डेटा संरचना है, जो डेटा को तेज़ी से एक्सेस करने में मदद करती है। Index का उपयोग डेटा को जल्दी ढूंढ़ने के लिए किया जाता है, जैसे पुस्तक के अंत में एक इंडेक्स पेज होता है जो सामग्री को शीघ्रता से ढूंढ़ने में मदद करता है।
- Query: डेटाबेस में डेटा को एक्सेस, अपडेट या डिलीट करने के लिए Query का उपयोग किया जाता है। SQL एक सामान्य Query भाषा है जिसका उपयोग DBMS में डेटा को प्रबंधित करने के लिए किया जाता है। उदाहरण के लिए, SELECT क्वेरी का उपयोग डेटा को देखने के लिए किया जाता है।
- Reports: डेटाबेस से डेटा को Reports के रूप में भी निकाला जा सकता है। रिपोर्ट्स किसी विशेष उद्देश्य के लिए डेटा को संक्षेप में प्रस्तुत करती हैं, जैसे कि बिक्री डेटा, छात्रों का Reports आदि।
2. DBMS और DBMS में क्या अंतर है?
DBMS और RDBMS दोनों ही Data को store और manage करने के लिए उपयोग की जाने वाली technique हैं, लेकिन इन दोनों में कुछ महत्वपूर्ण अंतर हैं।
DBMS और RDBMS में अंतर
विशेषता | DBMS | RDBMS |
---|---|---|
डेटा का संगठन (Data Organization) | डेटा को सामान्यतः Files के रूप में Store किया जाता है, और डेटा के बीच संबंध (relation) का समर्थन नहीं किया जाता। | डेटा को tables के रूप में store किया जाता है, और tables के बीच संबंध बनाए जाते हैं। |
डेटा संबंध | डेटा के बीच संबंध नहीं होता, और यह ज्यादातर अकेले (isolated) डेटा को संभालता है। | तालिकाओं के बीच संबंध बनाए जाते हैं, जैसे Primary Key और Foreign Key का उपयोग। |
डेटा की अखंडता (Data Integrity) | DBMS में डेटा अखंडता को बनाए रखना कठिन होता है। | RDBMS में डेटा अखंडता बनाए रखने के लिए ACID गुणधर्म (ACID properties) का पालन किया जाता है। |
उदाहरण | XML, फ़ाइल सिस्टम, JSON | MySQL, Oracle, Microsoft SQL Server |
उदाहरण के साथ समझें
मान लीजिए हमारे पास दो प्रकार के डेटाबेस हैं: एक स्कूल का DBMS और दूसरा स्कूल का RDBMS।
DBMS उदाहरण
DBMS में डेटा को अलग-अलग फाइल्स में संग्रहीत किया जाएगा। उदाहरण के लिए, स्कूल में दो फाइल्स हो सकती हैं:
1. Students.txt:
StudentID: 1, Name: अमित, Class: 10th
StudentID: 2, Name: रिया, Class: 9th
2. Course.txt:
CourseID: 101, CourseName: गणित
CourseID: 102, CourseName: विज्ञान
इन दोनों फाइल्स में डेटा अलग-अलग है और इन फाइल्स के बीच कोई संबंध नहीं है। अगर हमें किसी छात्र और उसके पाठ्यक्रम की जानकारी चाहिए, तो दोनों फाइल्स को मैन्युअल रूप से मिलाना पड़ेगा।
RDBMS उदाहरण
RDBMS में डेटा Table में संग्रहीत किया जाता है, और Table के बीच संबंध (relations) बनाए जाते हैं।
1. Students Table:
StudentID | Name | Class |
---|---|---|
1 | अमित | 10th |
2 | रिया | 9th |
2. Course Table:
यहाँ, StudentID
कॉलम Students
टेबल में Primary Key है और Courses
टेबल में Foreign Key के रूप में मौजूद है। इस तरह, इन Table के बीच एक संबंध स्थापित होता है जो बताता है कि कौन सा छात्र कौन सा पाठ्यक्रम ले रहा है।
CourseID | CourseName | StudentID |
---|---|---|
101 | गणित | 1 |
102 | विज्ञान | 2 |
मुख्य बिंदु
- DBMS में, डेटा के बीच कोई स्पष्ट संबंध नहीं होता और डेटा की अखंडता बनाए रखना मुश्किल होता है।
- RDBMS में, तालिकाओं के बीच संबंध स्थापित किए जाते हैं, जिससे डेटा को जोड़ने और संगठित रूप से प्रबंधित करना आसान होता है।
RDBMS का उपयोग बड़े और जटिल डेटाबेस प्रबंधन के लिए किया जाता है, जबकि DBMS का उपयोग साधारण और छोटे डेटाबेस के लिए किया जाता है।
3. SQL क्या है?
SQL (Structured Query Language एक विशेष Database भाषा है जिसका उपयोग डेटाबेस के साथ बातचीत (interaction) करने के लिए किया जाता है। SQL का उपयोग डेटाबेस में डेटा को जोड़ने (insert), निकालने (select), अपडेट करने (update), और हटाने (delete) के लिए किया जाता है। SQL का प्राथमिक उद्देश्य डेटाबेस को manage करना और उसमें संग्रहीत डेटा को access करना है।
SQL का उपयोग मुख्य रूप से RDBMS (Relational Database Management System) में किया जाता है, जैसे कि MySQL, Oracle, SQL Server, PostgreSQL, आदि।
SQL का उपयोग क्यों किया जाता है?
SQL का उपयोग कई कारणों से किया जाता है, जिनमें से कुछ मुख्य कारण निम्नलिखित हैं:
- डेटा को आसानी से Access और Manage करना: SQL की मदद से हम डेटाबेस में संग्रहीत डेटा को आसानी से एक्सेस और Manage कर सकते हैं। उदाहरण के लिए, यदि हमें किसी विशेष छात्र की जानकारी चाहिए, तो SQL Query के माध्यम से हम तुरंत उसकी जानकारी प्राप्त कर सकते हैं।
- डेटा को जोड़ना, हटाना और अपडेट करना: SQL का उपयोग डेटाबेस में नए डेटा को जोड़ने (insert), मौजूदा डेटा को अपडेट करने (update) और पुराने या अनावश्यक डेटा को हटाने (delete) के लिए किया जाता है। यह हमें डेटाबेस में डेटा को व्यवस्थित और अद्यतन (update) रखने में मदद करता है।
- डेटा को Filters और Sorts करना: SQL में ऐसी क्वेरियों का उपयोग कर सकते हैं जिनसे डेटा को विशिष्ट मानदंडों के आधार पर फ़िल्टर (filter) और सॉर्ट (sort) किया जा सकता है। उदाहरण के लिए, किसी कक्षा के सभी छात्रों की जानकारी को उनकी उम्र के आधार पर क्रमबद्ध किया जा सकता है।
- डेटाबेस की सुरक्षा: SQL में ऐसी सुविधाएं होती हैं जो डेटाबेस की सुरक्षा (security) को बढ़ाने में मदद करती हैं। SQL के माध्यम से हम यह तय कर सकते हैं कि कौन सा उपयोगकर्ता किस डेटा को एक्सेस कर सकता है और कौन सा नहीं।
- डेटाबेस में संबंध स्थापित करना: SQL का उपयोग RDBMS में Tables के बीच संबंध (relation) बनाने के लिए किया जाता है। Primary Key और Foreign Key जैसे संबंधों का उपयोग कर SQL में तालिकाओं के बीच डेटा को लिंक किया जा सकता है।
SQL के मुख्य प्रकार
SQL में कुछ मुख्य प्रकार की क्वेरियाँ होती हैं, जो विभिन्न कार्यों को पूरा करने के लिए उपयोग की जाती हैं:
- DDL (Data Definition Language):
- इसका उपयोग डेटाबेस और टेबल्स को परिभाषित और प्रबंधित करने के लिए किया जाता है।
- उदाहरण:
CREATE
,ALTER
,DROP
- DML (Data Manipulation Language):
- इसका उपयोग डेटाबेस में डेटा को जोड़ने, संशोधित करने और हटाने के लिए किया जाता है।
- उदाहरण:
INSERT
,UPDATE
,DELETE
- DCL (Data Control Language):
- इसका उपयोग डेटाबेस की सुरक्षा को नियंत्रित करने के लिए किया जाता है।
- उदाहरण:
GRANT
,REVOKE
- TCL (Transaction Control Language):
- इसका उपयोग डेटाबेस में लेनदेन (transactions) को नियंत्रित करने के लिए किया जाता है।
- उदाहरण:
COMMIT
,ROLLBACK
,SAVEPOINT
SQL का उदाहरण
नीचे SQL का एक सरल उदाहरण दिया गया है, जो छात्रों की जानकारी को डेटाबेस में जोड़ने और एक्सेस करने के लिए उपयोग किया गया है।
1. डेटाबेस में डेटा जोड़ना:
INSERT INTO Students (StudentID, Name, Class, Age)
VALUES (1, 'अमित', '10th', 15);
यह SQL Query Students
Table में एक नया छात्र जोड़ती है।
2. डेटाबेस से डेटा Access करना:
SELECT sname from students.
यह Query Students
Tables से उन छात्रों के नाम और कक्षा को प्राप्त करती है जिनकी उम्र 15 है।
3. डेटा अपडेट करना:
UPDATE Students SET Class = '11th' WHERE StudentID = 1;
यह Query StudentID
1 वाले छात्र की कक्षा को ’11th’ में बदल देती है।
4. डेटा हटाना:
DELETE FROM Students WHERE StudentID = 1;
यह Query StudentID
1 वाले छात्र का रिकॉर्ड Students
Table से हटा देती है।
4. Normalization क्या है?
Normalization डेटाबेस डिज़ाइन की एक प्रक्रिया है, जिसका उद्देश्य डेटा को इस प्रकार व्यवस्थित करना है कि डेटा की Redundancy) और अनावश्यकता (redundancy) को कम किया जा सके और डेटा की integrity को बढ़ाया जा सके। Normalization में डेटा को छोटे, संबंधित tables में विभाजित किया जाता है और उनके बीच संबंध (relationships) बनाए जाते हैं।
डेटाबेस को Normalization करने से डेटा की पुनरावृत्ति कम होती है, और डेटाबेस अधिक कुशल (efficient) और सटीक (accurate) बनता है।
Normalization के प्रकार
Normalization की प्रक्रिया को विभिन्न चरणों (forms) में विभाजित किया गया है, जिन्हें Normal Forms कहा जाता है। मुख्य Normal Forms निम्नलिखित हैं:
- First Normal Form – 1NF:
- Table को 1NF में तब कहा जाता है जब इसमें सभी मान परमाण्विक (atomic) होते हैं, अर्थात हर कॉलम में एकल (single) मान होता है।
- कोई दो रिकॉर्ड एक समान नहीं होते और Table में हर पंक्ति का एक यूनिक पहचानकर्ता (प्राथमिक कुंजी) होता है।
- उदाहरण: यदि एक छात्र के पास एक से अधिक फोन नंबर हैं, तो हम उन फोन नंबरों को अलग-अलग पंक्तियों में संग्रहीत करेंगे।
StudentID | Name | PhoneNumbers |
---|---|---|
1 | Raju Verma | 9608#####, 7488###### |
1NF में उदाहरण:
StudentID | Name | PhoneNumber |
---|---|---|
1 | अमित | 98080##### |
1 | अमित | 7488###### |
2. Second Normal Form – 2NF
- Table को 2NF में तब कहा जाता है जब वह 1NF में हो और सभी गैर-प्रमुख विशेषताएँ (non-prime attributes) पूरी तरह से प्राथमिक कुंजी (primary key) पर निर्भर करती हों।
- इसका मतलब है कि यदि किसी Table में कंपोजिट कुंजी (composite key) है, तो सभी गैर-प्रमुख विशेषताएँ पूरी कुंजी पर निर्भर होनी चाहिए, न कि उसके किसी हिस्से पर।
3. Third Normal Form – 3NF
- Table 3NF में तब होती है जब वह 2NF में होती है और सभी गैर-प्रमुख विशेषताएँ प्राथमिक कुंजी पर ही निर्भर होती हैं (यानी, किसी अन्य गैर-प्रमुख विशेषता पर निर्भर नहीं होती हैं)।
- उदाहरण: यदि एक
Students
Table मेंStudentID
,StudentName
, औरDepartmentName
कॉलम हैं, तोDepartmentName
सीधेStudentID
पर निर्भर होना चाहिए न किStudentName
पर।
4. Boyce-Codd Normal Form – BCNF:
- BCNF 3NF का एक मजबूत रूप है।
- Table BCNF में तब होती है जब वह 3NF में होती है और Table में प्रत्येक निर्धारक (determinant) एक कुंजी होती है।
- BCNF में, किसी भी आंशिक निर्भरता (partial dependency) की अनुमति नहीं होती, जो जटिल Table के लिए विशेष रूप से उपयोगी है।
5. Fourth Normal Form – 4NF
- Table 4NF में तब होती है जब वह BCNF में होती है और Table में बहु-मूल्य निर्भरता (multi-valued dependency) नहीं होती।
- इसका मतलब है कि यदि कोई Table एक ही कुंजी के आधार पर कई मान संग्रहीत कर सकती है, तो इसे अलग Table में विभाजित किया जाना चाहिए।
6. Fifth Normal Form – 5NF:
- Table 5NF में तब होती है जब वह 4NF में होती है और इसमें किसी प्रकार का join dependency नहीं होता।
- 5NF का लक्ष्य डेटा को और अधिक छोटे भागों में तोड़कर संग्रहीत करना है ताकि डेटा की पुनरावृत्ति और निर्भरता की सभी संभावनाएँ समाप्त हो जाएँ।
5. Primary Key.. और Foreign Key.. में अंतर
Primary Key और Foreign Key दोनों ही Database में tables के बीच Relation बनाने और डेटा को Unique ID से पहचानने में मदद करते हैं। लेकिन इन दोनों Keys भूमिका और उद्देश्य अलग होते हैं।
विशेषता | Primary Key | Foreign Key |
---|---|---|
परिभाषा | Primary Key एक Table में एक Column है जो प्रत्येक Records को Unique ID से पहचानता है। | Foreign Key एक Table में एक Column है जो दूसरी Table में Primary Key से link होती है, और Table के बीच relation बनाती है। |
अद्वितीयता (Uniqueness) | Primary Key का मान Table में अद्वितीय (unique) होता है, अर्थात इसमें डुप्लीकेट मान नहीं हो सकते। | Foreign Key का मान दूसरी Table के Primary Key से मेल खाता है, इसमें डुप्लीकेट मान हो सकते हैं। |
NULL मान | Primary Key में NULL Value नहीं हो सकता; हर Records के लिए एक Value आवश्यक है। | Foreign Key में NULL Value हो सकते हैं, यदि आवश्यक न हो। |
उद्देश्य | Primary Key का उपयोग Table में Record को Unique रूप से पहचानने के लिए किया जाता है। | Foreign Key का उपयोग Table के बीच Relation स्थापित करने के लिए किया जाता है। |
Table के बीच संबंध | Primary Key Table में काम करती है और किसी अन्य Table से कोई Relation नहीं बनाती। | Foreign Key Table के बीच Relation बनाने के लिए Primary Key से लिंक होती है। |
उदाहरण के साथ समझें
मान लीजिए हमारे पास दो Table हैं: Students
और Enrollments
।
- 1. Students Table:
StudentID | Name | Age |
---|---|---|
1 | अमित | 20 |
2 | रिया | 21 |
3 | सौरभ | 19 |
- यहाँ
StudentID
Primary Key है, जो प्रत्येक Student को Unique IDसे पहचानती है।
Enrolments Table
EnrollmentID | CourseName | StudentID |
---|---|---|
101 | गणित | 1 |
102 | विज्ञान | 2 |
103 | अंग्रेजी | 1 |
- यहाँ
StudentID
Foreign Key है, जोStudents
Table केStudentID
से लिंक होती है औरEnrollments
Table मेंStudents
Table के साथ संबंध बनाती है।
सारांश
- Primary Key एक Table में ID Unique होती है और डुप्लीकेट या NULL मान की अनुमति नहीं देती।
- Foreign Key Table के बीच संबंध स्थापित करती है और दूसरी Table की Primary Key से लिंक होती है, जिससे Referential Integrity सुनिश्चित होती है।
6. ACID Properties क्या होती हैं?
ACID डेटाबेस में लेन-देन (transactions) की विश्वसनीयता सुनिश्चित करने के लिए चार मुख्य गुणों का एक सेट है। ये चार गुण हैं:
- Atomicity:
- Atomicity का अर्थ है कि एक लेन-देन (Transaction) या तो पूरी तरह से पूरा होगा या बिल्कुल भी नहीं। इसका मतलब है कि किसी भी लेन-देन की सभी क्रियाओं को सफलतापूर्वक लागू किया जाना चाहिए; यदि इनमें से कोई भी विफल होती है, तो लेन-देन को रद्द कर दिया जाता है, और डेटाबेस अपने पहले के स्थिर (consistent) अवस्था में वापस आ जाता है।
- उदाहरण: यदि एक बैंक में किसी खाते से राशि निकाल कर दूसरे खाते में जमा करनी है, तो यह लेन-देन या तो पूरी तरह से पूरा होगा या बिल्कुल नहीं, जिससे राशि खोने की कोई संभावना नहीं होगी।
- Consistency:
- संगतता का अर्थ है कि लेन-देन के बाद भी डेटाबेस एक Valid स्थिति में रहेगा। इसका मतलब है कि किसी भी लेन-देन के दौरान लागू किए गए सभी नियमों और प्रतिबंधों का पालन किया जाता है, जिससे डेटाबेस की अखंडता (integrity) बनी रहती है।
- उदाहरण: यदि एक लेन-देन में किसी खाते का बैलेंस नकारात्मक (negative) नहीं होना चाहिए, तो किसी भी लेन-देन के बाद यह सुनिश्चित किया जाता है कि इस नियम का पालन हो रहा है।
- Isolation:
- Isolation का मतलब है कि यदि कई लेन-देन एक साथ होते हैं, तो प्रत्येक लेन-देन स्वतंत्र रूप से और अलग-अलग निष्पादित होता है, जैसे कि वे अकेले ही चल रहे हों। किसी लेन-देन का प्रभाव तभी दिखाई देता है जब वह पूरा हो जाता है।
- उदाहरण: यदि एक उपयोगकर्ता एक खाते में बदलाव कर रहा है, तो दूसरे उपयोगकर्ता को उसी समय उस खाते में किसी भी बदलाव को देखने की अनुमति नहीं होगी जब तक कि पहला लेन-देन पूरा न हो जाए।
- Durability:
- Durability का मतलब है कि एक बार जब लेन-देन पूरा हो जाता है, तो उसका प्रभाव स्थायी रूप से डेटाबेस में संग्रहीत रहता है। यह डेटा को दुर्घटना या सिस्टम फेलियर के बावजूद संरक्षित रखता है।
- उदाहरण: यदि किसी खाते में 1000 रुपये जमा किए जाते हैं और लेन-देन पूरा हो जाता है, तो यह सुनिश्चित किया जाता है कि सिस्टम फेल होने पर भी जमा राशि सुरक्षित और स्थायी रूप से डेटाबेस में रहेगी।
ACID Properties क्यों महत्वपूर्ण हैं?
- डेटा की विश्वसनीयता बनाए रखने के लिए: ACID गुण यह सुनिश्चित करते हैं कि सभी लेन-देन सुरक्षित और विश्वसनीय तरीके से पूरे हों, जिससे डेटा की अखंडता और सटीकता बनी रहती है।
- डेटाबेस की स्थिरता: ACID गुण डेटाबेस को स्थिर और संगत बनाए रखते हैं, खासकर जब एक साथ कई लेन-देन हो रहे हों। इससे डेटा में कोई गड़बड़ी या विसंगति नहीं आती।
- डेटा सुरक्षा: इन गुणों के माध्यम से डेटा की सुरक्षा बढ़ती है। अगर किसी लेन-देन के दौरान कोई गलती होती है, तो डेटाबेस पहले की स्थिति में वापस आ सकता है।
- डेटाबेस की क्षमता: ACID गुण डेटाबेस को एक उच्च स्तर का प्रदर्शन और भरोसा प्रदान करते हैं, जिससे उपयोगकर्ता किसी भी प्रकार की विफलता की स्थिति में डेटा की सुरक्षा के बारे में आश्वस्त हो सकते हैं।
7. Joins के कितने प्रकार होते हैं?
Joins SQL में दो या दो से अधिक Table से डेटा को जोड़ने और एक साथ दिखाने के लिए उपयोग किए जाते हैं। Joins के माध्यम से हम विभिन्न Table में मौजूद डेटा को एक ही क्वेरी में जोड़ सकते हैं, जिससे Reporting और Analysis आसान हो जाती है। SQL में मुख्यतः चार प्रकार के Joins होते हैं:
- INNER JOIN
- LEFT JOIN (या LEFT OUTER JOIN)
- RIGHT JOIN (या RIGHT OUTER JOIN)
- FULL JOIN (या FULL OUTER JOIN)
8. Index क्या होता है?
Index डेटाबेस में एक विशेष डेटा संरचना (data structure) है जो Table में डेटा को तेज़ी से खोजने के लिए बनाई जाती है। Index एक किताब के अंत में दिए गए Index Page की तरह काम करता है, जिससे आपको पूरे डेटा को स्कैन किए बिना, सीधे उस पंक्ति तक पहुँचने में मदद मिलती है जहाँ आपका आवश्यक डेटा स्थित है।
जब एक Table में डेटा बहुत बड़ा होता है, तो उस पर search करने में अधिक समय लगता है। Index इस खोज प्रक्रिया को अधिक कुशल बनाता है, जिससे डेटाबेस की क्वेरी निष्पादन गति तेज हो जाती है।
Index डेटाबेस की परफॉर्मेंस को कैसे सुधारता है?
Index डेटाबेस की परफॉर्मेंस को कई तरह से सुधारता है:
- तेज़ डेटा एक्सेस:
- जब हम एक तालिका में Index बनाते हैं, तो यह डेटाबेस को रिकॉर्ड तक पहुँचने का एक तेज़ रास्ता प्रदान करता है। Index की मदद से डेटाबेस को संपूर्ण तालिका स्कैन करने की आवश्यकता नहीं होती, जिससे डेटा खोजने में लगने वाला समय घट जाता है।
- उदाहरण: मान लीजिए, किसी तालिका में लाखों रिकॉर्ड्स हैं और आपको
EmployeeID = 1023
वाले रिकॉर्ड को खोजना है। Index होने पर डेटाबेस सीधे उस स्थान पर पहुँच सकता है, जहाँ वह डेटा मौजूद है, बिना सभी रिकॉर्ड्स को स्कैन किए।
- Query में सुधार:
- Index का उपयोग मुख्यतः
SELECT
,WHERE
,JOIN
, औरORDER BY
जैसे SQL ऑपरेशनों में किया जाता है। जब इन ऑपरेशनों में इंडेक्स का उपयोग होता है, तो ये क्वेरी अधिक तेज़ी से पूरी होती हैं, जिससे Application की समग्र परफॉर्मेंस में सुधार होता है।
- Index का उपयोग मुख्यतः
- Primary Key और Unique:
- Primary Key और Unique Key वाले Column पर अपने-आप Index बनता है। इससे इन Keys के आधार पर डेटा खोजना, अद्यतन करना या हटाना तेज़ हो जाता है
9. Stored Procedure और Function में अंतर
Stored Procedure और Function दोनों ही Database में code के Blocks हैं जिन्हें बार-बार use करने के लिए बनाया जाता है। हालांकि दोनों का उद्देश्य Database को सरल और कुशल बनाना होता है, लेकिन इनके बीच कई महत्वपूर्ण अंतर भी हैं।
विशेषता | Stored Procedure | Function |
---|---|---|
परिभाषा | Stored Procedure डेटाबेस में संग्रहीत SQL कोड का एक सेट होता है, जो एक बार लिखा जाता है और आवश्यकता अनुसार बार-बार उपयोग किया जा सकता है। | Function डेटाबेस में Store एक Code block है, जो एक Value या Result को लौटाने के लिए बनाया गया है। |
Return Value | Stored Procedure कोई Value Return नहीं करती है, लेकिन OUT Parameter का Use करके Value लौटाया जा सकता है। | Function हमेशा एक मान लौटाता है, और इसका उपयोग किसी Query में Value के रूप में किया जा सकता है। |
कॉल का प्रकार | Stored Procedure को CALL या EXECUTE कमांड से कॉल किया जाता है। | Function को सीधे SQL Query के अंदर कॉल किया जा सकता है, जैसे SELECT के साथ। |
उपयोग | Stored Procedure में Complex Logic और कई Operands शामिल हो सकते हैं, जैसे कि डेटा को जोड़ना, Update करना, या Delete | Function मुख्यतः गणना करने या कोई एक specific value के लिए उपयोग होता है। |
परिवर्तनकारी ऑपरेशंस | Stored Procedure में INSERT , UPDATE , DELETE जैसे DML ऑपरेशंस किए जा सकते हैं। | Function में केवल SELECT ऑपरेशन का उपयोग किया जा सकता है; डेटा को Modify नहीं किया जा सकता। |
Parameter | Stored Procedure में इनपुट (IN ), आउटपुट (OUT ) और इनपुट-आउटपुट (INOUT ) तीनों प्रकार के पैरामीटर्स हो सकते हैं। | Function में केवल इनपुट (IN ) पैरामीटर्स हो सकते हैं। |
Error Handling | Stored Procedure में एरर हैंडलिंग की अधिक सुविधाएँ होती हैं। | Function में Error Handling सीमित होती है। |
कहाँ उपयोग होता है | Stored Procedure का उपयोग Transaction, Batch Processing, और Complex कार्यों के लिए होता है। | Function का उपयोग साधारण गणना और Single Value प्राप्त करने के लिए होता है। |
सारांश
- Stored Procedure Complex Database के लिए, जैसे Data जोड़ने, हटाने या Update करने के लिए उपयोग किया जाता है। यह Output भी दे सकता है लेकिन यह मुख्य रूप से Process को Simple बनाने के लिए होता है।
- Function मुख्यतः गणना करने या कोई विशेष मान लौटाने के लिए उपयोग होता है और केवल डेटा रिट्रीवल के लिए उपयुक्त है।
10. Deadlock क्या है?
Deadlock एक ऐसी स्थिति है जिसमें दो या अधिक प्रक्रियाएँ (processes) एक-दूसरे के संसाधनों (resources) को पकड़ कर इंतजार करती रहती हैं, जिससे वे आगे नहीं बढ़ पातीं और एक-दूसरे को अनिश्चित समय तक अवरुद्ध कर देती हैं। इसे एक उदाहरण से समझते हैं:
मान लीजिए कि हमारे पास दो प्रक्रियाएँ (Process A और Process B) हैं और दो संसाधन (Resource X और Resource Y) हैं।
- Process A ने Resource X को पकड़ लिया और उसे Resource Y की ज़रूरत है, जो फिलहाल Process B के पास है।
- दूसरी तरफ, Process B ने Resource Y को पकड़ लिया है और उसे Resource X की ज़रूरत है, जो Process A के पास है।
इस स्थिति में, दोनों प्रक्रियाएँ एक-दूसरे के संसाधनों का इंतजार करती रहेंगी और इस कारण से कोई भी प्रक्रिया आगे नहीं बढ़ सकेगी। यह स्थिति ही Deadlock कहलाती है।
Deadlock को रोकने के तरीके
Deadlock को रोकने के लिए विभिन्न तकनीकें हैं, जो सुनिश्चित करती हैं कि संसाधनों का इस प्रकार से उपयोग हो कि Deadlock की स्थिति उत्पन्न न हो। ये प्रमुख तकनीकें निम्नलिखित हैं:
- Resource Ordering:
- सभी संसाधनों को एक निश्चित क्रम में व्यवस्थित करें और प्रक्रियाओं को उसी क्रम में संसाधनों का अनुरोध करने दें।
- उदाहरण: यदि प्रक्रिया को X और Y संसाधन चाहिए, तो उन्हें हमेशा पहले X फिर Y का ही अनुरोध करना चाहिए। इससे Deadlock की संभावना कम हो जाती है।
- Wait-Die और Wound-Wait नीतियाँ (Policies):
- Wait-Die: यदि कोई पुरानी प्रक्रिया (Older Process) किसी संसाधन के लिए नई प्रक्रिया (Newer Process) का इंतजार कर रही है, तो पुरानी प्रक्रिया इंतजार करेगी; अगर नई प्रक्रिया पुरानी का इंतजार कर रही है, तो वह समाप्त (die) हो जाएगी।
- Wound-Wait: यदि कोई पुरानी Process किसी Execute के लिए नई Process का इंतजार कर रही है, तो नई Process समाप्त हो जाएगी और पुरानी Process Execute करेगी।
- Prevent Circular Waiting:
- सर्कुलर वेटिंग Deadlock का एक मुख्य कारण है। इसे रोकने के लिए सुनिश्चित करें कि सभी प्रक्रियाएँ एक निश्चित क्रम में संसाधनों का अनुरोध करें और उस क्रम का उल्लंघन न करें।
- Increase Resources:
- Deadlock को रोकने का एक अन्य तरीका यह है कि सिस्टम में संसाधनों की संख्या बढ़ा दी जाए। यदि अधिक संसाधन उपलब्ध होंगे, तो Deadlock की स्थिति की संभावना कम हो जाएगी, क्योंकि प्रक्रियाओं को संसाधन मिलने में देरी नहीं होगी।
- Deadlock Detection और Recovery:
- कुछ सिस्टम Deadlock को पहचानने के लिए एल्गोरिद्म का उपयोग करते हैं। जब Deadlock को पहचाना जाता है, तो सिस्टम में से किसी एक प्रक्रिया को समाप्त (Terminate) कर दिया जाता है ताकि अन्य प्रक्रियाएँ अपना काम जारी रख सकें।