Әжеңе SQL мен NoSQL арасындағы айырмашылықты қалай түсіндіруге болады

Әжеңе SQL мен NoSQL арасындағы айырмашылықты қалай түсіндіруге болады

Әзірлеуші ​​қабылдайтын ең маңызды шешімдердің бірі - қай дерекқорды пайдалану керектігі. Көптеген жылдар бойы опциялар құрылымдық сұрау тілін (SQL) қолдайтын әртүрлі реляциялық дерекқор опцияларымен шектелді. Оларға MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 және т.б.

Соңғы 15 жылда нарыққа No-SQL тәсілі бойынша көптеген жаңа деректер базалары шықты. Оларға Redis және Amazon DynamoDB сияқты кілттік мәндер дүкендері, Cassandra және HBase сияқты кең бағандық дерекқорлар, MongoDB және Couchbase сияқты құжаттар қоймалары, Elasticsearch және Solr сияқты графикалық дерекқорлар мен іздеу жүйелері кіреді.

Бұл мақалада біз SQL және NoSQL-ті олардың функционалдығын қарастырмай-ақ түсінуге тырысамыз.
Оған қоса, біз жолда біраз көңіл көтереміз.

Әжеге SQL тілін түсіндіру

Әже, елестетіңізші, мен сенің жалғыз немерең емеспін. Оның орнына ана мен әке бір-бірін қоян сияқты жақсы көрді, олардың 100 баласы болды, содан кейін олар тағы 50 баланы асырап алды.

Сонымен, сіз бәрімізді жақсы көресіз және біздің есімдерімізді, туған күндерімізді, балмұздақтардың сүйікті дәмін, киім өлшемдерін, хоббилерді, жұбайлардың есімдерін, ұрпақтардың есімдерін және басқа да маңызды фактілерді ұмытқыңыз келмейді. Дегенмен, мойындайық. Сіз 85 жастасыз және ескі жадыңыз оны көтере алмайды.

Бақытымызға орай, немерелеріңіздің ең ақылдысы болғандықтан мен көмектесе аламын. Ендеше мен сіздің үйіңізге келдім, мен парақтарды шығарамын және сізден печенье пісіруіңізді сұраймын.

Бір парақта біз тізім жасаймыз «Немерелері«. Әр немересі ол туралы маңызды ақпаратпен, соның ішінде қазір қалай көрсететінін көрсететін бірегей нөмірмен жазылған немересі ол. Сондай-ақ, ұйымдастыру мақсатында біз тізімде қандай ақпарат бар екенін білу үшін аталған атрибуттарды тізімнің жоғарғы жағына жазамыз.

id
ат
Туған күн
соңғы сапар
киім өлшемі
сүйікті балмұздақ
қабылданды

1
Джимми
09-22-1992
09-01-2019
L
жалбыз шоколады
жалған

2
Джессика
07-21-1992
02-22-2018
M
Жартасты жол
шынайы

... біз тізімді жалғастырамыз!

Немерелер тізімі

Біраз уақыттан кейін сіз бәрін түсінесіз және біз тізімді аяқтадық! Дегенмен, сіз маған бұрылып: «Біз ерлі-зайыптыларға, хоббиге, немерелерге орын қосуды ұмытып кеттік!» дейсіз. Бірақ жоқ, біз ұмытқан жоқпыз! Бұл әрі қарай жүреді және жаңа қағаз парағын қажет етеді.

Сондықтан мен басқа парақ қағазды шығарамын және оған біз тізімді атаймыз Жұбайы. Біз үшін маңызды атрибуттарды қайтадан тізімнің басына қосамыз және жолдарға қоса бастаймыз.

id
немересі
ат
Туған күн

1
2
Джон
06-01-1988

2
9
Fernanda
03-05-1985

...көп жұбайлар!

Ерлі-зайыптылардың тізімі

Бұл кезеңде мен әжеме кімнің кімге үйленетінін білгісі келсе, оған тек сәйкестік қажет екенін түсіндіремін. id тізімде немерелері с немересі ерлі-зайыптылардың тізімінде.

Бірнеше ондаған печеньеден кейін мен ұйықтауым керек. — Жалғастырасыз ба, әже? Мен ұйықтауға кетемін.

Мен бірнеше сағаттан кейін қайтамын. Сіз кереметсіз, әже! Тізімнен басқаның бәрі керемет көрінеді хобби. Тізімде 1000-ға жуық хобби бар. Олардың көпшілігі қайталанады; не болды?

немересі
Хобби

1
велосипед

4
велосипед

3
велосипед

7
іске қосылған

11
велосипед

… жалғастырамыз!

Кешіріңіз, мен айтуды мүлдем ұмытып кетіппін! Бір тізімді пайдаланып, сіз тек бақылауға болады хобби. Содан кейін басқа тізімде біз қадағалауымыз керек немерелерімұны кім істеп жатыр хобби. Біз оны шақырамыз «Жалпы тізім». Сізге ұнамайтынын көріп, мен уайымдап, тізім режиміне қайта ораламын.

id
Хобби

1
велосипед

2
іске қосылған

3
жүзу

... көбірек хобби!

Хобби тізімі

Бізде хобби тізімі болғаннан кейін біз екінші тізімімізді жасаймыз және оны атаймыз «Немерелердің хоббиі«.

немересі
hobby_id

4
1

3
1

7
2

…Көбірек!

Немерелер хоббиінің жалпы тізімі

Осы жұмыстардың барлығынан кейін әжеде өзінің бүкіл таңғажайып үлкен отбасын қадағалайтын керемет жад жүйесі бар. Сосын – мені ұзағырақ ұстау үшін – ол сиқырлы сұрақ қояды: «Сен мұның бәрін істеуді қайдан үйрендің?»

Реляциялық мәліметтер қоры

Реляциялық деректер базасы – ресми сипатталған кестелер жиыны (біздің мысалда бұл парақтар), олардан қол жеткізуге болады. деректер немесе кестелерді қайта реттемей-ақ оларды әртүрлі тәсілдермен жинаңыз деректер базасы. Реляциялық деректер қорының көптеген түрлері бар, бірақ өкінішке орай қағаз парағындағы тізім олардың бірі емес.

Ең танымал реляциялық деректер қорының белгісі - SQL (Structured Query Language) сұрау тілі. Оның арқасында әже жад жүйесін компьютерге көшірсе, ол: «Былтыр маған кім келмеді, үйленген және хоббиі жоқ?» деген сұрақтарға тез жауап ала алады.

Ең танымал SQL деректер қорын басқару жүйелерінің бірі ашық бастапқы MySQL болып табылады. Ол ең алдымен веб-бағдарламалық қосымшалар үшін реляциялық дерекқорды басқару жүйесі (RDBMS) ретінде жүзеге асырылады.

MySQL-тің кейбір негізгі мүмкіндіктері:

  • Ол өте жақсы белгілі, кеңінен қолданылады және кеңінен сыналған.
  • SQL және реляциялық дерекқорлармен тәжірибесі бар көптеген білікті әзірлеушілер бар.
  • Деректер әртүрлі кестелерде сақталады, бұл бастапқы және сыртқы кілттердің (идентификаторлардың) көмегімен байланыс орнатуды жеңілдетеді.
  • Оны пайдалану оңай және тиімді, бұл оны үлкен және шағын бизнес үшін өте қолайлы етеді.
  • Бастапқы код GNU General Public License шарттарына сәйкес.

Енді ұмыт БАРЛЫҚ.

Әжеге 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базамен жұмыс істейтін жерде біз AWS жүйесінде орналасқан Aurora MySQL реляциялық дерекқоры бар әр жоба үшін жұмыс кеңістігін қамтамасыз етеміз. Қолданбаңыз жоғары өнімділік пен ауқымдылықты талап ететін кезде NoSQL қисынды таңдау болғанымен, біз SaaS қолданбаларын және басқа іскери бағдарламалық құралды құру кезінде ДҚБЖ қамтамасыз ететін күшті деректер сәйкестігі маңызды деп есептейміз.

Есеп беруді, транзакциялық тұтастықты және нақты анықталған деректер үлгілерін талап ететін бизнес-қосымшаларды құрастыратын стартаптар мен әзірлеушілер үшін реляциялық деректер базасына инвестициялау, біздің ойымызша, дұрыс таңдау болып табылады.

8base.com сайтында Aurora, Serverless және GraphQL көмегімен даму туралы қосымша ақпарат алыңыз осында.

Ақпарат көзі: www.habr.com

пікір қалдыру