DAY 10 Big Data 5Vs – Velocity(多样性) DynamoDB

对於「半结构化」类型的资料可以存放至NoSQL 资料库*之中。NoSQL 资料库常见於需要较快写入速度的应用场景;半结构化资料本身少了关联式资料库那种schema的限制,以换取较快的写入速度。几乎等於NoSQL 资料库代名词的资料库软件MongoDB,在AWS上也有个对应的服务叫Amazon DocumentDB ,它是与 MongoDB 完全相容性的全托管资料库服务。在DocumentDB 中可以执行与MongoDB相同的程序码且可以使用相同的驱动程序和与资料库工具。

然而,在AWS中更常用被应用的是另一个的 NoSQL 资料库服务—Amazon DynamoDB。
DynamoDB 是可以快速布建与快速扩展的分散式资料库,且有内建提供对资料库中的资料做静态加密的功能,如果不使用预设的金钥也可搭配AWS KMS的金钥加密。
https://ithelp.ithome.com.tw/upload/images/20210922/20140161ldgAyheilI.jpg
先认识DynamoDB的基本元件:

资料表Tables:是由 项目 组成的资料集合
项目Items:资料呈现的基本单位,含有只少一个属性
属性Attributes:存在於项目中,类似关联式资料库的栏位。有些项目有巢状属性,最多 32 层。

主索引键Primary Key:必须存在且独一无二,可用来识别资料表中每个项目
次要索引Secondary Indexes:每个项目可有一或多个次要索引,有Global与Local两种;
每个资料表预设可建立 20 个Global Secondary Indexes与5个Local Secondary Indexes

主控台右方橘色「建立资料表」按键点入可以直接建立资料表,从工具栏点进分页也可以进入相同画面来建立:
注意资料表名称长度有限制
设定partition key:功能类似 Hash key
选用设定 Sort Key:功能类似 range key可以加快查找
https://ithelp.ithome.com.tw/upload/images/20210922/20140161VUnolqFuQG.jpg
可依照需求决定要多少算力,当然跟计算费用也有关
https://ithelp.ithome.com.tw/upload/images/20210922/20140161PkFF5iOqQ0.jpg

建立完资料表後可以从左边工具栏进入项目分页
选定刚刚建立的Table後可以来建立Item
https://ithelp.ithome.com.tw/upload/images/20210922/20140161mKdsmCPh3E.jpg

但实务上更常使用AWS CLI或CDK来与DynamoDB互动
以下提供基本增删改查用法:

写入

aws dynamodb put-item \
    --table-name 资料表名  \
    --item '{"项目": {"子项目": "属性"}, "项目2": {"子项目2": "属性2"}, \
            "项目3": {"子项目3": "属性3"}, "项目4": {"子项目4": "属性4"}}'

读取

aws dynamodb get-item --consistent-read \
    --table-name 资料表名  \
    --key '{"项目": {"子项目": "属性"}'

更新

aws dynamodb update-item \
    --table-name 资料表名  \
    --key '{"项目": {"子项目": "属性"}' \
    --update-expression "SET "项目 = : 新项目"" \	
    --expression-attribute-values '{":新项目":{"项目":"新属性"}}' \
    --return-values ALL_NEW

查询

aws dynamodb query \
    --table-name 资料表名  \
    --key-condition-expression "项目 = : 子项目" \
    --expression-attribute-values  '{":子项目":{"子项目":"属性"}}'

删除

aws dynamodb delete-table --table-name 资料表名

*No-SQL( https://zh.wikipedia.org/wiki/NoSQL )


<<:  [Day 7] 阿嬷都看得懂的文字标签与语意化标签

>>:  Unity自主学习(八):Unity Hub授权Unity引擎

[Day30] 後记

很谢谢各位的支持, 让这趟连续30天的教学旅程能告一段落。 在参考官方文件整理内容的过程中, 让我...

【学习笔记】CSS中的HTML Tag Box设定

HTML的每个标签(元素)都是一个Box,因此都由content、padding、border、ma...

Day 13 懒得想变数吗? RSpec 有提供你啦

该文章同步发布於:我的部落格 还记得我们使用 let 方法来实作一个物件来让我们可以快速使用! 但...

DAY 8- 《区块密码1》DES(2)- 密钥生成及安全性

これはです 。 子密钥生成 上一篇说到,在 DES 加密过程中的第二步,需要重复进行16次, 而每一...

3分钟帮你找到部落格要写的内容

一、前言 网站该写些什麽内容?这点对於部落格新手来说,刚开始因为有许多想分享的东西,有什麽写什麽,...