# AWS Certified Cloud Practitioner 講義筆記:第五單元 - 儲存與資料庫
> AWS Certified Cloud Practitioner(CLF-C02)
> 這是[AWS Cloud Practitioner Essentials](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/134/aws-cloud-practitioner-essentials)的課程筆記
## 學習目標
本單元將介紹 AWS 提供的各種儲存與資料庫服務,包含區塊儲存、物件儲存、檔案儲存、關聯式資料庫、非關聯式資料庫,以及資料遷移與快取加速方案。透過本單元,您將能夠辨別不同儲存類型的適用情境,並了解 AWS 如何協助您有效管理與擴展資料儲存需求。
在本單元中,您將學到如何:
* 概要說明儲存和資料庫的基本概念。
* 說明 Amazon Elastic Block Store (Amazon EBS) 的優點。
* 說明 Amazon Simple Storage Service (Amazon S3) 的優點。
* 說明 Amazon Elastic File System (Amazon EFS) 的優點。
* 概要說明各種儲存解決方案。
* 說明 Amazon Relational Database Service (Amazon RDS) 的優點。
* 說明 Amazon DynamoDB 的優點。
* 概要說明各種資料庫服務。
---
## 一、區塊儲存(Block Storage)
區塊儲存是一種將資料分割成固定大小區塊進行儲存的方式,適合作為作業系統、應用程式或資料庫的儲存磁碟。
1. **執行個體存放區(Instance Store)**
(EC2執行個體是虛擬機器,下一次啟動可能是在別台主機)
* 提供暫時性儲存空間,隨 EC2 執行個體一起配置。
* 停止或終止執行個體時,資料會消失。
* 適用於暫存資料、快取或中介資料處理流程。
2. **Amazon Elastic Block Store(Amazon EBS)**
* 提供永久性區塊層級儲存,可獨立於 EC2 執行個體存在。
* 支援快照備份與加密功能。
* 適用於資料庫儲存、系統磁碟與高可用性應用程式。

若要建立 EBS 磁碟區,請定義組態 (例如磁碟區大小和類型) 並加以佈建。建立 EBS 磁碟區後,磁碟區可以連接到 Amazon EC2 執行個體。
因為 EBS 磁碟區適用於需要長期保存的資料,所以資料備份非常重要。您可以建立 Amazon EBS 快照,以建立 EBS 磁碟區的增量備份。

> 使用 Amazon EBS 快照對 EBS 磁碟區進行增量備份。在第 1 天,備份兩個磁碟區。第 2 天新增一個新磁碟區,並備份新磁碟區。第 3 天新增兩個磁碟區,總共五個磁碟區。僅備份兩個新磁碟區。
EBS快照是一種增量備份。這表示磁碟區的第一個備份會複製所有資料。在後續備份中,只會儲存自最近一次快照以來變更的資料區塊。
增量備份與完整備份不同,每次進行完整備份時,會複製存放磁碟區中的所有資料。完整備份包含自最近一次備份之後未變更的所有資料。
---
## 二、物件儲存(Object Storage)
在物件儲存中,每個物件均由資料、中繼資料和一組金鑰組成。
資料可能是影像、影片、文字文件或任何其他類型的檔案。中繼資料包含資料內容、資料使用方式、物件大小等資訊。物件的金鑰是物件的唯一標識符。
物件儲存將資料以物件方式存放,並搭配中繼資料與唯一識別碼。

1. **Amazon Simple Storage Service(Amazon S3)**
* 儲存資料於「儲存貯體(Bucket)」(類似檔案目錄)中,適合儲存圖片、影片、備份檔等。
* 支援版本控制、事件通知、生命週期管理、靜態網站託管。
* 不需事先配置容量,具備高擴展性與耐久性。
2. **S3 儲存類別**
1. S3 Standard:
* 適用於經常存取的資料。
* 資料至少儲存於三個可用區域,提供高可用性與耐久性。
* 成本相對較高,適合網站內容、資料分析、應用程式資源等。
1. S3 Standard-Infrequent Access (S3 Standard-IA):
* 適合不常存取但仍需高可用性的資料。
* 儲存費用較低,但資料擷取費用較高。
* 同樣提供跨三個可用區域的備援儲存。
1. S3 One Zone-Infrequent Access:
* 僅將資料儲存於一個可用區域,存放成本更低。
* 適用於可以容忍區域性故障、且能輕易重建資料的情境。
1. S3 Intelligent-Tiering:
* 適合存取模式未知或頻繁變動的資料。
* 自動監控並根據存取頻率將物件調整至適當層級。
* 每個物件需支付少量監控與自動化費用。
1. S3 Glacier Instant Retrieval:
* 適用於封存資料,但仍需毫秒等級的立即存取。
* 適合影像、醫療記錄等需要快速查閱的封存資料。
1. S3 Glacier Flexible Retrieval:
* 成本較低,可於數分鐘至數小時內擷取資料。
* 適用於封存歷史記錄、舊檔案等,具有封存與回復需求的資料。
如果您的保留資料有合規要求需要保留資料一段時間,您可以採用 S3 Glacier 文件庫鎖定政策然後鎖定您的文件庫。您可在某個文件庫鎖定政策中指定「單寫多讀」(簡稱 WORM) 之類的控制並鎖定該政策以避免未來進行編輯。鎖定後,政策就不得再變更。您還有三個擷取選項。這些範圍從幾分鐘到幾小時不等,您可以選擇直接上傳到 S3 Glacier Flexible Retrieval,或使用 S3 生命週期政策。(類似於Intelligent-Tiering,不過 Lifecycle Policy 像是你設計好的排程表,強制資料「某日一定要搬」。而Intelligent-Tiering則像是你智慧的小助理根據你的使用頻率做調整。)
1. S3 Glacier Deep Archive:
* AWS 成本最低的儲存類別,擷取時間為 12 至 48 小時。
* 適合每年僅查閱一次或兩次的長期封存資料,如法規遵循文件。
1. S3 Outposts:
* 提供在 AWS Outposts(內部部署)環境中建置 S3 儲存貯體。
* 支援資料駐留需求與低延遲場景,適合混合雲部署。
您可以建立生命週期政策,自動在不同方案之間移動資料。例如,我們需要將一個物件在 S3 Standard 中持續保留 90 天然後在接下來的 30 天,我們想要將它移動到 S3-StandardIA。然後在總共 120 天後,我們希望將其移至 S3 Glacier Flexible Retrieval。透過生命週期政策,您可以建立這種組態而不需要變更應用程式程式碼政策將會自動為您執行這些移動作業。
---
#### EBS V.S. S3
* EBS(區塊儲存):像是 EC2 專用的硬碟,適合經常改動的資料。
* S3(物件儲存):像是雲端資料櫃,適合存完整、穩定、偶爾變更的資料。
| 儲存類型 | Amazon Elastic Block Store (EBS) | Amazon Simple Storage Service (S3) |
| ---- | -------------------------------- | ---------------------------------- |
| 類型 | 區塊儲存(Block Storage) | 物件儲存(Object Storage) |
| 最大容量 | 每個磁碟最大 16 TiB | 單一物件最大 5,000 GB(5 GB x 1,000) |
| 特性 | 固態硬碟/旋轉磁碟,支援 EC2 外運作 | 提供無限容量、全球可用、支援 Web 存取 |
| 耐久性 | 高 | 99.999999999%(11 個 9) |
| 架構 | EC2 連接為主 | 區域分散式儲存 |
| 成本 | 相對較高 | 相對較低 |
兩種儲存類別正面對決,角逐可滿足不同儲存需求的最佳動態分布設計。最終哪種儲存類別將在這場精彩對決中勝出?若要判別贏家,您需先釐清使用案例。
第一回合。假設您正經營讓使用者上傳自己相片的網站,且您的應用程式找到許多形似的動物相片。您可能有上百萬張動物相片,這些照片皆需建立索引,且可能被數千人同時瀏覽。這便是完美的 S3 使用案例。S3 已啟用 Web 功能。每個物件都已經有一個 URL,讓您可控制存取權,決定誰能看到或管理映像。S3 是區域分散式儲存,也就是說它的耐久性為 99.999999999%,無需擔心備份策略。S3 就是您的備份策略。而且儲存負擔相同時,跟 EBS 相比,S3 可為您省下大量成本。此外 S3 還有無伺服器的優勢,不需要任何 Amazon EC2 執行個體。看來裁判認定 S3 是這一回合的贏家。
但先等一下,還有第二回合:您有一個 80 GB 的影片檔案,正在進行編輯修正。若要知道最適合的儲存類別,我們必須了解物件儲存與區塊儲存之間的差異。物件儲存將所有檔案當做完整的獨立物件。這非常適合以完整物件上傳並取用的文件、映像和影片檔案。但每當物件有所變更,您就必須重新上傳整個檔案。沒有差異更新。區塊儲存則是會將檔案分解成小元件或區塊。也就是說,對該 80 GB 的檔案而言,當您編輯影片中的某個場景並儲存變更時,引擎只會更新包含那些位元所在的區塊。如果您需要執行大量微型編輯,Elastic Block Storage (EBS) 便是最佳的使用案例。如果您是使用 S3,則每當您儲存變更時,系統皆須重新上傳整個 80 GB 的檔案。EBS 顯然贏得了第二回合。
這表示如果您是使用完整的物件,或僅偶爾進行變更,S3 比較理想。如果您要執行複雜的讀取、寫入或變更功能,則 EBS 顯然更勝一籌。您心目中贏家取決於您個別的工作負載。符合需求的服務就是最適合的服務。一旦釐清需求,您將能判別最適合您的服務!
| 使用情境 | 建議儲存類別 |
| ------------------------------- | ------------ |
| 靜態網站、相片、影片存放 | **S3** |
| 高頻率變更、大型檔案編輯 | **EBS** |
| 成本敏感、無伺服器架構需求 | **S3** |
| 搭配 EC2 處理即時變更或資料庫用 | **EBS** |
---
## 三、檔案儲存(File Storage)
檔案儲存提供共用資料夾的方式,適合多個伺服器或使用者同時存取檔案。
1. **Amazon Elastic File System(Amazon EFS)**
* 提供彈性可擴展的 NFS 檔案系統。
* 可同時掛載至多個 EC2 執行個體。
* 適用於內容管理系統、媒體處理、資料分析等。
#### 比較 EBS and EFS
| 項目 | **Amazon EBS** | **Amazon EFS** |
| -------- | ------------------------------- | -------------------------------------------- |
| 儲存位置 | 單一可用區域(AZ)內 | 多個可用區域(AZ)跨區域儲存 |
| 存取條件 | EC2 執行個體與 EBS 磁碟區必須在**相同可用區域內** | 可從**所有可用區域**同時存取檔案系統 |
| 跨區支援 | 不支援跨區域 | 支援跨多個可用區域的資料存取 |
| 內部部署存取支援 | 不適用 | 可透過 AWS Direct Connect 讓內部部署伺服器存取 EFS 檔案系統 |
---
## 四、關聯式資料庫(Relational Databases)
在關聯式資料庫中,資料會以與其他資料建立關聯的方式存放。關聯式資料庫使用結構化表格儲存資料,支援 SQL 查詢。

1. **Amazon Relational Database Service(Amazon RDS)**
這項服務可讓您在 AWS 雲端中執行關聯式資料庫。
* 支援 MySQL、PostgreSQL、Oracle、SQL Server、MariaDB。
* 自動執行備份、修補、監控、容錯移轉,不需維護。
* 適用於線上交易處理(OLTP)、網站應用等。
2. **Amazon Aurora**
* AWS 自行開發的高效能關聯式資料庫。
* 相容於 MySQL 與 PostgreSQL。
* 比一般 RDS 效能高達五倍,具自動擴展能力。
* 會在三個可用區域中複寫六份資料副本,並持續將資料備份到 Amazon S3。
---
## 五、非關聯式資料庫(NoSQL)
非關聯式資料庫以彈性架構儲存資料,不需事先定義表格結構,適合需要高彈性、高效能的應用。
1. **Amazon DynamoDB**
* 無伺服器、鍵值型 NoSQL 資料庫。
* 適合高頻交易、IoT 裝置、即時應用。
* 支援自動擴展、加密、快取加速(DAX)。
無伺服器:DynamoDB 是無伺服器的服務,這表示您不需要佈建、修補或管理伺服器。您也不需要安裝、維護或操作軟體。
自動擴展:隨著資料庫擴展和縮減,DynamoDB 會自動調整變更容量,同時維持一致的效能。這使它成為在擴展時需要高效能的使用案例的合適選擇。

#### Amazon RDS vs Amazon DynamoDB 比較
| 比較項目 | **Amazon RDS**<br>(關聯式資料庫) | **Amazon DynamoDB**<br>(NoSQL 資料庫) |
| ------- | ---------------------------- | ---------------------------------- |
| 資料模型 | 關聯式(多資料表、表間聯結) | 非關聯式(鍵值組,類似 JSON 結構) |
| 適用情境 | 複雜查詢、多表聯結、商業分析 | 單一表格查詢、簡單資料存取、高頻率操作 |
| 架構與控制 | 使用者可掌握 DB 結構、網路、備份等,需一定程度的管理 | 無伺服器、完全託管、自動擴展,幾乎零管理 |
| 擴展能力 | 垂直擴展為主(可增加單一實例的容量) | 水平擴展,支援 PB 級資料、高輸送量 |
| 資料存取 | 使用 SQL 查詢 | 使用 API 查詢(如 GetItem、PutItem) |
| 成本與延遲 | 成本較高,查詢靈活但可能較慢 | 成本彈性高,存取延遲極低 |
| 備援與高可用性 | 自動備援、自動備份、支援 Multi-AZ 部署 | 內建高可用性、全球資料同步 |
> 垂直擴展:升級 水平擴展:增量
RDS 的複雜功能與架構會帶來額外的延遲與成本。
若只做簡單查詢,這些成本其實沒有必要,因此簡單架構可使用DynamoDB就好了。
| 使用情境 | 推薦服務 | 原因說明 |
| --------------- | --------------- | ------------------- |
| 需要跨表聯結、複雜分析查詢 | Amazon RDS | 支援關聯式 SQL 查詢,擅長商業分析 |
| 僅需單表查詢、快速存取、高彈性 | Amazon DynamoDB | 精簡架構、低延遲、易於擴展 |
| 對資料庫控制權有需求 | Amazon RDS | 可控制網路、資料、結構等細節 |
| 想要免管理、無伺服器架構 | Amazon DynamoDB | 自動擴展與高可用性設計 |
---
## 六、資料倉儲與分析
資料倉儲適用於大量歷史資料儲存與分析,強調讀取與聚合效能(關聯式)。
想像它是一個倉庫,已不會變動的資料可倉儲。
1. **Amazon Redshift**
* PB 級資料倉儲服務,支援複雜查詢與 BI 報表。
* 可整合 S3(Redshift Spectrum)進行聯合查詢。
* 適合企業商業分析、預測模型等應用。
| 項目 | 傳統資料庫(RDS、DynamoDB) | 資料倉儲(Amazon Redshift) |
| ---- | ------------------- | --------------------- |
| 主要用途 | 即時交易、寫入、查詢 | 歷史資料分析、BI 報表與趨勢 |
| 資料特性 | 隨時變動 | 已發生、不再改變 |
| 架構特色 | 適合高頻率快速更新寫入資料 | 適合大量查詢 |
| 查詢範例 | 查目前庫存、即時用戶資訊 | 查全年度銷售、比對店別營收 |
| 儲存規模 | 一般為 GB~TB | 常見為 PB~EB 級 |
| 查詢語言 | SQL 或 API | SQL(支援標準 BI 工具) |
---
## 七、資料遷移與整合
1. **AWS Database Migration Service(DMS)**
* 支援將內部部署或他雲的資料庫遷移至 AWS。
* 支援同質遷移(如 MySQL → MySQL)、也可以進行異質遷移(如 Oracle → Aurora)使用 AWS Schema Conversion Tool 進行轉換。
* 可進行一次性遷移或持續資料複寫。
**使用案例**
* 開發和測試資料庫遷移:能夠讓開發人員根據生產資料測試應用程式,而不會影響生產使用者
* 資料庫合併:將多個資料庫合併成單一資料庫
* 連續複寫:將進行中的資料副本傳送至其他目標來源,而不是進行一次性遷移
---
## 八、其他資料庫服務
1. **Amazon DocumentDB**:相容 MongoDB,適用於文件型資料儲存(內容管理、目錄、使用者描述檔案)。
2. **Amazon Neptune**:圖形資料庫,適合社交關係與推薦系統、詐騙偵測。
3. **Amazon QLDB**:總帳型資料庫,一個不可變的記錄系統,永遠不能刪除稽核中的任何項目。
4. **Amazon Managed Blockchain**:可以讓您使用開放原始碼架構來建立和管理區塊鏈網路。區塊鏈是一種分散式總帳系統,允許多方在沒有中央權限的情況下,執行交易和共用資料。
5. **Amazon ElastiCache**:記憶體快取服務,支援 Redis、Memcached。
6. **Amazon DynamoDB Accelerator(DAX)**:是適用於 DynamoDB (非關聯式)的記憶體內快取。它有助於改善回應時間,從不到十毫秒縮短到數微秒。
> 5、6為加速資料庫讀取的方法
---
## 九、本單元重點回顧
* 區塊儲存:Amazon EBS 提供永久儲存,適合與 EC2 搭配使用。
* 物件儲存:Amazon S3 適合彈性儲存與備份,支援多種儲存類別。
* 檔案儲存:Amazon EFS 適合多執行個體共享存取檔案。
* 關聯式資料庫:Amazon RDS/Aurora 提供熟悉 SQL 管理體驗。
* 非關聯式資料庫:Amazon DynamoDB 適合高效能、彈性架構應用。
* 資料倉儲與分析:Amazon Redshift 適合大規模歷史資料查詢。
* 資料遷移與快取:DMS、ElastiCache 協助現有資料庫整合與提速。
| 儲存類型 | 定義 | 適合使用情境 | 操作方式 | 例子 |
| ---------------------------- | ----------------------------------- | ------------------------------- | -------------------------------------- | ------------------------------ |
| **檔案儲存**<br>(File Storage) | 把資料當成傳統的「資料夾與檔案」結構來儲存,像電腦檔案系統一樣。 | 使用者需透過檔案路徑存取資料,例如 NAS 系統、共享資料夾。 | 檔案路徑(如 `/user/docs/file.txt`) | Amazon EFS、Windows 檔案伺服器 |
| **區塊儲存**<br>(Block Storage) | 將資料分成許多固定大小的「區塊」,每塊有自己的位址,由主機組裝成檔案。 | 需要低延遲、高效能 IOPS,如資料庫、作業系統磁碟。 | 像硬碟一樣掛載在作業系統上,通常需格式化成檔案系統。 | Amazon EBS、iSCSI 裝置 |
| **物件儲存**<br>(Object Storage) | 每筆資料為獨立的「物件」,包含內容、本身中繼資料與唯一 ID。 | 大量非結構化資料,如圖片、影片、備份、Web 靜態內容。 | 透過 API 呼叫,以物件 ID 存取,如 `getObject(key)` | Amazon S3、Google Cloud Storage |