Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начало работы с клиентской библиотекой Apache Cassandra для Azure Cosmos DB для Java для хранения, управления и запроса неструктурированных данных. Выполните действия, описанные в этом руководстве, чтобы создать новую учетную запись, установить клиентская библиотека Java, подключиться к учетной записи, выполнить общие операции и запросить окончательные примеры данных.
Справочная документация по | APIИсходный код | библиотекиПакет (Maven)
Предпосылки
подписка Azure
- Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Последняя версия Azure CLI в Azure Cloud Shell.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
az login
команды.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
- Java 21 или более поздней версии
Настройка
Сначала настройте учетную запись и среду разработки для этого руководства. В этом разделе описан процесс создания учетной записи, получения учетных данных и подготовки среды разработки.
Создать аккаунт
Сначала создайте API для учетной записи Apache Cassandra. После создания учетной записи создайте пространство ключей и ресурсы для таблицы.
Если у вас еще нет целевой группы ресурсов, используйте
az group create
команду для создания новой группы ресурсов в подписке.az group create \ --name "<resource-group-name>" \ --location "<location>"
az cosmosdb create
Используйте команду для создания новой учетной записи Azure Cosmos DB для Apache Cassandra с параметрами по умолчанию.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"
Создайте новое пространство ключей с именем
cosmicworks
с помощьюaz cosmosdb cassandra keyspace create
.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"
Создайте новый объект JSON для представления схемы с помощью команды Bash с несколькими строками. Затем используйте
az cosmosdb cassandra table create
команду, чтобы создать новую таблицу с именемproducts
.schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )
az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
Получение учетных данных
Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.
Используйте
az cosmosdb show
, чтобы получить точку контакта и имя пользователя для учетной записи.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"
Запишите значение свойств
contactPoint
иusername
из вывода предыдущих команд. Эти свойства представляют собой контактную точку и имя пользователя , которое вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.Используйте
az cosmosdb keys list
для получения ключей для учетной записи.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
Запишите значение
primaryMasterKey
свойства из выходных данных предыдущих команд. Это значение свойства — это пароль , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.
Подготовка среды разработки
Затем настройте среду разработки с новым проектом и клиентской библиотекой. Этот шаг является последним обязательным предварительным условием, прежде чем перейти к остальной части этого руководства.
Начните в пустом каталоге.
Создайте новый проект консоли Java с помощью Maven.
mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Импортируйте пакет
java-driver-core
из Maven. Добавьте этот раздел в файл pom.xml .<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>
Откройте файл /console/src/main/java/quickstart/App.java .
Обратите внимание на существующий стандартный шаблон приложения Java.
package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
Удалите комментарии и выходные данные консоли из стандартного шаблона. Этот блок кода является отправной точкой для остальной части этого руководства.
package quickstart; public class App { public static void main(String[] args) { } }
Импорт пространства
java.security.NoSuchAlgorithmException
имен.import java.security.NoSuchAlgorithmException;
Обновите сигнатуру
main
метода, чтобы указать, что это может вызватьNoSuchAlgorithmException
исключение.public static void main(String[] args) throws NoSuchAlgorithmException { }
Это важно
Остальные шаги в этом руководстве предполагают, что вы добавляете код в метод
main
.Создайте проект.
mvn compile
Объектная модель
Описание | |
---|---|
CqlSession |
Представляет определенное подключение к кластеру |
PreparedStatement |
Представляет предварительно скомпилированную инструкцию CQL, которая может выполняться несколько раз эффективно. |
BoundStatement |
Представляет подготовленную инструкцию с привязанными параметрами |
Row |
Представляет одну строку результата запроса |
Примеры кода
Проверка подлинности клиента
Начните с проверки подлинности клиента с помощью учетных данных, собранных ранее в этом руководстве.
Откройте файл /console/src/main/java/quickstart/App.java в интегрированной среде разработки (IDE).
Импортируйте следующие типы:
java.net.InetSocketAddress
javax.net.ssl.SSLContext
com.datastax.oss.driver.api.core.CqlIdentifier
com.datastax.oss.driver.api.core.CqlSession
com.datastax.oss.driver.api.core.cql.BoundStatement
com.datastax.oss.driver.api.core.cql.PreparedStatement
com.datastax.oss.driver.api.core.cql.ResultSet
com.datastax.oss.driver.api.core.cql.Row
import java.net.InetSocketAddress; import javax.net.ssl.SSLContext; import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.BoundStatement; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row;
Создайте строковые переменные для учетных данных, собранных ранее в этом руководстве. Присвойте переменным
username
password
иcontactPoint
. Кроме того, создайте строковую переменную с именемregion
локального центра обработки данных.String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";
Создайте другую строковую переменную для региона, в котором вы создали учетную запись Azure Cosmos DB для Apache Cassandra. Присвойте этой переменной
region
имя.String region = "<region>";
SSLContext
Создайте объект, чтобы убедиться, что вы используете протокол TLS.SSLContext sslContext = SSLContext.getDefault();
Создайте новый
CqlSession
объект с помощью учетных данных и переменных конфигурации, созданных на предыдущих шагах. Задайте точку контакта, локальный центр обработки данных, учетные данные проверки подлинности, пространство ключей и контекст TLS.CqlSession session = CqlSession.builder() .addContactPoint(new InetSocketAddress(contactPoint, 10350)) .withLocalDatacenter(region) .withAuthCredentials(username, password) .withKeyspace(CqlIdentifier.fromCql("cosmicworks")) .withSslContext(sslContext) .build();
Предупреждение
Полная проверка уровня транспорта (TLS) отключена в этом руководстве для упрощения проверки подлинности. Для рабочих развертываний полностью включите проверку.
Обновление-вставка данных
Затем переведите новые данные в таблицу. Upserting гарантирует, что данные создаются или заменяются соответствующим образом в зависимости от того, существуют ли те же данные в таблице.
Определите новый класс
Product
с полями, соответствующими таблице, созданной ранее в этом руководстве.class Product { public String id; public String name; public String category; public int quantity; public boolean clearance; public Product(String id, String name, String category, int quantity, boolean clearance) { this.id = id; this.name = name; this.category = category; this.quantity = quantity; this.clearance = clearance; } @Override public String toString() { return String.format("Product{id='%s', name='%s', category='%s', quantity=%d, clearance=%b}", id, name, category, quantity, clearance); } }
Подсказка
В Java этот тип можно создать в другом файле или создать его в конце существующего файла.
Создайте новый объект типа
Product
. Сохраните объект в переменной с именемproduct
.Product product = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );
Создайте новую строковую переменную
insertQuery
с языковым запросом Cassandra (CQL) для вставки новой строки данных.String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";
Подготовьте инструкцию insert и привязите свойства продукта в качестве параметров.
PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );
Upsert продукт путем выполнения привязанной инструкции.
session.execute(boundInsert);
Чтение данных
Затем считывайте данные, которые ранее были добавлены в таблицу.
Создайте новую строковую переменную с именем
readQuery
, содержащую CQL-запрос, который выбирает элементы с тем же полемid
.String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
Создайте строковую переменную
id
с тем же значением, что и продукт, созданный ранее в этом руководстве.String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
Подготовьте инструкцию и привязите поле продукта
id
в качестве параметра.PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);
Выполните привязанную инструкцию и сохраните результат в переменной с именем
readResult
.ResultSet readResult = session.execute(boundRead);
Извлеките первую строку из результирующего набора и сопоставьте ее с объектом
Product
, если он будет найден.Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Запрос данных
Теперь используйте запрос, чтобы найти все данные, соответствующие определенному фильтру в таблице.
Создайте новую строковую переменную с именем
findQuery
, содержащую CQL-запрос, который выбирает элементы с тем же полемcategory
.String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
Создайте строковую переменную
id
с тем же значением, что и продукт, созданный ранее в этом руководстве.String category = "gear-surf-surfboards";
Подготовьте инструкцию и привязите категорию продукта в качестве параметра.
PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);
Выполните привязанную инструкцию и сохраните результат в переменной с именем
findResults
.ResultSet results = session.execute(boundFind);
Выполните итерацию по результатам запроса и сопоставите каждую
Product
строку с объектом.for (Row result : results) { Product queriedProduct = new Product( result.getString("id"), result.getString("name"), result.getString("category"), result.getInt("quantity"), result.getBoolean("clearance") ); // Do something here with each result }
Закрытие сеанса
В Java необходимо закрыть сеанс после завершения любых запросов и операций.
session.close();
Запустите код
Запустите созданное приложение с помощью терминала в каталоге приложения.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Подсказка
Убедитесь, что эта команда выполняется в пути /console , созданном в этом руководстве.
Очистите ресурсы
Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.
Используйте
az cosmosdb show
, чтобы получить точку контакта и имя пользователя для учетной записи.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"
Запишите значение свойств
contactPoint
иusername
из вывода предыдущих команд. Эти свойства представляют собой контактную точку и имя пользователя , которое вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.Используйте
az cosmosdb keys list
для получения ключей для учетной записи.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
Запишите значение
primaryMasterKey
свойства из выходных данных предыдущих команд. Это значение свойства — это пароль , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.