觀賞魚辨識成本估計
根據 觀賞魚辨識系統說明-Day 01所介紹的服務,這個系統需要一個 g4dn.2xlarge 的 Amazon EC2 主機,以及一個 Amazon Elastic IP 的固定 IP 位置,在不考慮流量的情況下,一年的固定成本為 4,393.56 USD,這是以主機建置在 US East (Ohio) 地區來計算的, AWS 提供一個 AWS 價錢計算機 (AWS Pricing Calculator),計算結果如下圖。
圖 1、AWS 價錢計算機 (AWS Pricing Calculator)
這樣的成本對於一個建立雛形系統的開發人員來說十分昂貴,因為整個架構一開始就是以微服務的方式建構,所以現在嘗試將所有服務轉換成 AWS 的托管服務,形成無服務器 (serverless) 的方式。首先考慮的是將資料庫獨立出來,AWS 提供的資料庫有分關聯型資料庫 (RDS) 與非關聯型資料庫 (DynamoDB),Amazon RDS 的收費方式與 Amazon EC2 一樣,是需要租賃一台主機;而 DynamoDB 則是與服務請求數量與存儲容量相關。下圖是 Amazon RDS 與 DynamoDB 的價格比較, Amazon RDS 的預留一年主機租用費用是 203.00 USD ,而硬碟 10GB 每月費用是 2.3 USD;DynamoDB 則是每月需要 2.51 USD。所以選擇 DynamoDB 是比較划算的,主要是因為我們使用的容量其實是很低的。
圖 2、Amazon RDS 與 DynamoDB 的價格比較
Amazon DynamoDB 簡介
Amazon DynamoDB 是一項快速靈活的非關聯型資料庫服務,適合所有需要一致性和個位數毫秒級延遲的任何規模的應用程序。它是完全托管的雲端資料庫,支持文檔和鍵值存儲模型。
Amazon DynamoDB 提供以下優勢:
圖 3、Amazon DynamoDB 的優勢
如果與關係資料庫表的元件進行比較,項目類似於行(記錄),屬性類似於列(欄位),DynamoDB 的基本元件包括下列元件,圖示如下圖:
圖 4、Amazon DynamoDB 的基本组件
DynamoDB 支援兩種類型的主鍵:
簡單主鍵 – 簡單主鍵由一個稱為分區鍵的屬性構成。 DynamoDB 基於此主鍵屬性構建無序的索引,表中的每個項目由其分區鍵值進行唯一標識。在下圖中 SensorLocation 表中,主鍵是分區鍵,因為它由單個屬性 SensorId 組成,該屬性是分區鍵。表中的每個項目由其分區鍵值(SensorA 和 SensorB)進行唯一標識,同樣,每個感測器都只有一個位置,以緯度和經度表示。
複合主鍵 – 複合主鍵由兩個屬性組成:分區鍵和排序鍵。 DynamoDB 基於分區鍵屬性和排序鍵屬性分別構建無序索引和有序索引,在具有分區鍵和排序鍵的表中,兩個項目可能具有相同的分區鍵值;但是,這兩個項目必須具有不同的排序鍵值。在下圖中 SensorReadings 表中,主鍵是分區和排序主鍵,因為它由 SensorId 屬性(分區鍵)和 Time 屬性(排序鍵)組成。 對於每個 SensorId,在不同時間可能有多個項目對應於感測器讀數。 SensorId 和 Time 的組合唯一識別表中的專案。
圖 5、Amazon DynamoDB 支援的主鍵類型
Amazon DynamoDB 操作
步驟 1:建立資料表
透過 AWS 管理控制台 (AWS Management Console) 新增一個表格,以及分區索引鍵,設定如下,圖片如下:
圖 6、建立 Amazon DynamoDB 資料表
步驟 2:寫入資料至資料表
來到 DynamoDB 的管理介面,點擊左邊功能選單的 項目,選定資料表 fishInfoTbl,點擊 建立項目,如下圖所示。
圖 7、建立 Amazon DynamoDB 項目
建立項目的方式有兩種,一種是表單另一種則是 JSON 方式,下圖使用 JSON 建立 Amazon DynamoDB 項目。
圖 8、使用 JSON 建立 Amazon DynamoDB 項目
最後檢視 Amazon DynamoDB 中,fishInfoTbl 表格內的所有項目,如下圖所示。
圖 9、檢視 Amazon DynamoDB 項目