පාඨමාලා ආරම්භයට ආසන්න දිනක ලිපියේ පරිවර්තනය සකස් කරන ලදී
කැපී පෙනෙන අවස්ථා:
- MongoDB හි වෛකල්පිත වුවද, යෝජනා ක්රමයක් සංවර්ධනය කිරීම අතිශයින් වැදගත් වේ.
- එලෙසම, දර්ශක ඔබේ යෝජනා ක්රමයට සහ ප්රවේශ රටාවන්ට ගැළපිය යුතුය.
- විශාල වස්තූන් සහ විශාල අරා භාවිතා කිරීමෙන් වළකින්න.
- MongoDB සැකසුම් සමඟ ප්රවේශම් වන්න, විශේෂයෙන් ආරක්ෂාව සහ විශ්වසනීයත්වය සම්බන්ධයෙන්.
- MongoDB සතුව විමසුම් ප්රශස්තකාරකයක් නොමැත, එබැවින් විමසුම් මෙහෙයුම් සිදු කිරීමේදී ඔබ ප්රවේශම් විය යුතුය.
මම දත්ත සමුදායන් සමඟ ඉතා දිගු කාලයක් වැඩ කර ඇත, නමුත් මෑතකදී MongoDB සොයා ගන්නා ලදී. මම එය සමඟ වැඩ කිරීමට පෙර මම දැන සිටිය යුතු කරුණු කිහිපයක් තිබේ. පුද්ගලයෙකුට දැනටමත් යම් ක්ෂේත්රයක අත්දැකීම් ඇති විට, දත්ත සමුදායන් යනු කුමක්ද සහ ඔවුන් කරන්නේ කුමක්ද යන්න පිළිබඳ පූර්ව නිගමනයන් ඇත. අන් අයට තේරුම් ගැනීමට පහසු කිරීමේ බලාපොරොත්තුවෙන්, මම පොදු වැරදි ලැයිස්තුවක් ඉදිරිපත් කරමි.
සත්යාපනයකින් තොරව MongoDB සේවාදායකයක් නිර්මාණය කිරීම
අවාසනාවන්ත ලෙස, MongoDB පෙරනිමියෙන් සත්යාපනයකින් තොරව ස්ථාපනය කර ඇත. දේශීයව ප්රවේශ වූ වැඩපොළක් සඳහා, මෙම පරිචය සාමාන්ය වේ. නමුත් MongoDB යනු විශාල මතක ප්රමාණයක් භාවිතා කිරීමට කැමති බහු-පරිශීලක පද්ධතියක් බැවින්, ඔබ එය සංවර්ධනය සඳහා පමණක් භාවිතා කළත්, හැකි තරම් RAM ප්රමාණයක් ඇති සේවාදායකයකට එය තැබුවහොත් වඩා හොඳය. පෙරනිමි වරාය හරහා සේවාදායකයේ ස්ථාපනය කිරීම ගැටළුකාරී විය හැකිය, විශේෂයෙන් ඉල්ලීමෙහි ඕනෑම ජාවාස්ක්රිප්ට් කේතයක් ක්රියාත්මක කළ හැකි නම් (උදාහරණයක් ලෙස, $where
සඳහා අදහසක් ලෙස
සත්යාපන ක්රම කිහිපයක් ඇත, නමුත් පහසුම වන්නේ පරිශීලක හැඳුනුම්පතක්/මුරපදයක් සැකසීමයි. මත පදනම් වූ විසිතුරු සත්යාපනය ගැන ඔබ සිතන අතරතුර මෙම අදහස භාවිතා කරන්න
ඔබේ ප්රහාරක පෘෂ්ඨය MongoDB වෙත බැඳීමට අමතක නොකරන්න
,
හෝ
. දත්ත ගොනු සම්මත MongoDB තුළ සංකේතනය කර නොමැති බැවින්, MongoDB සමඟ ධාවනය කිරීම අර්ථවත් කරයි
පරිපථය සංවර්ධනය කිරීමේදී දෝෂයකි
MongoDB යෝජනා ක්රමයක් භාවිතා නොකරයි. නමුත් මෙම යෝජනා ක්රමය අවශ්ය නොවන බව මින් අදහස් නොවේ. ඔබට කිසිදු ස්ථාවර රටාවකින් තොරව ලේඛන ගබඩා කිරීමට අවශ්ය නම්, ඒවා ගබඩා කිරීම ඉක්මන් සහ පහසු විය හැකි නමුත් පසුව ඒවා ලබා ගැනීම අපහසු විය හැක.
සම්භාව්ය ලිපිය"
වර්ග කිරීමේ අනුපිළිවෙල අමතක කරන්න එපා
අනුපිළිවෙල අමතක කිරීම වෙනත් වැරදි වින්යාසයකට වඩා වැඩි කලකිරීමක් හා වැඩි කාලයක් නාස්ති කිරීමට හේතු විය හැක. පෙරනිමියෙන් MongoBD භාවිතා කරයි
විශාල ලේඛන සමඟ එකතු කිරීම් සාදන්න
MongoDB 16MB දක්වා විශාල ලේඛන එකතු කිරීම් තුළ සත්කාරකත්වය ලබා දීමට සතුටු වේ
විශාල අරා සහිත ලේඛන නිර්මාණය කිරීම
ලේඛනවල අරාවන් අඩංගු විය හැක. අරාවේ ඇති මූලද්රව්ය සංඛ්යාව ඉලක්කම් හතරක සංඛ්යාවකට වඩා දුරින් නම් එය වඩාත් සුදුසුය. අරාවකට මූලද්රව්ය නිතර එක් කරන්නේ නම්, එය එය අඩංගු ලේඛනය අභිබවා යනු ඇත
MongoDB කියලා දෙයක් තියෙනවා
අරාව සුචිගත කිරීමකින් තොරව ඔබට කළ හැකි යැයි ඔබ සිතනු ඇත. අවාසනාවකට, දර්ශක නොමැතිකම නිසා ඔබට වෙනත් ගැටළු ඇති විය හැක. ලේඛන ආරම්භයේ සිට අවසානය දක්වා පරිලෝකනය කර ඇති බැවින්, අරාව අවසානයේ ඇති මූලද්රව්ය සෙවීමට වැඩි කාලයක් ගතවනු ඇති අතර, එවැනි ලේඛනයක් හා සම්බන්ධ බොහෝ මෙහෙයුම්
එකතු කිරීමක අදියරවල අනුපිළිවෙල වැදගත් බව අමතක නොකරන්න
විමසුම් ප්රශස්තකරණයක් සහිත දත්ත සමුදා පද්ධතියක, ඔබ ලියන විමසුම් ඔබට ලබා ගැනීමට අවශ්ය දේ පිළිබඳ පැහැදිලි කිරීම් මිස එය ලබා ගන්නේ කෙසේද යන්න නොවේ. මෙම යාන්ත්රණය ක්රියාත්මක වන්නේ අවන්හලක ඇණවුම් කිරීම හා සැසඳීමෙනි: සාමාන්යයෙන් ඔබ කෑමක් ඇණවුම් කරන අතර කුක් වෙත සවිස්තරාත්මක උපදෙස් ලබා නොදෙන්න.
MongoDB හි, ඔබ කුක්ට උපදෙස් දෙයි. උදාහරණයක් ලෙස, දත්ත හරහා ගමන් කරන බවට ඔබ සහතික විය යුතුය reduce
භාවිතා කරන නල මාර්ගයේ හැකි ඉක්මනින් $match
и $project
, සහ වර්ග කිරීම සිදු වන්නේ පසුව පමණි reduce
, සහ සෙවීම ඔබට අවශ්ය අනුපිළිවෙලට සිදු වන බව. අනවශ්ය වැඩ ඉවත් කරන, ප්රශස්ත ලෙස පියවර අනුක්රමණය කරන සහ සම්බන්ධ වීමේ වර්ග තෝරා ගන්නා විමසුම් ප්රශස්තකාරකයක් තිබීම ඔබව නරක් කළ හැකිය. MongoDB සමඟින්, ඔබට පහසුව සඳහා වැඩි පාලනයක් ඇත.
වැනි මෙවලම්
ඉක්මන් පටිගත කිරීම භාවිතා කිරීම
කිසිවිටෙකත් වැඩි වේගයක් ඇති නමුත් අඩු විශ්වසනීයත්වයක් ඇති කිරීමට MongoDB ලිවීමේ විකල්ප සකස් නොකරන්න. මෙම මාදිලිය "ගොනුව-සහ-අමතක කරන්න" ලිවීම සිදු වීමට පෙර විධානය ආපසු ලැබෙන නිසා වේගවත් බව පෙනේ. දත්ත තැටියට ලිවීමට පෙර පද්ධතිය බිඳ වැටුණහොත්, එය නැති වී අවසානයේ නොගැලපෙන තත්වයකට පත්වේ. වාසනාවකට මෙන්, 64-bit MongoDB ලොග් වීම සක්රීය කර ඇත.
MMAPv1 සහ WiredTiger ආචයන යන්ත්ර මෙය වලක්වා ගැනීම සඳහා ලොග් වීම භාවිතා කරයි, නමුත් WiredTiger හට අවසන් ස්ථාවරය දක්වා ප්රකෘතිමත් විය හැක.
ප්රකෘතිමත් වීමෙන් පසු දත්ත සමුදාය ස්ථාවර තත්ත්වයක පවතින බව ජර්නල් කිරීම සහතික කරන අතර එය ලොගයට ලියන තෙක් සියලු දත්ත රඳවා තබා ගනී. පටිගත කිරීමේ වාර ගණන පරාමිතිය භාවිතයෙන් වින්යාස කර ඇත
.
ඇතුළත් කිරීම් පිළිබඳ සහතික වීමට, වින්යාස ගොනුවේ ලොග් වීම සක්රීය කර ඇති බවට වග බලා ගන්න
, සහ පටිගත කිරීම් වාර ගණන ඔබට අහිමි විය හැකි තොරතුරු ප්රමාණයට අනුරූප වේ.
දර්ශකයකින් තොරව වර්ග කිරීම
සෙවීමේදී සහ එකතු කිරීමේදී බොහෝ විට දත්ත වර්ග කිරීමට අවශ්ය වේ. අනුපිළිවෙළට සකසන දත්ත ප්රමාණය අඩු කිරීම සඳහා ප්රතිඵලය පෙරීමෙන් පසු මෙය අවසන් අදියරෙන් එකක් සිදුවේ යැයි අපි බලාපොරොත්තු වෙමු. මෙම අවස්ථාවේදී පවා, වර්ග කිරීම සඳහා ඔබට අවශ්ය වනු ඇත
සුදුසු දර්ශකයක් නොමැති නම්, MongoDB එය නොමැතිව කරනු ඇත. සියලුම ලේඛනවල මුළු ප්රමාණය මත 32 MB මතක සීමාවක් ඇත
දර්ශක සහාය නොමැතිව සොයන්න
සෙවුම් විමසුම් SQL හි JOIN මෙහෙයුමට සමාන කාර්යයක් ඉටු කරයි. වඩාත් හොඳින් ක්රියා කිරීමට, ඔවුන්ට විදේශීය යතුර ලෙස භාවිතා කරන යතුරේ අගය පිළිබඳ දර්ශකය අවශ්ය වේ. භාවිතය පිළිබිඹු නොවන නිසා මෙය පැහැදිලි නැත explain()
. එවැනි දර්ශක ලියා ඇති දර්ශකයට අමතරව වේ explain()
, එය නල මාර්ග ක්රියාකරුවන් විසින් භාවිතා කරනු ලැබේ $match
и $sort
, නල මාර්ගයේ ආරම්භයේ දී ඔවුන් හමු වූ විට. දර්ශක දැන් ඕනෑම අදියරක් ආවරණය කළ හැක
බහු-යාවත්කාලීන භාවිතයෙන් ඉවත් වීම
ක්රමය
ඔබ සඳහන් කරන පරාමිතිය මත පදනම්ව, පවතින ලේඛනයක කොටසක් හෝ සම්පූර්ණ ලේඛනය සම්පූර්ණ ප්රතිස්ථාපනයක් දක්වා වෙනස් කිරීමට භාවිතා කරයි
. එතරම් පැහැදිලි නැති දෙය නම්, ඔබ විකල්පය සකසන්නේ නම් මිස එය එකතුවේ ඇති සියලුම ලේඛන ක්රියා නොකරනු ඇත
ඉල්ලීම් නිර්ණායක සපුරාලන සියලුම ලේඛන යාවත්කාලීන කිරීමට.
හැෂ් වගුවක ඇති යතුරු අනුපිළිවෙලෙහි වැදගත්කම අමතක නොකරන්න
JSON හි, වස්තුවක් සමන්විත වන්නේ අනුපිළිවෙලකින් තොරව ශුන්ය ප්රමාණයේ හෝ ඊට වැඩි නම/අගය යුගලයක එකතුවකින් වන අතර, එහිදී නම තන්තුවක් වන අතර අගය යනු තන්තුවක්, අංකයක්, බූලියන්, ශුන්ය, වස්තුවක් හෝ අරාවකි.
අවාසනාවකට මෙන්, BSON සෙවීමේදී ඇණවුම කෙරෙහි වැඩි අවධානයක් යොමු කරයි. MongoDB හි, ගොඩනඟන ලද වස්තූන් තුළ යතුරු අනුපිළිවෙල { firstname: "Phil", surname: "factor" }
- මෙය සමාන නොවේ { { surname: "factor", firstname: "Phil" }
. එනම්, ඔබට ඒවා සොයා ගැනීමට සහතික වීමට අවශ්ය නම්, ඔබේ ලේඛනවල නම්/අගය යුගල අනුපිළිවෙල ගබඩා කළ යුතුය.
අවුල් වෙන්න එපා "ශුන්ය" и "නිර්වචනය නොකළ"
අගය "නිර්වචනය නොකළ" අනුව JSON හි කිසිදා වලංගු නොවීය $null
, සෑම විටම හොඳ විසඳුමක් නොවේ.
භාවිතා කරන්න $limit()
තොරව $sort()
බොහෝ විට ඔබ MongoDB හි වර්ධනය වන විට, විමසුමකින් හෝ එකතු කිරීමකින් ආපසු ලැබෙන ප්රතිඵලයේ නියැදියක් බැලීම ප්රයෝජනවත් වේ. මෙම කාර්යය සඳහා ඔබට අවශ්ය වනු ඇත $limit()
, නමුත් ඔබ එය පෙර භාවිතා නොකරන්නේ නම් එය කිසි විටෙක අවසාන කේතයේ නොතිබිය යුතුය $sort
. මෙම යාන්ත්රිකයා අවශ්ය වන්නේ එසේ නොමැති නම් ඔබට ප්රති result ලය අනුපිළිවෙල සහතික කළ නොහැකි නිසා සහ ඔබට දත්ත විශ්වාසදායක ලෙස බැලීමට නොහැකි බැවිනි. ප්රතිඵලයේ ඉහළින්ම ඔබට වර්ග කිරීම අනුව විවිධ ඇතුළත් කිරීම් ලැබෙනු ඇත. විශ්වාසදායක ලෙස ක්රියා කිරීමට, විමසුම් සහ එකතු කිරීම් තීරණාත්මක විය යුතුය, එනම් ඒවා ක්රියාත්මක කරන සෑම අවස්ථාවකම එකම ප්රතිඵල නිපදවිය යුතුය. අඩංගු කේතය $limit()
, නමුත් නැත $sort
, තීරනාත්මක නොවන අතර පසුව සොයා ගැනීමට අපහසු වන දෝෂ ඇති විය හැක.
නිගමනය
MongoDB සමඟ කලකිරීමට පත් විය හැකි එකම ක්රමය වන්නේ එය DBMS වැනි වෙනත් දත්ත සමුදායක් සමඟ කෙලින්ම සංසන්දනය කිරීම හෝ යම් යම් අපේක්ෂාවන් මත පදනම්ව එය භාවිතා කිරීමට පැමිණීමයි. ඒක හරියට තැඹිලි ගෙඩියක් ගෑරුප්පුවකට සමාන කරනවා වගේ වැඩක්. දත්ත සමුදා පද්ධති නිශ්චිත අරමුණු ඉටු කරයි. මෙම වෙනස්කම් ඔබම සරලව තේරුම් ගෙන අගය කිරීම වඩාත් සුදුසුය. MongoDB සංවර්ධකයින්ට DBMS මාර්ගයට බල කළ මාර්ගයක් මත පීඩනය යෙදීම ලැජ්ජාවකි. දත්ත අඛණ්ඩතාව සහතික කිරීම සහ අසාර්ථකත්වයට සහ ද්වේෂසහගත ප්රහාරවලට ඔරොත්තු දෙන දත්ත පද්ධති නිර්මාණය කිරීම වැනි පැරණි ගැටලු විසඳීමට නව සහ රසවත් ක්රම දැකීමට මට අවශ්යය.
MongoDB හි 4.0 අනුවාදයේ ACID ගනුදෙනුව හඳුන්වාදීම නව්ය ආකාරයෙන් වැදගත් වැඩිදියුණු කිරීම් හඳුන්වා දීම සඳහා හොඳ උදාහරණයකි. බහු-ලේඛන සහ බහු-ප්රකාශ ගනුදෙනු දැන් පරමාණුක වේ. අගුලු ලබා ගැනීමට සහ සිරවී ඇති ගනුදෙනු අවසන් කිරීමට අවශ්ය කාලය සකස් කිරීමට මෙන්ම හුදකලා මට්ටම වෙනස් කිරීමට ද හැකිය.
තවත් කියවන්න:
මූලාශ්රය: www.habr.com