Учебное пособие по NoSQL: что такое, типы баз данных NoSQL и примеры
Что такое NoSQL?
NoSQL База данных — это нереляционная система управления данными, не требующая фиксированной схемы. Он позволяет избежать объединений и легко масштабируется. Основная цель использования базы данных NoSQL — создание распределенных хранилищ данных с огромными потребностями в хранении данных. NoSQL используется для больших данных и веб-приложений реального времени. Например, такие компании, как Twitter, Facebook и Google, каждый день собирают терабайты пользовательских данных.
База данных NoSQL означает «Не только SQL» или «Не SQL». Хотя лучшим термином было бы «NoREL», NoSQL прижился. Карл Строцц представил концепцию NoSQL в 1998 году.
Традиционная СУБД использует синтаксис SQL для хранения и извлечения данных для дальнейшего анализа. Вместо этого система баз данных NoSQL включает в себя широкий спектр технологий баз данных, которые могут хранить структурированные, полуструктурированные, неструктурированные и полиморфные данные. Давайте разберемся с NoSQL с помощью диаграммы в этом руководстве по базе данных NoSQL:
Почему NoSQL?
Концепция баз данных NoSQL стала популярной среди интернет-гигантов, таких как Google, Facebook, Amazonи т. д., которые имеют дело с огромными объемами данных. Время отклика системы становится медленнее, когда вы используете СУБД для больших объемов данных.
Чтобы решить эту проблему, мы могли бы «масштабировать» наши системы, обновив существующее оборудование. Этот процесс дорогой.
Альтернативой этой проблеме является распределение нагрузки базы данных на несколько хостов при каждом увеличении нагрузки. Этот метод известен как «масштабирование».
База данных NoSQL не является реляционной, поэтому она лучше масштабируется, чем реляционные базы данных, поскольку они разработаны с учетом веб-приложений.
Краткая история баз данных NoSQL
- 1998 — Карло Строцци использует термин NoSQL для своей облегченной реляционной базы данных с открытым исходным кодом.
- 2000- Графовая база данных Neo4j запущен
- 2004 – запуск Google BigTable.
- 2005- CouchDB запущен
- 2007- Исследовательская работа по Amazon «Динамо» выходит на свободу.
- 2008 – Facebook открывает исходники Cassandra Проект
- 2009 – вновь введен термин NoSQL.
Особенности NoSQL
Нереляционный
- Базы данных NoSQL никогда не соответствуют реляционная модель
- Никогда не предоставляйте таблицы с плоскими записями с фиксированными столбцами.
- Работа с автономными агрегатами или BLOB-объектами.
- Не требует объектно-реляционного сопоставления и нормализации данных.
- Никаких сложных функций, таких как языки запросов, планировщики запросов, соединения ссылочной целостности, ACID.
без схемы
- Базы данных NoSQL либо не содержат схем, либо имеют упрощенные схемы.
- Не требуют какого-либо определения схемы данных.
- Предлагает гетерогенные структуры данных в одном домене.
Простой API
- Предлагает простые в использовании интерфейсы для хранения и запроса предоставленных данных.
- API позволяют использовать низкоуровневые методы манипулирования данными и их выбора.
- Текстовые протоколы, которые чаще всего используются с HTTP REST с JSON.
- В основном не используется стандартный язык запросов NoSQL.
- Базы данных с поддержкой Интернета, работающие как службы с выходом в Интернет.
Распределенный
- Несколько баз данных NoSQL могут выполняться распределенно.
- Предлагает возможности автоматического масштабирования и аварийного переключения.
- Часто концепцией ACID можно пожертвовать ради масштабируемости и пропускной способности.
- Синхронная репликация между распределенными узлами практически отсутствует. Асинхронная репликация с несколькими главными узлами, одноранговая репликация, репликация HDFS.
- Только обеспечение окончательной согласованности
- Ничего общего Archiтектура. Это обеспечивает меньшую координацию и более высокое распределение.
Типы баз данных NoSQL
Базы данных NoSQL в основном делятся на четыре типа: пары ключ-значение, столбцы, графы и документы. Каждая категория имеет свои уникальные атрибуты и ограничения. Ни одна из выше указанных баз данных лучше не решит все проблемы. Пользователи должны выбирать базу данных в зависимости от своих потребностей в продукте.
Типы баз данных NoSQL:
- На основе пары ключ-значение
- Столбцово-ориентированный граф
- На основе графиков
- Документально-ориентированный
На основе пары ключей и значений
Данные хранятся в парах ключ/значение. Он спроектирован таким образом, чтобы обрабатывать большое количество данных и большую нагрузку.
Базы данных хранения пар «ключ-значение» хранят данные в виде хеш-таблицы, где каждый ключ уникален, а значение может быть JSON, BLOB (большие двоичные объекты), строкой и т. д.
Например, пара ключ-значение может содержать ключ типа «Веб-сайт», связанный со значением типа «Guru99».
Это один из самых простых примеров базы данных NoSQL. Этот тип базы данных NoSQL используется в качестве коллекции, словарей, ассоциативных массивов и т. д. Хранилища значений ключей помогают разработчику хранить данные без схемы. Они лучше всего подходят для содержимого корзины покупок.
Redis, Dynamo, Riak — вот некоторые примеры NoSQL баз данных для хранения значений «ключ-значение». Все они основаны на Amazonгазета «Динамо».
На основе столбца
Базы данных, ориентированные на столбцы, работают со столбцами и основаны на документе BigTable от Google. Каждый столбец рассматривается отдельно. Значения баз данных с одним столбцом хранятся последовательно.
Они обеспечивают высокую производительность при выполнении запросов агрегирования, таких как SUM, COUNT, AVG, MIN и т. д., поскольку данные легко доступны в столбце.
Базы данных NoSQL на основе столбцов широко используются для управления хранилищами данных. бизнес-аналитика, CRM, читательские карточные каталоги,
HBase, Cassandra, HBase, Hypertable — примеры запросов NoSQL к базе данных на основе столбцов.
Документ-ориентированный
Документоориентированная база данных NoSQL хранит и извлекает данные в виде пары ключ-значение, но часть значения сохраняется как документ. Документ хранится в форматах JSON или XML. Значение понимается БД и может быть запрошено.
На этой диаграмме слева вы можете видеть, что у нас есть строки и столбцы, а справа у нас есть база данных документов, структура которой аналогична JSON. Теперь что касается реляционной базы данных, вам нужно знать, какие у вас есть столбцы и так далее. Однако для базы данных документов у вас есть хранилище данных, такое как объект JSON. Вам не нужно определять, что делает его гибким.
Тип документа в основном используется для систем CMS, блог-платформ, аналитики в реальном времени и приложений электронной коммерции. Его не следует использовать для сложных транзакций, требующих множественных операций или запросов к различным агрегированным структурам.
Amazon ПростаяБД, CouchDB, MongoDB, Риак, Lotus Notes, MongoDB, популярны Создан документ системы СУБД.
на основе графов
База данных типа графа хранит объекты, а также отношения между этими объектами. Объект сохраняется как узел с отношениями в виде ребер. Ребро дает связь между узлами. Каждый узел и ребро имеют уникальный идентификатор.
По сравнению с реляционной базой данных, где таблицы слабо связаны, база данных Graph по своей природе является многореляционной. Обход связей происходит быстро, поскольку они уже занесены в БД, и нет необходимости их вычислять.
База данных графовой базы в основном используется для социальных сетей, логистики, пространственных данных.
Neo4J, бесконечный граф, OrientDB, FlockDB — некоторые популярные базы данных на основе графов.
Инструменты механизма запросов для NoSQL
Наиболее распространенным механизмом получения данных является получение значения на основе REST на основе его ключа/идентификатора с помощью ресурса GET.
База данных хранилища документов предлагает более сложные запросы, поскольку они понимают значение в паре ключ-значение. Например, CouchDB позволяет определять представления с помощью MapReduce
Что такое теорема CAP?
Теорему CAP также называют теоремой Брюера. В нем говорится, что распределенное хранилище данных не может предложить более двух гарантий из трех.
- Согласованность
- Доступность
- Допуск раздела
Консистенция:
Данные должны оставаться согласованными даже после выполнения операции. Это означает, что после записи данных любой будущий запрос на чтение должен содержать эти данные. Например, после обновления статуса заказа все клиенты должны видеть одни и те же данные.
Доступность:
База данных всегда должна быть доступна и оперативно реагировать. У него не должно быть простоев.
Допуск перегородки:
Толерантность к разделам означает, что система должна продолжать функционировать, даже если связь между серверами нестабильна. Например, серверы могут быть разделены на несколько групп, которые могут не взаимодействовать друг с другом. Здесь, если часть базы данных недоступна, другие части всегда остаются незатронутыми.
Конечная согласованность
Термин «возможная согласованность» означает наличие копий данных на нескольких машинах для обеспечения высокой доступности и масштабируемости. Таким образом, изменения, внесенные в любой элемент данных на одной машине, должны распространяться на другие реплики.
Репликация данных не может быть мгновенной, так как некоторые копии будут обновлены немедленно, а другие — со временем. Эти копии могут быть взаимно, но со временем они становятся согласованными. Отсюда и название «конечная согласованность».
БАЗА: Bасистично Aмодели шириной, Sчасто состояние, Eвентальная консистенция
- По сути, доступность означает, что БД доступна постоянно в соответствии с теоремой CAP.
- Мягкое состояние означает даже отсутствие ввода; состояние системы может измениться
- Окончательная согласованность означает, что система со временем станет согласованной.
Преимущества NoSQL
- Может использоваться в качестве основного или аналитического источника данных.
- Возможности больших данных
- Нет единой точки отказа
- Простая репликация
- Нет необходимости в отдельном слое кэширования
- Он обеспечивает высокую производительность и горизонтальную масштабируемость.
- Может обрабатывать структурированные, полуструктурированные и неструктурированные данные с одинаковым эффектом.
- Объектно-ориентированное программирование, простое в использовании и гибкое.
- Базам данных NoSQL не нужен выделенный высокопроизводительный сервер.
- Поддержка ключевых языков и платформ разработчиков
- Просто реализовать, чем использовать СУБД.
- Он может служить основным источником данных для онлайн-приложений.
- Обрабатывает большие данные, которые управляют скоростью, разнообразием, объемом и сложностью данных.
- Превосходно справляется с распределенными базами данных и операциями с несколькими центрами обработки данных.
- Устраняет необходимость в определенном уровне кэширования для хранения данных.
- Предлагает гибкую структуру схемы, которую можно легко изменить без простоев или перебоев в обслуживании.
Недостатки NoSQL
- Никаких правил стандартизации
- Ограниченные возможности запросов
- RDBMS базы данных и инструменты сравнительно зрелы
- Он не предлагает никаких традиционных возможностей базы данных, таких как согласованность при одновременном выполнении нескольких транзакций.
- Когда объем данных увеличивается, трудно поддерживать уникальные значения, поскольку ключи становятся трудными.
- Не работает с реляционными данными
- Кривая обучения жесткая для новых разработчиков
- Варианты с открытым исходным кодом не так популярны среди предприятий.
Итого
- NoSQL — это нереляционная DMS, которая не требует фиксированной схемы, избегает объединений и легко масштабируется.
- Концепция баз данных NoSQL стала популярной среди интернет-гигантов, таких как Google, Facebook, Amazonи т. д., которые имеют дело с огромными объемами данных
- В 1998 году Карло Строцци использовал термин NoSQL для своей легкой реляционной базы данных с открытым исходным кодом.
- Базы данных NoSQL никогда не следуют реляционной модели: они либо не содержат схем, либо имеют упрощенные схемы.
- Четыре типа баз данных NoSQL: 1). На основе пары ключ-значение 2). Столбчатый график 3). Графики на основе 4). Документоориентированный
- NOSQL может обрабатывать структурированные, полуструктурированные и неструктурированные данные с одинаковым эффектом.
- Теорема CAP состоит из трех слов: согласованность, доступность и толерантность к разделению.
- БАЗА означает Bасистично Aмодели шириной, Sчасто состояние, Eвентальная консистенция
- Термин «возможная согласованность» означает наличие копий данных на нескольких машинах для обеспечения высокой доступности и масштабируемости.
- NoSQL предлагают ограниченные возможности запросов