iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

觀賞魚辨識的YOLO全餐系列 第 27

Day 27 - 成本估計與 Amazon DynamoDB

  • 分享至 

  • xImage
  •  

Day 27 - 成本估計與 Amazon DynamoDB

觀賞魚辨識成本估計

根據 觀賞魚辨識系統說明-Day 01所介紹的服務,這個系統需要一個 g4dn.2xlarge 的 Amazon EC2 主機,以及一個 Amazon Elastic IP 的固定 IP 位置,在不考慮流量的情況下,一年的固定成本為 4,393.56 USD,這是以主機建置在 US East (Ohio) 地區來計算的, AWS 提供一個 AWS 價錢計算機 (AWS Pricing Calculator),計算結果如下圖。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510FwALFCWE1C.png
圖 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 是比較划算的,主要是因為我們使用的容量其實是很低的。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510OxgcHrXBwV.png
圖 2、Amazon RDS 與 DynamoDB 的價格比較

Amazon DynamoDB 簡介

Amazon DynamoDB 是一項快速靈活的非關聯型資料庫服務,適合所有需要一致性和個位數毫秒級延遲的任何規模的應用程序。它是完全托管的雲端資料庫,支持文檔和鍵值存儲模型。

Amazon DynamoDB 提供以下優勢:

  • 完全托管 – DynamoDB 是一項完全托管的非關聯型資料庫服務,只需創建資料庫表並設置自動擴容 (Auto Scaling) 的目標使用率,其餘事情都可交由該服務來代勞。您無需再擔心資料庫管理任務,例如硬體或軟體預置、設置和配置、軟件修補、操作分布式資料庫集群,或者根據擴展需求在多個實例間對數據進行分區等問題。還可以使用 DynamoDB 對您的所有表執行時間點恢復、備份和還原,這可幫助滿足公司和法規存檔要求。
  • 性能快速穩定 – 服務端平均延遲通常不超過個位數毫秒 (ms)。隨著您的資料量不斷增多、應用程序性能要求不斷提升,DynamoDB 會使用自動分區和固態硬盤 (SSD) 技術來滿足您的吞吐量需求,並針對任意規模的數據庫提供低延遲。
  • 精細的訪問控制 – DynamoDB 與 AWS Identity and Access Management (IAM) 集成,對組織內的用戶實現精細的訪問控制。您可以為每名用戶分配唯一的安全證書,控制每名用戶對服務和資源的訪問。
  • 靈活 – DynamoDB 支持存儲、查詢和更新文檔。使用 AWS 開發工具包 (SDK),可以編寫將 JavaScript 對象表示法 (JSON) 文檔直接儲存到 Amazon DynamoDB 表中的應用程序。此功能減少了為插入、更新和檢索 JSON 文檔必須編寫的新代碼量。您還可以通過使用幾行代碼來執行強大的資料庫操作,例如嵌套 JSON 查詢。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510PbnvunsL6G.png
圖 3、Amazon DynamoDB 的優勢

如果與關係資料庫表的元件進行比較,項目類似於行(記錄),屬性類似於列(欄位),DynamoDB 的基本元件包括下列元件,圖示如下圖:

  • 資料表 – DynamoDB 將資料存儲在表中,表中包含具有屬性的項目。
  • 項目 – 每個表包含零個或更多個項目,項目是一組屬性,具有不同於所有其他項目的唯一標識。
  • 屬性 – 每個項目包含一個或多個屬性,屬性是基礎的數據元素,無需進一步分解。
  • 主鍵 – 表具有一個主鍵,用於唯一標識表中的每個項目,每個項目的鍵都不同。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510oO216Wbavw.png
圖 4、Amazon DynamoDB 的基本组件

DynamoDB 支援兩種類型的主鍵:
簡單主鍵 – 簡單主鍵由一個稱為分區鍵的屬性構成。 DynamoDB 基於此主鍵屬性構建無序的索引,表中的每個項目由其分區鍵值進行唯一標識。在下圖中 SensorLocation 表中,主鍵是分區鍵,因為它由單個屬性 SensorId 組成,該屬性是分區鍵。表中的每個項目由其分區鍵值(SensorA 和 SensorB)進行唯一標識,同樣,每個感測器都只有一個位置,以緯度和經度表示。
複合主鍵 – 複合主鍵由兩個屬性組成:分區鍵和排序鍵。 DynamoDB 基於分區鍵屬性和排序鍵屬性分別構建無序索引和有序索引,在具有分區鍵和排序鍵的表中,兩個項目可能具有相同的分區鍵值;但是,這兩個項目必須具有不同的排序鍵值。在下圖中 SensorReadings 表中,主鍵是分區和排序主鍵,因為它由 SensorId 屬性(分區鍵)和 Time 屬性(排序鍵)組成。 對於每個 SensorId,在不同時間可能有多個項目對應於感測器讀數。 SensorId 和 Time 的組合唯一識別表中的專案。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510CzbcaV4gS0.png
圖 5、Amazon DynamoDB 支援的主鍵類型

Amazon DynamoDB 操作

步驟 1:建立資料表

透過 AWS 管理控制台 (AWS Management Console) 新增一個表格,以及分區索引鍵,設定如下,圖片如下:

  • 表格: fishInfoTbl
  • 分割區索引鍵: LatinName

https://ithelp.ithome.com.tw/upload/images/20210927/20129510lFa95uY6w0.png
圖 6、建立 Amazon DynamoDB 資料表

步驟 2:寫入資料至資料表

來到 DynamoDB 的管理介面,點擊左邊功能選單的 項目,選定資料表 fishInfoTbl,點擊 建立項目,如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510sDsFNdh05I.png
圖 7、建立 Amazon DynamoDB 項目

建立項目的方式有兩種,一種是表單另一種則是 JSON 方式,下圖使用 JSON 建立 Amazon DynamoDB 項目。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510YEBlHOOlCx.png
圖 8、使用 JSON 建立 Amazon DynamoDB 項目

最後檢視 Amazon DynamoDB 中,fishInfoTbl 表格內的所有項目,如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20210927/20129510VU9mdBmJkv.png
圖 9、檢視 Amazon DynamoDB 項目

參考資料

  • AWS Pricing Calculator,https://calculator.aws/#/estimate
  • Amazon DynamoDB,https://aws.amazon.com/tw/dynamodb/
  • 事前準備 - 入門教學,https://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/GettingStarted.SettingUp.DynamoWebService.html

上一篇
Day 26 - HBuilderX 與 Native.js API 讀取圖片
下一篇
Day 28 - AWS Lambda 結合 Dynamodb
系列文
觀賞魚辨識的YOLO全餐38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言