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


Быстрый старт: Использование 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 (Интерфейс командной строки для разработчиков Azure)
  • 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;

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

Имя Description
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