National Data Center | Where Information lives...

NoSQL ӨГӨГДЛИЙН САН

“NoSQL” гэдэг нь “Non SQL, Not Only SQL” буюу өгөгдлийн санг удирдах “SQL” хэлгүй өгөгдлийн сан гэсэн үг юм. “NoSQL” өгөгдлийн сан нь орчин үеийн програм хангамж хөгжүүлэхэд тавигдах шаардлагуудад үндэслэн өгөгдлийн сангийн олон төрлийн, өргөн хүрээний өөр өөр технологиудыг өөртөө агуулдаг. “NoSQL” өгөгдлийн сан үүсэх болсон хэд хэдэн шалтгаантай. Үүнд:

  • Програм хангамж хөгжүүлэгчид нь өргөн хүрээг хамарсан хурдацтай өөрчлөгддөг бүтэцлэгдсэн, хагас бүтэцлэгдсэн, бүтэцлэгдээгүй мөн олон хэлбэрт өгөгдлийн төрлүүдийг үүсгэдэг програм хангамжийг ашиглах болсон.
  • Дийлэнх хэрэглэгчдийн ашиглах болсон програм хангамжууд нь өнөө үед тасралтгүй ажиллагаатай, олон төрлийн төхөөрөмжүүдээс хандах боломжийг олгож байгаа бөгөөд дэлхий даяар сая сая хэрэглэгчдийг хамарч ажиллаж байна.
  • Байгууллагууд нь өнөө үед нээлттэй эхийн програм хангамж, өндөр үзүүлэлттэй сервер, сторэйж зэргийг төдийлөн ашиглахаас татгалзаж, үүлэн тооцооллыг ашигласан архитектурыг үйл ажиллагаандаа ашиглах болсон.

“SQL” өгөгдлийн сан нь орчин үеийн програм хангамжуудад тулгардаг өргөн хүрээг хамарсан хурдацтай өөрчлөгддөг байх шалгууруудыг хангахгүй байна. Мөн түүнчлэн өнөө үеийн өндөр үзүүлэлт бүхий сторэйж, боловсруулалтын хүчин чадлын давуу талыг ашиглахаар загварчлагдаагүй. Харин “NoSQL” өгөгдлийн сангийн хувьд дээрх асуудлууд хялбараар шийдэгддэг. “NoSQL” -д хамаарах ихэнх өгөгдлийн сан нь анхнаасаа тархмал, өргөтгөхөд хялбар байхаар загварчлагдсан байдаг. Гэвч “NoSQL” өгөгдлийн санг ашиглан програм хөгжүүлэхэд хүндрэлтэй байдаг бөгөөд “SQL” ашиглахгүйгээр өгөгдлийн сан удирдах нь шинэлэг зүйл бөгөөд програм хангамжийн шийдлийг гаргахын тулд өөр өнцгөөс харж код бичих шаардлага тулгардаг.

“NoSQL” өгөгдлийн сангийн төрлүүд:

  • Document database: Цогц өгөгдлийн бүтэцтэй тэдгээр нь түлхүүр үг бүртэй холбогддог.
  • Graph stores: Олон нийтийн сүлжээний өгөгдлийг хадгалдаг.
  • Key-value stores: Энэ нь хамгийн энгийн бүтэцтэй, ашиглахад хялбар “NoSQL” өгөгдлийн сангийн нэг төрөл нь юм. Тухайн төрлийн өгөгдөл бүр нь утгын хамтаар түлхүүр (key) үгээр хадгалагддаг онцлогтой.
  • Wide-column stores: Cassandra болон Hbase зэрэг өгөгдлийн сан нь их хэмжээний өгөгдлийн багц дээрх query бичихэд тохируулагдсан байдаг бөгөөд зөвхөн багана байдлаар хадгалдаг.

“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