本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
分錄匯出輸出 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