AWS学习第四篇之 DynamoDB笔记

一、结构分析

 1. 结构

表–>项目–>属性。(属性可以嵌套 )

 2. 主键和索引

用主键标识每一个项目,使用二级索引。

 3. 例子(People表)

{ 的方法的发得分地方大幅度的 {
“PersonID”:101, 的方法 “PersonID”:”102”,
“LastName”:”Smith”, “LastName”:”Jones”,
“FirstName”: “Fred”, “FirstName”:”Mary”
“Phone”:”555-1234”

|—————属性————-|
} 的方法发得分地法 方大幅度的 }
|—————项目——————|
|————————————————-表——————————-|

二、主键

 1.分两种类型

分区键,分区键和排序键

 2. 分区键

2.1. 决定了此项目存放到的分区(DynamoDB内部的物理存储)
2.2. 只有分区键的表,任何两个项目不能有相同的键值(散列函数的输入)

 3. 分区键和排序键

3.1. 具有此复合函数的表,可以有相同的分区键,但是必须有不同的排序键。

三、二级索引

 1. DynamoDB分两种索引

2.1. Global secordary index,一种与表中不同的分区键和排序键。
2.2. 本地二级索引。一种分区键相同但是排序键不同的索引。

 2. 数量限制

最多给一个表定义5个全局二级索引和5个本地二级所索引。

 3. 索引的基表

四、DynameoDB流

 1. 作用

流用于捕获表中的修改事件

 2. 触发条件

2.1. 向表中添加新项目。
2.2. 更新了项目。
2.3. 从表中删除项目。

五、数据类型

 1. 标量类型

如:数字,字符串,二进制,布尔,null

 2. 文档类型

如:列表和映射

   2.1. 列表

用[…] 表示。如:favoriteThings:[“cookies”,“coffee”,3.1415]
元素的数据类型没有限制。

   2.2. 映射

用{…}表示。

{
一个day:”Monday”,
一个UnreadEmails:42,
一个ItemsOnMyDesk:[
一个一个“coffee cup”,
一个一个“Telephone”,
一个一个的{
一个一个一个pens:{Quantity:3},
一个一个一个pens:{Quantity:2},
一个一个一个pens:{Quantity:1}
一个一个的}
一个]
}

 3. 集类型

如字符串和数字集,二进制集。

 4. 注意

4.1. 文档类型支持嵌套,最多32层。
4.2. DynamoDB不支持空串和空集,但是支持空列表和映射。

六、编程接口

 1. 接口分类

低级接口,文档接口和对象持久化接口。

 2. 低级接口

官方文档链接
示例:Music表中歌曲的GetItem请求,并输出歌曲发行年份。
com.amazonaws.services.dynamodbv2.AmazonDynamoDB类实现了DynamoDB低级别接口。

public class MusicLowLevelDemo {

    public static void main(String[] args) {
        // 通过客户端生成器来创建客户端
        AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build();
        // S表示字符串,N表示数字
        HashMap<String, AttributeValue> key = new HashMap<String, AttributeValue>();
        key.put("Artist", new AttributeValue().withS("No One You Know"));
        key.put("SongTitle", new AttributeValue().withS("Call Me Today"));

        // 创建get请求
        GetItemRequest request = new GetItemRequest()
            .withTableName("Music")
            .withKey(key);

        try {
            // 客户端对象来执行请求
            GetItemResult result = client.getItem(request);
            if (result && result.getItem() != null) {
                // 获取结果
                AttributeValue year = result.getItem().get
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值