教程:使用 Java 应用程序在 Azure Cosmos DB 中创建 API for Cassandra 帐户,以便存储键/值数据

适用对象: Cassandra

作为开发人员,你可能具有使用键/值对的应用程序。 可以使用 Azure Cosmos DB 中的 API for Cassandra 帐户来存储键/值数据。 本教程介绍如何使用 Java 应用程序在 Azure Cosmos DB 中创建 API for Cassandra 帐户、添加数据库(也称为键空间)以及添加表。 Java 应用程序使用 Java 驱动程序来创建包含用户 ID、用户名、用户城市等详细信息的用户数据库。

本教程涵盖以下任务:

  • 创建 Cassandra 数据库帐户
  • 获取帐户连接字符串
  • 创建 Maven 项目和依赖项
  • 添加数据库和表
  • 运行应用

先决条件

创建数据库帐户

  1. 在 Azure 门户菜单或主页中,选择“创建资源” 。

  2. 在“新建”页面中搜索“Azure Cosmos DB”,然后选择它。

  3. 在“Azure Cosmos DB”页上,选择“创建”。

  4. API 页面上,选择 Cassandra 下的“创建”。

    API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。

    选择“Cassandra”,因为本快速入门将创建使用 API for Cassandra 的表。

    详细了解 API for Cassandra

  5. 在“创建 Azure Cosmos DB 帐户”页中,输入新 Azure Cosmos DB 帐户的基本设置。

    设置 说明
    订阅 订阅 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。
    资源组 新建

    然后,输入与帐户名称相同的名称。
    选择“新建”。 然后输入帐户的新资源组名称。 为简单起见,请使用与 Azure Cosmos DB 帐户名称相同的名称。
    帐户名 输入唯一的名称 输入标识此 Azure Cosmos DB 帐户的唯一名称。 帐户 URI 将是追加到唯一帐户名称的“cassandra.cosmos.azure.cn” 。

    帐户名称只能使用小写字母、数字及连字符 (-),必须为 3 到 31 个字符长。
    API Cassandra API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。

    选择“Cassandra”,因为本快速入门将创建使用 API for Cassandra 的表。

    详细了解 API for Cassandra
    位置 离用户最近的区域 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。
    容量模式 预配吞吐量或无服务器 选择“预配吞吐量”以在预配吞吐量模式下创建帐户。 选择“无服务器”以在无服务器模式下创建帐户。
    应用 Azure Cosmos DB 免费层折扣 “应用”或“不应用” 使用 Azure Cosmos DB 免费层,你将在帐户中获得每秒前 1000 RU 的免费吞吐量和 25 GB 的免费存储。 了解免费层的详细信息。

    注意

    每个 Azure 订阅最多可以有一个免费层 Azure Cosmos DB 帐户,并且你必须在创建帐户时选择加入使用。 如果看不到用于应用免费层折扣的选项,这意味着订阅中的另一个帐户已启用免费层。

    The new account page for Azure Cosmos DB for Apache Cassandra

  6. 在“全局分发”选项卡中,配置以下详细信息。 对于本快速入门,可以保留默认值:

    设置 说明
    异地冗余 禁用 通过将你的区域与某个配对区域进行配对来启用或禁用帐户的多区域分发。 稍后可以将更多区域添加到帐户。
    多区域写入 禁用 借助多区域写入功能,可以利用全中国的数据库和容器的预配吞吐量。
    可用性区域 禁用 可用性区域是指 Azure 区域内的隔离区域。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。

    注意

    如果选择“无服务器”作为“容量模式”,则以下选项不可用 :

    • 应用免费层折扣
    • 异地冗余
    • 多区域写入
  7. (可选)可以在以下选项卡中配置其他详细信息:

    • 网络 - 配置来自虚拟网络的访问
    • 备份策略- 配置定期连续备份策略。
    • 加密 - 使用服务管理的密钥或客户管理的密钥
    • 标记 - 标记是名称/值对,通过将相同的标记应用到多个资源和资源组,可以对资源进行分类并查看合并的账单。
  8. 选择“查看 + 创建”。

  9. 检查帐户设置,然后选择“创建”。 创建帐户需要几分钟时间。 等待门户页显示“你的部署已完成”消息。

    The Azure portal Notifications pane

  10. 选择“转到资源”,转到 Azure Cosmos DB 帐户页。

获取帐户的连接详细信息

从 Azure 门户获取连接字符串信息,并将其复制到 Java 配置文件。 连接字符串使应用能与托管数据库进行通信。

  1. Azure 门户转到 Azure Cosmos DB 帐户。

  2. 打开“连接字符串”窗格。

  3. 复制接触点、端口、用户名以及主密码值,以便在后续步骤中使用 。

创建项目和依赖项

本文中使用的 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> 

若要从头生成示例,请执行以下步骤:

  1. 在终端窗口或命令提示符中,创建名为 Cassandra-demo 的新 Maven 项目。

    mvn archetype:generate -DgroupId=com.azure.cosmosdb.cassandra -DartifactId=cassandra-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 
    
  2. 找到 cassandra-demo 文件夹。 使用文本编辑器打开已生成的 pom.xml 文件。

    添加 Cassandra 依赖项并生成项目所需的插件,如 pom.xml 文件中所示。

  3. cassandra-demo\src\main 文件夹下,创建名为 resources 的新文件夹。 在资源文件夹下,添加 config.properties 和 log4j.properties 文件:

    • Config.properties 文件存储 API for Cassandra 帐户的连接终结点和键值。

    • log4j.properties 文件定义与 API for Cassandra 交互所需的日志记录级别。

  4. 浏览到 src/main/java/com/azure/cosmosdb/cassandra/ 文件夹。 在 cassandra 文件夹中,另创建一个名为 utils 的文件夹。 新的文件夹存储连接到 API for Cassandra 帐户所需的实用工具类。

    添加 CassandraUtils 类来创建群集并打开和关闭 Cassandra 会话。 群集会连接到 Azure Cosmos DB 中的 API for Cassandra 帐户并返回可供访问的会话。 使用 Configurations 类从 config.properties 文件中读取连接字符串信息。

  5. Java 示例使用用户信息(如用户名、用户ID、用户城市)创建数据库。 你需要定义 get 和 set 方法以访问主函数中的用户详细信息。

    使用 get 和 set 方法在 src/main/java/com/azure/cosmosdb/cassandra/ 文件夹下创建 User.java 类。

添加数据库和表

本部分介绍如何添加数据库(键空间)和表,方法是使用 CQL。

  1. src\main\java\com\azure\cosmosdb\cassandra 文件夹下,创建名为 repository 的新文件夹。

  2. 创建 UserRepository Java 类,并向其添加以下代码:

    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'"); 
        } 
    } 
    
  3. 找到 src\main\java\com\azure\cosmosdb\cassandra 文件夹,并创建名为 examples 的新的子文件夹。

  4. 创建 UserProfile Java 类。 此类包含调用前面定义的 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"); 
            } 
        } 
    } 
    

运行应用

  1. 打开命令提示符或终端窗口。 粘贴以下代码块。

    此代码将目录 (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 
    

    终端窗口会显示通知,指出密钥空间和表已创建。

  2. 现在在 Azure 门户中,打开“数据资源管理器”以确认是否已创建键空间和表。

后续步骤

本教程介绍了如何使用 Java 应用程序在 Azure Cosmos DB 中创建 API for Cassandra 帐户,以及创建数据库和表。 你现在可以继续学习下一篇文章: