Amazon QLDB Driver pour Java — Tutoriel de démarrage rapide - Base de données Amazon Quantum Ledger (AmazonQLDB)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Amazon QLDB Driver pour Java — Tutoriel de démarrage rapide

Important

Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre.

Dans ce didacticiel, vous apprendrez à configurer une application simple à l'aide de la dernière version du QLDB pilote Amazon pour Java. Ce guide inclut les étapes d'installation du pilote et des exemples de code abrégé des opérations de base de création, de lecture, de mise à jour et de suppression (CRUD). Pour des exemples plus détaillés illustrant ces opérations dans un exemple complet d'application, consultez leTutoriel Java.

Prérequis

Avant de commencer, assurez-vous d'effectuer les opérations suivantes :

  1. Complétez le Prérequis pour le pilote Java, si ce n'est déjà fait. Cela inclut l'inscription AWS, l'octroi d'un accès programmatique pour le développement et l'installation d'un environnement de développement intégré Java (IDE).

  2. Créez un registre nomméquick-start.

    Pour savoir comment créer un registre, voir Opérations de base pour Amazon QLDB Ledgers ou Étape 1 : Création d'un nouveau registre dans Commencer à utiliser la console.

Étape 1 : Configurer votre projet

Configurez d'abord votre projet Java. Nous vous recommandons d'utiliser le système de gestion des dépendances Maven pour ce didacticiel.

Note

Si vous utilisez un IDE logiciel doté de fonctionnalités pour automatiser ces étapes de configuration, vous pouvez passer àÉtape 2 : Initialisation du pilote.

  1. Créez un dossier pour votre application.

    $ mkdir myproject $ cd myproject
  2. Entrez la commande suivante pour initialiser votre projet à partir d'un modèle Maven. Remplacez project-package, project-name, et maven-template avec vos propres valeurs, le cas échéant.

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

    Dans maven-template, vous pouvez utiliser le modèle Maven de base : maven-archetype-quickstart

  3. Pour ajouter le QLDBpilote Java en tant que dépendance du projet, accédez au pom.xml fichier que vous venez de créer et ajoutez l'artefact suivant.

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

    Cet artefact inclut automatiquement le module AWS SDK for Java 2.xprincipal, les bibliothèques Amazon Ion et les autres dépendances requises. Votre pom.xml fichier doit maintenant ressembler à ce qui suit.

    <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. Ouvrez le fichier App.java.

    Ajoutez ensuite progressivement les exemples de code dans les étapes suivantes pour essayer certaines CRUD opérations de base. Vous pouvez également ignorer le step-by-step didacticiel et exécuter l'application complète à la place.

Étape 2 : Initialisation du pilote

Initialisez une instance du pilote qui se connecte au registre nommé. quick-start Ajoutez le code suivant à votre App.java fichier.

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

Étape 3 : Création d'une table et d'un index

L'exemple de code suivant montre comment exécuter CREATE TABLE des CREATE INDEX instructions.

Dans la main méthode, ajoutez le code suivant qui crée une table nommée People et un index pour le lastName champ de cette table. Les index sont nécessaires pour optimiser les performances des requêtes et aider à limiter les exceptions de conflit optimistes en matière de contrôle de simultanéité (OCC).

// 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)"); });

Étape 4 : Insérer un document

L'exemple de code suivant montre comment exécuter une INSERT instruction. QLDBprend en charge le langage de requête partiQL (SQLcompatible) et le format de données Amazon Ion (surensemble de). JSON

Ajoutez le code suivant qui insère un document dans le People tableau.

// 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); });

Cet exemple utilise un point d'interrogation (?) comme espace réservé aux variables pour transmettre les informations du document à l'instruction. Lorsque vous utilisez des espaces réservés, vous devez transmettre une valeur de typeIonValue.

Astuce

Pour insérer plusieurs documents à l'aide d'une seule INSERT instruction, vous pouvez transmettre un paramètre de type IonList(explicitement converti en tant queIonValue) à l'instruction comme suit.

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

Vous ne placez pas la variable placeholder (?) entre crochets (<<...>>) lorsque vous passez un. IonList Dans les instructions partiQL manuelles, les crochets à double angle indiquent une collection non ordonnée appelée sac.

Étape 5 : Interrogez le document

L'exemple de code suivant montre comment exécuter une SELECT instruction.

Ajoutez le code suivant qui interroge un document à partir de la People table.

// 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 });

Étape 6 : Mettre à jour le document

L'exemple de code suivant montre comment exécuter une UPDATE instruction.

  1. Ajoutez le code suivant qui met à jour un document du People tableau en le mettant à jour age vers42.

    // 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. Interrogez à nouveau le document pour voir la valeur mise à jour.

    // 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. Utilisez Maven ou votre IDE pour compiler et exécuter le App.java fichier.

Exécution de l'application complète

L'exemple de code suivant représente la version complète de l'App.javaapplication. Au lieu d'effectuer les étapes précédentes individuellement, vous pouvez également copier et exécuter cet exemple de code du début à la fin. Cette application montre certaines CRUD opérations de base sur le registre nomméquick-start.

Note

Avant d'exécuter ce code, assurez-vous qu'aucune table active n'est déjà nommée People dans le quick-start registre.

Sur la première ligne, remplacez project-package avec la groupId valeur que vous avez utilisée pour la commande Maven dansÉtape 1 : Configurer votre projet .

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

Utilisez Maven ou votre IDE pour compiler et exécuter le App.java fichier.