本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 資料表匯出內容除了包含資料表資料的檔案之外,還包括資訊清單檔案。這些檔案全都儲存於您在匯出請求中指定的 Amazon S3 儲存貯體。以下各節說明每個輸出物件的格式和內容。
主題
資訊清單檔案
DynamoDB 會針對每次匯出請求,在指定的 S3 儲存貯體中建立資訊清單檔案及其檢查總和檔案。
export-prefix
/AWSDynamoDB/ExportId
/manifest-summary.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-summary.checksumexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.checksum
在請求資料表匯出時,您可以選擇 export-prefix
。其有助於您在目的地 S3 儲存貯體中整理檔案。ExportId
是由服務產生的唯一權杖,可確保匯出至相同 S3 儲存貯體和 export-prefix
的多筆資料不會相互覆寫。
此匯出功能會為每個分割區建立至少 1 個檔案。對於空白的分割區,您的匯出請求將會建立空白檔案。每個檔案的所有項目都來自該特定分割區的雜湊金鑰空間。
注意
DynamoDB 也會在資訊清單檔案所在的相同目錄中建立名為 _started
的空白檔案。此檔案驗證目的地儲存貯體可寫入並已開始進行匯出。您可以安全地刪除此檔案。
摘要資訊清單
manifest-summary.json
檔案包含匯出任務的摘要資訊。這可讓您知道共用資料資料夾中的哪些資料檔案與此匯出相關聯。其格式如下:
{
"version": "2020-06-30",
"exportArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4",
"startTime": "2020-11-04T07:28:34.028Z",
"endTime": "2020-11-04T07:33:43.897Z",
"tableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog",
"tableId": "12345a12-abcd-123a-ab12-1234abc12345",
"exportTime": "2020-11-04T07:28:34.028Z",
"s3Bucket": "ddb-productcatalog-export",
"s3Prefix": "2020-Nov",
"s3SseAlgorithm": "AES256",
"s3SseKmsKeyId": null,
"manifestFilesS3Key": "AWSDynamoDB/01693685827463-2d8752fd/manifest-files.json",
"billedSizeBytes": 0,
"itemCount": 8,
"outputFormat": "DYNAMODB_JSON",
"exportType": "FULL_EXPORT"
}
檔案資訊清單
manifest-files.json
檔案包含內含匯出資料表資料的檔案資訊。檔案為JSON行
{
"itemCount": 8,
"md5Checksum": "sQMSpEILNgoQmarvDFonGQ==",
"etag": "af83d6f217c19b8b0fff8023d8ca4716-1",
"dataFileS3Key": "AWSDynamoDB/01693685827463-2d8752fd/data/asdl123dasas.json.gz"
}
資料檔案
DynamoDB 可以兩種格式匯出資料表資料:DynamoDB JSON和 Amazon Ion。無論選擇哪種格式,您的資料都會寫入多個以金鑰命名的壓縮檔案。這些檔案也會在 manifest-files.json
檔案中列出。
完全匯出後 Amazon S3 儲存貯體的目錄結構,將包含匯出 ID 資料夾下的所有資訊清單檔案和資料檔案。
amzn-s3-demo-bucket/DestinationPrefix . └── AWSDynamoDB ├── 01693685827463-2d8752fd // the single full export │ ├── manifest-files.json // manifest points to files under 'data' subfolder │ ├── manifest-files.checksum │ ├── manifest-summary.json // stores metadata about request │ ├── manifest-summary.md5 │ ├── data // The data exported by full export │ │ ├── asdl123dasas.json.gz │ │ ... │ └── _started // empty file for permission check
DynamoDB JSON
DynamoDB JSON 格式的資料表匯出包含多個Item
物件。每個物件都是 DynamoDB 的標準調度JSON格式。
為 DynamoDB JSON 匯出資料建立自訂剖析器時,格式為 JSON行
在下列範例中,DynamoDB JSON 匯出的單一項目已針對多行進行格式化,以求可讀性。
{
"Item":{
"Authors":{
"SS":[
"Author1",
"Author2"
]
},
"Dimensions":{
"S":"8.5 x 11.0 x 1.5"
},
"ISBN":{
"S":"333-3333333333"
},
"Id":{
"N":"103"
},
"InPublication":{
"BOOL":false
},
"PageCount":{
"N":"600"
},
"Price":{
"N":"2000"
},
"ProductCategory":{
"S":"Book"
},
"Title":{
"S":"Book 103 Title"
}
}
}
Amazon Ion
Amazon Ion
將資料表匯出成 Ion 格式時,資料表中使用的 DynamoDB 資料類型會映射至 Ion 資料類型
下表列出 DynamoDB 資料類型與離子資料類型的映射:
DynamoDB 資料類型 | Ion 表示法 |
---|---|
String (S) | string |
布林值 (BOOL) | bool |
Number (N) | decimal |
Binary (B) | blob |
Set (SS、NS、BS) | list (包含類型註解 $dynamodb_SS、$dynamodb_NS 或 $dynamodb_BS) |
清單 | list |
Map | struct |
Ion 匯出中的項目以新行分隔。每行都以 Ion 版本標記開頭,後面接著 Ion 格式的項目。在下列範例中,為了便於閱讀,Ion 匯出的項目採用多行格式。
$ion_1_0 {
Item:{
Authors:$dynamodb_SS::["Author1","Author2"],
Dimensions:"8.5 x 11.0 x 1.5",
ISBN:"333-3333333333",
Id:103.,
InPublication:false,
PageCount:6d2,
Price:2d3,
ProductCategory:"Book",
Title:"Book 103 Title"
}
}
資訊清單檔案
DynamoDB 會針對每次匯出請求,在指定的 S3 儲存貯體中建立資訊清單檔案及其檢查總和檔案。
export-prefix
/AWSDynamoDB/ExportId
/manifest-summary.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-summary.checksumexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.jsonexport-prefix
/AWSDynamoDB/ExportId
/manifest-files.checksum
在請求資料表匯出時,您可以選擇 export-prefix
。其有助於您在目的地 S3 儲存貯體中整理檔案。ExportId
是由服務產生的唯一權杖,可確保匯出至相同 S3 儲存貯體和 export-prefix
的多筆資料不會相互覆寫。
此匯出功能會為每個分割區建立至少 1 個檔案。對於空白的分割區,您的匯出請求將會建立空白檔案。每個檔案的所有項目都來自該特定分割區的雜湊金鑰空間。
注意
DynamoDB 也會在資訊清單檔案所在的相同目錄中建立名為 _started
的空白檔案。此檔案驗證目的地儲存貯體可寫入並已開始進行匯出。您可以安全地刪除此檔案。
摘要資訊清單
manifest-summary.json
檔案包含匯出任務的摘要資訊。這可讓您知道共用資料資料夾中的哪些資料檔案與此匯出相關聯。其格式如下:
{
"version": "2023-08-01",
"exportArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test/export/01695097218000-d6299cbd",
"startTime": "2023-09-19T04:20:18.000Z",
"endTime": "2023-09-19T04:40:24.780Z",
"tableArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test",
"tableId": "b116b490-6460-4d4a-9a6b-5d360abf4fb3",
"exportFromTime": "2023-09-18T17:00:00.000Z",
"exportToTime": "2023-09-19T04:00:00.000Z",
"s3Bucket": "jason-exports",
"s3Prefix": "20230919-prefix",
"s3SseAlgorithm": "AES256",
"s3SseKmsKeyId": null,
"manifestFilesS3Key": "20230919-prefix/AWSDynamoDB/01693685934212-ac809da5/manifest-files.json",
"billedSizeBytes": 20901239349,
"itemCount": 169928274,
"outputFormat": "DYNAMODB_JSON",
"outputView": "NEW_AND_OLD_IMAGES",
"exportType": "INCREMENTAL_EXPORT"
}
檔案資訊清單
manifest-files.json
檔案包含內含匯出資料表資料的檔案資訊。檔案為JSON行
{
"itemCount": 8,
"md5Checksum": "sQMSpEILNgoQmarvDFonGQ==",
"etag": "af83d6f217c19b8b0fff8023d8ca4716-1",
"dataFileS3Key": "AWSDynamoDB/data/sgad6417s6vss4p7owp0471bcq.json.gz"
}
資料檔案
DynamoDB 可以兩種格式匯出資料表資料:DynamoDB JSON和 Amazon Ion。無論選擇哪種格式,您的資料都會寫入多個以金鑰命名的壓縮檔案。這些檔案也會在 manifest-files.json
檔案中列出。
增量匯出的資料檔案全部包含在 S3 儲存貯體的常用資料資料夾中。您的資訊清單檔案會在匯出 ID 資料夾下。
amzn-s3-demo-bucket/DestinationPrefix . └── AWSDynamoDB ├── 01693685934212-ac809da5 // an incremental export ID │ ├── manifest-files.json // manifest points to files under 'data' folder │ ├── manifest-files.checksum │ ├── manifest-summary.json // stores metadata about request │ ├── manifest-summary.md5 │ └── _started // empty file for permission check ├── 01693686034521-ac809da5 │ ├── manifest-files.json │ ├── manifest-files.checksum │ ├── manifest-summary.json │ ├── manifest-summary.md5 │ └── _started ├── data // stores all the data files for incremental exports │ ├── sgad6417s6vss4p7owp0471bcq.json.gz │ ...
在匯出檔案中,每個項目的輸出都包含時間戳記,代表該項目在您的資料表中更新的時間,還有指出該項目是 insert
、update
或 delete
操作的資料結構。時間戳記是以內部系統時鐘為基礎,且可能因應用程式時脈而有所不同。對於增量匯出,您可以為輸出結構選擇兩種匯出檢視類型:新舊映像或僅限新映像。
-
新映像提供項目的最新狀態
-
舊映像提供項目在指定的開始日期和時間之前的狀態
如果您想要查看項目在匯出期間內的變更情形,檢視類型會很有幫助。它對於有效率地更新下游系統來說也很實用,特別是在這些下游系統的分割區索引鍵與 DynamoDB 分割區索引鍵不同的情況下。
您可以藉由查看輸出的結構,推斷增量匯出輸出中的項目是 insert
、update
或 delete
。下表針對兩種匯出檢視類型摘要說明增量匯出結構及其對應操作。
作業 | 僅限新映像 | 新舊映像 |
---|---|---|
Insert |
按鍵 + 新映像 |
按鍵 + 新映像 |
更新 |
按鍵 + 新映像 | 金鑰 + 新映像 + 舊映像 |
Delete | 鍵 | 按鍵 + 舊映像 |
Insert + delete | 無輸出 | 無輸出 |
DynamoDB JSON
DynamoDB JSON 格式的資料表匯出包含中繼資料時間戳記,指出項目的寫入時間,後面接著項目的索引鍵和值。以下顯示使用匯出檢視類型作為新舊映像的範例 DynamoDB JSON輸出。
// Ex 1: Insert
// An insert means the item did not exist before the incremental export window
// and was added during the incremental export window
{
"Metadata": {
"WriteTimestampMicros": "1680109764000000"
},
"Keys": {
"PK": {
"S": "CUST#100"
}
},
"NewImage": {
"PK": {
"S": "CUST#100"
},
"FirstName": {
"S": "John"
},
"LastName": {
"S": "Don"
}
}
}
// Ex 2: Update
// An update means the item existed before the incremental export window
// and was updated during the incremental export window.
// The OldImage would not be present if choosing "New images only".
{
"Metadata": {
"WriteTimestampMicros": "1680109764000000"
},
"Keys": {
"PK": {
"S": "CUST#200"
}
},
"OldImage": {
"PK": {
"S": "CUST#200"
},
"FirstName": {
"S": "Mary"
},
"LastName": {
"S": "Grace"
}
},
"NewImage": {
"PK": {
"S": "CUST#200"
},
"FirstName": {
"S": "Mary"
},
"LastName": {
"S": "Smith"
}
}
}
// Ex 3: Delete
// A delete means the item existed before the incremental export window
// and was deleted during the incremental export window
// The OldImage would not be present if choosing "New images only".
{
"Metadata": {
"WriteTimestampMicros": "1680109764000000"
},
"Keys": {
"PK": {
"S": "CUST#300"
}
},
"OldImage": {
"PK": {
"S": "CUST#300"
},
"FirstName": {
"S": "Jose"
},
"LastName": {
"S": "Hernandez"
}
}
}
// Ex 4: Insert + Delete
// Nothing is exported if an item is inserted and deleted within the
// incremental export window.
Amazon Ion
Amazon Ion
將資料表匯出成 Ion 格式時,資料表中使用的 DynamoDB 資料類型會映射至 Ion 資料類型
下表列出 DynamoDB 資料類型與離子資料類型的映射:
DynamoDB 資料類型 | Ion 表示法 |
---|---|
String (S) | string |
布林值 (BOOL) | bool |
Number (N) | decimal |
Binary (B) | blob |
Set (SS、NS、BS) | list (包含類型註解 $dynamodb_SS、$dynamodb_NS 或 $dynamodb_BS) |
清單 | list |
Map | struct |
Ion 匯出中的項目以新行分隔。每行都以 Ion 版本標記開頭,後面接著 Ion 格式的項目。在下列範例中,為了便於閱讀,Ion 匯出的項目採用多行格式。
$ion_1_0 {
Record:{
Keys:{
ISBN:"333-3333333333"
},
Metadata:{
WriteTimestampMicros:1684374845117899.
},
OldImage:{
Authors:$dynamodb_SS::["Author1","Author2"],
ISBN:"333-3333333333",
Id:103.,
InPublication:false,
ProductCategory:"Book",
Title:"Book 103 Title"
},
NewImage:{
Authors:$dynamodb_SS::["Author1","Author2"],
Dimensions:"8.5 x 11.0 x 1.5",
ISBN:"333-3333333333",
Id:103.,
InPublication:true,
PageCount:6d2,
Price:2d3,
ProductCategory:"Book",
Title:"Book 103 Title"
}
}
}