文档

基于Cassandra CQL Java Driver的应用开发

更新时间:

本文介绍通过Cassandra CQL Java Driver连接并使用Lindorm宽表引擎。

前提条件

  • 已安装Java环境,要求安装JDK 1.8及以上版本。

  • 已完成Cassandra CQL Java Driver的安装,具体操作请参见安装Cassandra CQL Driver

  • 已将客户端的IP地址加入到Lindorm实例的白名单中,具体操作请参见设置白名单

  • 已获取云原生多模数据库 Lindorm宽表引擎的CQL连接地址,具体操作请参见查看连接地址获取连接地址

操作步骤

  1. 配置连接参数。

     String[] contactPoints = new String[]{
          "<host>"
     };
      
     Cluster cluster = Cluster.builder()
          .addContactPoints(contactPoints)      
          .withAuthProvider(new PlainTextAuthProvider(username, password))
          .build();
     cluster.init();
     Session session = cluster.connect();
    说明
    • <host>:通过云原生多模数据库 Lindorm控制台获取宽表引擎的CQL连接地址,例如:ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com

    • username云原生多模数据库 Lindorm实例的账号名,默认为root。

    • password云原生多模数据库 Lindorm实例的账号名对应的密码,如果您忘记密码可以通过宽表引擎的集群管理系统修改密码,具体操作请参见修改用户密码

  2. 使用Cassandra CQL Java API访问Lindorm宽表,以下提供访问示例代码。

    • DDL操作

       // 创建keyspace,指定对应strategy, replication factor。
          session.execute(
                      "CREATE KEYSPACE IF NOT EXISTS testKeyspace WITH replication "
                              + "= {'class':'SimpleStrategy', 'replication_factor':1};");
      
       // 创建table,给table指定对应的primary key 以及cluster key 和regular key
          session.execute(
                      "CREATE TABLE IF NOT EXISTS testKeyspace.testTable ("
                              + "id int PRIMARY KEY,"
                              + "name text,"
                              + "age int,"
                              + "address text"
                              + ");");    
      
       //清空表
          session.execute("TRUNCATE TABLE testKeyspace.testTable;");
       //删除表
          session.execute("DROP TABLE testKeyspace.testTable ");
    • DML操作

          // 执行insert 操作
          session.execute(
                      "INSERT INTO testKeyspace.testTable (id, name, age, address) "
                              + "VALUES ("
                              + "1,"
                              + "'testname',"
                              + "11,"
                              + "'hangzhou');");
          // 执行select 操作,这里select * 表示获取所有列,也可以指定需要select 的列名获取对应列数据
          ResultSet res = session.execute(
                      "SELECT * FROM testKeyspace.testTable ;");
      
          // 如果想要获取每一列对应的数据,可以如下操作
          for (Row row : results)
          {
              int id = row.getInt("id");
              String name = row.getString("name");
              int age = row.getInt("age");
              String address = row.getString("address");
          }
      
          // 关闭Session
          session.close();
          // 关闭Cluster
          cluster.close();