Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mulai menggunakan pustaka klien Azure Cosmos DB for Apache Cassandra untuk Java untuk menyimpan, mengelola, dan mengkueri data yang tidak terstruktur. Ikuti langkah-langkah dalam panduan ini untuk membuat akun baru, menginstal pustaka klien Java, menyambungkan ke akun, melakukan operasi umum, dan mengkueri data sampel akhir Anda.
Dokumentasi referensi API | Kode sumber perpustakaan | Paket (Maven)
Prasyarat
Langganan Azure
- Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Versi terbaru Azure CLI di Azure Cloud Shell.
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
az loginperintah .
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
- Java 21 atau yang lebih baru
Persiapan
Pertama, siapkan akun dan lingkungan pengembangan untuk panduan ini. Bagian ini memandu Anda melalui proses pembuatan akun, mendapatkan kredensial akun, lalu menyiapkan lingkungan pengembangan Anda.
Buat akun
Mulailah dengan membuat API untuk akun Apache Cassandra. Setelah akun dibuat, buat keyspace dan sumber daya tabel.
Jika Anda belum memiliki grup sumber daya target, gunakan
az group createperintah untuk membuat grup sumber daya baru di langganan Anda.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createGunakan perintah untuk membuat akun Azure Cosmos DB for Apache Cassandra baru dengan pengaturan default.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Buat keyspace baru menggunakan
az cosmosdb cassandra keyspace createbernamacosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Buat objek JSON baru untuk mewakili skema Anda menggunakan perintah Bash multibaris. Kemudian, gunakan
az cosmosdb cassandra table createperintah untuk membuat tabel baru bernamaproducts.schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
Mendapatkan kredensial
Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.
Gunakan
az cosmosdb showuntuk mendapatkan titik kontak dan nama pengguna untuk akun tersebut.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Catat nilai
contactPointdanusernameproperti dari keluaran perintah sebelumnya. Nilai properti ini adalah titik kontak dan nama pengguna yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.Gunakan
az cosmosdb keys listuntuk mendapatkan kunci untuk akun tersebut.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Catat nilai
primaryMasterKeyproperti dari output perintah sebelumnya. Nilai properti ini adalah kata sandi yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.
Menyiapkan lingkungan pengembangan
Kemudian, konfigurasikan lingkungan pengembangan Anda dengan proyek baru dan pustaka klien. Langkah ini adalah prasyarat terakhir yang diperlukan sebelum beralih ke sisa panduan ini.
Mulai di direktori kosong.
Buat proyek konsol Java baru menggunakan Maven.
mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseMengimpor paket
java-driver-coredari Maven. Tambahkan bagian ini ke file pom.xml Anda.<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>Buka file /console/src/main/java/quickstart/App.java .
Amati boilerplate aplikasi Java yang ada.
package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }Hapus komentar dan keluaran konsol dari kode dasar. Blok kode ini adalah titik awal untuk sisa panduan ini.
package quickstart; public class App { public static void main(String[] args) { } }Impor namespace
java.security.NoSuchAlgorithmException.import java.security.NoSuchAlgorithmException;Perbarui signature metode
mainuntuk menunjukkan bahwa itu dapat menghasilkan pengecualianNoSuchAlgorithmException.public static void main(String[] args) throws NoSuchAlgorithmException { }Penting
Langkah-langkah yang tersisa dalam panduan ini mengasumsikan bahwa Anda menambahkan kode Anda dalam metode
main.Bangun proyek.
mvn compile
Model objek
| Deskripsi | |
|---|---|
CqlSession |
Mewakili koneksi tertentu ke kluster |
PreparedStatement |
Mewakili pernyataan CQL yang telah dikommpilasikan sebelumnya yang dapat dijalankan beberapa kali secara efisien |
BoundStatement |
Mewakili pernyataan yang disiapkan dengan parameter terikat |
Row |
Mewakili satu baris hasil kueri |
Contoh kode
Mengautentikasi klien
Mulailah dengan mengautentikasi klien menggunakan kredensial yang dikumpulkan sebelumnya dalam panduan ini.
Buka file /console/src/main/java/quickstart/App.java di lingkungan pengembangan terintegrasi (IDE) Anda.
Impor jenis berikut:
java.net.InetSocketAddressjavax.net.ssl.SSLContextcom.datastax.oss.driver.api.core.CqlIdentifiercom.datastax.oss.driver.api.core.CqlSessioncom.datastax.oss.driver.api.core.cql.BoundStatementcom.datastax.oss.driver.api.core.cql.PreparedStatementcom.datastax.oss.driver.api.core.cql.ResultSetcom.datastax.oss.driver.api.core.cql.Row
import java.net.InetSocketAddress; import javax.net.ssl.SSLContext; import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.BoundStatement; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row;Buat variabel string untuk kredensial yang dikumpulkan sebelumnya dalam panduan ini. Beri nama variabel
username, ,passworddancontactPoint. Buat juga variabel string bernamaregionuntuk pusat data lokal.String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";Buat variabel string lain untuk wilayah tempat Anda membuat akun Azure Cosmos DB for Apache Cassandra. Beri nama variabel
regionini .String region = "<region>";Buat
SSLContextobjek untuk memastikan bahwa Anda menggunakan protokol keamanan lapisan transportasi (TLS).SSLContext sslContext = SSLContext.getDefault();Buat objek baru
CqlSessionmenggunakan variabel kredensial dan konfigurasi yang dibuat di langkah-langkah sebelumnya. Atur titik kontak, pusat data lokal, kredensial autentikasi, keyspace, dan konteks Keamanan Lapisan Transportasi (TLS).CqlSession session = CqlSession.builder() .addContactPoint(new InetSocketAddress(contactPoint, 10350)) .withLocalDatacenter(region) .withAuthCredentials(username, password) .withKeyspace(CqlIdentifier.fromCql("cosmicworks")) .withSslContext(sslContext) .build();
Peringatan
Validasi keamanan lapisan transportasi (TLS) lengkap dinonaktifkan dalam panduan ini untuk menyederhanakan autentikasi. Untuk penyebaran produksi, aktifkan validasi sepenuhnya.
Memasukkan atau memperbarui data
Selanjutnya, upsert data baru ke dalam tabel. Upserting memastikan bahwa data dibuat atau diganti dengan tepat tergantung pada apakah data yang sama sudah ada dalam tabel.
Tentukan kelas baru bernama
Productdengan bidang yang sesuai dengan tabel yang dibuat sebelumnya dalam panduan ini.class Product { public String id; public String name; public String category; public int quantity; public boolean clearance; public Product(String id, String name, String category, int quantity, boolean clearance) { this.id = id; this.name = name; this.category = category; this.quantity = quantity; this.clearance = clearance; } @Override public String toString() { return String.format("Product{id='%s', name='%s', category='%s', quantity=%d, clearance=%b}", id, name, category, quantity, clearance); } }Tip
Di Java, Anda dapat membuat jenis ini di file lain atau membuatnya di akhir file yang ada.
Buat objek baru berjenis
Product. Simpan objek dalam variabel bernamaproduct.Product product = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );Buat variabel string baru bernama
insertQuerydengan kueri Cassandra Query Language (CQL) untuk menyisipkan baris baru.String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";Siapkan pernyataan sisipan dan ikat properti produk sebagai parameter.
PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );Lakukan pembaruan atau sisipan produk dengan mengeksekusi pernyataan yang telah diikat.
session.execute(boundInsert);
Baca data
Kemudian, baca data yang sebelumnya diupsert ke dalam tabel.
Buat variabel string baru bernama
readQuerydengan kueri CQL yang cocok dengan item dengan bidang yang samaid.String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";Buat variabel string bernama
iddengan nilai yang sama dengan produk yang dibuat sebelumnya dalam panduan ini.String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";Siapkan pernyataan dan ikat bidang produk
idsebagai parameter.PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);Jalankan pernyataan terikat dan simpan hasilnya dalam variabel bernama
readResult.ResultSet readResult = session.execute(boundRead);Ambil baris pertama dari kumpulan hasil dan petakan ke
Productobjek jika ditemukan.Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Mencari data
Sekarang, gunakan kueri untuk menemukan semua data yang cocok dengan filter tertentu dalam tabel.
Buat variabel string baru bernama
findQuerydengan kueri CQL yang cocok dengan item dengan bidang yang samacategory.String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";Buat variabel string bernama
iddengan nilai yang sama dengan produk yang dibuat sebelumnya dalam panduan ini.String category = "gear-surf-surfboards";Siapkan pernyataan dan ikat kategori produk sebagai parameter.
PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);Jalankan pernyataan terikat dan simpan hasilnya dalam variabel bernama
findResults.ResultSet results = session.execute(boundFind);Ulangi hasil kueri dan petakan setiap baris ke
Productobjek.for (Row result : results) { Product queriedProduct = new Product( result.getString("id"), result.getString("name"), result.getString("category"), result.getInt("quantity"), result.getBoolean("clearance") ); // Do something here with each result }
Tutup sesi
Di Java, Anda diharuskan menutup sesi setelah selesai dengan kueri dan operasi apa pun.
session.close();
Menjalankan kode
Jalankan aplikasi yang baru dibuat menggunakan terminal di direktori aplikasi Anda.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Tip
Pastikan Anda menjalankan perintah ini dalam jalur /console yang dibuat dalam panduan ini.
Membersihkan sumber daya
Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.
Gunakan
az cosmosdb showuntuk mendapatkan titik kontak dan nama pengguna untuk akun tersebut.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Catat nilai
contactPointdanusernameproperti dari keluaran perintah sebelumnya. Nilai properti ini adalah titik kontak dan nama pengguna yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.Gunakan
az cosmosdb keys listuntuk mendapatkan kunci untuk akun tersebut.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Catat nilai
primaryMasterKeyproperti dari output perintah sebelumnya. Nilai properti ini adalah kata sandi yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.