NoSQL - AWS DynamoDB - 学习/实践

1.应用场景

主要用于学习使用基于DynamoDB实现服务,同时学习其背后的设计思想,大致实现原理。

2.学习/操作

AWS dynamodb 的图像结果

1.文档阅读

Amazon DynamoDB 云数据库 _NoSQL云数据库-AWS云服务

DynamoDB 和入门AWS开发工具包 - Amazon DynamoDB

PHP 和 DynamoDB - Amazon DynamoDB

Namespace Aws\DynamoDb | AWS SDK for PHP 3.x -- PHP DynamoDB API文档

AWS DMS如何轻松迁移MongoDB到DynamoDB? - 知乎

什么是 Amazon DynamoDB? - Amazon DynamoDB // 开发人员指南

访问 DynamoDB - Amazon DynamoDB

下载 NoSQL Workbench - Amazon DynamoDB // GUI客户端

使用 DynamoDB 进行设计和架构的最佳实践 - Amazon DynamoDB -- 推荐阅读

视频教程

-- 可以看到视频不全,时间也很短,具体的用法,还是需要去查看文档,并且结合具体的SDK来做实践

dynamoDB _ 搜索结果_哔哩哔哩_Bilibili

Amazon DynamoDB 最佳实践_哔哩哔哩_bilibili

【伯乐大典】AWS DynamoDB知识点梳理_哔哩哔哩_bilibili

深入探讨 Amazon DynamoDB 的设计模式、流复制和全局表_哔哩哔哩_bilibili

2.整理输出

注意:

这里所有的操作,都只能作为参考,最终确认还是要去看官方文档。 那里更详细,更准确。

2.1 使用GUI客户端,打开线上DynamoDB

2.1.1 NoSQL Workbench // 官方工具下载页

2.1.2 安装打开

2.1.3 连接,打开线上的DynamoDB

通过operation builder

然后输入必须的信息[key和secret],打开之后,如下:

2.2 更多操作

1. 批量查询

简单说,方式一:支持通过多个的primary来删除。-- 也应该效率最高的

主键是分区键,单一主键

主键是分区键+排序键,复合主键、

详情看文档

AWS SDK for PHP 3.x

batchgetitem --- where条件

array (
  'TableName' => 'dev_public_sig',
  'ProjectionExpression' => 'members',
  'Keys' => 
  array (
    0 => 
    array (
     
'nid' => 
      array (
        'S' => 'sig_mipi4cioocf0lfque9s0to32fv',

      ),
    ),
    1 => 
    array (
   
  'nid' => 
      array (
        'S' => 'sig_i7i85q8bu93amvhr0lcomnh7mp',

      ),
    ),
    2 => 
    array (
     
'nid' => 
      array (
        'S' => 'sig_u0geehchflnd3p65gu49ebq1f6',

      ),
    ),
  ),
)

2. 删除item / items

DeleteItem

简单说

方式一:

通过primary key来删除。

方式二:

通过其他条件删除。

官方文档:// 第一句

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

翻译:

按主键删除表中的单个项。您可以执行条件删除操作,删除该项(如果该项存在)或其具有预期的属性值.

DeleteItem - Amazon DynamoDB

dynamodb - Amazon Web Services - Go SDK

AWS SDK for PHP 3.x

通过读取文档,知道可以支持批量删除,也就是条件删除,满足条件的item都会被删除.

Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

但是仔细看文档,发现

A map of attribute names to AttributeValue objects, representing the primary key of the item to delete.

For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.

翻译:

属性名到AttributeValue对象的映射,表示要删除的项的主键。

对于主键,必须提供所有属性。

例如,

对于一个简单的主键,您只需要为分区键提供一个值。

对于复合主键,必须同时提供分区键和排序键的值。

// 这里刚好是复合主键,所以意味着,不能根据分区键,批量删除数据,--- 原因?TBD -- 下次AWS 培训,可以作为一个问题,询问一下。

官方指南

从表中删除数据 - Amazon DynamoDB

BatchWriteItem // 同时支持删除

--- 不得不说 这个方法名很有迷惑性

经过仔细查看文档发现,这里的批量是将多个请求放到一次请求中,从而执行批量操作,这里的多个请求,

可以包含put和delete操作。

总结操作:

java - Bulk delete items from AWS DynamoDB with only partition key (NOT DUPLICATE) - Stack Overflow

Dynamodb does not support deleting items by partition key. What you can do though is to query by partition key, and then use BatchWriteItem to delete the items returned by your query (max 25 items at a time). 

翻译:

Dynamodb不支持按分区键删除项。不过,您可以通过分区键进行查询,然后使用BatchWriteItem删除查询返回的项(一次最多25项)。

3. 事务 / Transaction

使用 DynamoDB 事务管理复杂工作流 - Amazon DynamoDB

AWS DynamoDB  support transaction

Amazon DynamoDB Transactions 简化了开发人员对表内和表间的多个项目进行“要么全有要么全无”的协调式更改的体验。在 DynamoDB 中,事务提供原子性、一致性、隔离性和持久性 (ACID),帮助您维护应用程序中的数据正确性。

诸多限制,项目中实现,各个语言SDK的example code并没有,比如PHP, Go

初步感觉实现有些复杂,另外可能的影响,也不太清楚。

2.3 PHP SDK

AWS SDK for PHP 3.x -- 推荐认真阅读一遍,顺便可以好好学习一下英语

同时,另外创建代码仓库,实践一遍,不需要实践所有的操作,先将目前常用的操作实践一遍即可。

知道整个工作流程,在工作中如何才能最大提高效率。

代码仓库:TBD

2.4 GO SDK

dynamodb - Amazon Web Services - Go SDK

2.5 TBD

后续补充

...

3.问题/补充

1. 使用No SQL Workbench 查询数据

使用PartiQL Statement 查询

2. DynamoDB模糊查询只是支持begin_with, 不支持contain

所以严格意义上模糊查询是没法做的,也不应该去这样做。

至于内部实现TBD -- 物理基于SSD硬盘来做的

Querying for DynamoDB items using "contains" - Stack Overflow

3. 关于DynamoDB table的item的CURD

都只能通过primary key来做

4.参考

Amazon DynamoDB 云数据库 _NoSQL云数据库-AWS云服务 // 官网介绍

DynamoDB 和入门AWS开发工具包 - Amazon DynamoDB // DynamoDB 和入门AWS开发工具包

PHP 和 DynamoDB - Amazon DynamoDB // PHP 和 DynamoDB

AWS DMS如何轻松迁移MongoDB到DynamoDB? - 知乎 // AWS DMS如何轻松迁移MongoDB到DynamoDB?

什么是 Amazon DynamoDB? - Amazon DynamoDB // 开发人员指南

访问 DynamoDB - Amazon DynamoDB // 访问DynamoDB

下载 NoSQL Workbench - Amazon DynamoDB // GUI客户端

Querying for DynamoDB items using "contains" - Stack Overflow

后续补充

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值