ArangoDB: Достижение успеха с многозначной базой данных

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

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

  • Ключ-значение: Похожая на Java Map или словарь Python, эта структура извлекает целые значения в виде BLOB с использованием ключа.
  • Широкий столбец: Похожа на ключ-значение, но разбивает значения на столбцы, предлагая более детализированное извлечение данных.
  • Документ: Структурированная как JSON или XML, этот тип предоставляет большую гибкость запросов.
  • Граф: Позволяет моделировать и запрашивать сложные отношения, представляя сущности и их связи.

Мультимодельная база данных объединяет эти возможности в одной системе. Например, ArangoDB поддерживает модели ключ-значение, документ и граф, устраняя необходимость в отдельных базах данных.

В этой статье показано, как использовать ArangoDB для изучения моделей ключ-значение и документа в Java-приложениях с использованием Jakarta NoSQL.

Настройка ArangoDB

Для начала работы с ArangoDB Docker предоставляет простой способ управления сторонними службами. Запустив следующую команду, вы сможете легко настроить экземпляр ArangoDB:

Shell

 

Изучение данных ключ-значение

Базы данных ключ-значение идеально подходят для простых моделей данных. Давайте создадим пример приложения для управления данными аэропортов, используя возможности ключ-значение ArangoDB. Сущность Airport будет включать два поля: code (ID) и name.

Java

 

После определения сущности, вы можете использовать KeyValueTemplate для взаимодействия с базой данных. В этом руководстве мы рассмотрим больше возможностей Jakarta NoSQL за пределами аннотаций, используя Eclipse JNoSQL; вы можете создать репозиторий, когда Eclipse JNoSQL реализует и поддерживает Jakarta Data.

Java

 

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

http://localhost:8529/_db/airport/_admin/aardvark/index.html#collections

Работа с данными документа

Jakarta NoSQL предоставляет обширные возможности для работы с документоориентированными базами данных, включая поддержку наследования и иерархического моделирования данных. Хотя NoSQL-базы данных обычно не поддерживают эти функции, Jakarta NoSQL заполняет этот разрыв с помощью своего API. Давайте использовать Jakarta NoSQL с ArangoDB для управления данными облачного провайдера, включая два специализированных варианта: Amazon Web Services (AWS) и Azure.

Jakarta NoSQL использует аннотации @DiscriminatorColumn, @DiscriminatorValue и @Inheritance для управления наследованием в документоориентированных базах данных.

  • Аннотация @DiscriminatorColumn указывает поле, используемое для идентификации типа сущности в документе базы данных.
  • Аннотация @DiscriminatorValue определяет конкретное значение для каждого подкласса, гарантируя их правильную идентификацию.
  • Аннотация @Inheritance указывает, что иерархия классов будет отображена в базу данных.

Сначала определим базовый класс для облачных провайдеров:

Java

 

Затем мы представляем специализированные классы облачных провайдеров. Эти примеры показывают, как Jakarta NoSQL использует аннотации @DiscriminatorValue для различения различных типов документов. Каждая специализация — AWS и Azure — наследует от базового класса CloudProvider, а также определяет атрибуты, уникальные для каждого провайдера. Кроме того, для целей демонстрации предоставляются фабричные методы (of) для создания образцовых данных.

AWSCloudProvider

Java

 

AzureCloudProvider

Java

 

Наконец, давайте посмотрим, как использовать DocumentTemplate для взаимодействия с базой данных. Этот код демонстрирует создание экземпляров поставщиков AWS и Azure, их вставку в базу данных и извлечение. Реализация использует API Jakarta NoSQL для обеспечения сохранения данных, гарантируя, что логика наследования и дискриминатора применяются без проблем во время сохранения и извлечения.

Java

 

Заключение

Многофункциональные возможности ArangoDB делают его универсальным выбором для современных приложений. Комбинирование моделей ключ-значение и документов в одной базе данных упрощает вашу архитектуру данных, сохраняя гибкость. С Jakarta NoSQL интеграция ArangoDB в приложения Java становится безупречной, используя знакомые аннотации и программные парадигмы.

Для полного кода посетите Репозиторий GitHub.

Source:
https://dzone.com/articles/arangodb-success-through-multivalue-database