Руководство по разработке Azure Cosmos DB

Azure Spring Data для Azure Cosmos DB обеспечивает поддержку Spring Data для Azure Cosmos DB для NoSQL. Azure Cosmos DB — это глобально распределенная служба баз данных, которую разработчики могут использовать для работы с данными с помощью различных стандартных API, таких как SQL, MongoDB, Cassandra, Graph и Table.

В этом руководстве объясняются основные понятия Azure Spring Data Azure Cosmos DB SDK, поддерживаемые возможности, устранение неполадок и известные проблемы. Дополнительные сведения об этих понятиях и примерах кода см. в файле readme для Spring Data для Azure Cosmos DB SDK.

Политика поддержки версий

Поддержка версии Spring Boot

Этот проект поддерживает несколько версий Spring Boot. Дополнительные сведения см. в разделе Политика поддержки Spring Boot. Пользователи Maven могут наследовать от spring-boot-starter-parent проекта, чтобы получить раздел управления зависимостями, позволяющий Spring управлять версиями зависимостей. Дополнительные сведения см. в разделе Поддержка версий Spring Boot.

Поддержка версии Spring Data

Этот проект поддерживает разные spring-data-commons версии. Дополнительные сведения см. в разделе Поддержка версий Spring Data.

Какую версию Azure Spring Data Azure Cosmos DB использовать

Azure библиотека Spring Data Azure Cosmos DB поддерживает несколько версий Spring Boot и Spring Cloud. Дополнительные сведения о какой версии Azure Spring Data Azure Cosmos DB использовать с Spring Boot и Spring Cloud, см. в статье "Какая версия Azure Spring Data для Azure Cosmos DB следует использовать?

Начало работы

Включите пакет

Если вы используете Maven, добавьте следующую зависимость.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-spring-data-cosmos</artifactId>
    <version>LATEST</version>
</dependency>

Необходимые условия

  • пакет средств разработки Java (JDK)версии 8 или более поздней.
  • Активная учетная запись Azure. Если у вас нет учетной записи, вы можете зарегистрироваться для бесплатной учетной записи. Кроме того, можно использовать эмулятор Azure Cosmos DB для разработки и тестирования. Так как эмулятор использует самозаверяющий сертификат HTTPS, необходимо импортировать его сертификат в хранилище доверенных сертификатов Java, описано здесь.
  • (Необязательно) SLF4J — это фасад для ведения журналов.
  • (Необязательно) привязка SLF4J используется для связывания конкретной платформы логгирования с SLF4J.
  • (Необязательно) Maven

Если вы планируете использовать ведение журнала, вам потребуется только SLF4J. Кроме того, скачайте привязку SLF4J, которая связывает API SLF4J с выбранной реализацией ведения журнала. Дополнительные сведения см. в руководстве пользователя SLF4J .

Настройте и кастомизируйте класс конфигурации

Чтобы настроить класс конфигурации, раззапустите AbstractCosmosConfiguration. Для получения дополнительной информации см. раздел класса настройки конфигурации.

Вы можете настроить базовый CosmosAsyncClient, используемый пакетом SDK Azure Spring Data для Azure Cosmos DB, указав DirectConnectionConfig, GatewayConnectionConfig или оба варианта и передав их в CosmosClientBuilder. Полный пример см. в разделе настройки конфигурации.

Настройка объектов

Можно определить простую сущность как элемент в Azure Cosmos DB. Определите сущности, добавив заметку @Container и указав свойства, связанные с контейнером. Дополнительные сведения см. в разделе Определение сущности.

Аннотация контейнера поддерживает указание имени контейнера, единиц запросов (RU), времени жизни, создания контейнеров с автомасштабируемой пропускной способностью, поддержки вложенных ключей раздела и других свойств контейнера.

Настройка репозитория

Azure Spring Data Azure Cosmos DB поддерживает ReactiveCrudRepository (асинхронные API) и CrudRepository (API синхронизации), которые предоставляют следующие основные функции CRUD:

  • сохранить
  • findAll (найти все)
  • НайтиОдин по идентификатору
  • удалить все
  • Удалить по идентификатору
  • Удалить сущность

Вы можете расширить CosmosRepository (для поддержки API синхронизации) или ReactiveCosmosRepository (для асинхронной поддержки API), чтобы настроить репозитории Spring Data для приложения. Дополнительные сведения см. в разделе Создание репозиториев.

Azure Spring Data Azure Cosmos DB поддерживает указание аннотированных запросов в репозиториях с помощью @Query. Дополнительные сведения см. в разделе QueryAnnotation: использование аннотированных запросов в репозиториях.

Аннотации Spring Data

Аннотация @Id Spring Data

Можно сопоставить поле класса домена с id несколькими способами. Для получения дополнительной информации см. раздел с кодом аннотации идентификатора данных Spring.

Автоматическое создание идентификаторов

Azure Spring Data Azure Cosmos DB поддерживает автоматическое создание идентификаторов с помощью заметки@GeneratedValue. Для получения дополнительной информации см. раздел автогенерации идентификаторов .

Выражение SpEL и пользовательское имя контейнера

По умолчанию имя контейнера — это имя класса класса домена пользователя. Чтобы настроить имя контейнера, добавьте заметку @Container(containerName="myCustomContainerName") в класс домена. Дополнительные сведения см. в выражении SpEL и разделе пользовательского имени контейнера .

Пользовательская политика индексации

По умолчанию служба Azure задает IndexingPolicy. Чтобы настроить IndexingPolicy, добавьте аннотацию @CosmosIndexingPolicy к классу домена. Дополнительные сведения см. в разделе политики индексирования .

Уникальная политика ключей

Azure Spring Data Azure Cosmos DB поддерживает настройку параметра UniqueKeyPolicy для контейнера путем добавления аннотации @CosmosUniqueKeyPolicy к классу домена. Дополнительные сведения см. в разделе политики уникального ключа .

Раздел Azure Cosmos DB

Azure-spring-data-cosmos поддерживает разделы Azure Cosmos DB.

Чтобы указать поле класса домена в качестве поля ключа секционирования, аннотируйте его с помощью @PartitionKey.

При выполнении операции CRUD укажите значение раздела.

Подробнее см. здесь в разделе теста .

Оптимистическая блокировка

Azure-spring-data-cosmos поддерживает оптимистическую блокировку для определенных контейнеров. Поддержка этой функции означает, что операции upsert и удаления отдельных элементов завершаются с исключением, если другой процесс изменяет элемент. Дополнительные сведения см. в разделе "Оптимистическая блокировка".

Настраиваемый запрос Spring Data, поддержка разбиения на страницы и сортировка

Azure-spring-data-cosmos поддерживает пользовательские запросы в Spring Data, например операцию поиска вроде findByAFieldAndBField. Он также поддерживает Spring Data Pageable, Slice и Sort. Дополнительные сведения см. в разделе о запросах, пагинации и сортировке.

Использование пакета SDK Java для Azure Cosmos DB с помощью Spring Data Cosmos

Azure-spring-data-cosmos поддерживает использование Azure Cosmos DB Java SDK. Вы можете получить компонент CosmosAsyncClient или CosmosClient через ApplicationContext и выполнить любые операции, поддерживаемые Java SDK для Azure Cosmos DB. Дополнительные сведения вы найдете в разделе , в котором рассматривается использование Azure Cosmos Client через Spring Data Cosmos.

Spring Data REST

Azure-spring-data-cosmos поддерживает REST Spring Data. См. раздел Azure Spring Data Azure Cosmos DB REST APIдля получения дополнительной информации.

Аудит

Azure-spring-data-cosmos поддерживает аудит полей сущностей в базе данных с помощью стандартных аннотаций Spring Data. Дополнительные сведения см. в разделе аудита Spring Data Azure Cosmos DB.

Конфигурация с несколькими базами данных

Azure-spring-data-cosmos поддерживает конфигурацию с несколькими базами данных, включая несколько учетных записей базы данных и одну учетную запись с несколькими базами данных. Полный фрагмент кода см. в разделе конфигурации нескольких баз данных.

Устранение неполадок

Общее

Если вы столкнулись с ошибкой, отправьте здесь проблему.

Чтобы предложить новую функцию или изменения, отправьте проблему так же, как и для ошибки.

Включение ведения журнала клиентов

Azure-spring-data-cosmos использует SLF4j в качестве фасада ведения журнала, который поддерживает вход в популярные платформы ведения журнала, такие как log4j и logback. Дополнительные сведения см. в разделе включение ведения журнала клиентов.

Примеры

Полный пример проекта см. в проекте-примере .

Учетные записи с несколькими базами данных

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

Одна учетная запись с несколькими базами данных

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

Дальнейшие действия

Внесение вклада

Этот проект приветствует взносы и предложения. Большинство вкладов требует, чтобы вы согласились с Соглашением о лицензировании участника (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада.

При отправке запроса на вытягивание бот CLA автоматически определит, нужно ли предоставлять соглашение о лицензионных условиях, и соответствующим образом обозначит PR — например, меткой или комментарием. Просто следуйте инструкциям, предоставленным ботом. Это нужно сделать только один раз во всех репозиториях, используя наше согласие на лицензионное соглашение (CLA).

Этот проект принял Microsoft Open Source Code of Conduct. Дополнительные сведения см. в часто задаваемых вопросов о кодексе поведения или opencode@microsoft.com с другими вопросами или комментариями.