全部產品
Search
文件中心

Lindorm:基於Cassandra CQL Java Driver的應用開發

更新時間:Jul 06, 2024

本文介紹通過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

    • usernameLindorm執行個體的帳號名,預設為root。

    • passwordLindorm執行個體的帳號名對應的密碼,如果您忘記密碼可以通過寬表引擎的叢集管理系統修改密碼,具體操作請參見修改使用者密碼

  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();