модели баз данных. sql nosql и д.р.(теория)

Thank you for reading this post, don't forget to subscribe!

Систе­мы управ­ле­ния база­ми дан­ных (СУБД) – это про­грамм­ное обес­пе­че­ние, обо­ру­до­ван­ное интер­фей­сом API, кото­рое отве­ча­ет за выпол­не­ние все выше­пе­ре­чис­лен­ных задач. Суще­ству­ет мно­же­ство моде­лей СУБД (напри­мер, реля­ци­он­ные СУБД, систе­мы NoSQL и т.п.), каж­дая из кото­рых пред­на­зна­че­на для реше­ния опре­де­лён­ных про­блем. Для реа­ли­за­ции этих моде­лей раз­ра­бо­та­но боль­шое коли­че­ство при­ло­же­ний (MySQL, PostgreSQL, MongoDB, Redis и т.д.).

Системы управления базами данных

Систе­ма управ­ле­ния база­ми дан­ных – это широ­кий тер­мин, охва­ты­ва­ю­щий мно­же­ство абсо­лют­но не похо­жих друг на дру­га инстру­мен­тов (напри­мер, про­грам­мы и встро­ен­ные биб­лио­те­ки). Такие при­ло­же­ния обра­ба­ты­ва­ют или помо­га­ют обра­ба­ты­вать и систе­ма­ти­зи­ро­вать дан­ные. Посколь­ку сама инфор­ма­ция быва­ет раз­ных форм и объ­е­мов, на сего­дняш­ний день раз­ра­бо­та­но огром­ное мно­же­ство СУБД и при­ло­же­ний, удо­вле­тво­ря­ю­щих раз­лич­ные потреб­но­сти ком­пью­те­ри­за­ции и программирования.

СУБД осно­вы­ва­ют­ся на раз­лич­ных моде­лях баз дан­ных (то есть, струк­ту­рах, кото­рые опре­де­ля­ют, как нуж­но обра­ба­ты­вать дан­ные). Каж­дая модель пред­став­ля­ет уни­каль­ный метод обра­бот­ки, хра­не­ния и извле­че­ния данных.

Несмот­ря на широ­кий выбор СУБД, попу­ляр­ным ста­но­вит­ся отно­си­тель­но неболь­шое коли­че­ство средств их реа­ли­за­ции. На сего­дняш­ний день наи­бо­лее рас­про­стра­нён­ны­ми явля­ют­ся реля­ци­он­ные СУБД.

Модели баз данных

Каж­дая СУБД для систе­ма­ти­за­ции дан­ных при­ме­ня­ет уни­каль­ную модель. Имен­но модель опре­де­ля­ет мето­ды рабо­ты при­ло­же­ния и обра­бот­ки информации.

Суще­ству­ет несколь­ко типов моде­лей баз дан­ных, каж­дый из кото­рых предо­став­ля­ет соб­ствен­ный набор мето­дов струк­ту­ри­ро­ва­ния дан­ных. Как гово­ри­лось ранее, сего­дня самой попу­ляр­ной моде­лью явля­ет­ся реляционная.

Реля­ци­он­ные БД очень про­из­во­ди­тель­ны и гиб­ки, одна­ко у них есть ряд недостатков.

Сего­дня рас­тёт попу­ляр­ность моде­ли NoSQL, кото­рая предо­став­ля­ет ряд функ­ций, отсут­ству­ю­щих в реля­ци­он­ной моде­ли. Такие БД пред­ла­га­ют намно­го более сво­бод­ный, гиб­кий и про­стой спо­соб рабо­ты с инфор­ма­ци­ей. Конеч­но, базы NoSQL так­же име­ют ряд недо­стат­ков и проблем.

Реляционная модель

Пред­став­лен­ная в 70-х годах реля­ци­он­ная модель пред­ла­га­ет очень удоб­ный и адап­ти­ру­е­мый метод рабо­ты с дан­ны­ми. Она рас­ши­ря­ет струк­ту­ру пред­ше­ству­ю­щих ей моде­лей, вво­дя поня­тие отно­ше­ний. Отно­ше­ния поз­во­ля­ют груп­пи­ро­вать дан­ные и созда­вать кол­лек­ции дан­ных – таб­ли­цы, кото­рые хра­нят инфор­ма­цию в струк­ту­ри­ро­ван­ном виде (напри­мер, имя и адрес посе­ти­те­ля) и свя­зы­ва­ют все вход­ные дан­ные путём при­сво­е­ния зна­че­ний атри­бу­тов (напри­мер, иден­ти­фи­ка­ци­он­ный номер посетителя).

Бла­го­да­ря посто­ян­ным иссле­до­ва­ни­ям и усо­вер­шен­ство­ва­ни­ям реля­ци­он­ные БД очень про­из­во­ди­тель­ны и надёж­ны. Сего­дня их исполь­зу­ют для под­держ­ки при­ло­же­ний, чьи дан­ные не долж­ны быть утра­че­ны ни при каких обстоятельствах.

Подход NoSQL

Под­ход NoSQL избав­ля­ет­ся от этих огра­ни­че­ний, вслед­ствие чего появ­ля­ют­ся новые сред­ства хра­не­ния, запро­са и исполь­зо­ва­ния информации.

Базы дан­ных NoSQL осно­ва­ны на неструк­ту­ри­ро­ван­ном под­хо­де и сни­ма­ют огра­ни­че­ния, уста­нов­лен­ные стро­ги­ми отно­ше­ни­я­ми дан­ных в реля­ци­он­ных БД. Таким обра­зом, NoSQL предо­став­ля­ет воз­мож­ность выби­рать новые мето­ды рабо­ты с дан­ны­ми в зави­си­мо­сти от тре­бо­ва­ний приложения.

Популярные системы управления базами данных

Рас­смот­рим несколь­ко наи­бо­лее попу­ляр­ных и рас­про­стра­нён­ных баз дан­ных. Как види­те, сего­дня пред­по­чте­ние отда­ют либо реля­ци­он­ной моде­ли, либо отно­си­тель­но ново­му под­хо­ду NoSQL.

Реляционные СУБД

Реля­ци­он­ные систе­мы управ­ле­ния база­ми дан­ных – надёж­ный, про­дук­тив­ный и без­опас­ный спо­соб хра­не­ния данных.

Такие СУБД исполь­зу­ют чёт­ко уста­нов­лен­ные схе­мы для при­ё­ма дан­ных. Этот задан­ный поль­зо­ва­те­лем фор­мат опре­де­ля­ет, как имен­но нуж­но полу­чать и исполь­зо­вать дан­ные. По сути, схе­мы похо­жи на таб­ли­цы, где столб­цы опре­де­ля­ют поряд­ко­вый номер и тип запи­си, а стро­ки пред­став­ля­ют сами записи.

Попу­ляр­ные реля­ци­он­ные СУБД:

  • SQLite: встро­ен­ная про­дук­тив­ная СУБД.
  • MySQL: самая попу­ляр­ная на сего­дняш­ний день СУБД.
  • PostgreSQL: самая про­дви­ну­тая SQL-сов­ме­сти­мая откры­тая объ­ект­но-реля­ци­он­ная система.

Системы NoSQL (NewSQL)

По срав­не­нию с реля­ци­он­ны­ми БД, базы дан­ных NoSQL не предо­став­ля­ют моде­ли как тако­вой. Суще­ству­ет мно­же­ство реа­ли­за­ций NoSQL, каж­дая из кото­рых пред­на­зна­че­на для реше­ния опре­де­лён­ных проблем.

В отли­чие от тра­ди­ци­он­ных реля­ци­он­ных баз дан­ных, NoSQL поз­во­ля­ет груп­пи­ро­вать кол­лек­ции дан­ных с база­ми дан­ных (напри­мер, MongoDB). Такие хра­ни­ли­ща  доку­мен­тов хра­нят все дан­ные вме­сте как одну кол­лек­цию (или доку­мент). Эти доку­мен­ты мож­но пред­ста­вить как еди­ный объ­ект дан­ных, похо­жий на JSON.

Базы NoSQL не име­ют еди­но­го спо­со­ба запро­са дан­ных. Каж­дая реа­ли­за­ция NoSQL предо­став­ля­ет соб­ствен­ную систе­му запросов.

Сравнение систем SQL и NoSQL

Что­бы под­ве­сти ито­ги, про­ана­ли­зи­ру­ем раз­ли­чия баз дан­ных SQL и NoSQL.

  • Струк­ту­ра и типы дан­ных: SQL/реляционные БД исполь­зу­ют для хра­не­ния дан­ных струк­ту­ру с задан­ны­ми атри­бу­та­ми. Базам NoSQL такая струк­ту­ра не нужна.
  • Запро­сы: вне зави­си­мо­сти от лицен­зии, все реля­ци­он­ные базы дан­ных реа­ли­зу­ют стан­дарт SQL (Structured Query Language). Каж­дая база дан­ных NoSQL предо­став­ля­ет уни­каль­ный спо­соб рабо­ты с данными.
  • Мас­шта­би­ро­ва­ние: и базы SQL, и NoSQL про­сты в вер­ти­каль­ном мас­шта­би­ро­ва­нии. Одна­ко более совре­мен­ные и про­стые при­ло­же­ния NoSQL, как пра­ви­ло, пред­ла­га­ют более про­стое гори­зон­таль­ное масштабирование.
  • Надёж­ность: что каса­ет­ся без­опас­но­сти тран­зак­ций, базы SQL пока что лучше.
  • Под­держ­ка: реля­ци­он­ные  базы дан­ных име­ют мно­го­лет­нюю исто­рию. Они очень попу­ляр­ны. Суще­ству­ет мно­же­ство плат­ных и бес­плат­ных вер­сий реля­ци­он­ных БД. Сбои и ошиб­ки реля­ци­он­ных баз  дан­ных про­ще устра­нить. Это­го нель­зя ска­зать о базах NoSQL: чем слож­нее база дан­ных, тем слож­нее вос­ста­но­вить её работу.