paint-brush
शुरुआती के लिए डेटाबेस अनुक्रमण का अवलोकनद्वारा@pragativerma
5,320 रीडिंग
5,320 रीडिंग

शुरुआती के लिए डेटाबेस अनुक्रमण का अवलोकन

द्वारा Pragati Verma7m2022/09/09
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

एक डेटाबेस इंडेक्स एक क्वेरी को एक कुशल तरीके से डेटाबेस से डेटा पुनर्प्राप्त करने की अनुमति देता है। अनुक्रमण एक अनियंत्रित तालिका को एक क्रम में लाने का एक तरीका है जो रिकॉर्ड की खोज करते समय दक्षता को अधिकतम करेगा। अनुक्रमणिका विशिष्ट तालिकाओं से संबंधित हो सकती हैं और इनमें एक या अधिक कुंजियाँ होती हैं। एक तालिका में इससे निर्मित कई अनुक्रमणिकाएँ हो सकती हैं। डेटाबेस को सभी 17 अभिलेखों को उसी क्रम में खोजना होगा, जिस क्रम में वे तालिका में ऊपर से नीचे तक, एक बार में एक, `company_id` के सभी संभावित उदाहरणों को 18 के रूप में देखने के लिए दिखाई देते हैं। यह आदर्श नहीं है और कर सकते हैं बड़ी मात्रा में डेटा के साथ डेटाबेस तालिका के अंदर देखते समय एक समस्या हो।
featured image - शुरुआती के लिए डेटाबेस अनुक्रमण का अवलोकन
Pragati Verma HackerNoon profile picture
0-item


डेटाबेस अनुक्रमण सबसे आम तरीका है जिसे बैकएंड डेवलपर्स द्वारा डेटाबेस प्रश्नों को अनुकूलित करने के लिए जाना और उपयोग किया जाता है। इस लेख में, हम डेटाबेस अनुक्रमण के बारे में विस्तार से चर्चा करेंगे।


डेटाबेस इंडेक्स क्या है?

एक डेटाबेस इंडेक्स एक क्वेरी को एक कुशल तरीके से डेटाबेस से डेटा पुनर्प्राप्त करने की अनुमति देता है। सरल शब्दों में, अनुक्रमण एक अनियंत्रित तालिका को एक क्रम में लाने का एक तरीका है जो रिकॉर्ड की खोज करते समय दक्षता को अधिकतम करेगा।


अनुक्रमणिका विशिष्ट तालिकाओं से संबंधित हो सकती हैं और इनमें एक या अधिक कुंजियाँ होती हैं। साथ ही, एक तालिका में इससे निर्मित कई अनुक्रमणिकाएँ हो सकती हैं।


जब एक डेटाबेस तालिका को अनुक्रमित नहीं किया जाता है, तो पंक्तियों का कोई स्पष्ट क्रम नहीं होगा, इस प्रकार, किसी भी प्रश्न को पूरा करने के लिए, इसे पंक्तियों के माध्यम से रैखिक रूप से खोजना होगा, अर्थात क्वेरी को खोजने के लिए प्रत्येक पंक्ति के माध्यम से खोजना होगा मिलान शर्त के साथ पंक्तियाँ। जैसा कि आप कल्पना कर सकते हैं, यह आदर्श नहीं है और बड़ी मात्रा में डेटा के साथ डेटाबेस तालिका के अंदर देखते समय यह एक समस्या हो सकती है।


उदाहरण के लिए, हमारे पास एक तालिका है जैसा कि नीचे दिखाया गया है:

कंपनी आईडी

इकाई

इकाई लागत

10

12

1.15

12

12

1.05

14

18

1.31

18

18

1.34

1 1

24

1.15

16

12

1.31

10

12

1.15

12

24

1.3

18

6

1.34

18

12

1.35

14

12

1.95

21

18

1.36

12

12

1.05

20

6

1.31

18

18

1.34

1 1

24

1.15

14

24

1.05


और फिर, हम निम्नलिखित के रूप में एक क्वेरी चलाना चाहते हैं:


 SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18


इस विशेष मामले में, डेटाबेस को 18 के रूप में company_id के सभी संभावित उदाहरणों को देखने के लिए, ऊपर से नीचे तक, तालिका में दिखाई देने वाले क्रम में सभी 17 अभिलेखों के माध्यम से खोजना होगा।


तालिका का आकार बढ़ने पर इसमें केवल अधिक से अधिक समय लगेगा। अनुक्रमण यहाँ कैसे मदद कर सकता है? अनुक्रमण हमें क्वेरी प्रदर्शन को अनुकूलित करने के लिए क्रमबद्ध तरीके से (इस मामले में company_id ) पर खोज स्थिति के साथ कॉलम सेट करने में मदद कर सकता है।


company_id कॉलम पर एक इंडेक्स के साथ, टेबल इस तरह दिखेगी:


कंपनी आईडी

इकाई

इकाई लागत

10

12

1.15

10

12

1.15

1 1

24

1.15

1 1

24

1.15

12

12

1.05

12

24

1.3

12

12

1.05

14

18

1.31

14

12

1.95

14

24

1.05

16

12

1.31

18

18

1.34

18

6

1.34

18

12

1.35

18

18

1.34

20

6

1.31

21

18

1.36


अब, डेटाबेस केवल 18 के बराबर company_id की खोज कर सकता है और उस पंक्ति के लिए सभी अनुरोधित कॉलम लौटा सकता है, और फिर अगली पंक्ति में जा सकता है। यदि अगली पंक्ति में भी company_id के रूप में 18 फिर से है, तो यह इस पंक्ति के लिए अनुरोध कॉलम भी लौटाएगा, लेकिन अगर अगली पंक्ति में company_id 18 है, तो डेटाबेस जानता है कि यह यहां खोज को रोक सकता है, और प्रतिक्रिया समाप्त कर सकता है .


डेटाबेस इंडेक्स क्या हैं और वे क्या कर सकते हैं, इसकी एक सरल व्याख्या थी, लेकिन इस प्रक्रिया में और भी बहुत कुछ चल रहा है। आइए गहराई से देखें कि अनुक्रमण कैसे काम करता है।


डेटाबेस अनुक्रमण कैसे काम करता है?

वास्तव में, डेटाबेस प्रदर्शन को अनुकूलित करने के लिए हर बार क्वेरी की स्थिति में परिवर्तन होने पर डेटाबेस तालिका स्वयं को पुन: व्यवस्थित नहीं करती है, लेकिन वास्तव में ऐसा होता है कि सूचकांक डेटाबेस को एक अलग डेटा संरचना बनाता है जिसे आसानी से क्रमबद्ध किया जाना चाहिए।


यह ध्यान रखना महत्वपूर्ण है कि जब किसी डेटाबेस में किसी कॉलम पर एक इंडेक्स बनाया जाता है, तो यह उस विशिष्ट कॉलम पर डेटा संरचना बनाता है और इस डेटा संरचना में कोई अन्य कॉलम संग्रहीत नहीं होता है। उदाहरण के लिए, उपरोक्त उदाहरण में, हमारी डेटा संरचना में केवल company_id होगा और कोई अन्य कॉलम जैसे कि unit या unit_cost


लेकिन यहां एक कानूनी सवाल सामने आता है - डेटाबेस को कैसे पता चलता है कि किसी क्वेरी के लिए तालिका में अन्य फ़ील्ड को वापस किया जाना है। आइए समझने की कोशिश करते हैं कि कैसे।


डेटाबेस इंडेक्स की संरचना


डेटाबेस इंडेक्स मेमोरी में अतिरिक्त जानकारी के स्थान के लिए केवल संदर्भ जानकारी के लिए पॉइंटर्स स्टोर करते हैं। दूसरे शब्दों में, अनुक्रमणिका company_id और उस विशेष पंक्ति के पते को स्मृति में रखती है। इस उदाहरण में, डेटाबेस इंडेक्स कुछ इस तरह दिखेगा:


कंपनी आईडी

सूचक

10

_123

10

_129

1 1

_127

1 1

_138

12

_124

12

_130

12

_135

14

_125

14

_131

14

_133

16

_128

18

_126

18

_131

18

_132

18

_137

20

_136

21

_134


इस इंडेक्स के साथ, क्वेरी company_id कॉलम में पंक्तियों की जांच कर सकती है, जिसमें मान के रूप में 18 है और फिर पॉइंटर का उपयोग करके, यह उस रिकॉर्ड के लिए संबंधित जानकारी ढूंढ सकता है।


अनुक्रमण के लिए किन डेटा संरचनाओं का उपयोग किया जाता है?

यह समझने के बाद कि हम सूचकांक से क्या अपेक्षा करते हैं, आइए उन सामान्य डेटा संरचनाओं पर एक नज़र डालते हैं जिनका उपयोग डेटाबेस अनुक्रमण के लिए किया जा सकता है:


बी पेड़

बी-पेड़ सबसे अधिक उपयोग की जाने वाली इंडेक्स डेटा संरचनाएं हैं क्योंकि वे लुकअप, विलोपन और सम्मिलन के लिए तेज़ हैं। ये सभी ऑपरेशन लॉगरिदमिक समय में संभव हैं और बी-ट्री के भीतर मौजूद डेटा को आसानी से सॉर्ट किया जा सकता है।


हैश टेबल्स

हैश इंडेक्स आमतौर पर हैश टेबल का उपयोग करने वाले इंडेक्स का वर्णन करने के लिए उपयोग किया जाता है। क्योंकि हैश टेबल डेटा को देखने में विशेष रूप से कुशल हैं, सटीक मिलान की तलाश करने वाली क्वेरी को तेजी से संसाधित किया जा सकता है। हैश इंडेक्स में कुंजी कॉलम मान है, और हैश तालिका में मान तालिका के पंक्ति डेटा का संदर्भ है।


दूसरी ओर, हैश टेबल डेटा संरचनाओं का आदेश नहीं दिया जाता है; इसलिए, वे अन्य प्रकार की खोजों के लिए अक्षम हो सकते हैं।


आर-वृक्ष

आर-ट्री अक्सर स्थानिक डेटाबेस में उपयोग किया जाता है, आमतौर पर बहु-आयामी जानकारी जैसे भौगोलिक निर्देशांक, आयत, बहुभुज, आदि को अनुक्रमित करने के लिए उपयोग किया जाता है। यह खोजों के लिए उपयोगी है जैसे "मेरे स्थान के 2 मील के भीतर सभी कॉफी की दुकानों को ढूंढें।"


बिटमैप इंडेक्स

बिटमैप इंडेक्स उन स्तंभों के लिए उपयोगी होते हैं जिनमें ऐसे मूल्यों की अधिक संख्या होती है, अर्थात कम चयनात्मकता वाले स्तंभ। उदाहरण के लिए, बूलियन मान वाले कॉलम पर विचार करें।


इंडेक्स का उपयोग कब करें

इंडेक्स को डेटाबेस के प्रदर्शन को बढ़ाने के लिए डिज़ाइन किया गया है; इस प्रकार, जब भी हमें डेटाबेस के प्रदर्शन में उल्लेखनीय सुधार करने की आवश्यकता होती है, अनुक्रमण का उपयोग किया जा सकता है। आपका डेटाबेस जितना बड़ा होगा, इंडेक्सिंग से आपको फायदा होने की संभावना उतनी ही अधिक होगी।


हालांकि, याद रखने वाली पहली और महत्वपूर्ण बात यह है कि सूचकांक अतिरिक्त स्थान लेता है; इसलिए, तालिका जितनी बड़ी होगी, सूचकांक उतना ही बड़ा होगा। हर बार जब आप कोई ऐड, रिमूव या अपडेट ऑपरेशन करते हैं, तो उसी ऑपरेशन को इंडेक्स पर भी निष्पादित करने की आवश्यकता होगी।


इंडेक्स का उपयोग कब नहीं करना चाहिए

जब डेटा डेटाबेस में लिखा जाता है, तो मूल तालिका को पहले अद्यतन किया जाता है, उसके बाद उस तालिका के आधार पर अन्य अनुक्रमणिकाएँ। जब डेटाबेस में एक लेखन किया जाता है, तो अनुक्रमणिका अद्यतन होने तक निष्क्रिय हो जाती हैं। यदि डेटाबेस लगातार लिख रहा है तो अनुक्रमणिका कभी भी कार्यात्मक नहीं होगी।


यही कारण है कि इंडेक्स अक्सर डेटा वेयरहाउस में डेटाबेस पर लागू होते हैं जो उत्पादन डेटाबेस के बजाय योजनाबद्ध आधार पर (ऑफ-पीक घंटों के दौरान) नया डेटा प्राप्त करते हैं जो हर समय नए लेखन प्राप्त कर सकते हैं।


इंडेक्स कैसे बनाते हैं?

निम्न कोड स्निपेट दिखाता है कि SQL डेटाबेस में एकल कॉलम पर एक इंडेक्स कैसे बनाया जाता है:


 CREATE INDEX name_index ON Employee (Employee_Name);


यदि आप एकाधिक स्तंभों पर एक अनुक्रमणिका बनाना चाहते हैं, तो SQL कमांड कुछ इस तरह दिखाई देगी:


 CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age);


सामान्य तौर पर, एक इंडेक्स को टेबल पर तभी बनाया जाना चाहिए जब इंडेक्स किए गए कॉलम में डेटा अक्सर एक्सेस किया जाएगा।


निष्कर्ष

इसलिए, हमने इस लेख में डेटाबेस इंडेक्सिंग पर विस्तार से चर्चा की और डेटाबेस इंडेक्सिंग को लागू करने के लिए उपयोग की जाने वाली डेटा संरचनाओं के बारे में भी सीखा और यह भी कि जब इंडेक्स का उपयोग करना उचित हो और अन्यथा।


सब कुछ समेटने के लिए, यहाँ एक त्वरित सारांश दिया गया है:

  • डेटाबेस इंडेक्सिंग प्रश्नों के समय को काफी हद तक कम करने में मदद कर सकता है।
  • अनुक्रमण में खोज मानदंड के साथ-साथ एक सूचक के लिए स्तंभों के साथ एक डेटा संरचना शामिल है।
  • पॉइंटर शेष जानकारी वाली पंक्ति की मेमोरी डिस्क पर पता है।
  • क्वेरी प्रदर्शन को बेहतर बनाने के लिए, इंडेक्स डेटा संरचना (बी-ट्री, आर-ट्री, हैश टेबल, या बिटमैप) को सॉर्ट किया जाता है।
  • क्वेरी निर्दिष्ट पंक्ति के लिए अनुक्रमणिका खोजती है; सूचकांक उस सूचक को संदर्भित करता है जो शेष जानकारी की खोज करेगा।


यह सब इस लेख के लिए है। डेटाबेस इंडेक्सिंग एक विशाल और थोड़ा जटिल विषय है, मुझे उम्मीद है कि यह लेख अवधारणा की मूल बातें समझने में मददगार होगा।


पढ़ते रहिये!