你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Java 应用程序在 Azure Cosmos DB 中创建用于 Cassandra 帐户的 API 来存储键/值数据

适用于: 卡珊德拉

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

本教程涵盖以下任务:

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

Prerequisites

创建数据库帐户

  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 ,因为在本教程中,你将创建一个适用于 Cassandra API 的表。

    若要了解有关 Cassandra API 的详细信息,请参阅 什么是适用于 Apache Cassandra 的 Azure Cosmos DB?

  5. “创建 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 Cosmos DB for Apache Cassandra 的“新建帐户”页面

  6. 在“ 全局分发 ”选项卡上,配置以下详细信息。 使用本教程的默认值。

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

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

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

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

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

    显示 Azure 门户通知窗格的屏幕截图。

  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 的新文件夹。 在 resources 文件夹下添加 config.propertieslog4j.properties 文件:

    • Config.properties 文件存储 API for Cassandra 帐户的连接终结点和键值。
    • log4j.properties 文件定义与 API for Cassandra 交互所需的日志记录级别。
  4. 浏览到 src/main/java/com/azure/cosmosdb/cassandra/ 文件夹。 在该 cassandra 文件夹中,创建另一个名为 . utils. 新文件夹存储连接到 Cassandra 帐户的 API 所需的实用工具类。

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

  5. Java 示例创建一个数据库,其中包含用户名、用户 ID 和用户城市等用户信息。 你需要定义 getset 方法才能访问主函数中的用户详细信息。

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

添加数据库和表

本部分介绍如何使用 Cassandra 查询语言(CQL)添加数据库(keyspace)和表。

  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 类。 此类包含 main 方法,该方法调用前面定义的 createKeyspacecreateTable 方法。

    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、数据库和表中创建用于 Cassandra 帐户的 API。 你现在可以继续学习下一篇文章: