DynamoDB 常見問題

DynamoDB FAQ — 常見問題解答

開發者最常問的 DynamoDB 問題——每個都附有清晰、坦誠的解答與後續閱讀指引。

DynamoDB 特性與能力

DynamoDB 是鍵值儲存嗎?
是——同時也是文件儲存。每個項目都透過主索引鍵定址,而屬性可以按對映和列表巢狀最多 32 層。
DynamoDB 是關聯式資料庫嗎?
不是。DynamoDB 是 NoSQL 鍵值與文件資料庫,沒有固定結構描述、外鍵或 join。你改以存取模式為中心做反正規化。
DynamoDB 符合 ACID 嗎?
符合 — DynamoDB 透過 TransactWriteItems 與 TransactGetItems 支援 ACID 交易,在每個區域內把最多 100 個動作組成一次全有全無的操作。
DynamoDB 有加密嗎?
有 — 所有 DynamoDB 資料預設都以 AWS KMS 金鑰進行靜態加密,而且無法關閉。傳輸中的資料則以 HTTPS/TLS 保護。
DynamoDB 是最終一致的嗎?
預設是 — DynamoDB 的讀取是最終一致的。你可以在資料表與 LSI 上選用強一致性讀取;GSI 則永遠是最終一致的。
DynamoDB 免費嗎?
部分免費 — DynamoDB 有一個永久免費方案:每月 25 GB 儲存空間,加上 25 個寫入與 25 個讀取容量單位。超過的用量則按請求與按 GB 計費。
DynamoDB 是記憶體資料庫嗎?
不是——DynamoDB 會把每一次寫入持久化到跨三個可用區的持久儲存上。DAX 則額外提供一層可選的記憶體快取,帶來微秒級讀取。
DynamoDB 是 NoSQL 資料庫嗎?
是——DynamoDB 是一個全託管的 NoSQL 鍵值與文件儲存,存放無模式的項目、橫向擴充套件,而它的 PartiQL 解析器會拒絕 JOIN。
DynamoDB 是開源的嗎?
不是 — DynamoDB 是專有、全受管的 AWS 服務。DynamoDB Local 是供開發使用的免費模擬器,但正式環境的引擎無法自行託管。
DynamoDB 是無模式的嗎?
是——DynamoDB 是無模式的。只有主索引鍵是在建表時定義的;其他每個屬性都是可選的,可以逐項目自由變化。
DynamoDB 是無伺服器的嗎?
是 — DynamoDB 是一個全受管、無伺服器的 NoSQL 資料庫。沒有伺服器要佈建或修補;容量會自動擴充,而你依用量付費。

DynamoDB 能儲存什麼

DynamoDB 整合與存取

DynamoDB 操作與查詢

DynamoDB 能自動調整規模嗎?
可以。DynamoDB 自動調整規模會在佈建容量上追蹤 20-90% 的目標使用率,但平均使用率低於 28.9% 時,隨需模式反而更便宜。
可以在本機執行 DynamoDB 嗎?
可以 — DynamoDB Local 是一個免費、可下載的 DynamoDB 版本,能透過 Docker、Java 封存檔或 Maven 在你的機器上執行,離線提供同一套 API。
DynamoDB 有備份嗎?
有 — 隨需備份提供長期快照,時間點復原(PITR)則提供連續備份,可還原到過去 35 天內的任何一秒。
DynamoDB 支援全文檢索嗎?
不支援原生的全文檢索 — DynamoDB 沒有相關性排序、詞幹處理或模糊比對。AWS 原生的答案是 zero-ETL 的 OpenSearch 整合。
DynamoDB 支援地理空間查詢嗎?
原生不支援 — DynamoDB 沒有地理資料型別,也沒有距離運算子。地理空間查找是用 geohash/S2 儲存格鍵建模,再以範圍查詢取得。
DynamoDB 支援 JOIN 嗎?
不支援——DynamoDB 沒有 JOIN,PartiQL 更是直接拒絕兩張表的 SELECT,所以你要做反正規化化。DynoTable 的 SQL Workbench 在用戶端跑真正的連線。
DynamoDB 支援 SQL 嗎?
部分支援——PartiQL 覆蓋 SELECT、INSERT、UPDATE 和 DELETE,但拒絕 JOIN、GROUP BY 和 COUNT。DynoTable 的 SQL Workbench 能在你的表上執行這些。
DynamoDB 支援交易嗎?
支援。DynamoDB 交易能把跨資料表最多 100 個動作組成一次全有全無的操作,代價是一般寫入兩倍的容量單位。
DynamoDB 支援 TTL 嗎?
支援 — DynamoDB 支援 Time to Live。設定一個以秒為單位、存放 Unix epoch 到期時間的 Number 屬性,DynamoDB 就會自動刪除過期項目,且不另計費。
DynamoDB 有多快?
很快 — DynamoDB 在任何規模下都提供一致的個位數毫秒延遲。DAX 這個記憶體內快取,能把最終一致讀取縮短到微秒等級。
DynamoDB 可以有幾張資料表?
預設每個區域 2,500 張 DynamoDB 資料表,提出申請可調高到 10,000 張。資料表沒有大小上限,但每張佈建容量的表閒置時每月仍要 0.57 美元。
在 DynamoDB 中要怎麼計算項目數?
在 Query 或 Scan 上使用 Select: COUNT,再用 LastEvaluatedKey 分頁並把 Count 加總。計數消耗的讀取容量和把項目全數回傳一樣多。

DynamoDB 架構與內部原理

更多 DynamoDB 資源

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。