Нереляционные

Нереляционная база данных — это база данных, в которой в отличие от большинства традиционных систем баз данных не используется табличная схема строк и столбцов. В этих базах данных применяется модель хранения, оптимизированная под конкретные требования типа хранимых данных. Например, данные могут храниться как простые пары "ключ — значение", документы JSON или граф, состоящий из ребер и вершин.

Особенности NoSQL

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

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

  • Использование альтернатив SQL. В нереляционных базах данных не применяется классический SQL, а используются различные SQL-диалекты.

  • Агрегация данных. В то время как реляционные БД сохраняют данные в виде таблиц, в нереляционных они представляют собой целостные объекты.

  • Распределенность. В нереляционных базах данных реализована горизонтальная масштабируемость. Она достигается за счет соединения быстрым подключением нескольких независимых друг от друга серверов, каждый из которых обрабатывает только часть данных, а не весь массив. Соответственно, нет необходимости наращивать мощность каждого сервера (тем более что есть физический предел) — достаточно просто добавить в систему новый.

Виды NoSQL-баз данных

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

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

  • Документо-ориентированные. В базах данных этого типа данные записываются в специальный документ в формате JSON или близком к нему. Таким БД свойственны одновременно иерархичность и гибкость. Чаще всего они применяются в системах управления контентом, каталогах, специализированных поисковых системах (например, в электронных архивах).

  • Графовые. Такие БД сохраняют информацию в виде сложно связанных друг с другом графов. Связанность данных упрощает их хранение, навигацию и поиск. Типичными примерами использования графовых БД являются социальные сети, системы выявления мошенничества.

Преимущества NoSQL

  • Горизонтальная масштабируемость — для увеличения производительности достаточно добавить новый сервер в систему, а не наращивать мощности уже имеющихся.

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

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

  • Гибкость — нереляционные БД могут работать с неструктурированными данными и различными моделями представления информации.

Недостатки NoSQL

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

  • Недостаточная надежность транзакций — из-за того, что NoSQL-БД заточены под высокую производительность и масштабируемость, в них страдает согласованность данных (ACID), критически важная для таких сфер, как денежные переводы.

Примеры нереляционных СУБД

  1. MongoDB. Данная система хранения информации основана на формате документа. Она применяет документ вида JSON для того, чтобы сохранять информацию. С ее помощью можно легко и быстро масштабировать информацию и поддержать гибкую модель информации.

  2. Cassandra. Данная система хранения информации основана на колонках. Ее используют для обработки огромного количества информации. С ее помощью можно получить высокую доступность, она отлично масштабируется, к тому же поддерживает гибкую модель информации.

  3. Redis. Данная система хранения информации основана на ключ-значениях. Ее используют для кэша информации и убыстрения получения доступа к ним. Ее применяют и для хранения данных иного типа вроде наборов и списков.

  4. Neo4j. Данная система хранения информации основана на графах. Ее используют для оценки связей между информацией. С ее помощью можно получить высокие показатели эффективности и создать гибкую модель информации, из-за чего она становится прекрасной для обработки данных, которые связаны между собой.

  5. Amazon DynamoDB. Фактически это услуга по регуляции баз данных от компании Amazon. Она применяет модель ключ-значение для того, чтобы хранить информацию. С ее помощью можно получить высокий уровень доступа и легко масштабировать данные, к тому же гарантируется низкая задержка в случае доступа к информации.

Источники:

Подробнее:

Last updated