Поделиться через


Быстрый старт: Использование Azure Cosmos DB с пакетом SDK Azure для Java в NoSQL

В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для NoSQL с помощью пакета SDK Azure для Java. Azure Cosmos DB для NoSQL — это хранилище данных без схемы, позволяющее приложениям хранить неструктурированные данные в облаке. Запрос данных в контейнерах и выполнение общих операций с отдельными элементами с помощью пакета SDK Azure для Java.

Справочная документация по API | Исходный код библиотеки | Пакет (Maven) | Azure Developer CLI

Предварительные требования

  • Azure Developer CLI
  • Docker Desktop
  • Java 21

Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Инициализация проекта

Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для NoSQL и развертывания контейнерного примера приложения. Программное обеспечение использует клиентскую библиотеку для управления данными, а также для создания, чтения и выполнения запросов к образцам данных.

  1. Откройте терминал в пустом каталоге.

  2. Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью azd auth login. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.

    azd auth login
    
  3. Используется azd init для инициализации проекта.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Во время инициализации настройте уникальное имя среды.

  5. Разверните учетную запись Azure Cosmos DB с помощью azd up. Шаблоны Bicep также развертывают пример веб-приложения.

    azd up
    
  6. В процессе подготовки выберите подписку, требуемое расположение и целевую группу ресурсов. Дождитесь завершения процесса подготовки. Процесс может занять около пяти минут.

  7. После завершения подготовки ресурсов Azure в выходные данные будет включен URL-адрес работающего веб-приложения.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.

Снимок экрана: работающее веб-приложение.

Установка клиентской библиотеки

Клиентская библиотека доступна через Maven в качестве azure-spring-data-cosmos пакета.

  1. Перейдите в папку /src/web и откройте файл pom.xml .

  2. Если он еще не существует, добавьте запись для пакета azure-spring-data-cosmos.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Кроме того, добавьте еще одну зависимость для azure-identity пакета, если она еще не существует.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
    </dependency>
    

Импорт библиотек

Импортируйте все необходимые пространства имен в код приложения.

import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.models.PartitionKey;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.spring.data.cosmos.config.AbstractCosmosConfiguration;
import com.azure.spring.data.cosmos.config.CosmosConfig;
import com.azure.spring.data.cosmos.core.mapping.Container;
import com.azure.spring.data.cosmos.core.mapping.PartitionKey;
import com.azure.spring.data.cosmos.repository.CosmosRepository;
import com.azure.spring.data.cosmos.repository.Query;
import com.azure.spring.data.cosmos.repository.config.EnableCosmosRepositories;

Объектная модель

Имя Описание
EnableCosmosRepositories Этот вид декоратора методов используется для настройки репозитория для доступа к Azure Cosmos DB, предназначенной для NoSQL.
CosmosRepository Этот класс является основным клиентским классом и используется для управления данными в контейнере.
CosmosClientBuilder Этот класс используется для создания клиента, используемого репозиторием.
Query Этот тип является декоратором методов, используемым для указания запроса, выполняемого репозиторием.

Примеры кода

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

аутентификация клиента;

Во-первых, в этом примере создается новый класс, который наследует от AbstractCosmosConfiguration, чтобы настроить подключение к Azure Cosmos DB для NoSQL.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

В классе конфигурации этот пример создает новый экземпляр CosmosClientBuilder класса и настраивает проверку подлинности с помощью экземпляра DefaultAzureCredential .

@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
    DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
        .build();
        
    return new CosmosClientBuilder()
        .endpoint("<azure-cosmos-db-nosql-account-endpoint>")
        .credential(credential);
}

Получение базы данных

В классе конфигурации пример реализует метод для возврата имени существующей базы данных с именем cosmicworks.

@Override
protected String getDatabaseName() {
    return "cosmicworks";
}

Возьмите контейнер

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

@Container(containerName = "products", autoCreateContainer = false)
public class Item {
    private String id;
    private String name;
    private Integer quantity;
    private Boolean sale;

    @PartitionKey
    private String category;

    // Extra members omitted for brevity
}

Создание элемента

Создайте элемент в контейнере с помощью repository.save.

Item item = new Item(
    "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "gear-surf-surfboards",
    "Yamba Surfboard",
    12,
    false
);
Item created_item = repository.save(item);

Прочитайте элемент

Выполните точечное чтение, используя поля уникального идентификатора (id) и ключа раздела. Используйте repository.findById, чтобы эффективно извлечь конкретный элемент.

PartitionKey partitionKey = new PartitionKey("gear-surf-surfboards");
Optional<Item> existing_item = repository.findById("aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", partitionKey);
if (existing_item.isPresent()) {
    // Do something
}

Элементы запроса

Выполните запрос по нескольким элементам в контейнере, определив запрос в интерфейсе репозитория. В этом примере используется Query декоратор метода для определения метода, выполняющего этот параметризованный запрос:

SELECT * FROM products p WHERE p.category = @category
@Repository
public interface ItemRepository extends CosmosRepository<Item, String> {

    @Query("SELECT * FROM products p WHERE p.category = @category")
    List<Item> getItemsByCategory(@Param("category") String category);

}

Получение всех результатов запроса с помощью repository.getItemsByCategory. Прокрутите результаты запроса.

List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
    // Do something
}

Изучение данных

Используйте расширение Visual Studio Code для Azure Cosmos DB для изучения данных NoSQL. Вы можете выполнять основные операции с базой данных, включая, но не ограничиваясь следующими:

  • Выполнение запросов с помощью скрапбука или редактора запросов
  • Изменение, обновление, создание и удаление элементов
  • Импорт массовых данных из других источников
  • Управление базами данных и контейнерами

Дополнительные сведения см. в разделе Как использовать расширение Visual Studio Code для работы с Azure Cosmos DB для данных NoSQL.

Очистка ресурсов

Если вам больше не нужен пример приложения или ресурсов, удалите соответствующее развертывание и все ресурсы.

azd down