Driver Amazon QLDB untuk Java - Tutorial mulai cepat - Amazon Quantum Ledger Database (Amazon QLDB)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Driver Amazon QLDB untuk Java - Tutorial mulai cepat

Dalam tutorial ini, Anda belajar cara mengatur aplikasi sederhana menggunakan versi terbaru dari driver Amazon QLDB untuk Java. Panduan ini mencakup langkah-langkah untuk menginstal driver dan contoh kode pendek operasi dasar buat, baca, update, and delete (CRUD). Untuk contoh yang lebih mendalam yang menunjukkan operasi ini dalam aplikasi sampel lengkap, lihattutorial java.

Prasyarat

Sebelum memulai, pastikan Anda melakukan hal berikut:

  1. Lengkapi driver Java, jika Anda belum melakukannya.Prasyarat Ini termasuk mendaftarAWS, memberikan akses terprogram untuk pengembangan, dan menginstal Java integrated development environment (IDE).

  2. Buat buku besar bernamaquick-start.

    Untuk mempelajari cara membuat buku besar, lihatOperasi dasar untuk buku besar Amazon QLDB atauLangkah 1: Membuat buku besar baru di Memulai konsol.

Langkah 1: Siapkan proyek Anda

Pertama, siapkan proyek Java Anda. Kami merekomendasikan menggunakan sistem manajemen ketergantungan Maven untuk tutorial ini.

catatan

Jika Anda menggunakan IDE yang memiliki fitur untuk mengotomatiskan langkah-langkah penyiapan ini, Anda dapat melompat ke depanLangkah 2: Inisialisasi driver.

  1. Buat folder untuk aplikasi Anda.

    $ mkdir myproject $ cd myproject
  2. Masukkan perintah berikut untuk menginisialisasi proyek Anda dari template Maven. Ganti project-package, project-name, dan maven-template dengan nilai-nilai Anda sendiri yang sesuai.

    $ mvn archetype:generate -DgroupId=project-package \ -DartifactId=project-name \ -DarchetypeArtifactId=maven-template \ -DinteractiveMode=false

    Untuk maven-template, Anda dapat menggunakan template Maven dasar:maven-archetype-quickstart

  3. Untuk menambahkan driver QLDB untuk Java sebagai ketergantungan proyek, navigasikan kepom.xml file yang baru dibuat dan tambahkan artefak berikut.

    <dependency> <groupId>software.amazon.qldb</groupId> <artifactId>amazon-qldb-driver-java</artifactId> <version>2.3.1</version> </dependency>

    Artefak ini secara otomatis menyertakan modul AWS SDK for Java 2.xinti, pustaka Amazon Ion, dan dependensi lain yang diperlukan. pom.xmlFile Anda sekarang akan terlihat seperti berikut.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>software.amazon.qldb</groupId> <artifactId>qldb-quickstart</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>qldb-quickstart</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>software.amazon.qldb</groupId> <artifactId>amazon-qldb-driver-java</artifactId> <version>2.3.1</version> </dependency> </dependencies> </project>
  4. Buka file App.java.

    Kemudian, secara bertahap menambahkan contoh kode dalam langkah-langkah berikut untuk mencoba beberapa operasi CRUD dasar. Atau, Anda dapat melewati step-by-step tutorial dan sebagai gantinya menjalankan aplikasi lengkap.

Langkah 2: Inisialisasi driver

Inisialisasi instance driver yang terhubung ke buku besar bernamaquick-start. Tambahkan kode berikut keApp.java file Anda.

import java.util.*; import com.amazon.ion.*; import com.amazon.ion.system.*; import software.amazon.awssdk.services.qldbsession.QldbSessionClient; import software.amazon.qldb.*; public final class App { public static IonSystem ionSys = IonSystemBuilder.standard().build(); public static QldbDriver qldbDriver; public static void main(final String... args) { System.out.println("Initializing the driver"); qldbDriver = QldbDriver.builder() .ledger("quick-start") .transactionRetryPolicy(RetryPolicy .builder() .maxRetries(3) .build()) .sessionClientBuilder(QldbSessionClient.builder()) .build(); } }

Langkah 3: Buat tabel dan indeks

Contoh kode berikut menunjukkan cara menjalankanCREATE TABLE danCREATE INDEX pernyataan.

Dalammain metode ini, tambahkan kode berikut yang membuat tabel bernamaPeople dan indeks untuklastName bidang pada tabel itu. Indeks diperlukan untuk mengoptimalkan kinerja kueri dan membantu membatasi pengecualian konflik kontrol konkurensi (OCC) yang optimis.

// Create a table and an index in the same transaction qldbDriver.execute(txn -> { System.out.println("Creating a table and an index"); txn.execute("CREATE TABLE People"); txn.execute("CREATE INDEX ON People(lastName)"); });

Langkah 4: Masukkan dokumen

Contoh kode berikut menunjukkan cara menjalankanINSERT pernyataan. QLDB mendukung bahasa kueri PartiQL (kompatibel dengan SQL) dan format data Amazon Ion (superset JSON).

Tambahkan kode berikut yang menyisipkan dokumen ke dalamPeople tabel.

// Insert a document qldbDriver.execute(txn -> { System.out.println("Inserting a document"); IonStruct person = ionSys.newEmptyStruct(); person.put("firstName").newString("John"); person.put("lastName").newString("Doe"); person.put("age").newInt(32); txn.execute("INSERT INTO People ?", person); });

Contoh ini menggunakan tanda tanya (?) sebagai placeholder variabel untuk meneruskan informasi dokumen untuk pernyataan. Bila Anda menggunakan placeholder, Anda harus lulus nilai jenisIonValue.

Tip

Untuk menyisipkan beberapa dokumen dengan menggunakanSISIPKAN pernyataan tunggal, Anda dapat melewati parameter jenis IonList(secara eksplisit dilemparkan sebagaiIonValue) untuk pernyataan sebagai berikut.

// people is an IonList explicitly cast as an IonValue txn.execute("INSERT INTO People ?", (IonValue) people);

Anda tidak melampirkan variabel placeholder (?) dalam kurung sudut ganda (<<...>>) ketika melewatiIonList. Dalam pernyataan PartiQL manual, kurung sudut ganda menunjukkan koleksi unordered dikenal sebagai tas.

Langkah 5: Cari dokumen

Contoh kode berikut menunjukkan cara menjalankanSELECT pernyataan.

Tambahkan kode berikut yang meminta dokumen dariPeople tabel.

// Query the document qldbDriver.execute(txn -> { System.out.println("Querying the table"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 });

Langkah 6: Perbarui dokumen

Contoh kode berikut menunjukkan cara menjalankanUPDATE pernyataan.

  1. Tambahkan kode berikut yang memperbarui dokumen dalamPeople tabel dengan memperbaruiage ke42.

    // Update the document qldbDriver.execute(txn -> { System.out.println("Updating the document"); final List<IonValue> parameters = new ArrayList<>(); parameters.add(ionSys.newInt(42)); parameters.add(ionSys.newString("Doe")); txn.execute("UPDATE People SET age = ? WHERE lastName = ?", parameters); });
  2. Kueri dokumen lagi untuk melihat nilai yang diperbarui.

    // Query the updated document qldbDriver.execute(txn -> { System.out.println("Querying the table for the updated document"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 });
  3. Gunakan Maven atau IDE Anda untuk menjalankanApp.java file.

Menjalankan aplikasi lengkap

Contoh kode berikut adalah versi lengkap dariApp.java aplikasi. Alih-alih melakukan langkah-langkah sebelumnya secara individual, Anda juga dapat menyalin dan menjalankan contoh kode ini dari awal hingga akhir. Aplikasi ini menunjukkan beberapa operasi CRUD dasar pada buku besar bernamaquick-start.

catatan

Sebelum Anda menjalankan kode ini, pastikan bahwa Anda belum memiliki tabel aktif bernamaPeople dalamquick-start buku besar.

Pada baris pertama, ganti proyek-paket dengangroupId nilai yang Anda gunakan untuk perintah Maven diLangkah 1: Siapkan proyek Anda.

package project-package; import java.util.*; import com.amazon.ion.*; import com.amazon.ion.system.*; import software.amazon.awssdk.services.qldbsession.QldbSessionClient; import software.amazon.qldb.*; public class App { public static IonSystem ionSys = IonSystemBuilder.standard().build(); public static QldbDriver qldbDriver; public static void main(final String... args) { System.out.println("Initializing the driver"); qldbDriver = QldbDriver.builder() .ledger("quick-start") .transactionRetryPolicy(RetryPolicy .builder() .maxRetries(3) .build()) .sessionClientBuilder(QldbSessionClient.builder()) .build(); // Create a table and an index in the same transaction qldbDriver.execute(txn -> { System.out.println("Creating a table and an index"); txn.execute("CREATE TABLE People"); txn.execute("CREATE INDEX ON People(lastName)"); }); // Insert a document qldbDriver.execute(txn -> { System.out.println("Inserting a document"); IonStruct person = ionSys.newEmptyStruct(); person.put("firstName").newString("John"); person.put("lastName").newString("Doe"); person.put("age").newInt(32); txn.execute("INSERT INTO People ?", person); }); // Query the document qldbDriver.execute(txn -> { System.out.println("Querying the table"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 }); // Update the document qldbDriver.execute(txn -> { System.out.println("Updating the document"); final List<IonValue> parameters = new ArrayList<>(); parameters.add(ionSys.newInt(42)); parameters.add(ionSys.newString("Doe")); txn.execute("UPDATE People SET age = ? WHERE lastName = ?", parameters); }); // Query the updated document qldbDriver.execute(txn -> { System.out.println("Querying the table for the updated document"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 42 }); } }

Gunakan Maven atau IDE Anda untuk menjalankanApp.java file.