د مقالې ژباړه د کورس د پیل په ماښام چمتو شوې وه
څرګندونې:
- د سکیما رامینځته کول خورا مهم دي حتی که دا په MongoDB کې اختیاري وي.
- په ورته ډول، شاخصونه باید ستاسو د سکیما او لاسرسي نمونو سره سمون ولري.
- د لویو شیانو او لویو صفونو کارولو څخه ډډه وکړئ.
- د MongoDB تنظیماتو سره محتاط اوسئ ، په ځانګړي توګه کله چې د امنیت او اعتبار خبره راځي.
- MongoDB د پوښتنې اصلاح کوونکی نلري، نو تاسو باید د پوښتنې عملیات ترسره کولو پر مهال محتاط اوسئ.
زه د ډیر وخت لپاره د ډیټابیسونو سره کار کوم ، مګر پدې وروستیو کې مونګو ډی بی کشف شوی. دلته یو څو شیان شته چې کاش زه پوهیدم مخکې له دې چې ما ورسره کار پیل کړ. کله چې یو څوک دمخه په یوه ځانګړي ساحه کې تجربه ولري، دوی د ډیټابیس څه شی دي او دوی څه کوي په اړه دمخه تصور لري. د نورو لپاره د پوهیدو لپاره د اسانه کولو په هیله، زه د عام غلطیو لیست وړاندې کوم.
د تصدیق پرته د MongoDB سرور رامینځته کول
له بده مرغه، MongoDB د ډیفالټ لخوا د تصدیق پرته نصب شوی. د کار سټیشن لپاره چې په سیمه ایزه توګه لاسرسی کیږي، دا تمرین معمول دی. مګر څنګه چې مونګو ډی بی یو څو کاروونکي سیسټم دی چې د لوی مقدار حافظې کارول خوښوي ، نو دا به غوره وي که تاسو دا د امکان تر حده ډیر رام سره په سرور کې واچوئ ، حتی که تاسو دا یوازې د پراختیا لپاره وکاروئ. د ډیفالټ بندر له لارې په سرور کې نصب کول ستونزمن کیدی شي ، په ځانګړي توګه که چیرې د جاوا سکریپټ کوډ په غوښتنه کې اجرا شي (د مثال په توګه ، $where
لپاره د یوې مفکورې په توګه
د تصدیق کولو ډیری میتودونه شتون لري ، مګر ترټولو اسانه د کارونکي ID/پاسورډ تنظیم کول دي. دا مفکوره وکاروئ پداسې حال کې چې تاسو د فانسسي تصدیق کولو په اړه فکر کوئ
مه هیروئ چې د برید سطح 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
. دا میکانیک اړین دی ځکه چې که نه نو تاسو نشئ کولی د پایلې ترتیب تضمین کړئ، او تاسو به نشئ کولی په معتبر ډول ډاټا وګورئ. د پایلې په پورتنۍ برخه کې به تاسو د ترتیب کولو پورې اړوند مختلف ننوتل ترلاسه کړئ. د باور وړ کار کولو لپاره، پوښتنې او راټولونه باید ټاکونکي وي، دا دا دی چې هرکله چې اجرا کیږي ورته پایلې تولیدوي. کوډ چې پکې شامل دي $limit()
، مګر نه $sort
، به ټاکونکی نه وي او ممکن وروسته د تیروتنو لامل شي چې تعقیب به یې ستونزمن وي.
پایلې
د MongoDB سره د نا امید کیدو یوازینۍ لار دا ده چې دا مستقیم د بل ډول ډیټابیس سره پرتله کړئ، لکه DBMS، یا د ځینو توقعاتو پراساس د کارولو لپاره راځي. دا د نارنجي سره پرتله کولو په څیر دی. د ډیټابیس سیسټمونه ځانګړي اهداف لري. دا غوره ده چې په ساده ډول د ځان لپاره دا توپیرونه درک او تعریف کړئ. دا به د شرم خبره وي چې د MongoDB پراختیا کونکو باندې په داسې لاره فشار راوړي چې دوی یې د DBMS لارې ته اړ کړي. زه غواړم د زړو ستونزو د حل لپاره نوې او په زړه پورې لارې وګورم، لکه د معلوماتو بشپړتیا یقیني کول او د ډیټا سیسټمونو رامینځته کول چې د ناکامۍ او ناوړه بریدونو سره مقاومت لري.
په 4.0 نسخه کې د MongoDB لخوا د ACID لیږد معرفي کول په نوښت ډول د مهم پرمختګونو معرفي کولو یوه ښه بیلګه ده. څو سندونه او څو بیانیه راکړې ورکړې اوس اټومي دي. دا هم ممکنه ده چې د تالاشۍ ترلاسه کولو لپاره اړین وخت تنظیم کړئ او د تړل شوي معاملو پای ته ورسیږئ، او همدارنګه د انزوا کچه بدل کړئ.
نور یی ولوله:
سرچینه: www.habr.com