Нийтлэлийн орчуулгыг курс эхлэхийн өмнөх өдөр бэлтгэсэн
Онцлогууд:
- Хэдийгээр MongoDB дээр сонголттой ч схем боловсруулах нь маш чухал юм.
- Үүний нэгэн адил индексүүд нь таны схем болон хандалтын загвартай тохирч байх ёстой.
- Том объект, том массив ашиглахаас зайлсхий.
- MongoDB тохиргоонд, ялангуяа аюулгүй байдал, найдвартай байдлын талаар болгоомжтой байгаарай.
- MongoDB нь асуулга оновчтой болгох төхөөрөмжгүй тул асуулгын үйлдлийг хийхдээ болгоомжтой байх хэрэгтэй.
Би мэдээллийн сантай маш удаан ажиллаж байгаа ч MongoDB-г саяхан олж мэдсэн. Түүнтэй ажиллаж эхлэхээсээ өмнө би хэд хэдэн зүйлийг мэдэж авмаар байна. Тухайн хүн аль хэдийн тодорхой салбарт туршлагатай бол мэдээллийн сан гэж юу болох, юу хийдэг талаар урьдчилж төсөөлдөг. Бусдад ойлгоход хялбар болгох үүднээс би нийтлэг алдаануудын жагсаалтыг толилуулж байна.
Баталгаажуулалтгүйгээр MongoDB сервер үүсгэх
Харамсалтай нь MongoDB нь анхдагчаар баталгаажуулалтгүйгээр суулгагдсан байдаг. Орон нутагт хандах боломжтой ажлын станцын хувьд энэ практик нь хэвийн үзэгдэл юм. Гэхдээ MongoDB нь их хэмжээний санах ой ашиглах дуртай олон хэрэглэгчийн систем учраас зөвхөн хөгжүүлэлтэд ашиглах гэж байгаа ч аль болох их RAM-тай сервер дээр тавивал илүү дээр байх болно. Анхдагч портоор дамжуулан сервер дээр суулгах нь асуудалтай байж болно, ялангуяа хүсэлтэд ямар нэгэн JavaScript кодыг гүйцэтгэх боломжтой бол (жишээлбэл, $where
санаа болгон
Баталгаажуулах хэд хэдэн арга байдаг ч хамгийн хялбар нь хэрэглэгчийн ID/нууц үг тохируулах явдал юм. Та үндсэн дээр суурилсан гоёмсог баталгаажуулалтын талаар бодож байхдаа энэ санааг ашиглаарай
Довтолгооны гадаргууг MongoDB-тэй холбохоо бүү мартаарай
,
буюу
. Стандарт MongoDB-д өгөгдлийн файлууд шифрлэгдээгүй тул MongoDB-тэй ажиллах нь зүйтэй юм
Хэлхээ боловсруулах явцад гарсан алдаа
MongoDB нь схем ашигладаггүй. Гэхдээ энэ нь схем шаардлагагүй гэсэн үг биш юм. Хэрэв та баримт бичгийг ямар ч тогтмол хэв маяггүйгээр хадгалахыг хүсвэл тэдгээрийг хадгалах нь хурдан бөгөөд хялбар байж болох ч дараа нь сэргээхэд хэцүү байж болно.
Сонгодог нийтлэл "
Эрэмбэлэх дарааллыг бүү мартаарай
Эрэмбэлэх дарааллыг мартах нь бусад буруу тохиргооноос илүү их бухимдал үүсгэж, илүү их цаг үрдэг. Анхдагч байдлаар MongoBD ашигладаг
Том баримт бүхий цуглуулга үүсгэх
MongoDB 16MB хүртэлх том хэмжээний баримт бичгүүдийг цуглуулгад байршуулахдаа баяртай байна
Том массив бүхий баримт бичиг үүсгэх
Баримт бичиг нь массив агуулж болно. Массив дахь элементийн тоо дөрвөн оронтой тооноос хол байвал хамгийн сайн арга юм. Хэрэв массив руу элементүүдийг байнга нэмбэл, массив нь түүнийг агуулсан баримт бичгээс илүү томрох болно.
MongoDB-д нэг зүйл бий
Та массивыг индексжүүлэхгүйгээр хийж чадна гэж бодож магадгүй юм. Харамсалтай нь индексийн дутагдал нь танд өөр асуудал үүсгэж болзошгүй юм. Баримт бичгүүдийг эхнээс нь дуустал сканнердсан тул массивын төгсгөлд байгаа элементүүдийг хайхад удаан хугацаа шаардагдах бөгөөд ийм баримт бичигтэй холбоотой ихэнх үйлдлүүд
Нэгтгэх үе шатуудын дараалал чухал гэдгийг бүү мартаарай
Асуулт оновчтой болгогчтой өгөгдлийн сангийн системд таны бичсэн асуулга нь таны авахыг хүсч буй зүйлийн тайлбар болохоос хэрхэн авах тухай биш юм. Энэ механизм нь ресторанд захиалга өгөхтэй ижил төстэй байдлаар ажилладаг: ихэвчлэн та зүгээр л таваг захиалж өгдөг бөгөөд тогоочдоо нарийвчилсан зааварчилгаа өгдөггүй.
MongoDB дээр та тогоочдоо зааварчилгаа өгдөг. Жишээлбэл, та өгөгдөл дамжиж байгаа эсэхийг шалгах хэрэгтэй reduce
ашиглан дамжуулах хоолойд аль болох эрт $match
и $project
, ба эрэмбэлэх нь зөвхөн дараа л явагдана reduce
, мөн хайлт яг таны хүссэн дарааллаар явагдана. Шаардлагагүй ажлыг арилгадаг, алхмуудыг оновчтой дараалуулдаг, нэгдэх төрлийг сонгодог асуулга оновчтой болгох нь таныг сүйтгэж болзошгүй. MongoDB-ийн тусламжтайгаар та тав тухтай байдлын зардлаар илүү их хяналттай болно.
гэх мэт хэрэгслүүд
Түргэн бичлэг ашиглах
MongoDB бичих тохиргоог өндөр хурдтай боловч найдвартай байдал багатай гэж хэзээ ч бүү тохируул. Энэ горим "файл хийгээд март" командыг бичихээс өмнө буцаасан тул хурдан юм шиг санагддаг. Хэрэв өгөгдлийг дискэнд бичихээс өмнө систем гацвал энэ нь алдагдаж, тогтворгүй байдалд орно. Аз болоход 64 битийн MongoDB бүртгэлийг идэвхжүүлсэн байна.
MMAPv1 болон WiredTiger хадгалах системүүд үүнээс урьдчилан сэргийлэхийн тулд бүртгэлийг ашигладаг боловч WiredTiger нь хамгийн сүүлийн тогтвортой байдлыг сэргээх боломжтой.
Тэмдэглэл нь өгөгдлийн санг сэргээсний дараа тогтвортой байдалд байгаа эсэхийг баталгаажуулж, бүх өгөгдлийг бүртгэлд бичих хүртэл хадгалдаг. Бичлэгийн давтамжийг параметрийг ашиглан тохируулна
.
Бичлэгүүд байгаа эсэхийг шалгахын тулд тохиргооны файлд бүртгэлийг идэвхжүүлсэн эсэхийг шалгаарай
, бичлэгийн давтамж нь таны алдах боломжтой мэдээллийн хэмжээтэй тохирч байна.
Индексгүйгээр эрэмбэлэх
Хайлт хийх, нэгтгэх үед өгөгдлийг ангилах шаардлагатай байдаг. Үүнийг эрэмбэлэх өгөгдлийн хэмжээг багасгахын тулд үр дүнг шүүсний дараа эцсийн шатуудын аль нэгэнд хийнэ гэж найдаж байна. Энэ тохиолдолд ч гэсэн ангилахын тулд танд хэрэгтэй болно
Хэрэв тохирох индекс байхгүй бол MongoDB түүнгүйгээр хийх болно. Бүх баримт бичгийн нийт хэмжээ 32 МБ санах ойн хязгаартай
Индекс дэмжлэггүйгээр хайх
Хайлтын асуулга нь SQL дээрх JOIN үйлдэлтэй төстэй функцийг гүйцэтгэдэг. Хамгийн сайн ажиллахын тулд гадаад түлхүүр болгон ашигладаг түлхүүрийн утгын индекс хэрэгтэй. Хэрэглээ нь тусгагдаагүй тул энэ нь тодорхойгүй байна explain()
. Ийм индексүүд нь бичигдсэн индексээс гадна байдаг explain()
, үүнийг эргээд дамжуулах хоолойн операторууд ашигладаг $match
и $sort
, тэд дамжуулах хоолойн эхэнд уулзах үед. Одоо индексүүд аль ч үе шатыг хамарч болно
Олон шинэчлэлтийг ашиглахаас татгалзаж байна
арга
Таны зааж өгсөн параметрээс хамааран одоо байгаа баримт бичгийн хэсгийг эсвэл бүхэл бүтэн баримтыг бүрэн солих хүртэл өөрчлөхөд ашигладаг.
. Энэ нь тийм ч тодорхой биш зүйл бол та сонголтоо хийхгүй бол цуглуулгын бүх баримт бичгийг боловсруулахгүй
хүсэлтийн шалгуурыг хангасан бүх баримт бичгийг шинэчлэх.
Хэш хүснэгт дэх түлхүүрүүдийн дарааллын ач холбогдлыг бүү мартаарай
JSON-д объект нь тэг буюу түүнээс олон нэр/утга хосын эрэмблэгдээгүй цуглуулгаас бүрдэх ба нэр нь мөр, утга нь мөр, тоо, логик, null, объект эсвэл массив юм.
Харамсалтай нь BSON хайлт хийхдээ захиалгад ихээхэн ач холбогдол өгдөг. MongoDB дээр суурилагдсан объект доторх түлхүүрүүдийн дараалал { firstname: "Phil", surname: "factor" }
- энэ нь ижил биш юм { { surname: "factor", firstname: "Phil" }
. Өөрөөр хэлбэл, хэрэв та тэдгээрийг олж мэдэхийг хүсч байвал нэр/утга хосын дарааллыг баримт бичигтээ хадгалах ёстой.
Бүү андуураарай "Хоосон" и "тэмдэглэгдээгүй"
үнэ цэнэ "тэмдэглэгдээгүй" дагуу JSON-д хэзээ ч хүчинтэй байгаагүй $null
, энэ нь үргэлж сайн шийдэл биш юм.
Ашиглах $limit()
ямар ч $sort()
Ихэнхдээ та MongoDB-г хөгжүүлж байх үед асуулга эсвэл нэгтгэлээс буцаж ирэх үр дүнгийн жишээг харах нь ашигтай байдаг. Энэ ажилд танд хэрэгтэй болно $limit()
, гэхдээ та үүнийг өмнө нь ашиглаагүй бол энэ нь хэзээ ч эцсийн кодонд байх ёсгүй $sort
. Энэ механик нь зайлшгүй шаардлагатай, учир нь өөрөөр хэлбэл та үр дүнгийн дарааллыг баталгаажуулж чадахгүй бөгөөд та өгөгдлийг найдвартай харах боломжгүй болно. Үр дүнгийн дээд талд та эрэмбэлэлтээс хамааран өөр өөр оруулгуудыг авах болно. Найдвартай ажиллахын тулд асуулга болон нэгтгэлүүд нь тодорхойлогдсон байх ёстой, өөрөөр хэлбэл тэдгээрийг гүйцэтгэх бүрт ижил үр дүнг гаргах ёстой. агуулсан код $limit()
, гэхдээ үгүй $sort
, тодорхойлогч биш бөгөөд дараа нь илрүүлэхэд хэцүү алдаа үүсгэж болзошгүй.
дүгнэлт
MongoDB-д сэтгэл дундуур байх цорын ганц арга бол түүнийг DBMS гэх мэт өөр төрлийн мэдээллийн сантай шууд харьцуулах эсвэл тодорхой хүлээлт дээр үндэслэн ашиглах явдал юм. Жүржийг сэрээтэй зүйрлэж байгаа юм шиг. Өгөгдлийн сангийн систем нь тодорхой зорилготой. Эдгээр ялгааг өөрөө ойлгож, үнэлэх нь хамгийн сайн арга юм. MongoDB хөгжүүлэгчдийг DBMS зам руу түлхэх замаар дарамтлах нь ичмээр юм. Өгөгдлийн бүрэн бүтэн байдлыг хангах, бүтэлгүйтэл, хорлонтой халдлагад тэсвэртэй өгөгдлийн системийг бий болгох гэх мэт хуучин асуудлуудыг шийдвэрлэх шинэ, сонирхолтой арга замыг олж харахыг хүсч байна.
MongoDB 4.0 хувилбарт ACID гүйлгээг нэвтрүүлсэн нь чухал сайжруулалтыг шинэлэг байдлаар нэвтрүүлж байгаагийн сайн жишээ юм. Олон баримт бичиг, олон тайлангийн гүйлгээ одоо атомын шинж чанартай болсон. Түгжээ олж авах, гацсан гүйлгээг зогсооход шаардагдах хугацааг тохируулах, тусгаарлах түвшинг өөрчлөх боломжтой.
Цааш унших:
Эх сурвалж: www.habr.com