Cassandra Query Language (CQL) を使用して LindormTable に接続するには、Python、C++、Node.js、Go など、ご利用のプログラミング言語に対応した公式 Cassandra クライアントドライバーをご利用ください。
前提条件
開始する前に、以下の準備が完了していることを確認してください。
LindormTable の CQL 接続アドレスを取得済みであること。

対象言語向けの公式ドライバーパッケージがインストール済みであること。対応ドライバーの一覧については、「Cassandra クライアントドライバー」をご参照ください。
Python を使用した接続
ドライバーのインストール
DataStax 社提供の Python ドライバーをインストールします。バージョン 3.x を推奨します。
# 特定バージョンのインストール(推奨)
pip install cassandra-driver==3.19.0
# 最新バージョンのインストール
pip install cassandra-driverインストールを確認します。
python -c "import cassandra; print(cassandra.__version__)"このコマンドは、インストール済みのバージョン番号(例: 3.19.0)を表示します。
接続とクエリの実行
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import logging
import sys
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
# LindormTable の CQL エンドポイントでクラスターを初期化します。
# ポート番号の指定は不要です。
cluster = Cluster(
contact_points=["ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com"],
auth_provider=PlainTextAuthProvider("cassandra", "****"))
session = cluster.connect()
# キースペースを作成します。
session.execute(
"CREATE KEYSPACE IF NOT EXISTS testKeyspace WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};")
# テーブルを作成します。
session.execute(
"CREATE TABLE IF NOT EXISTS testKeyspace.testTable (id int PRIMARY KEY, name text, age int, address text);")
# 1 行を挿入します。
session.execute(
"INSERT INTO testKeyspace.testTable (id, name, age, address) VALUES (1, 'testname', 11, 'hangzhou');")
# 行をクエリします。
rows = session.execute("SELECT * FROM testKeyspace.testTable;")
for row in rows:
print("Row: {}".format(row))
# リソースを解放します。
session.shutdown()
cluster.shutdown()C++ を使用した接続
ドライバーのダウンロード
DataStax 社提供の C++ ドライバーを「datastax/cpp-driver」からダウンロードします。
接続とクエリの実行
CassFuture* connect_future = NULL;
CassCluster* cluster = cass_cluster_new();
CassSession* session = cass_session_new();
// LindormTable の CQL エンドポイントを指定します。ポート番号の指定は不要です。
const char* hosts = "ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com";
cass_cluster_set_contact_points(cluster, hosts);
connect_future = cass_session_connect(session, cluster);
if (cass_future_error_code(connect_future) == CASS_OK) {
// SELECT クエリを実行します。
const char* query = "SELECT name FROM testKeyspace.testTable";
CassStatement* statement = cass_statement_new(query, 0);
CassFuture* result_future = cass_session_execute(session, statement);
if (cass_future_error_code(result_future) == CASS_OK) {
// 結果を処理します。
const CassResult* result = cass_future_get_result(result_future);
const CassRow* row = cass_result_first_row(result);
if (row) {
const CassValue* value = cass_row_get_column_by_name(row, "name");
const char* name;
size_t name_length;
cass_value_get_string(value, &name, &name_length);
printf("release_version: '%.*s'\n", (int)name_length, name);
}
cass_result_free(result);
} else {
// クエリエラーを処理します。
const char* message;
size_t message_length;
cass_future_error_message(result_future, &message, &message_length);
fprintf(stderr, "クエリを実行できませんでした: '%.*s'\n", (int)message_length, message);
}
cass_statement_free(statement);
cass_future_free(result_future);
// セッションを閉じ、リソースを解放します。
CassFuture* close_future = cass_session_close(session);
cass_future_wait(close_future);
cass_future_free(close_future);
} else {
// 接続エラーを処理します。
const char* message;
size_t message_length;
cass_future_error_message(connect_future, &message, &message_length);
fprintf(stderr, "接続できませんでした: '%.*s'\n", (int)message_length, message);
}
cass_future_free(connect_future);
cass_cluster_free(cluster);
cass_session_free(session);Node.js を使用した接続
ドライバーのインストール
npm install cassandra-driver接続とクエリの実行
localDataCenter を datacenter1 に設定します。ドライバーは Promise を返すため、.then() チェーンまたは async/await のいずれかを自由に使用できます。
const cassandra = require('cassandra-driver');
// クライアントを初期化します。エンドポイントにはポート番号を含める必要はありません。
// localDataCenter を 'datacenter1' に設定します。
const client = new cassandra.Client({
contactPoints: ['ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com'],
localDataCenter: 'datacenter1',
credentials: { username: 'Username', password: 'Password' }
});
client.connect()
.then(() => client.execute("CREATE KEYSPACE IF NOT EXISTS lindormtest WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2' }"))
.then(() => client.execute("CREATE TABLE IF NOT EXISTS lindormtest.nodejs (name text PRIMARY KEY, age int)"))
.then(() => client.execute("INSERT INTO lindormtest.nodejs (name, age) VALUES ('lindorm', 10)"))
.then(() => client.execute("SELECT name, age FROM lindormtest.nodejs WHERE name = 'lindorm'"))
.then(result => {
const row = result.first();
console.log('Row:', row);
})
.finally(() => client.shutdown());Go を使用した接続
ドライバーのインストール
go get github.com/gocql/gocql接続とクエリの実行
package main
import (
"fmt"
"log"
"github.com/gocql/gocql"
)
func main() {
// LindormTable の CQL エンドポイントを指定します。ポート番号の指定は不要です。
cluster := gocql.NewCluster("ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com")
cluster.Authenticator = gocql.PasswordAuthenticator{
Username: "Username",
Password: "Password",
}
session, err := cluster.CreateSession()
if err != nil {
log.Fatal(err)
}
defer session.Close()
// キースペースを作成します。
if err := session.Query(`CREATE KEYSPACE ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2}`).Exec(); err != nil {
log.Fatal(err)
}
// テーブルを作成します。
if err := session.Query(`CREATE TABLE ks.tb (cn1 text PRIMARY KEY, cn2 text, cn3 text)`).Exec(); err != nil {
log.Fatal(err)
}
// 1 行を挿入します。
if err := session.Query(`INSERT INTO ks.tb (cn1, cn2, cn3) VALUES (?, ?, ?)`,
"v11", "v12", "v13").Exec(); err != nil {
log.Fatal(err)
}
// 1 行をクエリします。
var column1, column2 string
if err := session.Query(`SELECT cn1, cn2 FROM ks.tb WHERE cn1 = ?`,
"v11").Consistency(gocql.One).Scan(&column1, &column2); err != nil {
log.Fatal(err)
}
fmt.Println("Row:", column1, column2)
// 条件に一致するすべての行を反復処理します。
var column3 string
iter := session.Query(`SELECT * FROM ks.tb WHERE cn1 = ?`, "v11").Iter()
for iter.Scan(&column1, &column2, &column3) {
fmt.Println("Row:", column1, column2, column3)
}
if err := iter.Close(); err != nil {
log.Fatal(err)
}
}