Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



NoSQL нима дегани?

NoSQL нима дегани?

Охирги вақтда қандайдир NoSQL базалари хақида кўп эшитиш мумкин. Бу нима дегани? Улар нимага керак бўлиб қолди? Бу атамани эшитганда хаёлга SQL ишлатилмаслиги ёки SQL ўлими каби фикрлар келиши мумкин. Аммо йўқ. Гап бошқа жойда.

Бугунги кунда SQL-лик базалар маълумотлар сақланишидаги барча муаммоларни хал қила олмай қолган. Шунинг учун NoSQL - фақатгина SQL эмас деган маънони англатади. Ўзини яхши кўрсата олган классик маълумотлар базаларига қўшимча равишда, маълумотларни бошқача тартибда сақланиш эхтиёжи келиб чиқди.

Реляцион базалар хал қила олмаяпти

Реляцион (SQL) базалар инсониятни қониқтирмай қолганилигини сабаби нимада? Хозирги вақтда биз маълумотлар сақланиш технологияларини 4 хил йўналишда ривожланаятганлигини кўришимиз мумкин. Биринчи йўналиш - сақланувчи маълумотларни хажмини ортиши. Бугунги кунга келиб маълумотлар хажми тасаввур қилиш қийин даражада катталашиб кетди. Фақатгина 2009, 2010 йилларда  базаларда сақланган маълумотлар ундан аввал бутун инсоният тарихидаги сақланган маълумотлардан хам ортиб кетди. Иккинчи йўналиш - маълумотларни бир бири билан боғлиқлиги. Маълумотни хар бир бўлагини бошқа жойларда сақланувчи бошқа маълумотлар билан қандай бўлса хам боғлиқлиги бор. Интернетдаги саҳифаларни бошқа саҳифаларга ҳаволалари бўлади. Теглар хар хил манбалардаги белгиланган маълумотларни бирлаштиради. Учинчи йўналиш - заиф туилган маълумотларни ишлатилиши. Бунга оддий мисол: дўкондаги молни тарифланиши. Агарда аввал эркаклар кўйлагини тарифлашга 5-6 та устун (ўлчами, ранги, матоси, расми) етган бўлса , хозирда бундай тарифлар сони бир қанча 10 лаб устунлардан ташкил топган бўлиши мумкин. Бунда хар хил кўйлаклар учун хар хил "параметрлар" ишлатилади. Бундай холатларда молнинг хоссалари хақидаги маълумот сақланадиган жадвал тузилишини аввалдан аниқлаш жуда қийин бўлади. Тўртинчи йўналиш - архитектура. Ўтган асрнинг 80чи йилларида ягона катта компьютер (mainframe) ва ягона маълумотлар базаси одатий архитектура хисобланар эди. 90чи йилларда, клиент-сервер архитектураси ривож топди. Янги асрда эса, хар бири ўз backend-ига (кўпол қилиб айтганда ўз маълумотлар базасига) эга бўлган web-хизматлар ва бошқа тақсимланган ечимлар фаол равишда ишлатилмоқда. Бундай шароитларда эса реляцион маълумотлар базаларининг унумдорлиги кескин равишда пасайиб кетиши аниқланди. Кўпгина веб сайтлар учун унумдорлик хозирча етарли бўлса хам, социал тармоқлар ёки излаш хизматлари учун SQL маълумотлар базаларидан фойдаланиш асоссиз эканлиги аниқланди. Классик реляцион маълумотлар базалари жуда катта хажмдаги маълумотлар билан юқори "нагрузка" тартибида ишлашда бир қанча муаммоларга дуч келади. Шунинг учун, эртами кечми тақсимланган ечимга ўтиш эхтиёжи келиб чиқади. Шундай экан, якка маълумотлар базасини тақсимланган тизимда "изоляция"лаштиришга эришишни умуман иложиси бўлмайди. CAP теоремасига биноан тақсимланган ечимнинг хар қандай кўринишида 3та хоссадан фақатгина 2тасига эришиш мумкин: маълумотларни мувофиқлиги (consistency) - тизимнинг хар бир тугунида вақтни бир бўлагида маълумотлар бир бири билан ҳамоханг бўлиши. Етишувчанглик (availability) - тақсимланган тизимга берилган хар қандай сўров тўғри жавоб билан якунланади. тақсимланишга турғун (partition tolerance) - тақсимланган тизимни бир қанча "изоляцияланган" бўлимларга бўлиниши хар бир бўлимдан келувчи жавобни нотўғри бўлишига олиб келмайди. NoSQL концепцияси шулардан иккитасини яъни, юқори даражадаги "availability" ва маълумотларни тақсимланишини таъминлайди. Бу ёндашув ўзига муносиб бўлган холатлар учун махсус ечим хисобланади.

NoSQL базаларининг тоифалари
NoSQL базаларининг 4та тоифаси мавжуд.
Биринчи тоифа - бу Key-Value (Калит-Қиймат) турдаги базалар. Булар ўзининг тузилиши жихатидан жуда оддий базалар. Аслини олганда булар жуда катта хэш-жадваллардир. Унда хар бир калитга алохида қиймат белгиланган бўлади. Бундай базалар жуда катта миқдордаги маълумотлар билан анча тез ишлаши мумкин, аммо уларни сўровлар тилида камчилиги мавжуд. Key-value базаларга мисол тарзида Dynomite, Voldemort, Tokyo ва Redis ларни келтириш мумкин.
Иккинчи тоифа - BigTable клонлари. BigTable - бу Google тарафидан ўз эҳтиёлари учун ишлаб чиқарилган маълумотлар базаси хисобланади. Бу база жуда катта уч ўлчамли база хисобланади: устунлар, қаторлар ва вақт белгилари. Бундай архитектура улкан унумдорликга етишишни имконини беради, ундан ташқари у бир қанча компьютерларга жойлаштирилиши мумкин. Аммо бу реляцион база эмас, ва унда реляцион базанинг хусусиятлари йўқ. BigTable да join-лар, қийин сўровлар йўқ. Google корхонаси BigTable ни тарқатмайди, шунинг учун хам бозорда бу базани клонлари пайдо бўлди. Булар: Hadoop, Hypertable ва Cassandra.
Учинчи тоифа - бу хужжат (документ) ларга мўлжалланган маълумотлар базалари. Бундай базалари бир-оз Key-Value базаларига ўхшаб кетади, аммо бу холатда, маълумотлар базаси унинг қийматлари нималиги хақида хабардор бўлади. Одатда, қиймат сифатида бирон бир хужжат ёки тузилишига сўров бериш мумкин бўлган объект бўлади. Бундай базаларга мисол қилиб: CouchDB ва MongoDB ларни келтириш мумкин.
Тўртинчи тоифа - графларга асосланган маълумотлар базалари. Бундай базалар объектлар орасидаги хар хил қийин боғлиқликларни таъминлашга қаратилган бўлади ҳамда уларни асосида графлар теорияси ётади. Бундай базалар бир бирлари билан ҳаволалар орқали боғланган, тугунлар тўплами хисобланади. Бунда тугунлар ва ҳаволалар бир қанча хусусият (атрибут)ларга эга бўлиши мумкин. Мисол тарзида: Neo4j, AllegroGraph, Sones graphDB ларни келтириш мумкин.
Булардан ташқари яна бешинчи тоифа хам мавжуд, аммо у одатда NoSQL хисобланмайди. Гап объектларга асосланган базалар хақида кетаяпти. Бундай базалар энг аввало OOP дастурлаш "парадигма"сини таъминлаш учун мўлжалланган. Уларни OOP дастурлаш тилларидан фойдаланилганда ишлатиш жуда осон.

NoSQL маълумотлар базасидан маълумот қандай олинади?
NoSQL базасидаги маълумотлар билан ишлашни бир қанча "механизм"лари мавжуд.
1. RESTful интерфейслар. Қисқача қилиб айтганда, бу интернейс интернетнинг асосий протоколи бўлмиш - HTTP га ўхшаб кетади. Бу протоколда, ишлаш мумкин хар бир объект ўзинининг қайтаримас манзилига эга бўлади. Ушбу манзилга мурожаат қилиб, биз шу объект хақидаги маъумотни олишимиз, тузишмиз, ўзгартиришимиз ва ўчиришимиз мумкин. Бунда серверда хеч қандай холат сақланмайди, яъни хар бир сўров бошқа сўровлардан мустақил равишда ишлайди.
2. SQL дан фарқ қилувчи сўров тиллари

  • GQL - Google BigTable нинг SQL-га ўхшаш тили
  • SPARQL - Семантик Вебнинг сўровлар тили
  • Gremlin - графлар бўйича ўтиш тили
  • Sones Graph Query Language - Sones Graph сўровлар тили

3. Сўровлар API лари.

  • Google BigTable DataStore API
  • Neo4j Traversal API

Нима учун базалар RESTful API ни ишлатишади? Чунки гиперҳаволалар бошқа серверларда сақланувчи маълумотларни олишга осонлик билан эришиш имконини беради. RESTful эса бундай холатда энг муносиб ечим хисобланади.

Маълумотлар бошқаруви қандай амалга оширилади?
Бу саволга хам жавоб, RESTful API ёрдамида маълумотларни олиш, ўзгартириш, тузиш ва ўчириш мумкин. Яна бир ёндашувда эса маълумотлар бошқаруви учун махсус API ишлатилиши кўзда тутилади. Масалан, Google BigTable да, DataStore API, Neo4j да эса - graphDatabase API ишлатилади. Бундан ташқари, NoSQL базаларида маълумотларни JSON (javascript object notation) ёки Trift форматларига сериализация қилиниши хам мумкин.

NoSQL корпоратив тизимлар учун
NoSQL нинг энг асосий афзаллиги бу унумдорлик хисобланади. Барча NoSQL базалар ўз йўналиши бўйича реляцион базалардан афзал хисобланади. Агарда яқин ўтмишда хар қандай холатлар учун хам фақатгина релцион базалари кўзда тутилган бўлса, бугунга келиб аҳвол ўзгарди. Хар бир конкрет холат учун, ўзига яраша маълумотлар сақланишини танлаш лозим. Баъзи холатларда бир вақтни ўзида бир қанча базалар бўлиши кераклиги эҳтиёжи келиб чиқади. Масалан, web-дастурларда MongoDB маъумотлар сақланиши учун асосий база бўлиб хизмат қилса, Redis ёрдамида фойдаланувчининг сўровларини кешлаш амалга оширилади. Натижада биз жуда юқори унумдорликга ва дастурчилар учун хам қулай бўлган интерфейсларга эга бўлган тизимга эришамиз. NoSQL базаларининг яна бир афзаллиги шундаки, уларинг жуда кўп турлари Open Source лойиҳалар хисобланади. Бу эса, дастурлаш тарафидан жуда қулай.

Монополиянинг тугаши
Хозирги вақтга келиб маълумотларни сақлашда реляцион базаларнинг сўзсиз пешқадамлигига якун етди. Бугунда дастурчи бошқача ёндашувлардан хам хабардор бўлиши керак ва у ишлаятган вазифага энг мос келувчи ечимни  тўғри танлашни хам билиши керак. Албатта, хар қандай ечим учун хам фақатгина NoSQL дан фойдаланиш керак деган фикр мутлақо нотўғри. Кичик ва ўрта тизимлар учун реляцион маълумотлар базаси NoSQL ечимдан кўра афзалроқ бўлиши мумкин. Аммо катта маълумотлар ва тақсимланган серверлар ишлатилган холатда NoSQL реляцион маълумотлар базаларига қараганда анча афзалликларни эга. NoSQL маъулмотлар базаси дунёси жуда қизиқ, бу ерда кўпгина оригинал ва инновацион ечимларни топиш мумкин. Агарда сиз хали ундай базалар билан ишламаган бўлсангиз, сизга уларга эътибор қаратишни маслахат бераман.

Мақолани ёзишда ушбу мақоладан фойдаланилди.

Manba: virtualdars.uz

Фарход Дадажонов таржимаси

Share