Ինչպես բացատրել ձեր տատիկին SQL-ի և NoSQL-ի տարբերությունը

Ինչպես բացատրել ձեր տատիկին SQL-ի և NoSQL-ի տարբերությունը

Մշակողի կողմից կայացված ամենակարևոր որոշումներից մեկն այն է, թե որ տվյալների բազան օգտագործել: Երկար տարիներ տարբերակները սահմանափակված էին տարբեր հարաբերական տվյալների բազայի տարբերակներով, որոնք աջակցում էին Structured Query Language (SQL): Դրանք ներառում են MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 և շատ ավելին:

Վերջին 15 տարիների ընթացքում բազմաթիվ նոր տվյալների բազաներ են մուտք գործել շուկա՝ առանց SQL մոտեցման: Դրանք ներառում են առանցքային արժեքով խանութներ, ինչպիսիք են Redis-ը և Amazon DynamoDB-ն, լայն սյունակային տվյալների բազաները, ինչպիսիք են Cassandra-ն և HBase-ը, փաստաթղթերի խանութները, ինչպիսիք են MongoDB-ն և Couchbase-ը, և գրաֆիկական տվյալների բազաները և որոնման համակարգերը, ինչպիսիք են Elasticsearch-ը և Solr-ը:

Այս հոդվածում մենք կփորձենք հասկանալ SQL-ն և NoSQL-ը՝ առանց դրանց ֆունկցիոնալության մեջ մտնելու:
Բացի այդ, մենք մի քիչ զվարճանալու ենք ճանապարհին:

Բացատրելով SQL-ը տատիկին

Տատիկ, պատկերացրու, որ ես քո միակ թոռը չեմ։ Փոխարենը մայրիկն ու հայրիկը նապաստակների պես սիրում էին իրար, 100 երեխա ունեցան, հետո 50-ին էլ որդեգրեցին։

Այսպիսով, դուք սիրում եք մեզ բոլորիս և չեք ցանկանում մոռանալ մեր անուններից որևէ մեկը, ծննդյան օրը, պաղպաղակի սիրելի համը, հագուստի չափսերը, հոբբիները, ամուսինների անունները, սերունդների անունները և այլ գերկարևոր փաստեր: Այնուամենայնիվ, եկեք ընդունենք այն: Դուք 85 տարեկան եք, և հին լավ հիշողությունը պարզապես չի կարող դիմանալ դրան:

Բարեբախտաբար, լինելով ձեր թոռներից ամենախելացիը՝ կարող եմ օգնել։ Այսպիսով, ես գալիս եմ ձեր տուն, ես հանում եմ մի քանի թերթ թուղթ և խնդրում եմ, որ մի քանի թխվածքաբլիթ թխեք, նախքան սկսելը:

Թղթի մեկ թերթիկի վրա մենք ցուցակ ենք կազմում, որը կոչվում է «Թոռներ«. Ամեն թոռնիկ արձանագրված նրա մասին որոշ նշանակալից տեղեկություններով, այդ թվում՝ եզակի համարով, որն այժմ ցույց կտա, թե ինչպես թոռնիկ նա է. Բացի այդ, հանուն կազմակերպման, մենք ցուցակի վերևում գրում ենք անվանված ատրիբուտները, որպեսզի մենք միշտ իմանանք, թե ինչ տեղեկատվություն է պարունակում ցուցակը:

id
անուն
ծննդյան օր
վերջին այցելությունը
հագուստի չափը
սիրելի պաղպաղակ
ընդունվել

1
Jimmy
09-22-1992
09-01-2019
L
անանուխ շոկոլադ
սուտ

2
Jessica
07-21-1992
02-22-2018
M
Ժայռոտ ճանապարհ
ճիշտ

…շարունակում ենք ցուցակը:

Թոռների ցուցակ

Որոշ ժամանակ անց դուք ամեն ինչ հասկանում եք, և մենք գրեթե ավարտեցինք ցուցակը: Այնուամենայնիվ, դուք դիմում եք ինձ և ասում. «Մենք մոռացել ենք տարածք ավելացնել ամուսինների, հոբբիների, թոռների համար»: Բայց ոչ, մենք չենք մոռացել: Սա հետևում է հետագա և պահանջում է նոր թղթի թերթիկ:

Այսպիսով, ես քաշում եմ մեկ այլ թերթիկ և դրա վրա մենք անվանում ենք ցուցակը Ամուսինները. Մենք կրկին ավելացնում ենք մեզ համար կարևոր ատրիբուտները ցուցակի վերևում և սկսում ենք տողերով ավելացնել:

id
թոռ_id
անուն
ծննդյան օր

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…ավելի շատ ամուսիններ:

Ամուսինների ցուցակ

Այս փուլում ես տատիկիս բացատրում եմ, որ եթե նա ուզում է իմանալ, թե ով ում հետ է ամուսնացած, ապա պետք է միայն համապատասխանի id ցանկում թոռներ с թոռ_id ամուսինների ցուցակում.

Մի քանի տասնյակ թխվածքաբլիթից հետո ես պետք է քնեմ: «Կարո՞ղ ես շարունակել, տատիկ»։ Ես գնում եմ քնելու։

Մի քանի ժամից վերադառնում եմ։ Դուք հիանալի եք, տատիկ: Ամեն ինչ հիանալի է թվում, բացի ցուցակից հոբբի. Ցանկում կա մոտ 1000 հոբբի։ Նրանցից շատերը կրկնվող են. Ինչ է պատահել?

թոռ_id
սիրած զբաղմունք

1
հեծանիվ

4
հեծանիվ

3
հեծանիվ

7
վազում

11
հեծանիվ

…շարունակում ենք!

Կներեք, ես բոլորովին մոռացել էի ասել. Օգտագործելով մեկ ցուցակ, դուք կարող եք միայն հետևել հոբբի. Այնուհետև մեկ այլ ցուցակում մենք պետք է հետևենք թոռներովքեր են դա անում հոբբի. Մենք կոչելու ենք այն «Ընդհանուր ցուցակ». Տեսնելով, որ դա քեզ դուր չի գալիս, ես անհանգստանում եմ և վերադառնում ցուցակի ռեժիմին։

id
սիրած զբաղմունք

1
հեծանիվ

2
վազում

3
լողում

… ավելի շատ հոբբիներ:

Հոբբիների ցանկ

Երբ մենք ունենք մեր հոբբիների ցանկը, մենք ստեղծում ենք մեր երկրորդ ցուցակը և այն անվանում ենք «Թոռների հոբբիները.

թոռ_id
հոբբի_իդ

4
1

3
1

7
2

… ավելին!

Թոռների հոբբիների ընդհանուր ցանկը

Այս ամբողջ աշխատանքից հետո տատիկն այժմ ունի հիանալի հիշողության համակարգ՝ հետևելու իր ողջ զարմանալի մեծ ընտանիքին: Եվ հետո, ինձ ավելի երկար պահելու համար, նա տալիս է կախարդական հարցը. «Որտե՞ղ ես սովորել անել այս ամենը»:

Հարաբերական տվյալների բազաներ

Հարաբերական տվյալների բազան պաշտոնապես նկարագրված աղյուսակների մի շարք է (մեր օրինակում դրանք թերթիկներ են), որտեղից կարող եք մուտք գործել տրված կամ հավաքել դրանք տարբեր ձևերով՝ առանց աղյուսակները վերակազմավորելու տվյալների բազաներ. Հարաբերական տվյալների բազաների շատ տարբեր տեսակներ կան, բայց, ցավոք, թղթի վրա ցուցակը դրանցից չէ:

Ամենահայտնի հարաբերական տվյալների շտեմարանների հատկանիշը SQL (Structured Query Language) հարցման լեզուն է: Նրա շնորհիվ, եթե տատիկը փոխանցի իր հիշողության համակարգը համակարգչին, նա կարող է արագ ստանալ այնպիսի հարցերի պատասխաններ, ինչպիսիք են. «Ո՞վ չի այցելել ինձ անցյալ տարի, ամուսնացած է և հոբբի չունի»:

SQL տվյալների բազայի կառավարման ամենահայտնի համակարգերից մեկը բաց կոդով MySQL-ն է: Այն իրականացվում է հիմնականում որպես հարաբերական տվյալների բազայի կառավարման համակարգ (RDBMS) վեբ վրա հիմնված ծրագրային հավելվածների համար:

MySQL-ի որոշ հիմնական առանձնահատկություններ.

  • Այն բավականին հայտնի է, լայնորեն օգտագործվում և լայնորեն փորձարկված:
  • Կան բազմաթիվ հմուտ ծրագրավորողներ, ովքեր ունեն SQL և հարաբերական տվյալների բազաների փորձ:
  • Տվյալները պահվում են տարբեր աղյուսակներում, ինչը հեշտացնում է հարաբերությունների հաստատումը հիմնական և օտար բանալիների (իդենտիֆիկատորների) միջոցով:
  • Այն հեշտ է օգտագործել և արդյունավետ՝ դարձնելով այն իդեալական մեծ և փոքր բիզնեսի համար:
  • Աղբյուրի կոդը գտնվում է GNU Ընդհանուր հանրային լիցենզիայի պայմանների համաձայն:

Հիմա մոռացիր Բոլորը.

NoSQL-ի բացատրություն տատիկին

Տատիկ, մենք հսկայական ընտանիք ունենք: Նա ունի 150 թոռ։ Նրանցից շատերն ամուսնացած են, երեխաներ ունեն, ինչ-որ բանի սիրահար են և այլն։ Ձեր տարիքում անհնար է հիշել ամեն ինչ մեր բոլորի մասին: Ձեզ անհրաժեշտ է հիշողության համակարգ:

Բարեբախտաբար, Ի ոչ ցանկանալով, որ դուք մոռանաք իմ ծննդյան տարեդարձը և պաղպաղակի սիրելի համը, ես կարող եմ օգնել: Ուստի ես վազում եմ մոտակա խանութ, վերցնում եմ նոթատետր և վերադառնում քո տուն։

Առաջին քայլը, որ անում եմ, տետրիս շապիկին մեծ թավ տառերով գրելն է «Թոռնիկները»։ Հետո թերթում եմ առաջին էջը և սկսում գրել այն ամենը, ինչ պետք է հիշես իմ մասին: Մի քանի րոպե անց էջն այսպիսի տեսք ունի.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я«Թվում է, թե ամեն ինչ պատրաստ է»:
Մեծ տատը«Սպասիր, իսկ մնացած թոռները»:
Я«Այո, ճիշտ է. Հետո յուրաքանչյուրին մեկական էջ հատկացրեք»։
Մեծ տատը«Արդյո՞ք ես պետք է գրեմ նույն տեղեկատվությունը բոլորի համար, ինչպես ես գրել եմ ձեզ համար»:
Я«Ոչ, միայն եթե ուզում ես։ Թույլ տվեք ցույց տալ»:
Բռնելով տատիկիս գրիչը՝ թերթում եմ էջը և արագորեն նշում եմ իմ ամենաչսիրած զարմիկի մասին տեղեկությունը:

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Ամեն անգամ, երբ տատիկը պետք է ինչ-որ բան հիշի իր թոռներից մեկի մասին, նա միայն պետք է անցնի իր թոռների նոթատետրի ճիշտ էջը: Նրանց մասին բոլոր տեղեկությունները կպահվեն հենց այնտեղ՝ իրենց էջում, որը նա կարող է արագ փոխել և թարմացնել:

Երբ ամեն ինչ արվում է, նա տալիս է կախարդական հարցը. «Որտե՞ղ ես սովորել անել այս ամենը»:

NoSQL տվյալների բազաներ

Կան բազմաթիվ NoSQL տվյալների բազաներ («ոչ միայն SQL»): Մեր օրինակներում մենք ցույց ենք տվել փաստաթղթերի բազա. NoSQL տվյալների բազաները մոդելավորում են տվյալները այնպիսի եղանակներով, որոնք բացառում են հարաբերական տվյալների բազաներում օգտագործվող աղյուսակի հարաբերությունները: Այս տվյալների շտեմարանները հայտնի դարձան 2000-ականների սկզբին այն ընկերությունների հետ, որոնք կարիք ուներ ամպի վրա հիմնված տվյալների կլաստերավորման՝ իրենց հստակ մասշտաբային պահանջների պատճառով (ինչպես Facebook-ը): Նման հավելվածներում տվյալների հետևողականությունը շատ ավելի քիչ կարևոր էր, քան կատարողականը և մասշտաբայնությունը:

Սկզբում NoSQL տվյալների բազաները հաճախ օգտագործվում էին նիշային տվյալների կառավարման առաջադրանքների համար: Հիմնականում, երբ խոսքը վերաբերում էր վեբ և ամպային հավելվածներին, NoSQL տվյալների բազաները մշակում և բաշխում էին զգալի քանակությամբ տվյալներ: NoSQL ինժեներներին դուր է եկել նաև տվյալների ճկուն սխեման (կամ դրա բացակայությունը), այնպես որ արագ փոփոխություններ հնարավոր են եղել թարմացված հավելվածներում:

NoSQL-ի հիմնական առանձնահատկությունները.

  • Տվյալները պահելու շատ ճկուն միջոց
  • Հորիզոնական մասշտաբում դեպի կլաստերներ
  • Հնարավոր հաջորդականություն ըստ համառության/տարածման
  • Փաստաթղթեր, որոնք նույնականացվում են եզակի բանալիների միջոցով

Մանրամասն համեմատություն

MySQL-ը պահանջում է սահմանված և կառուցվածքային սխեմա:
NoSQL-ը թույլ է տալիս ցանկացած տվյալ պահել «փաստաթղթում»:

MySQL-ն ունի հսկայական համայնք:
NoSQL-ն ունի փոքր և արագ աճող համայնք:

NoSQL-ը հեշտ է մասշտաբային:
MySQL-ն ավելի շատ կառավարելիության կարիք ունի:

MySQL-ն օգտագործում է SQL, որն օգտագործվում է տվյալների բազաների բազմաթիվ տեսակներում:
NoSQL-ը տվյալների բազայի վրա հիմնված դիզայն է՝ հանրաճանաչ իրականացումներով:

MySQL-ն օգտագործում է հարցման ստանդարտ լեզու (SQL):
NoSQL-ը չի օգտագործում հարցման ստանդարտ լեզու:

MySQL-ն ունի բազմաթիվ հիանալի հաշվետվական գործիքներ:
NoSQL-ն ունի մի քանի հաշվետվական գործիքներ, որոնք դժվար է ստանդարտացնել:

MySQL-ը կարող է ցույց տալ աշխատանքի հետ կապված խնդիրներ մեծ տվյալների համար:
NoSQL-ն ապահովում է գերազանց կատարում մեծ տվյալների վրա:

Մտքեր 8 բազա

Ընկերությունը 8 բազաորտեղ ես աշխատում եմ, մենք յուրաքանչյուր նախագծի համար տրամադրում ենք աշխատանքային տարածք Aurora MySQL հարաբերական տվյալների բազայով, որը տեղակայված է AWS-ում: Թեև NoSQL-ը տրամաբանական ընտրություն է, երբ ձեր հավելվածը պահանջում է բարձր կատարողականություն և մասշտաբայնություն, մենք կարծում ենք, որ DBMS-ի կողմից տրամադրվող տվյալների ուժեղ հետևողականությունը կարևոր է SaaS հավելվածներ և այլ բիզնես ծրագրաշարեր ստեղծելիս:

Սկսնակների և ծրագրավորողների համար, որոնք կառուցում են բիզնես հավելվածներ, որոնք պահանջում են հաշվետվություններ, գործարքների ամբողջականություն և լավ սահմանված տվյալների մոդելներ, հարաբերական տվյալների բազաներում ներդրումներ կատարելը, մեր կարծիքով, ճիշտ ընտրություն է:

Իմացեք ավելին Aurora-ի, Serverless-ի և GraphQL-ի հետ զարգանալու մասին 8base.com կայքում այստեղ.

Source: www.habr.com

Добавить комментарий