மோங்கோடிபி அட்டவணைப்படுத்தல் மூலம் வினவல்களை எவ்வாறு மேம்படுத்துவது

Monkotipi Attavanaippatuttal Mulam Vinavalkalai Evvaru Mempatuttuvatu



மோங்கோடிபி மற்றும் பிற அனைத்து தரவுத்தள அமைப்புகளுக்கும் வினவல் வேகத்தை அதிகரிப்பது அவசியம். மோங்கோடிபி பதிவுகளை மிக விரைவாக அடையாளம் காண உதவும் தரவு கட்டமைப்புகளை உருவாக்குவதன் மூலம், தேடல்களை விரைவுபடுத்துவதற்கும் மேம்படுத்துவதற்கும் அட்டவணைப்படுத்தல் ஒரு சக்திவாய்ந்த அணுகுமுறையாகும். விசாரணைகளை மிகவும் திறம்படச் செய்ய பதிவுகளில் இருந்து சில தரவுகளின் நகல்களை குறியீடுகள் உள்ளடக்கும். மோங்கோடிபியில் உள்ள கோரிக்கைகளுக்கு பதிலளிப்பதில் உள்ள முயற்சியை இது சீராக்குகிறது. இந்த வழிகாட்டியில், வெவ்வேறு அட்டவணைப்படுத்தல் வகைகளின் உதவியுடன் குறியீடுகளின் பயன்பாட்டைப் பற்றி விவாதிப்போம்.

சேகரிப்பை உருவாக்கவும்

குறியீடுகளைப் பயன்படுத்துவதற்கு முன், எங்கள் மோங்கோடிபியில் புதிய தொகுப்பை உருவாக்க வேண்டும். நாங்கள் ஏற்கனவே ஒன்றை உருவாக்கி, 'டம்மி' என்ற பெயரில் 10 ஆவணங்களைச் செருகியுள்ளோம். Find() MongoDB செயல்பாடு கீழே உள்ள MongoDB ஷெல் திரையில் 'டம்மி' சேகரிப்பில் இருந்து அனைத்து பதிவுகளையும் காட்டுகிறது.

test> db.Dummy.find()







குறியீட்டு வகையைத் தேர்ந்தெடுக்கவும்

ஒரு குறியீட்டை நிறுவுவதற்கு முன், வினவல் அளவுகோல்களில் பொதுவாகப் பயன்படுத்தப்படும் நெடுவரிசைகளை நீங்கள் முதலில் தீர்மானிக்க வேண்டும். அடிக்கடி வடிகட்டப்படும், வரிசைப்படுத்தப்படும் அல்லது தேடப்படும் நெடுவரிசைகளில் குறியீடுகள் சிறப்பாகச் செயல்படுகின்றன. ஒரு பெரிய கார்டினாலிட்டி கொண்ட புலங்கள் (பல வேறுபட்ட மதிப்புகள்) பெரும்பாலும் சிறந்த அட்டவணையிடல் விருப்பங்கள். வெவ்வேறு குறியீட்டு வகைகளுக்கான சில குறியீடு எடுத்துக்காட்டுகள் இங்கே.



எடுத்துக்காட்டு 01: ஒற்றை புல அட்டவணை

இது அனேகமாக மிக அடிப்படையான குறியீட்டு வகையாகும், இது அந்த நெடுவரிசையில் வினவல் வேகத்தை அதிகரிக்க ஒரு நெடுவரிசையை அட்டவணைப்படுத்துகிறது. சேகரிப்புப் பதிவுகளை வினவுவதற்கு ஒற்றை விசைப் புலத்தைப் பயன்படுத்தும் வினவல்களுக்கு இந்த வகை அட்டவணை பயன்படுத்தப்படுகிறது. கீழே கண்டறிதல் செயல்பாட்டிற்குள் 'டம்மி' சேகரிப்பின் பதிவுகளை வினவ, 'வகை' புலத்தைப் பயன்படுத்துகிறீர்கள் என்று வைத்துக்கொள்வோம். இந்த கட்டளை முழு சேகரிப்பையும் பார்க்கும், இது பெரிய சேகரிப்புகளை செயலாக்க நீண்ட நேரம் ஆகலாம். எனவே, இந்த வினவலின் செயல்திறனை நாம் மேம்படுத்த வேண்டும்.



test> db.Dummy.find({type: 'எம்பி' })





மேலே உள்ள போலி சேகரிப்பின் பதிவுகள் 'வகை' புலத்தைப் பயன்படுத்தி கண்டறியப்பட்டுள்ளன, அதாவது நிபந்தனையைக் கொண்டுள்ளது. எனவே, தேடல் வினவலை மேம்படுத்த ஒற்றை-விசை குறியீட்டை இங்கே பயன்படுத்தலாம். எனவே, 'டம்மி' சேகரிப்பின் 'வகை' புலத்தில் ஒரு குறியீட்டை உருவாக்க MongoDB இன் createIndex() செயல்பாட்டைப் பயன்படுத்துவோம். இந்த வினவலைப் பயன்படுத்துவதற்கான விளக்கம் ஷெல்லில் 'type_1' என்ற ஒற்றை-விசை குறியீட்டை வெற்றிகரமாக உருவாக்குவதைக் காட்டுகிறது.

test> db.Dummy.createIndex({ வகை: 1 })

“வகை” புலத்தைப் பயன்படுத்திக் கண்டறிதல் () வினவலைப் பயன்படுத்துவோம். குறியீட்டு இடத்தில் இருப்பதால், முன்பு பயன்படுத்தப்பட்ட ஃபைண்ட்() செயல்பாட்டை விட இப்போது செயல்பாடு கணிசமாக வேகமாக இருக்கும், ஏனெனில் கோரப்பட்ட வேலை தலைப்புடன் கூடிய பதிவுகளை விரைவாக மீட்டெடுக்க குறியீட்டைப் பயன்படுத்த மோங்கோடிபி முடியும்.



test> db.Dummy.find({type: 'எம்பி' })

எடுத்துக்காட்டு 02: கூட்டு குறியீட்டு

சில சூழ்நிலைகளில் பல்வேறு அளவுகோல்களின் அடிப்படையில் பொருட்களைத் தேட விரும்பலாம். இந்தப் புலங்களுக்கான கூட்டுக் குறியீட்டைச் செயல்படுத்துவது வினவல் செயல்திறனை மேம்படுத்த உதவும். இந்த நேரத்தில், வினவல் காண்பிக்கப்படும்போது வெவ்வேறு தேடல் நிலைமைகளைக் கொண்ட பல புலங்களைப் பயன்படுத்தி “டம்மி” தொகுப்பிலிருந்து தேட விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம். இந்த வினவல் சேகரிப்பில் இருந்து 'வகை' புலம் 'emp' ஆக அமைக்கப்பட்டு 'sal' புலம் 350 ஐ விட அதிகமாக உள்ள பதிவுகளைத் தேடுகிறது.

$gte தருக்க ஆபரேட்டர் நிபந்தனையை 'sal' புலத்திற்குப் பயன்படுத்த பயன்படுத்தப்பட்டது. 10 பதிவுகளைக் கொண்ட மொத்தத் தொகுப்பையும் தேடிய பிறகு மொத்தம் இரண்டு பதிவுகள் திரும்பப் பெற்றன.

test> db.Dummy.find({type: 'எம்பி' , sal: {$gte: 350 } })

மேற்கூறிய வினவலுக்கு ஒரு கூட்டு குறியீட்டை உருவாக்குவோம். இந்த கூட்டு குறியீட்டில் 'வகை' மற்றும் 'சல்' புலங்கள் உள்ளன. '1' மற்றும் '-1' எண்கள் 'வகை' மற்றும் 'sal' புலங்களுக்கு முறையே ஏறுவரிசை மற்றும் இறங்கு வரிசையைக் குறிக்கின்றன. கூட்டு குறியீட்டின் நெடுவரிசைகளின் வரிசை முக்கியமானது மற்றும் வினவல் வடிவங்களுடன் ஒத்திருக்க வேண்டும். மோங்கோடிபி இந்த கூட்டு குறியீட்டுக்கு 'type_1_sal_-1' என்ற பெயரைக் காட்டியுள்ளது.

test> db.Dummy.createIndex({ வகை: 1 , விருப்பம்:- 1 })

'வகை' புல மதிப்பு 'emp' மற்றும் 'sal' புலத்தின் மதிப்பு 350 க்கு சமமாக இருக்கும் பதிவேடுகளைத் தேட அதே கண்டுபிடி() வினவலைப் பயன்படுத்திய பிறகு, வரிசையில் சிறிது மாற்றத்துடன் அதே வெளியீட்டைப் பெற்றுள்ளோம். முந்தைய வினவல் முடிவுடன் ஒப்பிடும்போது. 'sal' புலத்திற்கான பெரிய மதிப்புப் பதிவு இப்போது முதல் இடத்தில் உள்ளது, அதே சமயம் மேலே உள்ள கூட்டுக் குறியீட்டில் உள்ள 'sal' புலத்திற்கு அமைக்கப்பட்ட '-1' இன் படி சிறியது மிகக் குறைவாக உள்ளது.

test> db.Dummy.find({type: 'எம்பி' , sal: {$gte: 350 } })

எடுத்துக்காட்டு 03: உரை அட்டவணை

சில நேரங்களில், தயாரிப்புகள், பொருட்கள் போன்றவற்றின் பெரிய விளக்கங்கள் போன்ற பெரிய தரவுத் தொகுப்பை நீங்கள் கையாள வேண்டிய சூழ்நிலையை நீங்கள் சந்திக்க நேரிடலாம். ஒரு பெரிய உரை புலத்தில் முழு உரைத் தேடல்களைச் செய்வதற்கு ஒரு உரை அட்டவணை பயனுள்ளதாக இருக்கும். உதாரணமாக, எங்கள் சோதனை தரவுத்தளத்தில் 'சோதனை' என்ற பெயரில் ஒரு புதிய தொகுப்பை உருவாக்கியுள்ளோம். கீழே கண்டறிதல்() வினவலின்படி insertMany() செயல்பாட்டைப் பயன்படுத்தி இந்தத் தொகுப்பில் மொத்தம் 6 பதிவுகள் செருகப்பட்டுள்ளன.

test> db.Test.insertMany([

{பெயர்: 'ஆனா' , இன்: 'அவர் லண்டனில் வசிக்கிறார் மற்றும் ஒரு நல்ல ஆசிரியர்' },

{பெயர்: 'ராபர்ட்' , இன்: 'அவர் ஒரு அற்புதமான கால்பந்து வீரர்' },

{பெயர்: 'இருந்து' , இன்: 'துபாய் பயணமாக இருக்கலாம்' },

{பெயர்: 'ஜேக்கப்' , இன்: 'அவர் மனதைக் கவரும் மற்றும் பணக்காரர்.' },

{பெயர்: 'சிலியன்' , இன்: 'ஒரு திரைப்படம் சூப்பர் ஸ்டார்ட் ஆனது சில நொடிகளில் புகழ் பெற்றது' },

{பெயர்: 'கென்' , இன்: 'உணவு பிரியர். அவள் உன்னையும் சாப்பிடலாம்.' }

])

இப்போது, ​​இந்த தொகுப்பின் 'Des' புலத்தில், MongoDBயின் createIndex() செயல்பாட்டைப் பயன்படுத்தி ஒரு உரை குறியீட்டை உருவாக்குவோம். புல மதிப்பில் உள்ள 'உரை' என்ற முக்கிய சொல் ஒரு குறியீட்டின் வகையைக் காட்டுகிறது, இது 'உரை' குறியீடாகும். குறியீட்டு பெயர், des_text, தானாக உருவாக்கப்பட்டுள்ளது.

test> db.Test.createIndex({des: 'உரை' })

இப்போது, ​​“des_text” குறியீட்டின் மூலம் சேகரிப்பில் “உரை-தேடல்” செய்ய find() செயல்பாடு பயன்படுத்தப்படுகிறது. சேகரிப்புப் பதிவுகளில் 'உணவு' என்ற வார்த்தையைத் தேடவும், குறிப்பிட்ட பதிவைக் காட்டவும் $search ஆபரேட்டர் பயன்படுத்தப்பட்டது.

test> db.Test.find({ $text: { $search: 'உணவு' }});

குறியீடுகளைச் சரிபார்க்கவும்:

உங்கள் மோங்கோடிபியில் வெவ்வேறு சேகரிப்புகளின் பயன்படுத்தப்பட்ட அனைத்து குறியீடுகளையும் நீங்கள் சரிபார்த்து பட்டியலிடலாம். இதற்கு, உங்கள் MongoDB ஷெல் திரையில் உள்ள சேகரிப்பின் பெயருடன் getIndexes() முறையைப் பயன்படுத்தவும். 'சோதனை' மற்றும் 'டம்மி' சேகரிப்புகளுக்கு தனித்தனியாக இந்தக் கட்டளையைப் பயன்படுத்தியுள்ளோம். இது உங்கள் திரையில் உள்ளமைக்கப்பட்ட மற்றும் பயனர் வரையறுக்கப்பட்ட குறியீடுகள் தொடர்பான தேவையான அனைத்து தகவல்களையும் காட்டுகிறது.

test> db.Test.getIndexes()

test> db.Dummy.getIndexes()

டிராப் குறியீடுகள்:

டிராப்இண்டெக்ஸ்() செயல்பாட்டைப் பயன்படுத்தி சேகரிப்புக்காக முன்னர் உருவாக்கப்பட்ட குறியீடுகளை நீக்குவதற்கான நேரம் இது மற்றும் குறியீட்டு பயன்படுத்தப்பட்ட அதே புலப் பெயருடன். கீழே உள்ள வினவல் ஒற்றை குறியீடு அகற்றப்பட்டதைக் காட்டுகிறது.

test> db.Dummy.dropIndex({type: 1 })

அதே வழியில், கலவை குறியீட்டை கைவிடலாம்.

test> db.Dummy.drop index({type: 1 , விருப்பம்: 1 })

முடிவுரை

மோங்கோடிபியிலிருந்து தரவை மீட்டெடுப்பதை விரைவுபடுத்துவதன் மூலம், வினவல்களின் செயல்திறனை அதிகரிக்க அட்டவணைப்படுத்தல் அவசியம். குறியீடுகள் இல்லாததால், மோங்கோடிபி முழுத் தொகுப்பையும் பொருந்தக்கூடிய பதிவுகளுக்காகத் தேட வேண்டும், இது தொகுப்பின் அளவு அதிகரிக்கும் போது குறைவான செயல்திறன் கொண்டது. குறியீட்டு தரவுத்தள அமைப்பைப் பயன்படுத்தி சரியான பதிவுகளை விரைவாகக் கண்டறியும் மோங்கோடிபியின் திறன், பொருத்தமான அட்டவணைப்படுத்தல் பயன்படுத்தப்படும்போது வினவல்களின் செயலாக்கத்தை விரைவுபடுத்துகிறது.