Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как развернуть базовое приложение 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 и развертывания контейнерного примера приложения. Пример приложения использует клиентскую библиотеку для управления, создания, чтения и выполнения запросов к образцам данных.
Откройте терминал в пустом каталоге.
Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью
azd auth login. Следуйте инструкциям, указанным инструментом, чтобы выполнить аутентификацию в CLI, используя ваши предпочитаемые учетные данные Azure.azd auth loginИспользуйте
azd initдля инициализации проекта.azd init --template cosmos-db-nosql-java-quickstartВо время инициализации настройте уникальное имя среды.
Разверните учетную запись Azure Cosmos DB с помощью
azd up. Шаблоны Bicep также развертывают образец веб-приложения.azd upВ процессе подготовки выберите вашу подписку, желаемое местоположение и целевую группу ресурсов. Дождитесь завершения процесса настройки. Процесс может занять около пяти минут.
После завершения подготовки ресурсов 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.Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.
Установка клиентской библиотеки
Клиентская библиотека доступна через Maven в качестве azure-spring-data-cosmos пакета.
Перейдите в папку
/src/webи откройте файл pom.xml .Если он еще не существует, добавьте запись для пакета
azure-spring-data-cosmos.<dependency> <groupId>com.azure</groupId> <artifactId>azure-spring-data-cosmos</artifactId> </dependency>Кроме того, добавьте еще одну зависимость для
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