இக்கட்டுரையின் மொழியாக்கம் பாடநெறி தொடங்கும் தினத்தன்று தயாரிக்கப்பட்டது
ஹைலைட்ஸ்:
- MongoDB இல் விருப்பமானதாக இருந்தாலும் ஒரு திட்டத்தை உருவாக்குவது மிகவும் முக்கியம்.
- அதேபோல், குறியீடுகள் உங்கள் ஸ்கீமா மற்றும் அணுகல் வடிவங்களுடன் பொருந்த வேண்டும்.
- பெரிய பொருள்கள் மற்றும் பெரிய அணிகளைப் பயன்படுத்துவதைத் தவிர்க்கவும்.
- மோங்கோடிபி அமைப்புகளில் கவனமாக இருங்கள், குறிப்பாக பாதுகாப்பு மற்றும் நம்பகத்தன்மைக்கு வரும்போது.
- மோங்கோடிபியில் வினவல் மேம்படுத்தி இல்லை, எனவே வினவல் செயல்பாடுகளைச் செய்யும்போது கவனமாக இருக்க வேண்டும்.
நான் மிக நீண்ட காலமாக தரவுத்தளங்களுடன் பணிபுரிந்து வருகிறேன், ஆனால் சமீபத்தில் தான் மோங்கோடிபி கண்டுபிடிக்கப்பட்டது. நான் வேலை செய்யத் தொடங்கும் முன் சில விஷயங்கள் எனக்குத் தெரிந்திருக்க வேண்டும். ஒரு நபர் ஏற்கனவே ஒரு குறிப்பிட்ட துறையில் அனுபவம் பெற்றிருந்தால், தரவுத்தளங்கள் என்றால் என்ன, அவர்கள் என்ன செய்கிறார்கள் என்பது பற்றிய முன்கூட்டிய கருத்துக்கள். மற்றவர்கள் புரிந்துகொள்வதை எளிதாக்கும் நம்பிக்கையில், பொதுவான தவறுகளின் பட்டியலை வழங்குகிறேன்.
அங்கீகாரம் இல்லாமல் MongoDB சேவையகத்தை உருவாக்குகிறது
துரதிர்ஷ்டவசமாக, மோங்கோடிபி முன்னிருப்பாக அங்கீகாரம் இல்லாமல் நிறுவப்பட்டுள்ளது. உள்நாட்டில் அணுகப்பட்ட பணிநிலையத்திற்கு, இந்த நடைமுறை இயல்பானது. ஆனால் மோங்கோடிபி அதிக அளவிலான நினைவகத்தைப் பயன்படுத்த விரும்பும் மல்டி-யூசர் சிஸ்டம் என்பதால், நீங்கள் அதை மேம்பாட்டிற்கு மட்டுமே பயன்படுத்தப் போகிறீர்கள் என்றாலும், முடிந்தவரை அதிக ரேம் கொண்ட சர்வரில் அதை வைத்தால் நன்றாக இருக்கும். இயல்புநிலை போர்ட் வழியாக சேவையகத்தில் நிறுவுவது சிக்கலாக இருக்கலாம், குறிப்பாக கோரிக்கையில் ஏதேனும் ஜாவாஸ்கிரிப்ட் குறியீடு செயல்படுத்தப்பட்டால் (எடுத்துக்காட்டாக, $where
ஒரு யோசனையாக
பல அங்கீகார முறைகள் உள்ளன, ஆனால் பயனர் ஐடி/கடவுச்சொல்லை அமைப்பதே எளிதானது. இதன் அடிப்படையில் ஆடம்பரமான அங்கீகாரத்தைப் பற்றி நீங்கள் நினைக்கும் போது இந்த யோசனையைப் பயன்படுத்தவும்
உங்கள் தாக்குதல் மேற்பரப்பை மோங்கோடிபியுடன் இணைக்க மறக்காதீர்கள்
,
அல்லது
. நிலையான மோங்கோடிபியில் தரவுக் கோப்புகள் குறியாக்கம் செய்யப்படாததால், மோங்கோடிபியை இயக்குவது அர்த்தமுள்ளதாக இருக்கிறது.
சர்க்யூட்டை உருவாக்கும்போது பிழை
MongoDB ஒரு திட்டத்தைப் பயன்படுத்தவில்லை. ஆனால் இந்த திட்டம் தேவையில்லை என்று அர்த்தமல்ல. நீங்கள் எந்த ஒரு நிலையான வடிவமும் இல்லாமல் ஆவணங்களைச் சேமிக்க விரும்பினால், அவற்றைச் சேமிப்பது விரைவாகவும் எளிதாகவும் இருக்கும், ஆனால் பின்னர் அவற்றை மீட்டெடுப்பது கடினமாக இருக்கும்.
உன்னதமான கட்டுரை "
வரிசை வரிசையை மறந்துவிடாதீர்கள்
வரிசை வரிசையை மறப்பது அதிக விரக்தியை ஏற்படுத்தும் மற்றும் வேறு எந்த தவறான உள்ளமைவையும் விட அதிக நேரத்தை வீணடிக்கும். முன்னிருப்பாக MongoBD பயன்படுத்துகிறது
பெரிய ஆவணங்களுடன் சேகரிப்புகளை உருவாக்கவும்
MongoDB 16MB வரை பெரிய ஆவணங்களை சேகரிப்புகளில் ஹோஸ்ட் செய்வதில் மகிழ்ச்சி அடைகிறது
பெரிய வரிசைகளுடன் ஆவணங்களை உருவாக்குதல்
ஆவணங்களில் வரிசைகள் இருக்கலாம். வரிசையில் உள்ள உறுப்புகளின் எண்ணிக்கை நான்கு இலக்க எண்ணிலிருந்து வெகு தொலைவில் இருந்தால் சிறந்தது. ஒரு அணிவரிசையில் உறுப்புகள் அடிக்கடி சேர்க்கப்பட்டால், அது அதைக் கொண்டிருக்கும் ஆவணத்தை விட அதிகமாகும் மற்றும் இருக்க வேண்டும்
MongoDB என்று ஒன்று உள்ளது
வரிசை அட்டவணைப்படுத்தல் இல்லாமல் செய்யலாம் என்று நீங்கள் நினைக்கலாம். துரதிருஷ்டவசமாக, குறியீடுகள் இல்லாததால் உங்களுக்கு வேறு சிக்கல்கள் ஏற்படலாம். ஆவணங்கள் தொடக்கத்திலிருந்து இறுதி வரை ஸ்கேன் செய்யப்படுவதால், வரிசையின் முடிவில் உள்ள உறுப்புகளைத் தேடுவதற்கு அதிக நேரம் எடுக்கும், மேலும் அத்தகைய ஆவணத்துடன் தொடர்புடைய பெரும்பாலான செயல்பாடுகள்
ஒரு திரட்டலில் உள்ள நிலைகளின் வரிசை முக்கியமானது என்பதை மறந்துவிடாதீர்கள்
வினவல் உகப்பாக்கி கொண்ட தரவுத்தள அமைப்பில், நீங்கள் எழுதும் வினவல்கள் நீங்கள் எதைப் பெற விரும்புகிறீர்கள் என்பதற்கான விளக்கங்களாகும், அதை எப்படிப் பெறுவது என்பதல்ல. இந்த பொறிமுறையானது ஒரு உணவகத்தில் ஆர்டர் செய்வதோடு ஒப்புமையாக செயல்படுகிறது: வழக்கமாக நீங்கள் ஒரு உணவை ஆர்டர் செய்கிறீர்கள், மேலும் சமையல்காரருக்கு விரிவான வழிமுறைகளை வழங்க வேண்டாம்.
மோங்கோடிபியில், நீங்கள் சமையல்காரருக்கு அறிவுறுத்துகிறீர்கள். எடுத்துக்காட்டாக, தரவு கடந்து செல்கிறதா என்பதை உறுதிப்படுத்த வேண்டும் reduce
பயன்படுத்தி பைப்லைனில் கூடிய விரைவில் $match
и $project
, மற்றும் வரிசைப்படுத்துதல் பிறகு மட்டுமே நிகழ்கிறது reduce
, மற்றும் தேடல் நீங்கள் விரும்பும் வரிசையில் சரியாக நடக்கும். தேவையற்ற வேலைகளை நீக்கும் வினவல் ஆப்டிமைசரை வைத்திருப்பது, படிகளை சிறந்த முறையில் வரிசைப்படுத்துவது மற்றும் சேரும் வகைகளைத் தேர்ந்தெடுப்பது உங்களைக் கெடுக்கும். மோங்கோடிபி மூலம், வசதிக்கான செலவில் உங்களுக்கு அதிக கட்டுப்பாடு உள்ளது.
போன்ற கருவிகள்
விரைவான பதிவைப் பயன்படுத்துதல்
MongoDB எழுதும் விருப்பங்களை அதிக வேகம் ஆனால் குறைந்த நம்பகத்தன்மை கொண்டதாக அமைக்க வேண்டாம். இந்த முறை "கோப்பு மற்றும் மற" எழுதுதல் நிகழும் முன் கட்டளை திரும்பியதால் வேகமாக தெரிகிறது. தரவு வட்டில் எழுதப்படுவதற்கு முன்பு கணினி செயலிழந்தால், அது தொலைந்து, சீரற்ற நிலையில் முடிவடையும். அதிர்ஷ்டவசமாக, 64-பிட் மோங்கோடிபி உள்நுழைவு இயக்கப்பட்டது.
MMAPv1 மற்றும் WiredTiger சேமிப்பக இயந்திரங்கள் இதைத் தடுக்க லாக்கிங்கைப் பயன்படுத்துகின்றன, இருப்பினும் WiredTiger கடைசி நிலையாக மீட்க முடியும்
ஜர்னலிங் தரவுத்தளத்தை மீட்டெடுத்த பிறகு ஒரு சீரான நிலையில் இருப்பதை உறுதிசெய்கிறது மற்றும் அது பதிவில் எழுதப்படும் வரை எல்லா தரவையும் தக்கவைக்கிறது. பதிவுகளின் அதிர்வெண் அளவுருவைப் பயன்படுத்தி கட்டமைக்கப்படுகிறது
.
உள்ளீடுகளை உறுதிசெய்ய, உள்ளமைவு கோப்பில் உள்நுழைவு இயக்கப்பட்டிருப்பதை உறுதிசெய்யவும்
, மற்றும் பதிவுகளின் அதிர்வெண் நீங்கள் இழக்கக்கூடிய தகவலின் அளவை ஒத்துள்ளது.
குறியீட்டு இல்லாமல் வரிசைப்படுத்துதல்
தேடுதல் மற்றும் ஒருங்கிணைக்கும் போது, அடிக்கடி தரவுகளை வரிசைப்படுத்த வேண்டிய அவசியம் உள்ளது. வரிசைப்படுத்தப்படும் தரவின் அளவைக் குறைப்பதற்காக, முடிவை வடிகட்டிய பிறகு, இது இறுதி கட்டத்தில் செய்யப்படும் என்று நம்புகிறோம். இந்த விஷயத்தில் கூட, வரிசைப்படுத்த உங்களுக்குத் தேவைப்படும்
பொருத்தமான குறியீடு இல்லை என்றால், MongoDB இல்லாமல் செய்யும். அனைத்து ஆவணங்களின் மொத்த அளவிலும் 32 MB நினைவக வரம்பு உள்ளது
குறியீட்டு ஆதரவு இல்லாமல் தேடுங்கள்
தேடல் வினவல்கள் SQL இல் உள்ள JOIN செயல்பாட்டைப் போன்ற ஒரு செயல்பாட்டைச் செய்கின்றன. சிறப்பாகச் செயல்பட, வெளிநாட்டு விசையாகப் பயன்படுத்தப்படும் விசையின் மதிப்பின் குறியீடு அவர்களுக்குத் தேவை. இது தெளிவாக இல்லை, ஏனெனில் பயன்பாடு பிரதிபலிக்கவில்லை explain()
. இத்தகைய குறியீடுகள் எழுதப்பட்ட குறியீட்டுடன் கூடுதலாக இருக்கும் explain()
, இது பைப்லைன் ஆபரேட்டர்களால் பயன்படுத்தப்படுகிறது $match
и $sort
, அவர்கள் குழாய் தொடக்கத்தில் சந்திக்கும் போது. குறியீடுகள் இப்போது எந்த நிலையையும் உள்ளடக்கும்
பல புதுப்பிப்புகளைப் பயன்படுத்துவதிலிருந்து விலகுதல்
முறை
நீங்கள் குறிப்பிடும் அளவுருவைப் பொறுத்து, ஏற்கனவே உள்ள ஆவணத்தின் ஒரு பகுதியை அல்லது முழு ஆவணத்தையும் முழுமையாக மாற்றுவதற்குப் பயன்படுத்தப்படுகிறது.
. நீங்கள் விருப்பத்தை அமைக்கும் வரை, சேகரிப்பில் உள்ள அனைத்து ஆவணங்களையும் இது செயல்படுத்தாது என்பது தெளிவாகத் தெரியவில்லை
கோரிக்கை அளவுகோல்களை பூர்த்தி செய்யும் அனைத்து ஆவணங்களையும் புதுப்பிக்க.
ஹாஷ் அட்டவணையில் உள்ள விசைகளின் வரிசையின் முக்கியத்துவத்தை மறந்துவிடாதீர்கள்
JSON இல், ஒரு பொருளானது, அளவு பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட பெயர்/மதிப்பு ஜோடிகளின் வரிசைப்படுத்தப்படாத தொகுப்பைக் கொண்டுள்ளது, இதில் பெயர் ஒரு சரம் மற்றும் மதிப்பு என்பது சரம், எண், பூலியன், பூலியன், பொருள் அல்லது வரிசை.
துரதிர்ஷ்டவசமாக, BSON தேடும் போது ஆர்டருக்கு அதிக முக்கியத்துவம் கொடுக்கிறது. மோங்கோடிபியில், உள்ளமைக்கப்பட்ட பொருள்களுக்குள் உள்ள விசைகளின் வரிசை { firstname: "Phil", surname: "factor" }
- இது போன்றது அல்ல { { surname: "factor", firstname: "Phil" }
. அதாவது, உங்கள் ஆவணங்களில் பெயர்/மதிப்பு ஜோடிகளின் வரிசையை நீங்கள் கண்டிப்பாகச் சேமிக்க வேண்டும்.
குழப்பம் வேண்டாம் "ஏதுமில்லை" и "வரையறுக்கப்படாத"
மதிப்பு "வரையறுக்கப்படாத" JSON இல் செல்லுபடியாகாது $null
, இது எப்போதும் ஒரு நல்ல தீர்வு அல்ல.
பயன்படுத்த $limit()
இல்லாமல் $sort()
நீங்கள் அடிக்கடி மோங்கோடிபியில் வளரும்போது, வினவல் அல்லது தொகுப்பிலிருந்து திரும்பப் பெறப்படும் முடிவின் மாதிரியைப் பார்ப்பது பயனுள்ளதாக இருக்கும். இந்த பணிக்கு உங்களுக்கு தேவைப்படும் $limit()
, ஆனால் நீங்கள் முன்பு பயன்படுத்தாத வரை அது இறுதிக் குறியீட்டில் இருக்கக்கூடாது $sort
. இந்த மெக்கானிக் அவசியம், இல்லையெனில் நீங்கள் முடிவின் வரிசைக்கு உத்தரவாதம் அளிக்க முடியாது, மேலும் நீங்கள் தரவை நம்பகத்தன்மையுடன் பார்க்க முடியாது. முடிவின் மேலே நீங்கள் வரிசையாக்கத்தைப் பொறுத்து வெவ்வேறு உள்ளீடுகளைப் பெறுவீர்கள். நம்பகத்தன்மையுடன் செயல்பட, வினவல்கள் மற்றும் ஒருங்கிணைப்புகள் உறுதியானதாக இருக்க வேண்டும், அதாவது, அவை செயல்படுத்தப்படும் ஒவ்வொரு முறையும் ஒரே மாதிரியான முடிவுகளை உருவாக்க வேண்டும். இதில் உள்ள குறியீடு $limit()
, ஆனால் இல்லை $sort
, உறுதியானதாக இருக்காது மற்றும் அதன் பிறகு பிழைகளை ஏற்படுத்தலாம், அதைக் கண்டறிவது கடினம்.
முடிவுக்கு
மோங்கோடிபியில் ஏமாற்றமடைவதற்கான ஒரே வழி, அதை டிபிஎம்எஸ் போன்ற மற்றொரு வகை தரவுத்தளத்துடன் நேரடியாக ஒப்பிடுவது அல்லது சில எதிர்பார்ப்புகளின் அடிப்படையில் அதைப் பயன்படுத்துவதே ஆகும். ஆரஞ்சு பழத்தை முட்கரண்டியுடன் ஒப்பிடுவது போன்றது. தரவுத்தள அமைப்புகள் குறிப்பிட்ட நோக்கங்களுக்காக சேவை செய்கின்றன. இந்த வேறுபாடுகளை நீங்களே புரிந்துகொண்டு பாராட்டுவது சிறந்தது. மோங்கோடிபி டெவலப்பர்களை டிபிஎம்எஸ் பாதையில் தள்ளும் பாதையில் அழுத்தம் கொடுப்பது அவமானமாக இருக்கும். தரவு ஒருமைப்பாட்டை உறுதி செய்தல் மற்றும் தோல்வி மற்றும் தீங்கிழைக்கும் தாக்குதல்களைத் தாங்கக்கூடிய தரவு அமைப்புகளை உருவாக்குதல் போன்ற பழைய சிக்கல்களைத் தீர்ப்பதற்கான புதிய மற்றும் சுவாரஸ்யமான வழிகளைப் பார்க்க விரும்புகிறேன்.
பதிப்பு 4.0 இல் MongoDB இன் ACID பரிவர்த்தனையின் அறிமுகம், புதுமையான முறையில் முக்கியமான மேம்பாடுகளை அறிமுகப்படுத்துவதற்கான சிறந்த எடுத்துக்காட்டு. பல ஆவணங்கள் மற்றும் பல அறிக்கை பரிவர்த்தனைகள் இப்போது அணுசக்தியாக உள்ளன. பூட்டுகளைப் பெறுவதற்கும் சிக்கிய பரிவர்த்தனைகளை நிறுத்துவதற்கும், தனிமைப்படுத்தப்பட்ட அளவை மாற்றுவதற்கும் தேவையான நேரத்தை சரிசெய்யவும் முடியும்.
மேலும் படிக்க:
ஆதாரம்: www.habr.com