Day 27 - 成本估计与 Amazon DynamoDB

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 项目

参考资料


<<:  Day19 Elastic APM (三)

>>:  Day 27:Google Map 范本学习(2)

Day02 线上金流再做什麽?

现在时代线上金流其实已经与各位的生活密不可分, 小吃、直播、实体商店、大小型电商等等族繁不及备载, ...

【前端效能优化】Lighthouse 检测後将图片转为 webp 格式

原先的网站表现分数只有 74分 更换图片格式後网站表现分数 97分 可以看见最大内容绘制 LCP(L...

浅谈无状态这件事 Stateless

无状态stateless指的是web客户端在发送请求时,到底需不需要一直带着验证资讯,或者是所谓的上...

自动化测试,让你上班拥有一杯咖啡的时间 | Day 16 - 如何选取下拉式选单的值

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 在 E2E 测试中,不仅有选取元素...

Day 29 Sniffing & Spoofing 监听与欺骗 (dnschef)

前言 今天要体验的工具位於Kali的09-Sniffing & Spoofing分类,这类的...