Что такое noSQL? 10.06.2021 (14:40)

https://webhost1.ru/upload/email/2021/%20NoSQL-1.PNG

noSQL Database — базы данных, которые не основаны на SQL, не являются реляционными и не имеют схем. Даже исходя из своего названия noSQL противопоставляются стандартным SQL.

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

ACID — набор требований к транзакционной системе для более надежной работы. Он обеспечивает сохранность данных.
Транзакция — последовательность операций с базами данных, которая интерпретируется как единый запрос.

ACID, типы noSQL, BASE

Требования ACID:

  • Атомарность — либо каждая транзакция будет выполнена успешно полностью, либо нет.
  • Согласованность — в результате выполнения транзакции данные должны быть допустимыми с точки зрения бизнес-логики.
  • Изолированность — во время выполнения транзакции параллельные транзакции не должны оказывать влияния на результат других транзакций.
  • Надежность — при успешно выполненной транзакции, сделанные изменения не должны быть отменены из-за сбоя системы.

В некотором роде noSQL пожертвовала своей согласованностью и надежностью для обеспечения высокой доступности в кластере (область хранения баз данных на диске). Сейчас сущестауют различные ACID-совместимые noSQL СУБД, например, MarkLogic, OrientDB, Neo4j. MongoDB за последние три года представила полные возможности ACID, RavenDB представляет их более 10 лет. Сейчас они разработали такие возможности не только на сервере, но и на уровне распределенного кластера.

Типы нереляционных баз данных:

Ключ-значение

Простейшее хранилище данных. В таких БД как правило используется хэш-таблица, в которой находится уникальный ключ и указатель на конкретный объект данных.

https://webhost1.ru/upload/email/2021/noSQLimage1.png

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

Столбцовые (колоночные)

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

https://webhost1.ru/upload/email/2021/noSQLimage2.png

Документо-ориентированные

Данные хранятся парами ключ-значение и сжимаются в виде полуструктурированного документа из тэгированных элементов.

https://webhost1.ru/upload/email/2021/noSQLimage3.png

Графовые

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

https://webhost1.ru/upload/email/2021/noSQLimage4.png

Хранилища типа «ключ-значение» и «документо-ориентированность» соблюдают принципы BASE.

Основные принципы BASE:

  • Базовая доступность - доступность данных даже при наличии множества сбоев.
  • Мягкое состояние - почти полный отказ от требований согласованности модели ACID. Согласованность данных является проблемой разработчика и не должна обрабатываться базой данных.
  • Возможная последовательность -

Безопасность

Многие ошибочно думают, что noSQL очень безопасны. Конечно, если нет SQL, то нет и SQL-инъекций. Но ведь одними SQL-инъекциях все не заканчивается. У noSQL есть еще свои уязвимости.

Можно использовать регулярные запросы, выполнять скрипты на сервере, получать доступ к данным через специальный интерфейс, если имеется язык запросов, изменять запросы, манипулировать с REST-интерфейсом и подделывать межсайтовые запросы.

REST API — прикладной программный интерфейс , который для получения, размещения, извлечения и удаления данных использует HTTP-запросы.

Как выбрать систему хранения

Из популярных noSQL СУБД можно выделить MongoDB, Redis.

Реляционные SQL-базы стоит выбирать для структурированных данных, когда важна их целостность, также в проекте нужна основанная на стандартах технология с расчетом на большое количество дополнений.

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

Мы используем файлы cookie. Продолжая использовать сайт, вы соглашаетесь с политикой использования cookie файлов. Принять