Учебное пособие по NoSQL: Типы баз данных NoSQL и примеры.

⚡ Умное резюме

NoSQL — это нереляционная система управления базами данных, которая не требует фиксированной схемы, избегает объединений таблиц и легко масштабируется. В этом материале объясняется, что такое NoSQL, зачем она существует, её история, особенности, четыре типа баз данных, теорема CAP, конечная согласованность, а также её преимущества и недостатки.

  • 📦 Определение: Нереляционное хранилище данных без схем, созданное для огромных распределенных наборов данных.
  • 📈 Почему: Масштабирование на множество хостов позволяет обрабатывать большие объемы данных быстрее, чем масштабирование вверх.
  • 🇧🇷 Четыре типа: Ключ-значение, столбцовая, графовая и документоориентированная архитектура.
  • Теорема CAP: Распределенное хранилище может гарантировать только два из следующих параметров: согласованность, доступность и устойчивость к разделению.
  • 🔁 БАЗА: В принципе, доступно, находится в программном состоянии, в конечном итоге обеспечивается согласованность между репликами.

Учебное пособие по NoSQL

Что такое NoSQL?

База данных NoSQL NoSQL — это нереляционная система управления данными, не требующая фиксированной схемы. Она позволяет избежать объединений таблиц и легко масштабируется. Основное назначение NoSQL-баз данных — это распределенные хранилища данных с огромными потребностями в хранении информации. NoSQL используется для обработки больших данных и веб-приложений, работающих в режиме реального времени. Например, такие компании, как Twitter, Facebook и другие. Google Ежедневно собирают терабайты пользовательских данных.

База данных NoSQL Аббревиатура NoSQL расшифровывается как «Not Only SQL» или «Not SQL». Хотя более подходящим термином было бы «NoREL», NoSQL прижился. Карл Строцци представил концепцию NoSQL в 1998 году.

Традиционные СУБД используют синтаксис SQL для хранения и извлечения данных с целью получения дополнительной информации. В отличие от них, системы баз данных NoSQL охватывают широкий спектр технологий, позволяющих хранить структурированные, полуструктурированные, неструктурированные и полиморфные данные. Давайте разберемся в NoSQL на примере диаграммы в этом руководстве по базам данных NoSQL:

База данных NoSQL

Почему NoSQL?

Концепция баз данных NoSQL стала популярной среди таких интернет-гигантов, как... Google, Facebook, Amazonи т. д., которые имеют дело с огромными объемами данных. Время отклика системы становится медленнее, когда вы используете СУБД для больших объемов данных.

Чтобы решить эту проблему, мы могли бы «масштабировать» наши системы, обновив существующее оборудование. Этот процесс дорогой.

Альтернативным решением этой проблемы является распределение нагрузки на базу данных между несколькими хостами по мере увеличения нагрузки. Этот метод известен как «масштабирование».

NoSQL

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

Краткая история баз данных NoSQL

  • 1998 год – Карло Строцци использует термин NoSQL для обозначения своей легковесной реляционной базы данных с открытым исходным кодом.
  • 2000 – Графовая база данных NeoВыпущена модель 4j.
  • 2004 - Google Запущен сервис BigTable.
  • 2005 - CouchDB запускается.
  • 2007 – Научная работа по теме Amazon Выпущена игра Dynamo.
  • 2008 – Facebook открывает исходный код Cassandra проект.
  • 2009 год – термин NoSQL был вновь введен в обиход.

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

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

  • Базы данных NoSQL никогда не соответствуют реляционная модель.
  • Никогда не используйте таблицы с плоскими записями в виде фиксированных столбцов.
  • Работа с автономными агрегатами или BLOB-объектами.
  • Объектно-реляционная карта не требуется.ping и нормализация данных.
  • Отсутствуют сложные функции, такие как языки запросов, планировщики запросов, объединения с обеспечением ссылочной целостности или ACID.

без схемы

  • Базы данных NoSQL бывают либо бессхемными, либо имеют упрощенные схемы.
  • Не требуется никакого определения схемы данных.
  • Предлагайте гетерогенные структуры данных в рамках одной и той же предметной области.
Особенности NoSQL
NoSQL не содержит схем

Простой API

  • Предлагает простые в использовании интерфейсы для хранения и запроса данных.
  • API-интерфейсы позволяют использовать методы низкоуровневой обработки и выбора данных.
  • Текстовые протоколы, в основном используемые с HTTP REST с JSON.
  • В основном не использовался какой-либо стандартный язык запросов NoSQL.
  • Веб-ориентированные базы данных, работающие как сервисы, доступные через Интернет.

Распределенный

  • Несколько баз данных NoSQL могут работать в распределенном режиме.
  • Предлагает возможности автоматического масштабирования и резервирования.
  • Зачастую концепцию ACID можно принести в жертву ради масштабируемости и пропускной способности.
  • В основном отсутствует синхронная репликация между распределенными узлами; используется асинхронная многомастерная репликация, одноранговая репликация, репликация HDFS.
  • Обеспечивает лишь конечную стабильность.
  • Архитектура без разделения ресурсов. Это позволяет сократить координацию и увеличить распределение ресурсов.
Особенности NoSQL

NoSQL — это ничего общего.

Типы баз данных NoSQL

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

Типы баз данных NoSQL:

  • На основе пары ключ-значение
  • Столбцово-ориентированный граф
  • На основе графиков
  • Документально-ориентированный

Типы баз данных NoSQL

На основе пары ключей и значений

Данные хранятся в парах ключ/значение. Такая структура предназначена для обработки больших объемов данных и высокой нагрузки. В базах данных, использующих хранение пар ключ/значение, данные хранятся в виде хеш-таблицы, где каждый ключ уникален, а значение может быть в формате JSON, BLOB (Binary Large Objects), строке и т. д.

Например, пара «ключ-значение» может содержать ключ, такой как «Веб-сайт», связанный со значением, например, «Guru99 ".

На основе пары ключей и значений

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

Redis, Dynamo и Riak — это несколько примеров NoSQL-баз данных с хранилищем типа «ключ-значение». Все они основаны на... Amazonгазета «Динамо».

На основе столбца

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

Столбцовая база данных NoSQL

База данных NoSQL на основе столбцов

Они обеспечивают высокую производительность при выполнении агрегационных запросов, таких как SUM, COUNT и т.д. AVG, MIN и т. д., поскольку данные легко доступны в столбце. Столбцовые NoSQL-базы данных широко используются для управления хранилищами данных. бизнес-аналитика, CRM и библиотечные карточные каталоги.

HBase, Cassandra, и Hypertable — это примеры NoSQL-запросов к базам данных, основанным на столбцах.

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

Документоориентированные NoSQL-базы данных хранят и извлекают данные в виде пар «ключ-значение», но значение хранится в виде документа. Документ хранится в форматах JSON или XML. Значение понимается базой данных и может быть запрошено.

Реляционный против. Документ

Реляционный против. Документ

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

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

Amazon ПростаяБД, CouchDB, MongoDBRiak и Lotus Notes — популярные программы, ориентированные на работу с документами. системы СУБД.

на основе графов

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

на основе графов

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

Neo4J, бесконечный граф, OrientDBFlockDB и другие подобные базы данных являются популярными графовыми базами данных.

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

Наиболее распространенный механизм получения данных — это REST-запрос, в котором значение извлекается по ключу/идентификатору с помощью GET-запроса.

Базы данных, хранящие документы, позволяют выполнять более сложные запросы, поскольку они понимают значения в парах «ключ-значение». Например, CouchDB позволяет определять представления с помощью MapReduce.

Что такое теорема CAP?

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

  1. Согласованность
  2. Доступность
  3. Допуск раздела

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

Доступность: База данных всегда должна быть доступна и оперативно реагировать. У него не должно быть простоев.

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

Конечная согласованность

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

Репликация данных может происходить не мгновенно, поскольку некоторые копии обновляются немедленно, а другие — со временем. Эти копии могут быть взаимонесогласованными, но со временем они становятся согласованными. Отсюда и название «постепенная согласованность».

БАЗА: Bасистично Aмодели шириной, Sчасто состояние, Eвентальная консистенция

  • В соответствии с теоремой CAP, база данных доступна практически всегда.
  • «Мягкое состояние» означает, что даже без входных данных состояние системы может изменяться.
  • «Конечная согласованность» означает, что система со временем станет согласованной.

Конечная согласованность

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

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

Недостатки NoSQL

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

Часто задаваемые вопросы (FAQ)

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

Да. Несколько баз данных NoSQL, например... MongoDB Elasticsearch теперь поддерживает векторные поля и поиск по сходству. Это позволяет приложениям искусственного интеллекта хранить векторные представления рядом с документами для семантического поиска и функций рекомендаций.

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

Избегайте NoSQL, если вам необходимы надежные ACID-транзакции, сложные объединения или строгая целостность данных, например, в банковской сфере. Зрелые реляционные базы данных лучше справляются с обеспечением согласованности нескольких записей и стандартизированными запросами в таких случаях.

Подведем итог этой публикации следующим образом: