“NoSQL” гэдэг нь “Non SQL, Not Only SQL” буюу өгөгдлийн санг удирдах “SQL” хэлгүй өгөгдлийн сан гэсэн үг юм. “NoSQL” өгөгдлийн сан нь орчин үеийн програм хангамж хөгжүүлэхэд тавигдах шаардлагуудад үндэслэн өгөгдлийн сангийн олон төрлийн, өргөн хүрээний өөр өөр технологиудыг өөртөө агуулдаг. “NoSQL” өгөгдлийн сан үүсэх болсон хэд хэдэн шалтгаантай. Үүнд:
“SQL” өгөгдлийн сан нь орчин үеийн програм хангамжуудад тулгардаг өргөн хүрээг хамарсан хурдацтай өөрчлөгддөг байх шалгууруудыг хангахгүй байна. Мөн түүнчлэн өнөө үеийн өндөр үзүүлэлт бүхий сторэйж, боловсруулалтын хүчин чадлын давуу талыг ашиглахаар загварчлагдаагүй. Харин “NoSQL” өгөгдлийн сангийн хувьд дээрх асуудлууд хялбараар шийдэгддэг. “NoSQL” -д хамаарах ихэнх өгөгдлийн сан нь анхнаасаа тархмал, өргөтгөхөд хялбар байхаар загварчлагдсан байдаг. Гэвч “NoSQL” өгөгдлийн санг ашиглан програм хөгжүүлэхэд хүндрэлтэй байдаг бөгөөд “SQL” ашиглахгүйгээр өгөгдлийн сан удирдах нь шинэлэг зүйл бөгөөд програм хангамжийн шийдлийг гаргахын тулд өөр өнцгөөс харж код бичих шаардлага тулгардаг.
“NoSQL” өгөгдлийн сангийн төрлүүд:
“NoSQL” өгөгдлийн сангийн давуу талууд:
“SQL” өгөгдлийн сантай харьцуулахад “NoSQL” өгөгдлийн сан нь өргөтгөх боломжтой мөн дээд зэргийн хүчин чадлыг үзүүлнэ. Мөн “SQL” -ийн өгөгдлийн загвар нь бүтэцлэгдсэн өгөгдлийн сангийн хувьд хаяглахаар загварчлагдаагүй байдаг бол “NoSQL” -ийн хувьд хэд хэдэн шийдлүүдээр хаяглахаар бүтээгдсэн.
SQL, NoSQL өгөгдлийн сангийн харьцуулалт:
Төрлийн хувьд:
“SQL” өгөгдлийн сан нь нэг бүтцийн нэг төрөлтэй өгөгдлийн сангуудтай бол “NoSQL” өгөгдлийн сангийн хувь Document database, Graph stores, Key-value stores, Wide-column stores –уудыг багтаасан олон төрөлтэй.
Хөгжүүлэлтийн түүх:
Сторэйжид суурилсан програм хангамж хөгжиж эхэлсэн 1970 оноос “SQL” өгөгдлийн сан хөгжүүлэгдэж ирсэн. Харин 2000 оны сүүлээр “SQL” өгөгдлийн сангийн өргөжүүлэх боломж, олон бүтэцтэй өгөгдөл, газар зүйн тархац болон түргэн хугацааны хөгжүүлэлтийн хязгаарлагдмал байдалд үндэслэн “NoSQL” өгөгдлийн санг хөгжүүлсэн.
Өгөгдлийн сангуудын жишээ :
“SQL” өгөгдлийн сангийн бүлэгт MySQL, Postgres, MSSQL Server, Oracle нь хамаарагддаг бол, “NoSQL” өгөгдлийн санд MongoDB, Cassandra, HBase, Neo4J зэрэг өгөгдлийн сангууд хамаарна.
Өгөгдлийн санах байгууламжийн загварын хувьд “SQL” өгөгдлийн сан дээр жишээ авч тайлбарлавал: Албан газар болон ажилчдын талаарх мэдээлэл нь өөр өөр нэг хүснэгтэд хадгалагддаг. Хэрэглэгч тухайн ажилтны ажлын газрын хаягыг мэдэхийг хүссэн үед өгөгдлийн сангаас “Ажилчин” болон “Албан газар” гэсэн хүснэгтүүдээс хэрэгцээт мэдээллээ нэгтгэн олж авдаг. Харин “NoSQL” өгөгдлийн сан нь өгөгдлийн сангийн төрлөөс хамаарч өөр өөр байдаг.
Жишээ нь:
“Key-value stores” өгөгдлийн сангийн функц нь “SQL” өгөгдлийн сантай төстэй бөгөөд зөвхөн утга (илүү цогц их хэмжээний мэдээл агуулдаг) мөн түлхүүр үг гэсэн 2 баганатай байдаг. “Document database” нь хүснэгт болон мөр гэдэг загвараар бүгдийг нь нэг файл буюу JSON, XML эсвэл өөр ямар нэгэн өгөгдлийг хамааралтайгаар хадгалж чадах бусад файлд хадгалдаг.
Схемүүд: “SQL” өгөгдлийн сангийн хувьд бүтэц болон өгөгдлийн төрөл нь тодорхойлогдсон байдаг ба шинээр бүтэц болон төрөл нэмэх, хадгалахын тулд өгөгдлийн санг унтрааж бүхэлд нь өөрчилдөг. Харин “NoSQL” өгөгдлийн сан нь зарим өгөгдлийг баталгаажуулах тодорхой дүрэмтэй боловч, ерөнхийдөө динамик ажиллагаатай байдаг. Мөн програм хангамжууд нь өгөгдлийн сан дээр шинэ талбарууд нэмэх боломжтой, гэхдээ энэ нь “SQL” бүтэцтэй өгөгдлийн сан дээр хүснэгтийн мөр нэмэхтэй адилгүй юм. Шаардлагатай тохиолдолд өөр өөр төрлийн өгөгдлүүдийг хамтад нь хадгалж болдог.
Өргөжүүлэлт (Scaling):
Босоо загвар: Өсөж буй хэрэгцээг хангахын тулд тухайн нэг серверийн хүчин чадлыг нэмэгдүүлэх шаардлагатай. “SQL” өгөгдлийн санг олон серверүүдэд тараан байршуулах боломжтой, гэвч дээд зэргийн инженерчлэлийн чадвар шаарддаг мөн Join зэрэг гол холбодог командууд нь ажилладаггүй.
Хэвтээ загвар: Үйлчилгээний серверүүд эсвэл үүлэн тооцооллын серверүүдийг нэмэхэд хялбар бөгөөд хэрэгцээтэй үед өгөгдлийн сан нь автоматаар олон сервер дээр тархан ажилладаг. “NoSQL” өгөгдлийн сан нь хэвтээ загварын өргөжүүлэлтийг ашигладаг.
Эх сурвалж :
https://www.mongodb.com/nosql-explained
http://eflorenzano.com/blog/2009/07/21/my-thoughts-nosql/
https://en.wikipedia.org/wiki/NoSQL