JavaRush /Курсы /SQL & Hibernate /Особенности NoSQL баз данных

Особенности NoSQL баз данных

SQL & Hibernate
19 уровень , 2 лекция
Открыта

3.1. Слабые ACID свойства

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

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

Это называется eventual consistency и с ним работают крупные компании, включая Facebook и Amazon. Они говорят, что максимальный интервал, в течение которого пользователи могут видеть неконсистентные данные составляет не более секунды. Пример такой ситуации показан на рисунке:

В такой ситуации стоит задаться вопросом: что делать с теми системами, которые требуют высокой атомарности-консистентности операций и в то же время нуждаются в быстрых распределенных кластерах (например, финансовых или интернет-магазинов)? Практика показывает, что подобные требования уже давно устарели.

Например, разработчик финансовой банковской системы сказал: «Если бы мы действительно ждали завершения каждой транзакции в сети банкоматов, клиенты убегали бы в ярости. Что происходит, если вы и ваш партнер одновременно снимаете деньги и превышаете лимит? Вы оба получите свои деньги, а мы поправим это позже».

На картинке показано бронирование гостиниц. Онлайн-магазины, которые используют eventual consistency, должны предусмотреть меры для решения случаев конфликта (автоматическое решение, откат операции или обновление данных). В реальности гостиницы всегда держат «запас» свободных номеров для непредвиденных ситуаций, чтобы решать проблемы.

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

3.2. Распределенные системы, без совместно используемых ресурсов (share nothing)

Опять же, это не относится к графам баз данных, у которых по определению нельзя разделить структуру на удаленные ноды.

Почему все больше людей используют NoSQL базы? Ответ прост: в мире все больше информации, которую необходимо обрабатывать за разумное время. Но производительность процессоров и скорость чтения с диска растут небыстро. И наконец, стоимость мощного сервера всегда больше цены нескольких простых серверов. Обычные реляционные базы не могут решить эту проблему.

Чтобы улучшить хранилище (емкость, время отклика, пропускную способность), нужно просто добавить новый сервер в кластер. Это называется горизонтальное масштабирование, когда несколько независимых серверов соединены быстрой сетью. Каждый сервер обрабатывает только часть данных и запросов. NoSQL база автоматически позаботится о таких процедурах, как шардинг, репликация, обеспечение отказоустойчивости и перераспределение данных при добавлении нод.

Ниже приведены основные характеристики распределенных NoSQL баз данных:

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

master-slave:

peer-to-peer:

Первый тип масштабируется хорошо для чтения (можно сделать с любого узла), но не для записи (только в мастер узел). Также есть проблемы с доступностью (в случае падения мастера узел автоматически или вручную заменяется одним из остальных узлов). Во втором типе репликации все узлы равны и могут обрабатывать запросы как на чтение, так и на запись.

Шардинг — разделение данных по узлам:

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

3.3. NoSQL базы в-основном оупенсорсные и созданы в 21 столетии

Садаладж и Фаулер не классифицировали объектные базы данных как NoSQL, так как они были созданы еще в 1990-х и не приобрели большую популярность. Однако, на сайте NoSQL Database они включены в общий список.

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

3.4. Обзор mongoDB

MongoDB — это кроссплатформенная и распределенная база данных на основе документов (document-oriented) с открытым исходным кодом, предназначенная для упрощения разработки и масштабирования приложений.

База данных MongoDB создана для хранения огромных объемов данных и при этом работать быстро. В ней нет таблиц, строк и столбцов, как в других базах данных SQL (RDBMS). Данные хранятся в коллекциях как документы на основе JSON, называемом BSON.

Ссылки:

3.5. Redis

Redis (Remote Dictionary Server) — это open source сервер баз данных типа ключ-значение. Эго часто называют сервером структур данных. Это означает, что Redis обеспечивает доступ к изменяемым структурам данных через набор команд, которые отправляются с использованием модели сервер-клиент с TCP-сокетами и простым протоколом. Таким образом, разные процессы могут запрашивать и изменять одни и те же структуры данных общим способом.

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Олег Уровень 106 Expert
26 октября 2024
Внезапно стало понятно и логично.