Реляционные и нереляционные БД
![](https://slavlotski.com/pictures/relyacionnye-i-neryalyacionnye-bd.png)
Реляционные БД
SQL подход — это семейство реляционных баз данных, основанное на отношениях (связях) таблиц друг с другом. Каждая таблица представлена в виде столбцов и строк. Столбец имеет свой предопределенный тип данных, в каждой ячейке значение. Строка хранит набор связанных значений, относящихся к объекту. Для определения уникальности строки существуют уникальный идентификатор (primary key). Строки из нескольких таблиц могут быть связаны посредством внешних ключей (foreign key).
Отличительные черты реляционной модели:
— подходит для решения большинства существующих задач
— запись и чтение структурированных данных
— данные связаны в виде логических отношений таблиц
— в таблицах есть строки и столбцы, где каждый атрибут имеет свой тип данных, а в ячейке свое значение
— есть уникальный ключ (primary key) для определения уникальности записи
— есть внешний ключ (foreign key) для отношения (связи) строк одной таблицы с строками другой таблицы
— необходима фиксированная схема (schema), где описана структура таблицы (наименование полей, тип полей и т. п.) наложенные на таблицу ограничения (constraints, checks, excludes)
— благодаря поддержки ACID свойств обеспечивается целостное хранение и согласованность данных, высокая отказоустойчивость и надежность
— поддержка языка SQL для манипуляций с данными
Недостатки реляционных БД:
— сложно горизонтально масштабироваться
— невозможно хранить данные с заранее неизвестной структурой
— менее эффективны в обработке больших объемов данных (террабайты, петабайты), чем нереляционные БД
Популярными представителями реляционных СУБД являются: Oracle, MySQL, MSSQL, Postgres
Нереляционные БД (NotOnlySQL)
NoSQL подход — это семейство нереляционных баз данных, реализующее отличный от традиционной табличной модели представления данных, где управление данными осуществляется не только с помощью языка структурированных запросов SQL.
Отличительные черты нереляционной модели:
— используются для решения узкоспециализированных задач
— запись и чтение неструктурированных данных
— гибкость, отсутствует фиксированное описание схемы из-за хранения данных без строгой структуры в виде документов, ключ-значений, графов и т. д.
— взамен ACID принципов используются BASE принципы, которые основаны на CAP теореме
— возможность горизонтального масштабирования путем добавления нового сервера в кластер
— поддержка шардирования
— высокая доступность и отказоустойчивость благодаря репликации данных
— обработка больших объемов неструктированных данных с низкой временной задержкой
— поддержка собственных SQL-подобных языков запросов, RESTful-интерфейсов, API и сложных типов данных
Недостатки нереляционных БД:
— отсутствие сильной целостности данных приводит к случаям чтения неактуальной информации, реплика не всегда может успеть обновиться актуальными данными
— сильная привязка к специфике внутреннего языка запросов конкретной СУБД, когда в реляционной БД есть SQL, который универсален для всех реляционных баз. Это приводит к сложности перехода от одной нереляционной БД к другой
Виды NoSQL БД:
Ключ-значение (key-value)
![](https://slavlotski.com/pictures/relyacionnye-i-neryalyacionnye-bd-1.png)
В БД данного типа записи хранятся в парах ключ-значение, где ключ — уникальный идентификатор. Key-value БД используются для систем, где очень важна скорость и данные представлены не в сложном виде. Такие БД хорошо подходят например, для хранения кэша данных, пользовательских сессий, корзин в интернет магазине.
Популярными представителями являются: Redis (Remote Dictionary Server), DynamoDB, Memcached
Колоночные (column family store)
![](https://slavlotski.com/pictures/relyacionnye-i-neryalyacionnye-bd-2.png)
![](https://slavlotski.com/pictures/relyacionnye-i-neryalyacionnye-bd-3.png)
В колоночных БД данные каждой колонки хранятся отдельно независимо друг от друга (для каждого столбца создается свой файл). Такой принцип позволяет считывать с диска только данные тех столбцов что указаны в запросе — это ускоряет процесс чтения данных из больших таблиц, предназначенных для аналитических целей. Также преимуществом такого хранения является возможность сильно сжимать данные, что значительно экономит место на диске. Недостатком является выполнение операций над строками, у такого типа БД они более затратные.
Популярными представителями являются: Cassandra, Apache Hbase, ClickHouse
Документоориентированные (document-oriented store)
![](https://slavlotski.com/pictures/relyacionnye-i-neryalyacionnye-bd-5.png)
Данные в этом типе БД хранятся в виде документов в формате JSON, YAML, XML. Документы складываются в коллекции, а коллекции группируются логически тем самым создается иерархия. Преимуществом такой БД является гибкость, значения и структура документов может меняться в процессе разработки. Такие БД часто применяются для каталогов товаров в маркетплейсах, в соцсетях, платформ с блогами и видео, геоаналитики.
Популярными представителями являются: MongoDB, Amazon DynamoDB, CouchDB
Бонус
Классное и креативное объяснение NoSQL простым языком: