Paso 4: Consultar las tablas de un libro mayor - Amazon Quantum Ledger Database (Amazon QLDB)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 4: Consultar las tablas de un libro mayor

Después de crear tablas en un libro mayor de Amazon QLDB y cargarlas con datos, puede ejecutar consultas para revisar los datos de registro del vehículo que acaba de insertar. Usos de QLDBQL de PartiQLcomo lenguaje de consulta yAmazon Ioncomo modelo de datos orientado a documentos.

PartiQL es un lenguaje de consulta de código abierto compatible con SQL que se ha ampliado para funcionar con Ion. Con PartiQL, puede insertar, consultar y administrar sus datos con operadores SQL conocidos. Amazon Ion es un superconjunto de JSON. Ion es un formato de datos de código abierto basado en documentos que le brinda la flexibilidad de almacenar y procesar datos estructurados, semiestructurados y anidados.

En este paso, utiliceSELECTinstrucciones para leer datos de las tablas delvehicle-registrationlibro mayor.

aviso

Cuando ejecuta una consulta en QLDB sin una búsqueda indexada, invoca un análisis de tabla completo. PartiQL admite tales consultas porque es compatible con SQL. Sin embargo,Don'tanálisis de tablas de ejecución en busca de casos de uso de producción en QLDB. Los análisis de tablas pueden provocar problemas de rendimiento en tablas grandes, incluidos conflictos de simultaneidad y tiempos de espera de transacciones.

Para evitar los análisis de tablas, debe ejecutar sentencias con unWHEREcláusula predicado mediante unigualdadoperador en un campo indexado o un ID de documento; por ejemplo,WHERE indexedField = 123oWHERE indexedField IN (456, 789). Para obtener más información, consulte Optimización del rendimiento de consultas.

Para consultar las tablas

  1. Utilice el siguiente programa (FindVehicles.ts) para consultar todos los vehículos registrados bajo una persona en su libro mayor.

    /* * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: MIT-0 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the Software * without restriction, including without limitation the rights to use, copy, modify, * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import { QldbDriver, Result, TransactionExecutor } from "amazon-qldb-driver-nodejs"; import { dom } from "ion-js"; import { getQldbDriver } from "./ConnectToLedger"; import { PERSON } from "./model/SampleData"; import { PERSON_TABLE_NAME } from "./qldb/Constants"; import { error, log } from "./qldb/LogUtil"; import { getDocumentId } from "./qldb/Util"; import { prettyPrintResultList } from "./ScanTable"; /** * Query 'Vehicle' and 'VehicleRegistration' tables using a unique document ID in one transaction. * @param txn The {@linkcode TransactionExecutor} for lambda execute. * @param govId The owner's government ID. * @returns Promise which fulfills with void. */ async function findVehiclesForOwner(txn: TransactionExecutor, govId: string): Promise<void> { const documentId: string = await getDocumentId(txn, PERSON_TABLE_NAME, "GovId", govId); const query: string = "SELECT Vehicle FROM Vehicle INNER JOIN VehicleRegistration AS r " + "ON Vehicle.VIN = r.VIN WHERE r.Owners.PrimaryOwner.PersonId = ?"; await txn.execute(query, documentId).then((result: Result) => { const resultList: dom.Value[] = result.getResultList(); log(`List of vehicles for owner with GovId: ${govId}`); prettyPrintResultList(resultList); }); } /** * Find all vehicles registered under a person. * @returns Promise which fulfills with void. */ const main = async function(): Promise<void> { try { const qldbDriver: QldbDriver = getQldbDriver(); await qldbDriver.executeLambda(async (txn: TransactionExecutor) => { await findVehiclesForOwner(txn, PERSON[0].GovId); }); } catch (e) { error(`Error getting vehicles for owner: ${e}`); } } if (require.main === module) { main(); }
    nota

    En primer lugar, este programa consulta elPersontabla para el documento conGovId LEWISR261LLpara obtener suidcampo de metadatos.

    A continuación, utiliza este documentoidcomo clave externa para consultar elVehicleRegistrationtable dePrimaryOwner.PersonId. También se uneVehicleRegistrationconVehiclemesa sobre elVIN.

  2. Para ejecutar el programa transpired, introduzca el siguiente comando.

    node dist/FindVehicles.js

Para obtener más información sobre la modificación de documentos en las tablas delvehicle-registrationcontabilidad, consultePaso 5: Modificación de documentos de un libro mayor.