你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:
卡珊德拉
作为开发人员,你可能具有使用键/值对的应用程序。 可以使用 Azure Cosmos DB 中 Cassandra 帐户的 API 来存储密钥/值数据。 本教程介绍如何使用 Java 应用程序在 Azure Cosmos DB 中创建 Cassandra 帐户的 API,添加数据库(也称为密钥空间),并添加表。 Java 应用程序使用 Java 驱动程序 创建包含用户 ID、用户名和用户城市等详细信息的用户数据库。
本教程涵盖以下任务:
- 创建 Cassandra 数据库帐户。
- 获取帐户连接字符串。
- 创建 Maven 项目和依赖项。
- 添加数据库和表。
- 运行应用。
Prerequisites
- 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- 获取最新版本的 Java 开发工具包 (JDK)。
-
下载和安装Maven 二进制存档。 在 Ubuntu 上,可以通过运行
apt-get install maven来安装 Maven。
创建数据库帐户
在 Azure 门户菜单或主页中,选择“ 创建资源”。
在“新建”页面中搜索“Azure Cosmos DB”,然后选择它。
在“Azure Cosmos DB”页上,选择“创建”。
在 API 页上的 Cassandra 部分下,选择“ 创建”。
API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。
选择 Cassandra ,因为在本教程中,你将创建一个适用于 Cassandra API 的表。
若要了解有关 Cassandra API 的详细信息,请参阅 什么是适用于 Apache Cassandra 的 Azure Cosmos DB?。
在 “创建 Azure Cosmos DB 帐户 ”页上,输入新 Azure Cosmos DB 帐户的基本设置。
设置 值 说明 订阅 你的订阅。 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。 资源组 新建。
然后输入与 帐户名称相同的名称。选择“新建”。 然后输入帐户的新资源组名称。 为简单起见,请使用与 Azure Cosmos DB 帐户名称相同的名称。 帐户名 输入唯一名称。 输入标识此 Azure Cosmos DB 帐户的唯一名称。 你的帐户 URI ( cassandra.cosmos.azure.com),已追加到唯一帐户名称。
帐户名称只能使用小写字母、数字和连字符(-),并且长度必须介于 3 到 31 个字符之间。位置 离用户最近的区域。 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。 容量模式 预配的吞吐量 或 无服务器。 选择 “预配吞吐量 ”以在 预配吞吐量 模式下创建帐户。 选择 “无服务器 ”以在 无服务器 模式下创建帐户。 应用 Azure Cosmos DB 免费层折扣 应用 或 不适用。 使用 Azure Cosmos DB 免费层,可以在帐户中免费获取前 1,000 RU/秒和 25 GB 的存储空间。 详细了解免费层。 限制帐户总吞吐量 选择以限制帐户的吞吐量。 如果要将帐户的总吞吐量限制为特定值,此选项非常有用。 注意
每个 Azure 订阅最多可拥有一个免费的 Azure Cosmos DB 帐户。 创建帐户时必须选择加入。 如果您未看到应用免费层的折扣选项,则是因为订阅中的另一个帐户已经启用了免费层。
在“ 全局分发 ”选项卡上,配置以下详细信息。 使用本教程的默认值。
设置 值 说明 异地冗余 禁用 通过将你的区域与另一区域进行配对来启用或禁用帐户的全局分发。 稍后可以将更多区域添加到帐户。 多区域写入 禁用 利用多区域写入功能,可以利用全球数据库和容器的预配吞吐量。 可用性区域 禁用 可用性区域是 Azure 区域中的独立位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。 如果选择 “无服务器 ”作为 容量模式,则以下选项不可用:
- 应用免费层折扣
- 异地冗余
- 多区域写入
(可选)可以在以下选项卡上配置其他详细信息:
选择“查看 + 创建”。
检查帐户设置,然后选择“创建”。 创建帐户需要几分钟时间。 等待门户页显示“你的部署已完成”消息。
选择“转到资源”,转到 Azure Cosmos DB 帐户页。
获取帐户的连接详细信息
从 Azure 门户获取连接字符串信息,并将其复制到 Java 配置文件。 连接字符串使应用能与托管数据库进行通信。
从 Azure 门户转到 Azure Cosmos DB 帐户。
打开“连接字符串”窗格。
复制接触点、端口、用户名以及主密码值,以便在后续步骤中使用。
创建项目和依赖项
本文中使用的 Java 示例项目托管在 GitHub 中。 可以运行本文中的步骤,也可以从 azure-cosmos-db-cassandra-java-getting-started 存储库下载示例。
下载文件后,更新 java-examples\src\main\resources\config.properties 文件中的连接字符串信息并运行它。
cassandra_host=<FILLME_with_CONTACT POINT>
cassandra_port = 10350
cassandra_username=<FILLME_with_USERNAME>
cassandra_password=<FILLME_with_PRIMARY PASSWORD>
若要从头开始生成示例,请执行以下步骤:
在终端或命令提示符下,创建名为
cassandra-demo的新 Maven 项目。mvn archetype:generate -DgroupId=com.azure.cosmosdb.cassandra -DartifactId=cassandra-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false找到
cassandra-demo文件夹。 使用文本编辑器打开pom.xml生成的文件。添加项目所需的 Cassandra 依赖项和生成插件,如 pom.xml 文件中所示。
在
cassandra-demo\src\main文件夹下,创建名为resources的新文件夹。 在resources文件夹下添加config.properties和log4j.properties文件:- Config.properties 文件存储 API for Cassandra 帐户的连接终结点和键值。
- log4j.properties 文件定义与 API for Cassandra 交互所需的日志记录级别。
浏览到
src/main/java/com/azure/cosmosdb/cassandra/文件夹。 在该cassandra文件夹中,创建另一个名为 .utils. 新文件夹存储连接到 Cassandra 帐户的 API 所需的实用工具类。添加 CassandraUtils 类来创建群集并打开和关闭 Cassandra 会话。 群集会连接到 Azure Cosmos DB 中的 API for Cassandra 帐户并返回可供访问的会话。 使用 Configurations 类从
config.properties文件读取连接字符串信息。Java 示例创建一个数据库,其中包含用户名、用户 ID 和用户城市等用户信息。 你需要定义
get和set方法才能访问主函数中的用户详细信息。使用和
src/main/java/com/azure/cosmosdb/cassandra/方法在文件夹下get创建set类。
添加数据库和表
本部分介绍如何使用 Cassandra 查询语言(CQL)添加数据库(keyspace)和表。
在
src\main\java\com\azure\cosmosdb\cassandra文件夹下,创建名为repository的新文件夹。创建
UserRepositoryJava 类,并向其添加以下代码:package com.azure.cosmosdb.cassandra.repository; import java.util.List; import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Create a Cassandra session */ public class UserRepository { private static final Logger LOGGER = LoggerFactory.getLogger(UserRepository.class); private Session session; public UserRepository(Session session) { this.session = session; } /** * Create keyspace uprofile in cassandra DB */ public void createKeyspace() { final String query = "CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }"; session.execute(query); LOGGER.info("Created keyspace 'uprofile'"); } /** * Create user table in cassandra DB */ public void createTable() { final String query = "CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)"; session.execute(query); LOGGER.info("Created table 'user'"); } }找到
src\main\java\com\azure\cosmosdb\cassandra文件夹,并创建名为examples的新的子文件夹。创建
UserProfileJava 类。 此类包含 main 方法,该方法调用前面定义的createKeyspace和createTable方法。package com.azure.cosmosdb.cassandra.examples; import java.io.IOException; import com.azure.cosmosdb.cassandra.repository.UserRepository; import com.azure.cosmosdb.cassandra.util.CassandraUtils; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Example class which will demonstrate following operations on Cassandra Database on CosmosDB * - Create Keyspace * - Create Table * - Insert Rows * - Select all data from a table * - Select a row from a table */ public class UserProfile { private static final Logger LOGGER = LoggerFactory.getLogger(UserProfile.class); public static void main(String[] s) throws Exception { CassandraUtils utils = new CassandraUtils(); Session cassandraSession = utils.getSession(); try { UserRepository repository = new UserRepository(cassandraSession); //Create keyspace in cassandra database repository.createKeyspace(); //Create table in cassandra database repository.createTable(); } finally { utils.close(); LOGGER.info("Please delete your table after verifying the presence of the data in portal or from CQL"); } } }
运行应用
打开命令提示符或终端窗口。 粘贴以下代码块。
此代码将目录 (
cd) 更改为创建项目的文件夹路径。 接着,它将运行mvn clean install命令以在目标文件夹中生成cosmosdb-cassandra-examples.jar文件。 最后,它运行 Java 应用程序。cd cassandra-demo mvn clean install java -cp target/cosmosdb-cassandra-examples.jar com.azure.cosmosdb.cassandra.examples.UserProfile终端窗口会显示通知,指出密钥空间和表已创建。
在 Azure 门户中,打开 数据资源管理器 以确认已创建密钥空间和表。
后续步骤
本教程介绍了如何使用 Java 应用程序在 Azure Cosmos DB、数据库和表中创建用于 Cassandra 帐户的 API。 你现在可以继续学习下一篇文章: