Интеграция Java-приложения с базой данных MongoDB | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 13 марта, печатный экземпляр отправим 17 марта.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №24 (210) июнь 2018 г.

Дата публикации: 16.06.2018

Статья просмотрена: 413 раз

Библиографическое описание:

Лабазин, А. А. Интеграция Java-приложения с базой данных MongoDB / А. А. Лабазин. — Текст : непосредственный // Молодой ученый. — 2018. — № 24 (210). — С. 28-32. — URL: https://moluch.ru/archive/210/51448/ (дата обращения: 27.02.2021).



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

MongoDB — это база данных NoSQL, в которой мы можем хранить данные в формате BSON, где ключ представляет свойство, а значение представляет значение свойства, хранящееся на ключе. [1]

В MongoDB документ представляет собой структуру данных, которая может содержать любое количество пар ключей и значений. Например, сотрудник компании может быть представлен как документ, в котором имя, адрес, возраст и его значение хранятся в виде пар ключ-значение в этом документе, он показан на Рис. 1. Обратите внимание, что документы хранятся в двоичном формате JSON, называемом BSON (двоичный JSON).

Рис. 1. Представление данных в JSON

В MongoDB часто документы с одинаковой структурой помещаются в хранилище, называемое коллекцией. Вы можете представить коллекцию в виде таблицы в реляционной базе данных, где каждая строка представляет собой документ. Поэтому мы можем сказать, что коллекция “Сотрудники” содержит несколько документов “Сотрудник”. По определению коллекция может содержать любые типы документов — например, коллекция может содержать документы “Сотрудники”, а также другие документы, например “Автомобили”. Нет никаких ограничений.

Примечание. При проектировании предпочтительнее создавать коллекцию на аналогично структурированных документах.

Отсутствие схем — одно из ключевых различий между базой данных SQL и NoSQL. Под NoSQL мы имеем в виду, что она не имеет предопределенной схемы — документ может содержать что-либо в формате BSON. Чтобы быть конкретным, любая структура данных вписывается в базу данных без схемы, поэтому она подходит для хранения неструктурированных данных.

Это облегчает жизнь разработчику, потому что в реляционной базе данных есть фиксированная схема. Если таблица “Сотрудники” содержит столбцы имени и адреса, она хранит все данные, которые поддерживают одну и ту же структуру данных. Чтобы добавить новый столбец “Возраст”, нам нужно полностью изменить схему, чтобы включить новое свойство. Но в MongoDB, мы можем поместить любую структуру данных с любой комбинацией свойств.

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

Успех Big Data заключается в горизонтальном масштабировании. Поскольку MongoDB является частью стека Big Data [2], она также поддерживает масштабирование. Благодаря горизонтальному масштабированию MongoDB может распространять данные на несколько узлов, каждый узел представляет собой недорогой компьютер — и мы можем легко добавлять и удалять узлы. Поэтому, когда нам нужно хранить больше данных, мы можем добавлять новые узлы, не влияя на существующую архитектуру, причем при вертикальном масштабировании нам нужен суперкомпьютер, а данные хранятся в одном централизованном хранилище.

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

Шардинг — это метод, с помощью которого MongoDB разбивает гигантские участки данных на мелкие. Затем она создает реплики каждого фрагмента и распределяет эти фрагменты на несколько узлов. При запросе клиент имеет информацию а метаданных, которые сообщают серверу MongoDB, какой именно узел хранит необходимые для выполнения запроса данные.

Для добавления данных и управлением нашей базой воспользуемся программой Robo 3T, доступной для загрузки онлайн. После подключения к MongoDB, создадим коллекцию “Сотрудники”, в которую добавим приведенный в пример ранее документ, результат выполнения операции добавления данных показан на Рис. 2.

Рис. 2. Интерфейс программы Robo 3T

Robo 3T позволяет производить только самые базовые операции с данными. В случае если перед вами стоит не стандартная задача, например нужно выполнить сложный поиск по базе данных или экспортировать данные в отдельный файл, я рекомендую пользоваться приложением, MongoLime, созданным Юрием Бушевым. Функциональные возможности данного приложения покрывают весь спектр действий и операций с данными, хранящимися в MongoDB, приложение является уникальным в своем роде и не имеет аналогов.

Для написания программы на Java, способной прочитать данных из MongoDB, нам потребуется: IDE Eclipse, плагин Maven и сама Java 8, установленная на рабочий компьютер [3]. Зависимости и базовую конфигурацию проекта поместим в pom.xml файл, изображенный на Рис. 3.

Рис. 3. Содержание файла pom.xml

Следующий этап это подключение к MongoDB серверу с использованием Java-кода. Я создам класс API верхнего уровня, который абстрагирует логику подключения к серверу MongoDB и предоставляет некоторые полезные методы для клиента API.

Здесь я создал объект Singleton MongoContext, который соединяется с MongoDB с использованием класса MongoClient в методе init. Обратите внимание, что класс MongoClient является частью официального Java-драйвера MongoDB.

Следующее, что нужно сделать, это выбрать базу данных для подключения. Я создал общий метод, называемый connectDb (String dbName), где вызывающий наш API будет передавать имя базы данных, к которой он хочет подключиться. Обратите внимание, что возвращаемый тип этого метода — сам MongoContext. Я использую технику Fluent API.

После этого я хочу выполнить запрос для извлечения документов из базы данных.

Здесь я создаю MongoContext, затем подключаем тестовую БД и вызываем метод findByKey, передавая Employee как коллекцию, возраст как ключ, а значение равно 34. После этого, используя лямбда-выражения, мы сообщим нашему API, что желаемый тип данных — целое.

В результате выполнения программы в консоль будет выведен результат запроса — запись из базы данных MongoDB, показанная на Рис. 4.

Рис. 4. Результат выполнения программы на Java

Литература:

  1. MongoDB // Link https://en.wikipedia.org/wiki/MongoDB (2018.05.31)
  2. What Is Big Data // Link: https://www.mongodb.com/big-data-explained (2018.06.13)
  3. Learn MongoDB With Java 8. Link: https://dzone.com/articles/learn-mongo-with-java8-part-1 (2018.05.11)
Основные термины (генерируются автоматически): API, BSON, JSON, баз данных, данные, документ, структура данных, база данных, коллекция, узел.


Похожие статьи

База данных: база данных хранения, используемая...

Основные термины (генерируются автоматически): API, JSON, REST, данные, GET, локальная БД, поток данных, асинхронная

Системы сбора информации в аспекте кибербезопасности. – База данных: база данных хранения, используемая планировщиком и api.

Разработка программного модуля тестирования баз данных

Ключевые слова: база данных, СУБД, реляционные базы данных, нереляционные базы данных, NoSQL. Базы данных являются незаменимым инструментом в разработке программного обеспечения.

Экспорт данных о ролевой политике безопасности из Системы...

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

Методы выполнения запросов к хранилищу данных в Hadoop...

ADO, SQL, источник данных, баз данных, данные, таблица, база данных, соединение, оперативная память, реляционная база данных. Сравнение производительности ORM-библиотек как критерия... Системы управления реляционными базами данных (СУБД)...

Сравнение производительности ORM-библиотек как критерия...

Системы управления реляционными базами данных (СУБД) показывают хорошую производительность на глобальных запросах, которые захватывают одновременно большой объем данных.

Системы управления реляционными базами данных (СУБД)

Например, в базах данных таблицы имеют фиксированную структуру, т.к. определяются на этапе проектирования

переводится в последовательную (от англ. serial - последовательный) форму, т.е. сериализуется в выбранном формате (двоичный, XML, SOAP, JSON, BSON и др.).

Разработка мобильного приложения для таксатора

Data sources — источники данных для базы данных (БД).

Основные термины (генерируются автоматически): JSON, XML, API, набор данных, данные, SVG, HTML. Технология ADO и средства доступа к реляционным базам данных.

Модификация архитектуры web-приложения, основанной на...

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных.

Концепция базы данных для системы электронного...

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

Похожие статьи

База данных: база данных хранения, используемая...

Основные термины (генерируются автоматически): API, JSON, REST, данные, GET, локальная БД, поток данных, асинхронная

Системы сбора информации в аспекте кибербезопасности. – База данных: база данных хранения, используемая планировщиком и api.

Разработка программного модуля тестирования баз данных

Ключевые слова: база данных, СУБД, реляционные базы данных, нереляционные базы данных, NoSQL. Базы данных являются незаменимым инструментом в разработке программного обеспечения.

Экспорт данных о ролевой политике безопасности из Системы...

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

Методы выполнения запросов к хранилищу данных в Hadoop...

ADO, SQL, источник данных, баз данных, данные, таблица, база данных, соединение, оперативная память, реляционная база данных. Сравнение производительности ORM-библиотек как критерия... Системы управления реляционными базами данных (СУБД)...

Сравнение производительности ORM-библиотек как критерия...

Системы управления реляционными базами данных (СУБД) показывают хорошую производительность на глобальных запросах, которые захватывают одновременно большой объем данных.

Системы управления реляционными базами данных (СУБД)

Например, в базах данных таблицы имеют фиксированную структуру, т.к. определяются на этапе проектирования

переводится в последовательную (от англ. serial - последовательный) форму, т.е. сериализуется в выбранном формате (двоичный, XML, SOAP, JSON, BSON и др.).

Разработка мобильного приложения для таксатора

Data sources — источники данных для базы данных (БД).

Основные термины (генерируются автоматически): JSON, XML, API, набор данных, данные, SVG, HTML. Технология ADO и средства доступа к реляционным базам данных.

Модификация архитектуры web-приложения, основанной на...

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных.

Концепция базы данных для системы электронного...

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

Задать вопрос