

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

# 什麼是 Amazon DynamoDB？
<a name="Introduction"></a>

 Amazon DynamoDB 是無伺服器、全受管的分散式 NoSQL 資料庫，具有任何規模的單一位數毫秒效能。

 DynamoDB 能協助您克服關聯式資料庫在擴展與營運上的複雜性。DynamoDB 專為在各種規模下需維持一致效能的作業型工作負載所設計並最佳化。例如，無論您有 1000 萬或 1 億使用者，DynamoDB 都會為購物車使用案例提供一致的單一位數毫秒效能。[於 2012 年推出](https://press.aboutamazon.com/2012/1/amazon-web-services-launches-amazon-dynamodb-a-new-nosql-database-service-designed-for-the-scale-of-the-internet)的 DynamoDB，持續協助您擺脫關聯式資料庫，同時降低成本並提升大規模效能。

 各種規模、產業及地區的客戶皆使用 DynamoDB 建置現代化的無伺服器應用程式，能從小規模起步並擴展至全球。DynamoDB 可彈性擴展以支援幾乎任意大小的資料表，同時維持一致的個位數毫秒效能與高可用性。

 在 [Amazon Prime Day](https://aws.amazon.com/blogs/aws/prime-day-2023-powered-by-aws-all-the-numbers/) 等活動期間，DynamoDB 為多個高流量的 Amazon 系統與服務提供支援，包括 [Alexa](https://alexa.com/)、[Amazon.com](https://www.amazon.com/) 網站及所有 [Amazon 履行中心](https://www.aboutamazon.com/workplace/facilities)。在這類活動中，DynamoDB API 已處理數兆次來自 Amazon 系統與服務的呼叫。DynamoDB 持續為數百位客戶提供資料表服務，其尖峰流量可達每秒超過 50 萬次請求。另有數百位客戶的資料表容量超過 200 TB，DynamoDB 每小時可處理超過 10 億次請求。

**Topics**
+ [DynamoDB 的主要特性](#ddb-characteristics)
+ [DynamoDB 使用案例](#ddb-use-cases)
+ [DynamoDB 的主要功能](#ddb-capabilities)
+ [服務整合](#ddb-service-integrations)
+ [安全](#ddb-intro-security)
+ [恢復能力](#ddb-intro-resilience)
+ [存取 DynamoDB](#ddb-access)
+ [DynamoDB 定價](#ddb-pricing)
+ [DynamoDB 入門](#ddb-intro-get-started)

## DynamoDB 的主要特性
<a name="ddb-characteristics"></a>

### 無伺服器
<a name="ddb-characteristics-serverless"></a>

使用 DynamoDB，您無需佈建伺服器，也不必修補、管理、安裝、維護或操作任何軟體。DynamoDB 提供零停機維護。DynamoDB 無版本區分 (主要版、次要版或修補版)，且無需設定維護時段。

DynamoDB 的[隨需容量模式](on-demand-capacity-mode.md)採用依用量計費定價，針對讀寫請求只需依實際使用量付費。使用隨需容量模式時，DynamoDB 會自動調整資料表容量以因應負載變化，並在無須人工管理的情況下維持效能。此模式亦可縮減至零，因此當資料表無流量時，您不需支付輸送量費用，且不會發生冷啟動。

### NoSQL
<a name="ddb-characteristics-nosql"></a>

作為 NoSQL 資料庫，DynamoDB 專為提供優於傳統關聯式資料庫的效能、可擴展性、可管理性與彈性而設計。為支援多樣化的使用案例，DynamoDB 同時支援鍵值資料模型與文件資料模型。

與關聯式資料庫不同，DynamoDB 不支援 JOIN 運算子。建議您對資料模型進行取消正規化，以降低查詢往返次數與所需處理資源。作為 NoSQL 資料庫，DynamoDB 提供強大的[讀取一致性](HowItWorks.ReadConsistency.md)與 [ACID 交易](https://aws.amazon.com/blogs/aws/new-amazon-dynamodb-transactions/)，可支援企業級應用程式的建置。

### 全受管
<a name="ddb-characteristics-fully-managed"></a>

作為全受管資料庫服務，DynamoDB 代為處理管理資料庫的繁瑣作業，讓您得以專注於為客戶創造價值。它負責處理設定、組態、維護、高可用性、硬體佈建、安全性、備份、監控等各項作業。因此，當您建立 DynamoDB 資料表後，系統可立即投入生產工作負載。DynamoDB 持續提升可用性、可靠性、效能、安全性與功能，且無需升級或停機。

### 任何規模下的個位數毫秒效能
<a name="ddb-characteristics-performance-at-scale"></a>

DynamoDB 專為提升關聯式資料庫效能與可擴展性而設計，能在任何規模下提供個位數毫秒效能。為達成此規模與效能，DynamoDB 針對高效能工作負載進行最佳化，並提供可促進高效資料庫運作的 API。為確保大規模效能，DynamoDB 省略了在擴展時效率低落或效能不佳的功能，例如 JOIN 操作。無論您有 100 或 1 億使用者，DynamoDB 都會為您的應用程式提供一致的單一位數毫秒效能。

## DynamoDB 使用案例
<a name="ddb-use-cases"></a>

各種規模、產業及地區的客戶皆使用 DynamoDB 建置現代化的無伺服器應用程式，能從小規模起步並擴展至全球。DynamoDB 特別適用於在任何規模下需維持一致效能且幾乎不需操作負擔的使用案例。以下列出幾種可使用 DynamoDB 的典型使用案例：
+ **金融服務應用程式** – 假設您是一家金融服務公司，正在建置如即時交易與路由、貸款管理、權杖生成及交易分類帳等應用程式。使用 DynamoDB [全域資料表](GlobalTables.md)，您的應用程式可以回應事件， AWS 區域 並以快速的本機讀取和寫入效能提供所選流量。

  DynamoDB 適用於對可用性要求極高的應用程式。它免除了為提升儲存容量或輸送量、進行版本控制與授權所需的手動擴展執行個體負擔。

  您可使用 [DynamoDB 交易](transactions.md)，透過單一請求在一或多個資料表間達成原子性、一致性、隔離性與耐久性 (ACID)。[(ACID) 交易](transaction-apis.md)特別適用於涉及金融交易處理或訂單履行的工作負載。DynamoDB 可在工作負載增減時即時調整，讓您能依市場條件 (例如交易時段) 高效擴展資料庫。
+ **遊戲應用程式** – 若您是遊戲開發商，可將 DynamoDB 應用於遊戲平台的各個層面，例如遊戲狀態、玩家資料、工作階段歷程與排行榜。選擇 DynamoDB，可同時獲得可擴展性、一致效能，以及無伺服器架構帶來的操作便利。DynamoDB 特別適合支援成功遊戲所需的橫向擴充架構。它可快速調整遊戲的輸送量，無論擴增或縮減 (可縮減至零，且無冷啟動)。無論您是針對尖峰流量橫向擴充，還是在遊戲使用量低時向後擴展，此可擴展性都會最佳化架構的效率。
+ **串流應用程式** – 媒體與娛樂公司使用 DynamoDB 作為內容與內容管理服務的中繼資料索引，或用於提供近即時的體育統計資訊。他們亦使用 DynamoDB 執行使用者監看清單與書籤服務，並處理每日數十億筆客戶事件以生成推薦結果。這些客戶受惠於 DynamoDB 所提供的可擴展性、效能與彈性。DynamoDB 會隨工作負載變化自動擴展，使串流媒體應用可支援各種需求層級。

若想進一步了解各產業客戶如何運用 DynamoDB，請參閱 [Amazon DynamoDB 客戶](https://aws.amazon.com/dynamodb/customers/)與[這是我的架構](https://aws.amazon.com/architecture/this-is-my-architecture/?tma.sort-by=item.additionalFields.airDate&tma.sort-order=desc&awsf.category=*all&awsf.industry=*all&awsf.language=*all&awsf.show=*all&awsf.product=*all&tma.q=DynamoDB&tma.q_operator=AND)。

## DynamoDB 的主要功能
<a name="ddb-capabilities"></a>

### 全域資料表的多主動複寫
<a name="ddb-capabilities-gt"></a>

[全域資料表](GlobalTables.md)提供跨所選 資料的多重主動複寫 AWS 區域 ，可用性為 [99.999%](https://aws.amazon.com/dynamodb/sla/)。全域資料表提供全受管解決方案，可部署多區域、多主動資料庫，而無需自行建置或維護複寫機制。使用全域資料表，您可以指定資料表的可用 AWS 區域 位置。DynamoDB 會即時將資料變更複寫至所有相關資料表。

全域部署的應用程式可在所選區域中以本機方式存取資料，以達成個位數毫秒的讀寫效能。由於全域資料表採多主動設計，因此無需指定主資料表。這表示在跨區域執行容錯移轉時，不會發生複雜或延遲的移轉，也不會導致資料庫停機。

### ACID 交易
<a name="ddb-capabilities-acid-tx"></a>

DynamoDB 專為關鍵任務級工作負載設計。它支援 [(ACID) 交易](transaction-apis.md)，以滿足需要複雜商業邏輯的應用程式需求。DynamoDB 提供原生的伺服端交易支援，簡化開發人員在單一或多個資料表間進行協調式「全有或全無」變更的體驗。

### 事件驅動架構的變更資料擷取
<a name="ddb-capabilities-cdc-eda"></a>

DynamoDB 支援近乎即時地串流項目層級的變更資料擷取 (CDC) 紀錄。它為變更資料擷取 (CDC) 提供兩種串流模型：[DynamoDB Streams](Streams.md) 與 [Kinesis Data Streams for DynamoDB](kds.md)。每當應用程式在資料表中建立、更新或刪除項目時，串流便會以近乎即時的方式記錄各項目層級變更的時間順序。這使得 DynamoDB Streams 特別適合事件驅動架構的應用程式，用以擷取並處理變更。

### 次要索引
<a name="ddb-capabilities-secondary-indexes"></a>

DynamoDB 提供建立[全域次要索引與本機次要索引](SecondaryIndexes.md)的選項，使您能以替代索引鍵查詢資料表資料。使用這些次要索引，您可以透過非主索引鍵的屬性來存取資料，最大化資料存取的彈性。

## 服務整合
<a name="ddb-service-integrations"></a>

DynamoDB 與數個 廣泛整合 AWS 服務 ，協助您從資料中獲得更多價值、消除無差別的繁重工作，以及大規模操作工作負載。一些範例包括： AWS CloudFormation、Amazon CloudWatch、Amazon S3、 AWS Identity and Access Management (IAM) 和 AWS Auto Scaling。以下章節說明您可透過 DynamoDB 進行的部分服務整合：

### 無伺服器整合
<a name="ddb-service-integrations-serverless"></a>

為了建構端對端無伺服器應用程式，DynamoDB 與多項無伺服器 AWS 服務進行原生整合。例如，您可以將 DynamoDB 與 AWS Lambda 整合以[建立觸發條件](Streams.Lambda.md)，這些觸發條件是自動回應 DynamoDB Streams 事件的程式碼片段。透過觸發條件，您可以建立對 DynamoDB 資料表中資料變更即時回應的事件驅動應用程式。為最佳化成本，您可以[篩選由 Lambda 自 DynamoDB 串流處理的事件](Streams.Lambda.Tutorial2.md)。

下列清單列出數個與 DynamoDB 進行無伺服器整合的範例：
+ [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) 用於建立 GraphQL API
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 用於建立 REST API。
+ [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 適用於無伺服器運算。
+ [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) 用於變更資料擷取 (CDC)

### 匯入與匯出資料至 Amazon S3
<a name="ddb-service-integrations-s3"></a>

將 DynamoDB 與 Amazon S3 整合可讓您輕鬆將資料匯出至 Amazon S3 儲存貯體，用於分析與機器學習。DynamoDB [支援完整資料表匯出與增量匯出](S3DataExport_Requesting.md)，可在指定期間匯出變更、更新或刪除的資料。您也可以[從 Amazon S3 匯入資料](S3DataImport.HowItWorks.md)至新的 DynamoDB 資料表。

### 零 ETL 整合
<a name="ddb-service-integrations-zetl"></a>

DynamoDB [支援與 Amazon Redshift 的零 ETL 整合](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.html)，並可[透過 OpenSearch 擷取管道與 Amazon DynamoDB 搭配使用](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/configure-client-ddb.html)。這些整合可讓您在 DynamoDB 資料表上執行複雜分析，並運用進階搜尋功能。例如，您可以在 DynamoDB 資料上執行全文搜尋、向量搜索與語意搜尋。零 ETL 整合不會對在 DynamoDB 上執行的生產工作負載造成影響。

### 快取
<a name="ddb-service-integrations-caching"></a>

[DynamoDB Accelerator (DAX)](DAX.md) 是專為 DynamoDB 所設計的全受管、高可用性快取服務。DAX 可提供高達 10 倍的效能提升，將延遲從毫秒縮短至微秒，並支援每秒數百萬次請求。DAX 會自動處理將記憶體內加速新增至 DynamoDB 資料表所需的所有繁重作業，無需您手動管理快取失效、資料載入或叢集維運。

## 安全
<a name="ddb-intro-security"></a>

DynamoDB 使用 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 來協助您安全控制對 DynamoDB 資源的存取。透過 IAM，您可以集中管理權限，控制哪些 DynamoDB 使用者可存取哪些資源。您可以使用 IAM 來控制能通過身分驗證 (登入) 和授權使用資源的 (具有許可) 的人員。由於 DynamoDB 採用 IAM，存取 DynamoDB 時無需使用者名稱或密碼。由於無須管理複雜的密碼輪替政策，因此可簡化您的整體安全防護。透過 IAM，您也可以啟用[精細層級存取控制](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_attributes.html)，在屬性層級提供授權。您也可以定義[資源型政策](access-control-resource-based.md)，並搭配 [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html#what-is-access-analyzer-resource-identification) 與[封鎖公開存取 (BPA)](rbac-bpa-rbp.md) 功能，以簡化原則管理。

預設情況下，DynamoDB 會對所有靜態客戶資料進行加密。[靜態加密](EncryptionAtRest.md)透過使用儲存在 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) (AWS KMS) 中的加密金鑰，來提升資料的安全性。您可以透過靜態加密，建立符合嚴格加密合規和法規要求，而且對安全性要求甚高的應用程式。當您存取加密的資料表，DynamoDB 會以透明方式解密資料表資料。您不必變更任何代碼或應用程式來使用或管理加密的資料表。DynamoDB 會持續提供與預期相同的單一位數毫秒延遲，而且所有 [DynamoDB 查詢](Query.md)都能順暢地處理加密的資料。

您可以指定 DynamoDB 是否應使用 AWS 擁有的金鑰 （預設加密類型） AWS 受管金鑰、 或客戶受管金鑰來加密使用者資料。使用 [AWS擁有的 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)進行的預設加密不需額外付費。若需用戶端加密，您可使用[AWS 資料庫加密 SDK](https://aws.amazon.com/blogs/security/how-to-use-aws-database-encryption-sdk-for-client-side-encryption-and-perform-searches-on-encrypted-attributes-in-dynamodb-tables/)。

DynamoDB 亦符合多項[合規標準](https://aws.amazon.com/compliance/services-in-scope/)，包括 HIPAA、PCI DSS 與 GDPR，協助您符合法規要求。

## 恢復能力
<a name="ddb-intro-resilience"></a>

預設情況下，DynamoDB 會自動在三個[可用區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)間複寫您的資料，以確保高耐用性與 99.99% 可用性 SLA。DynamoDB 亦提供進階功能，協助您達成業務持續性與災難復原目標。

DynamoDB 提供下列功能，以支援您的資料復原能力與備份需求：

**Topics**
+ [全域資料表](#ddb-resilience-gt)
+ [持續備份與時間點復原 (PITR)](#ddb-resilience-backups-pitr)
+ [隨需備份與還原](#ddb-resilience-ondemand-backup-restore)

### 全域資料表
<a name="ddb-resilience-gt"></a>

DynamoDB 全域資料表提供 [99.999% 可用性 SLA](https://aws.amazon.com/dynamodb/sla/)，並具備多區域復原能力。這有助於您建立具復原能力的應用程式，並針對最低復原時間點目標 (RTO) 與復原點目標 (RPO) 進行最佳化。全域資料表亦可與 [AWS Fault Injection Service (AWS FIS)](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) 整合，以在全域工作負載上進行故障注入測試。例如，您可[暫停全域資料表的複寫](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#dynamodb-actions-reference)至任一複本資料表。

### 持續備份與時間點復原 (PITR)
<a name="ddb-resilience-backups-pitr"></a>

[連續備份](Point-in-time-recovery.md)可讓您達到每秒級精細度，並能啟動時間點復原。使用時間點復原，您可將資料表還原至過去 35 天內任一秒的狀態。您可以將復原期間設為 1 至 35 天。

持續備份與啟動時間點還原不會佔用佈建容量。此功能也不會影響應用程式的效能或可用性。

### 隨需備份與還原
<a name="ddb-resilience-ondemand-backup-restore"></a>

[隨需備份與還原](Backup-and-Restore.md)可讓您建立資料表完整備份，以支援長期保留及符合法規需求。備份不會影響資料表效能，且可支援任意規模的資料表。透過[AWS Backup 整合](Backup-and-Restore.md)，您可以使用 AWS Backup 自動排程、複製、標記和管理 DynamoDB 隨需備份的生命週期。使用 AWS Backup，您可以跨帳戶和區域複製隨需備份，並將較舊的備份轉換為冷儲存，以最佳化成本。

## 存取 DynamoDB
<a name="ddb-access"></a>

您可透過 [AWS 管理主控台](https://console.aws.amazon.com/dynamodb)、[DynamoDB 專用 NoSQL Workbench](workbench.md)、 [AWS Command Line Interface](https://aws.amazon.com/cli/) 或 [DynamoDB API](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB.html) 操作 DynamoDB。

如需詳細資訊，請參閱[存取 DynamoDB](AccessingDynamoDB.md)。

## DynamoDB 定價
<a name="ddb-pricing"></a>

DynamoDB 針對資料表的讀取、寫入及儲存收費，並對啟用的選用功能額外計費。DynamoDB 提供兩種容量模式：[隨需](on-demand-capacity-mode.md)與[佈建](provisioned-capacity-mode.md)，分別對應不同的讀寫計費方式。

DynamoDB 亦屬於**永遠免費方案**，可提供 25 GB 儲存空間。**永遠免費方案**亦包含 25 個佈建寫入與 25 個佈建讀取容量單位 (WCU、RCU)，可支援每月 2 億次請求。

如需詳細資訊，請參閱 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/) 定價。

## DynamoDB 入門
<a name="ddb-intro-get-started"></a>

若您首次使用 DynamoDB，建議先閱讀以下主題：
+ [DynamoDB 入門](GettingStartedDynamoDB.md) – 引導您完成 DynamoDB 設定、建立範例資料表及上傳資料。本主題也提供使用 AWS 管理主控台、 AWS CLI NoSQL Workbench 和 DynamoDB APIs 執行一些基本資料庫操作的相關資訊。
+ [DynamoDB 核心元件](HowItWorks.CoreComponents.md) – 說明 DynamoDB 的基本概念。
+ [使用 DynamoDB 進行設計和架構的最佳實務](best-practices.md) – 提供有關 NoSQL 設計、DynamoDB Well-Architected Lens、資料表設計及多項其他 DynamoDB 功能的建議。這些最佳實務可協助您在使用 DynamoDB 時最大化效能，並降低輸送量成本。

我們也建議您參閱下列教學課程，這些課程說明了完整的端到端流程，協助您熟悉 DynamoDB 的操作與概念。您可使用**永遠免費方案**功能完成這些教學課程。
+ [使用 Amazon DynamoDB 建立和查詢 NoSQL 資料表](https://aws.amazon.com/tutorials/create-nosql-table/)
+ [使用 NoSQL 鍵 - 值資料存放區建置應用程式](https://aws.amazon.com/tutorials/build-an-application-using-a-no-sql-key-value-data-store/)

若需關於移轉至 DynamoDB 的資源、工具與策略資訊，請參閱[移轉至 DynamoDB](migration-guide.md#migration-guide.title)。若要閱讀最新的部落格與白皮書，請參閱 [Amazon DynamoDB 資源](https://aws.amazon.com/dynamodb/resources/)。