DynamoDB Local 使用須知 - Amazon DynamoDB

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

DynamoDB Local 使用須知

除端點外,使用可下載版 Amazon DynamoDB 執行的應用程式,也應該能使用 DynamoDB Web 服務。但是在本機使用 DynamoDB 時,您應該清楚下列事項:

  • 如果您使用 -sharedDb選項,DynamoDB 會建立名為 shared-local-instance.db 的單一資料庫檔案。連線至 DynamoDB 的每個程式都能存取此檔案。如果您刪除此檔案,就會遺失所有存放在其中的資料。

  • 如果省略 -sharedDb,資料庫檔案會命名為 myaccesskeyid_region.db ,其 AWS 存取金鑰 ID 和 AWS 區域會如應用程式組態中所示。如果您刪除此檔案,就會遺失所有存放在其中的資料。

  • 如果您使用 -inMemory 選項,DynamoDB 完全不會寫入任何資料庫檔案。相反地,所有資料都會寫入記憶體,並且在您終止 DynamoDB 時不儲存資料。

  • 如果您使用 -inMemory 選項,則也必須使用 -sharedDb 選項。

  • 如果您使用 -optimizeDbBeforeStartup 選項,就必須也指定 -dbPath 參數,以便 DynamoDB 能找到它的資料庫檔案。

  • for DynamoDB AWS SDKs需要您的應用程式組態指定存取金鑰值和 AWS 區域值。除非您使用的是 -sharedDb-inMemory 選項,否則 DynamoDB 會使用這些數值來命名本機資料庫檔案。這些值不必是可在本機執行的有效 AWS 值。不過,您可能會發現使用有效的值很方便,因為稍後只要變更您使用的端點,就可以在雲端執行程式碼。

  • DynamoDB 本機版一律對 billingModeSummary. 傳回 Null

  • DynamoDB 本機版 AWS_ACCESS_KEY_ID 只能包含字母 (A–Z、a–z) 和數字 (0–9)。

  • DynamoDB local 不支援Point-in-time 復原 (PITR)

命令列選項

您可以使用下列命令列選項搭配可下載版 DynamoDB 使用:

  • -cors value — 支援 的跨來源資源共用 (CORS) JavaScript。您必須提供逗號分隔的特定網域「允許」清單。-cors 的預設設定是星號 (*),意為允許公開存取。

  • -dbPath value:DynamoDB 寫入其資料庫檔案的目錄。如果您不指定此選項,檔案會寫入目前的目錄。您不能同時指定 -dbPath-inMemory

  • -delayTransientStatuses:導致 DynamoDB 對部分操作造成延遲。DynamoDB (可下載版本) 幾乎可以立即執行部分任務,例如在資料表和索引上建立/更新/刪除操作。但是,DynamoDB 服務需要較多時間處理這些任務。設定此參數有助於在您電腦上執行的 DynamoDB 將 DynamoDB Web 服務的行為模擬得更逼真。(目前,此參數只會針對處於 CREATINGDELETING 狀態的全域次要索引引入延遲。)

  • -help:列印用量摘要及選項。

  • -inMemory:DynamoDB 在記憶體中執行,而非使用資料庫檔案。當您停止 DynamoDB 時,不會儲存任何資料。您不能同時指定 -dbPath-inMemory

  • -optimizeDbBeforeStartup:先最佳化基礎資料庫資料表,再啟動您電腦上的 DynamoDB。當您使用此參數時,也必須指定 -dbPath

  • -port value:DynamoDB 用來與您的應用程式進行通訊的連接埠號碼。如果您不指定此選項,預設連接埠為 8000

    注意

    DynamoDB 預設使用連接埠 8000。如果無法使用連接埠 8000,此命令就會擲出例外狀況。您可以使用 -port 選項來指定不同的連接埠號碼。如需完整的 DynamoDB 執行時間選項清單 (包括 -port),請輸入此命令:

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help

  • -sharedDb:若您指定 -sharedDb,則 DynamoDB 會使用單一資料庫檔案,而非為每個登入資料和區域使用不同的檔案。

  • -disableTelemetry:指定時,DynamoDB 本機將不會傳送任何遙測資料。

  • -version — 列印 DynamoDB 本機版本。

設定區域端點

根據預設, AWS SDKs和 工具會使用 Amazon DynamoDB Web 服務的端點。若要將 SDKs和 工具與可下載的 DynamoDB 版本搭配使用,您必須指定本機端點:

http://localhost:8000

AWS Command Line Interface

您可以使用 AWS Command Line Interface (AWS CLI) 與可下載的 DynamoDB 互動。

若要存取在本機執行的 DynamoDB,請使用 --endpoint-url 參數。以下是使用 AWS CLI 列出您電腦上 DynamoDB 中資料表的範例。

aws dynamodb list-tables --endpoint-url http://localhost:8000
注意

AWS CLI 無法使用可下載的 DynamoDB 版本作為預設端點。因此,您必須--endpoint-url使用每個 AWS CLI 命令來指定 。

AWS SDKs

您指定端點的方式取決於程式設計語言和 AWS SDK您正在使用的語言。下列各節說明如何執行此作業:

可下載版 DynamoDB 和 DynamoDB Web 服務之間的差異

可下載版 DynamoDB 僅用於開發和測試。相較之下,DynamoDB Web 服務則是受管服務,具可擴展性、可用性及耐用性的特色,因此適用於生產。

可下載版 DynamoDB 和 Web 服務之間的差異如下:

  • AWS 區域 用戶端層級 AWS 帳戶 不支援 和 區別。

  • 可下載版 DynamoDB 會忽略佈建輸送量設定,即使 CreateTable 操作需要它們。您可為 CreateTable 指定任何您想要的佈建讀取和寫入輸送量數字,即使這些數字不予使用。您可以每天呼叫 UpdateTable,次數不限。但是會忽略任何佈建輸送量值的變更。

  • Scan 操作以循序方式執行。不支援平行掃描。忽略 Segment 操作的 TotalSegmentsScan 參數。

  • 資料表資料上的讀取和寫入操作速度只會受到電腦速度的限制。CreateTableUpdateTableDeleteTable操作會立即發生,且資料表狀態一律為 ACTIVE。只會變更資料表或全域次要索引上佈建輸送量設定UpdateTable的操作會立即發生。如果 UpdateTable操作建立或刪除任何全域次要索引,則這些索引會在變成 ACTIVE 狀態之前轉換至正常狀態 (例如 CREATING和 DELETING)。ACTIVE 在此期間,資料表仍會保留。

  • 讀取操做為最終一致。但是,因您電腦上執行的 DynamoDB 速度之故,大部分的讀取會是強烈一致。

  • 不會追蹤項目集合指標和項目集合大小。操作回應中會傳回 Null,而不是項目集合指標。

  • 在 DynamoDB 中,每個結果集傳回的資料有 1 MB 的限制。DynamoDB Web 服務和可下載版本都會執行此限制。但在查詢索引時,DynamoDB 服務只會計算投影索引鍵和屬性的大小。反之,可下載版 DynamoDB 會計算整個項目的大小。

  • 如果您使用的是 DynamoDB Streams,建立碎片的速率可能不同。在 DynamoDB Web 服務中,碎片建立行為有部分會受到資料表分割區活動的影響。當您在本機執行 DynamoDB 時,不會分割資料表。無論哪一種情況,碎片都只是暫時存在,所以您的應用程式不應該依賴碎片行為。

  • TransactionConflictExceptions 不會由交易 的可下載 DynamoDB 擲回APIs。建議您使用 Java 模擬架構,在 DynamoDB 處理常式中模擬 TransactionConflictExceptions,以測試您的應用程式如何回應相衝突的交易。

  • 在 DynamoDB Web 服務中,無論是透過主控台或 存取 AWS CLI,資料表名稱都會區分大小寫。名為 Authors 和名為 authors 的資料表可同時存在,視為不同的資料表。在可下載的版本中,資料表名稱不區分大小寫,因為嘗試建立這樣的兩份資料表會造成錯誤。

  • DynamoDB 的可下載版本不支援標記。

  • 可下載的 DynamoDB 版本會忽略 中的限制參數ExecuteStatement