Pendahuluan
Anda telah mempelajari cara menggunakan cqlsh untuk mengakses instance ApsaraDB for Cassandra. Namun, dalam praktiknya, Anda mungkin perlu menulis kode untuk mengakses instance tersebut. Dengan cqlsh, Anda hanya dapat terhubung ke satu node dan menjalankan beberapa pernyataan CQL. Untuk skenario yang lebih kompleks, seperti terhubung ke beberapa node Cassandra, mendistribusikan permintaan secara merata ke setiap node, serta mengelola kumpulan koneksi, Anda tidak perlu khawatir karena versi komunitas dari SDK telah mengimplementasikan fitur-fitur ini. Bagian berikut menjelaskan cara menggunakan SDK untuk mengakses instance ApsaraDB for Cassandra.
Sebelum memulai
- Peroleh titik akhir.
Masuk ke Konsol ApsaraDB for Cassandra. Klik Koneksi Database.
- Lihat titik akhir internal. Untuk alasan keamanan, koneksi Internet dinonaktifkan secara default. Untuk mendapatkan titik akhir publik, klik Apply for Public Endpoint.
Catatan Jumlah titik akhir bervariasi berdasarkan ukuran kluster. Gunakan sebanyak mungkin titik akhir untuk mencegah kegagalan koneksi ke kluster akibat kegagalan satu node. Metode untuk mengakses instance ApsaraDB for Cassandra melalui Internet dan jaringan internal hampir identik, kecuali bahwa titik akhir yang digunakan berbeda.
- Tambahkan alamat IP ke daftar putih.
Sebelum mengakses instance ApsaraDB for Cassandra, pastikan Anda telah menambahkan alamat IP klien ke daftar putih. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.
Contoh kode multi-bahasa
- Tambahkan dependensi Maven.
<dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.7.2</version> </dependency>Penting Referensi ini memperkenalkan beberapa pustaka publik. Untuk menghindari masalah yang tidak perlu akibat konflik dependensi, uji dependensi di proyek baru terlebih dahulu. - Tulis kode Java untuk akses.
import com.datastax.driver.core.Cluster; import com.datastax.driver.core.PlainTextAuthProvider; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Session; public class Demo { public static void main(String[] args) { // Masukkan titik akhir publik atau internal dari database. Anda dapat memasukkan sebanyak mungkin titik akhir yang diberikan oleh konsol. // Faktanya, SDK hanya terhubung ke titik akhir pertama yang dapat diakses dan membuat koneksi kontrol. Anda dapat memasukkan beberapa titik akhir untuk mencegah kegagalan koneksi database yang disebabkan oleh kegagalan satu node. // Abaikan urutan titik akhir, karena SDK dapat mengatur ulang urutan titik akhir untuk mencegah klien yang berbeda terhubung ke titik akhir yang sama. // Anda harus memasukkan hanya titik akhir publik atau hanya titik akhir internal. String[] contactPoints = new String[]{ "cds-xxxxxxxx-core-003.cassandra.rds.aliyuncs.com", "cds-xxxxxxxx-core-002.cassandra.rds.aliyuncs.com" }; Cluster cluster = Cluster.builder() .addContactPoints(contactPoints) // Masukkan nama akun dan kata sandi. Jika Anda lupa kata sandi, Anda dapat menyetel ulang kata sandi di halaman Akun. .withAuthProvider(new PlainTextAuthProvider("cassandra", "123456")) // Jika Anda mengakses kluster Cassandra melalui Internet, Anda harus menambahkan @public ke nama akun untuk beralih ke tautan Internet penuh. // Jika tidak, Anda tidak dapat terhubung ke semua node internal melalui Internet, dan pengecualian atau penundaan akan terjadi. Ini memengaruhi pengembangan dan debugging lokal. // Identifikasi otomatis tautan jaringan didukung di masa depan. Ini menghilangkan kebutuhan untuk menambahkan @public secara manual. Untuk informasi lebih lanjut, lihat catatan perubahan di situs resmi. //.withAuthProvider(new PlainTextAuthProvider("cassandra@public", "123456")) .build(); // Inisialisasi kluster. Dalam kasus ini, koneksi kontrol dibuat. Langkah ini bisa diabaikan. Hal ini karena metode init dipanggil secara otomatis saat sesi dibuat. cluster.init(); // Terhubung ke kluster. Kumpulan koneksi persisten dibuat untuk setiap node Cassandra. // Oleh karena itu, membebani untuk membuat satu sesi untuk setiap permintaan. Kami sarankan Anda membuat beberapa sesi terlebih dahulu untuk setiap proses. // Sebagai aturan umum, satu sesi sudah cukup. Anda dapat menyesuaikan berdasarkan kebutuhan aktual Anda. Misalnya, Anda dapat mengelola sesi baca dan tulis secara terpisah. Session session = cluster.connect(); // Kueri tabel terkait izin untuk melihat jumlah peran yang dibuat. // Ini adalah tabel sistem. Secara default, hanya akun superuser cassandra yang memiliki izin SELECT. // Jika Anda menggunakan akun lain untuk pengujian, Anda dapat beralih ke tabel lain atau memberikan izin SELECT ke akun tersebut. ResultSet res = session.execute("SELECT * FROM system_auth.roles"); // ResultSet mengimplementasikan antarmuka Iterable untuk menampilkan setiap baris informasi di konsol. res.forEach(System.out::println); // Tutup sesi. session.close(); // Matikan kluster. cluster.close(); } }
- Instal pustaka SDK.
# Instal versi tertentu. Python 3.x direkomendasikan. pip install cassandra-driver==3.19.0 # Instal versi terbaru. pip install cassandra-driver # https://pypi.org/project/cassandra-driver/#history - Tulis kode Python untuk akses.
#! /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) cluster = Cluster( # Masukkan titik akhir publik atau internal dari database. Anda dapat memasukkan sebanyak mungkin titik akhir yang diberikan oleh konsol. # Faktanya, SDK hanya terhubung ke titik akhir pertama yang dapat diakses dan membuat koneksi kontrol. Anda dapat memasukkan beberapa titik akhir untuk mencegah kegagalan koneksi database yang disebabkan oleh kegagalan satu node. # Abaikan urutan titik akhir, karena SDK dapat mengatur ulang urutan titik akhir untuk mencegah klien yang berbeda terhubung ke titik akhir yang sama. # Anda harus memasukkan hanya titik akhir publik atau hanya titik akhir internal. contact_points=["cds-xxxxxxxx-core-003.cassandra.rds.aliyuncs.com", "cds-xxxxxxxx-core-002.cassandra.rds.aliyuncs.com"], # Masukkan nama akun dan kata sandi. Jika Anda lupa kata sandi, Anda dapat menyetel ulang kata sandi di halaman Akun. auth_provider=PlainTextAuthProvider("cassandra", "123456")) # Jika Anda mengakses kluster Cassandra melalui Internet, Anda harus menambahkan @public ke nama akun untuk beralih ke tautan Internet penuh. # Jika tidak, Anda tidak dapat terhubung ke semua node internal melalui Internet, dan pengecualian atau penundaan akan terjadi. Ini memengaruhi pengembangan dan debugging lokal. # Identifikasi otomatis tautan jaringan didukung di masa depan. Ini menghilangkan kebutuhan untuk menambahkan @public secara manual. Untuk informasi lebih lanjut, lihat catatan perubahan di situs resmi. # auth_provider=PlainTextAuthProvider("cassandra@public", "123456")) # Terhubung ke kluster. Kumpulan koneksi persisten dibuat untuk setiap node Cassandra. # Oleh karena itu, membebani untuk membuat satu sesi untuk setiap permintaan. Kami sarankan Anda membuat beberapa sesi terlebih dahulu untuk setiap proses. # Sebagai aturan umum, satu sesi sudah cukup. Anda dapat menyesuaikan berdasarkan kebutuhan aktual Anda. Misalnya, Anda dapat mengelola sesi baca dan tulis secara terpisah. session = cluster.connect() # Kueri tabel terkait izin untuk melihat jumlah peran yang dibuat. # Ini adalah tabel sistem. Secara default, hanya akun superuser cassandra yang memiliki izin SELECT. # Jika Anda menggunakan akun lain untuk pengujian, Anda dapat beralih ke tabel lain atau memberikan izin SELECT ke akun tersebut. rows = session.execute('SELECT * FROM system_auth.roles') # Tampilkan setiap baris informasi di konsol. for row in rows: print("# row: {}".format(row)) # Tutup sesi. session.shutdown() # Matikan kluster. cluster.shutdown() - Akses dalam Bahasa Pemrograman Lain.
Antarmuka akses untuk bahasa pemrograman lain serupa dengan Python dan Java. Untuk informasi lebih lanjut, lihat dokumentasi komunitas GitHub.