Работа с встраиваемыми данными в NoSQL с помощью Java

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

Jakarta NoSQL — это Java-фреймворк, который упрощает взаимодействие с базами данных NoSQL, включая MongoDB. Он предоставляет аннотации, которые определяют, как данные сопоставляются и хранятся, позволяя разработчикам контролировать, будут ли встроенные объекты сгруппированы или хранятся в плоском виде.

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

Jakarta NoSQL и сущность продукта

Чтобы понять плоские и группированные структуры, давайте сначала представим сущность Product и посмотрим, как работают аннотации Jakarta NoSQL:

Java

 

Теперь давайте исследуем, как поле manufacturer может храниться по-разному в зависимости от аннотаций Jakarta NoSQL.

Понимание группированных и плоских структур

Группированная структура

Группа группированной структуры организует связанную информацию в отдельные объекты в документе. Этот подход улучшает читаемость и позволяет более чисто моделировать домен. Jakarta NoSQL достигает этого с помощью @Embeddable(Embeddable.EmbeddableType.GROUPING).

Пример:

JSON

 

Здесь производитель сгруппирован в отдельный под-объект вместо того, чтобы иметь свои свойства на верхнем уровне.

Java

 

Плоская структура

Плоская структура сохраняет связанную информацию в одном документе, встраивая списки или вложенные поля непосредственно. Jakarta NoSQL позволяет это с помощью @Embeddable(Embeddable.EmbeddableType.FLAT). Этот подход полезен, когда вам нужен быстрый доступ ко всем деталям без необходимости сложных запросов.

Пример:

JSON

 

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

Java

 

Пример использования в Jakarta NoSQL

Следующий фрагмент кода демонстрирует, как Jakarta NoSQL интегрирует эти структуры:

Java

 

Выбор правильного подхода

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

Заключение

Jakarta NoSQL предлагает гибкость в структурировании документов MongoDB с использованием @Embeddable(Embeddable.EmbeddableType). Выбор плоской или групповой структуры зависит от ваших паттернов доступа к данным и предпочтений в моделировании. Понимание этих подходов позволяет эффективно проектировать базы данных, делая запросы более эффективными, сохраняя при этом вашу доменную модель чистой и хорошо структурированной.

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

Видео

Source:
https://dzone.com/articles/handling-embedded-data-in-nosql-with-java