分錄匯出輸出 QLDB - Amazon Quantum 賬本數據庫(AmazonQLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

分錄匯出輸出 QLDB

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

除了包含QLDB日誌區塊的資料物件之外,Amazon 日誌匯出任務還會寫入兩個資訊清單檔案。這些都儲存在您在匯出請求中提供的 Amazon S3 儲存貯體中。以下各節說明每個輸出物件的格式和內容。

注意

如果指定JSON為匯出任務的輸出格式,請將 Amazon Ion 日誌資料QLDB向下轉換為匯出的資料物件JSON中。如需詳細資訊,請前往向下轉換為 JSON

資訊清單檔案

Amazon QLDB 會為每個匯出請求在提供的 S3 儲存貯體中建立兩個資訊清單檔案。一旦您提交匯出請求,就會立即建立初始資訊清單檔案。最終的資訊清單檔案會在匯出完成後寫入。您可以使用這些檔案來檢查 Amazon S3 中匯出任務的狀態。

資訊清單檔案內容的格式對應於要求的匯出格式。

初始清單

初始資訊清單表示您的匯出工作已開始。它包含您傳遞給請求的輸入參數。除了 Amazon S3 目的地以及匯出的開始和結束時間參數之外,此檔案還包含exportId. 這exportId是QLDB指派給每個匯出工作的唯一 ID。

檔案命名慣例如下。

s3://amzn-s3-demo-bucket/prefix/exportId.started.manifest

以下是初始資訊清單檔案及其內容 (Ion) 文字格式的範例。

s3://amzn-s3-demo-bucket/journalExport/8UyXulxccYLAsbN1aon7e4.started.manifest
{ ledgerName:"my-example-ledger", exportId:"8UyXulxccYLAsbN1aon7e4", inclusiveStartTime:2019-04-15T00:00:00.000Z, exclusiveEndTime:2019-04-15T22:00:00.000Z, bucket:"amzn-s3-demo-bucket", prefix:"journalExport", objectEncryptionType:"NO_ENCRYPTION", outputFormat:"ION_TEXT" }

初始資訊清單outputFormat只包括在匯出要求中指定的資訊清單。如果您未指定輸出格式,則匯出的資料預設為ION_TEXT格式。

DescribeJournalS3 匯出API操作和匯出的 Amazon S3 物件的內容類型也會指出輸出格式。

最終清單

最後的資訊清單表示您已完成特定分錄的匯出工作。匯出工作會為每個鏈條寫入個別的最終資訊清單檔案。

注意

在 Amazon 中QLDB,鏈是分類帳期刊的分區。QLDB目前僅支援具有單鏈的分錄。

最終資訊清單包括匯出期間寫入的資料物件金鑰的排序清單。檔案命名慣例如下。

s3://amzn-s3-demo-bucket/prefix/exportId.strandId.completed.manifest

strandId是指QLDB派給鏈的唯一 ID。以下是 Ion 文本格式的最終清單文件及其內容的示例。

s3://amzn-s3-demo-bucket/journalExport/8UyXulxccYLAsbN1aon7e4.JdxjkR9bSYB5jMHWcI464T.completed.manifest
{ keys:[ "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-4.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.5-10.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.11-12.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.13-20.ion", "2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.21-21.ion" ] }

資料物件

Amazon QLDB 會以 Amazon Ion 格式的文字或二進位表示形式或JSON線文字格式,在提供的 Amazon S3 儲存貯體中寫入日誌資料物件。

在JSON行格式中,匯出的資料物件中的每個區塊都是由換行符分隔的有效JSON物件。您可以使用此格式直接整合JSON匯出與分析工具,例如 Amazon Athena 和 AWS Glue 因為這些服務可以自動解析換行符分隔JSON。若要取得有關格式的詳細資訊,請參閱〈JSON線〉。

資料物件名稱

分錄匯出工作會以下列命名慣例寫入這些資料物件。

s3://amzn-s3-demo-bucket/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion|.json
  • 每個匯出工作的輸出資料都會分解為區塊。

  • yyyy/mm/dd/hh— 您提交導出請求的日期和時間。在同一小時內匯出的物件會分組在相同的 Amazon S3 前置詞下。

  • strandId— 包含要匯出之日誌區塊之特定鏈的唯一 ID。

  • startSn-endSn— 包含在物件中的序列號範圍。序號指定圖塊在鏈中的位置。

例如,假設您指定了下列路徑。

s3://amzn-s3-demo-bucket/journalExport/

您的匯出任務會建立類似下列內容的 Amazon S3 資料物件。此範例顯示 Ion 格式的物件名稱。

s3://amzn-s3-demo-bucket/journalExport/2019/04/15/22/JdxjkR9bSYB5jMHWcI464T.1-5.ion

資料物件內容

每個資料物件都包含具有以下格式的分錄圖塊物件。

{ blockAddress: { strandId: String, sequenceNo: Int }, transactionId: String, blockTimestamp: Datetime, blockHash: SHA256, entriesHash: SHA256, previousBlockHash: SHA256, entriesHashList: [ SHA256 ], transactionInfo: { statements: [ { //PartiQL statement object } ], documents: { //document-table-statement mapping object } }, revisions: [ { //document revision object } ] }

區塊是在交易期間認可至日誌的物件。區塊包含交易中繼資料,以及代表交易中認可之文件修訂的項目,以及認可它們的 PartiQL 陳述式。

以下是具有 Ion 文本格式樣本數據的塊的示例。若要取得有關圖塊物件中功能變數的資訊,請參閱〈〉Amazon 的期刊內容 QLDB

注意

此區塊範例僅供參考。顯示的雜湊不是實際計算的雜湊值。

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, transactionId:"D35qctdJRU1L1N2VhxbwSn", blockTimestamp:2019-10-25T17:20:21.009Z, blockHash:{{WYLOfZClk0lYWT3lUsSr0ONXh+Pw8MxxB+9zvTgSvlQ=}}, entriesHash:{{xN9X96atkMvhvF3nEy6jMSVQzKjHJfz1H3bsNeg8GMA=}}, previousBlockHash:{{IAfZ0h22ZjvcuHPSBCDy/6XNQTsqEmeY3GW0gBae8mg=}}, entriesHashList:[ {{F7rQIKCNn0vXVWPexilGfJn5+MCrtsSQqqVdlQxXpS4=}}, {{C+L8gRhkzVcxt3qRJpw8w6hVEqA5A6ImGne+E7iHizo=}} ], transactionInfo:{ statements:[ { statement:"CREATE TABLE VehicleRegistration", startTime:2019-10-25T17:20:20.496Z, statementDigest:{{3jeSdejOgp6spJ8huZxDRUtp2fRXRqpOMtG43V0nXg8=}} }, { statement:"CREATE INDEX ON VehicleRegistration (VIN)", startTime:2019-10-25T17:20:20.549Z, statementDigest:{{099D+5ZWDgA7r+aWeNUrWhc8ebBTXjgscq+mZ2dVibI=}} }, { statement:"CREATE INDEX ON VehicleRegistration (LicensePlateNumber)", startTime:2019-10-25T17:20:20.560Z, statementDigest:{{B73tVJzVyVXicnH4n96NzU2L2JFY8e9Tjg895suWMew=}} }, { statement:"INSERT INTO VehicleRegistration ?", startTime:2019-10-25T17:20:20.595Z, statementDigest:{{ggpon5qCXLo95K578YVhAD8ix0A0M5CcBx/W40Ey/Tk=}} } ], documents:{ '8F0TPCmdNQ6JTRpiLj2TmW':{ tableName:"VehicleRegistration", tableId:"BPxNiDQXCIB5l5F68KZoOz", statements:[3] } } }, revisions:[ { hash:{{FR1IWcWew0yw1TnRklo2YMF/qtwb7ohsu5FD8A4DSVg=}} }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:1234 }, hash:{{t8Hj6/VC4SBitxnvBqJbOmrGytF2XAA/1c0AoSq2NQY=}}, data:{ VIN:"1N4AL11D75C109151", LicensePlateNumber:"LEWISR261LL", State:"WA", City:"Seattle", PendingPenaltyTicketAmount:90.25, ValidFromDate:2017-08-21, ValidToDate:2020-05-11, Owners:{ PrimaryOwner:{ PersonId:"GddsXfIYfDlKCEprOLOwYt" }, SecondaryOwners:[] } }, metadata:{ id:"8F0TPCmdNQ6JTRpiLj2TmW", version:0, txTime:2019-10-25T17:20:20.618Z, txId:"D35qctdJRU1L1N2VhxbwSn" } } ] }

revisions欄位中,某些版本修訂物件可能只包含hash值,而不包含其他屬性。這些是不包含使用者資料的僅限內部系統修訂。匯出工作會將這些修訂包含在各自的區塊中,因為這些修訂的雜湊是日誌完整雜湊鏈的一部分。密碼編譯驗證需要完整的雜湊鏈。

向下轉換為 JSON

如果指定JSON為匯出任務的輸出格式,請將 Amazon Ion 日誌資料QLDB向下轉換為匯出的資料物件JSON中。但JSON是,在數據使用中不存在的豐富 Ion 類型的某些情況下,將 Ion 轉換為是有損的JSON。

有關離子到轉JSON換規則的詳細信息,請參閱 Amazon 離子食譜JSON中的向下轉換為。

匯出處理器程式庫 (Java)

QLDB為 Java 提供了一個可擴展的框架,可簡化 Amazon S3 中的匯出處理。這個框架庫處理讀取導出的輸出並按順序遍歷導出的塊的工作。要使用此導出處理器,請參閱 GitHub 存儲庫 awslab amazon-qldb-export-processor s/-java。