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

Important

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

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

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

Предпосылки

  • Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
  • Docker Desktop
  • Java 21

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

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

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

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

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

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

    azd init --template cosmos-db-table-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-data-tables пакета.

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

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

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-data-tables</artifactId>
    </dependency>
    

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

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

import com.azure.core.http.rest.PagedFlux;
import com.azure.data.tables.TableAsyncClient;
import com.azure.data.tables.TableClientBuilder;
import com.azure.data.tables.models.ListEntitiesOptions;
import com.azure.data.tables.models.TableEntity;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;

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

Name Description
TableServiceAsyncClient Этот тип является основным типом клиента и используется для управления метаданными или базами данных на уровне учетной записи.
TableAsyncClient Этот тип представляет клиента для таблицы в рамках учетной записи.

Примеры кода

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

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

В этом примере создается новый экземпляр TableServiceAsyncClient класса.

DefaultAzureCredential azureTokenCredential = new DefaultAzureCredentialBuilder()
    .build();

TableServiceAsyncClient client = new TableServiceClientBuilder()
    .endpoint("<azure-cosmos-db-table-account-endpoint>")
    .credential(credential)
    .buildAsyncClient();

Забронировать стол

В этом примере создается экземпляр класса TableAsyncClient с помощью метода GetTableClient класса TableServiceClient.

TableAsyncClient table = client
    .getTableClient("<azure-cosmos-db-table-name>");

Создайте сущность

Самый простой способ создания сущности в таблице — использовать createEntity.

String rowKey = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
String partitionKey = "gear-surf-surfboards";

TableEntity entity = new TableEntity(partitionKey, rowKey)
        .addProperty("Name", "Yamba Surfboard")
        .addProperty("Quantity", 12)
        .addProperty("Price", 850.00)
        .addProperty("Sale", false);

Создание сущности в коллекции с помощью upsertEntity.

Mono<Void> response = table.upsertEntity(entity);

Получите сущность

Вы можете получить определенную сущность из таблицы с помощью getEntity.

String rowKey = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
String partitionKey = "gear-surf-surfboards";

TableEntity entity = table.getEntity(partitionKey, rowKey);

Запрос сущностей

После вставки сущности можно также запустить запрос, чтобы получить все сущности, соответствующие определенному фильтру, с помощью listEntities и ListEntitiesOptions класса. Используйте метод setFilter для указания строкового фильтра OData.

ListEntitiesOptions options = new ListEntitiesOptions()
    .setFilter("PartitionKey eq 'gear-surf-surfboards'");

PagedFlux<TableEntity> tableEntities = table.listEntities(options, null, null);

Анализ результатов запроса с разбивкой на страницы с помощью подписки.

tableEntities
    .DoOnNext(entity -> {
        // Do something
    });

Очистите ресурсы

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

azd down