DynamoDB 是記憶體資料庫嗎?
不是。DynamoDB 不是記憶體資料庫——每一次寫入都會被持久化到持久儲存上,並自動跨三個可用區複製。當你需要記憶體級速度時,DynamoDB Accelerator(DAX)會加上一層全託管的記憶體快取,把最終一致讀取從個位數毫秒壓到微秒。
從設計上就是持久的
DynamoDB 是一個持久化的操作型資料庫:寫入被存放在持久介質上,並預設跨三個可用區複製,支撐著 99.99% 的可用性 SLA。這與純記憶體儲存的取捨正好相反——在後者裡資料活在 RAM 中,永續性是可選的。
不加快取它也很快
基礎的 DynamoDB 在任何規模下都提供穩定的個位數毫秒級讀寫,因為每次讀取都直接命中一個分割區索引鍵,而不是去掃描。大多數工作負載壓根不需要快取。
唯一「記憶體版」的 DynamoDB 是那個模擬器
混淆通常從 DynamoDB Local 開始,它確實有一個記憶體模式。啟動它,橫幅就這麼寫著:
docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDbInitializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: true
Version: 3.3.0寫入一個項目,重啟容器,然後再去找它:
after write: {"total":{"N":"42"},"pk":{"S":"ORDER#1"}}
tables after restart: []
read after restart: ResourceNotFoundException | Cannot do operations on a non-existent table跟著一起沒的是整張表,不只是那個項目。這個引數屬於測試用的模擬器。託管服務沒有對應的設定,也沒有任何一種模式會讓一次已確認的寫入只活在 RAM 裡。
DAX:那層記憶體
當微秒真的要緊時——實時競價、遊戲排行榜、熱門商品頁——DAX 就是 AWS 的答案:一個與 DynamoDB 相容的寫穿式記憶體快取,用極少的程式碼改動把最終一致讀取的效能提升一個數量級。它不適合強一致讀取或寫密集型工作負載。
深入瞭解
在一致性指南裡理解一致性上的取捨,反過來的問題見 DynamoDB 能當快取用嗎?,用定價計算器估算讀取成本,並下載 DynoTable 來檢視你的表。
在 DynoTable: 查詢預覽標籤 Scan 與 Query 並在表後設資料允許時顯示 RCU 估計,因此您可以在執行之前檢視完整讀取的成本。普通分割區索引鍵 Query 呼叫不會顯示 RCU 線路。參見SQL Workbench — preview the query cost。
深入了解
- In-memory acceleration with DynamoDB Accelerator (DAX) — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- DynamoDB read consistency — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。
2026-07-28 針對 DynamoDB Local 3.3.0,經由 @aws-sdk/client-dynamodb 3.1095.0、Node v24.18.0 復現。上方的橫幅與三行輸出均為原樣照錄。
深入了解
- In-memory acceleration with DynamoDB Accelerator (DAX) — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- DynamoDB read consistency — Amazon DynamoDB Developer Guide
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
根據上面連結的官方AWS文件上次驗證時間為 2026 年 7 月 13 日。
於 2026 年 7 月 28 日在 Node v24.18.0 上透過 @aws-sdk/client-dynamodb 3.1095.0 針對 DynamoDB Local 3.3.0 複製。橫幅和三個輸出行是逐字記錄的。