1.应用场景
主要用于学习使用基于DynamoDB实现服务,同时学习其背后的设计思想,大致实现原理。 |
2.学习/操作
1.文档阅读
2.整理输出注意:这里所有的操作,都只能作为参考,最终确认还是要去看官方文档。 那里更详细,更准确。2.1 使用GUI客户端,打开线上DynamoDB2.1.1 NoSQL Workbench // 官方工具下载页2.1.2 安装打开2.1.3 连接,打开线上的DynamoDB通过operation builder 然后输入必须的信息[key和secret],打开之后,如下: 2.2 更多操作1. 批量查询简单说,方式一:支持通过多个的primary来删除。-- 也应该效率最高的 主键是分区键,单一主键 主键是分区键+排序键,复合主键、 详情看文档
2. 删除item / itemsDeleteItem简单说 方式一: 通过primary key来删除。 方式二: 通过其他条件删除。
通过读取文档,知道可以支持批量删除,也就是条件删除,满足条件的item都会被删除.
但是仔细看文档,发现
官方指南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
同时,另外创建代码仓库,实践一遍,不需要实践所有的操作,先将目前常用的操作实践一遍即可。 知道整个工作流程,在工作中如何才能最大提高效率。 代码仓库:TBD 2.4 GO SDKdynamodb - 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 |
后续补充
...