一、前言亚马逊的活动力度一向都比较大,因此让我有机会体验了Amozon DynamoDB这款完全托管的分布式NoSQL 数据库服务。另外,亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。活动地址 Amozon DynamoDB是什么? Amazon DynamoDB 是一种全托管 NoSQL 数据库服务,相当于在NoSQL的基础上做了很多扩展,附加了很多降本增效的功能,让开发人员不需要额外去维护什么,开箱即用。它主要提供的服务有:无缝扩展,快速可预测的性能,减少繁琐的管理分布式数据库的工作负担,提供静态加密、按需备份、自动维护过期项目等。极大的减少开发人员的时间成本和提高建设效率。 可能有些小伙伴不清晰NoSQL与传统的关系型数据库的区别,这里简单的做一个介绍:
因此,如果业务关系不复制、依赖简单又需要经常修改字段,对性能要求很高但安全性要求不高的情况下,使用DynamoDB是非常不错的选择。反之还是建议使用诸如mysql这类的传统关系型数据库。 文章目录二、Amozon DynamoDB上手教程1)账号注册没有AWS账号的小伙伴需要先进行账号注册:注册及上手试用地址 (在账单登记页可以使用国内的信用卡) 2)创建和查询NoSQL表2.1 建表建立账号后,按照官方的DynamoDB使用教程即可快速的创建NoSQL表: 2.2 添加数据这里与官方文档稍有出入,实际操作可以通过点击列表的表名称-浏览项目-创建项目进行创建,如下图所示: 2.3 查询数据然后点击运行按钮(也可以设置筛选条件)就可以将我们刚添加的数据查询出来: 2.4 删除/修改数据选中列表中任意数据,就可以在右上角的“操作”按钮中选择对应的操作对数据进行修改或删除:
3)使用Python管理DynamoDB我们还可以使用Python来管理DynamoDB,官方文档有详细的教程,这里不再赘述。 4)踩坑记录在 《使用 Amazon DynamoDB 和 Amazon SNS 构建回合制游戏》 教程中,按照走到应用部署这一步时,执行: 按照提示将执行create-lambda.sh文件执行命令改为nodejs14.x后,再将之前新建的资源删除后即运行成功: 后面也是一路绿灯,完成了回合制游戏的构建。 三、Amozon DynamoDB特点说明1)DynamoDB分区键、排序键的理解1.1 分区键在我们建表时,会让我们指定分区建: 那分区键的作用是什么呢?这里给大家举一个例子说明: 比如现在有这样一个身份证号:210122199206140257,从这个身份证号就能快速的知道这是一位来自辽宁省、沈阳市.、辽中县的一名29岁男生。 1.2 排序键排序键可以让将我们的数据按指定的排序存储,在后续获取数据的时候就能够通过二分查找的方式来降低查询的时间复杂度。 2)DynamoDB的二级索引在诸如Mysql之类的关系型数据库中,通过建立索引能够让我们在查想要数据时,不对全表进行扫描而是通过索引查询指定行范围的数据,这样有更快的速度。创建索引后,我们再修改表的数据,数据库会自动更改索引来映射表的修改,无需我们手动操作。 在dynamodb中如何实现类似的操作呢? 我们可以创建二级索引来实现类似的目的,DynamoDB的索引和oracle,mysql这些关系式数据库的索引有很大不同。DynamoDB的二级索引是由一个hash键和多个range键所组成的,它对支持应用程序需要的查询模式至关重要,关于DynamoDB索引的使用和介绍可以访问管理索引文档进行学习。 3)DynamoDB的备份和还原数据备份和回滚恢复是至关重要的,DynamoDB具有完全自动化的按需备份、还原和时间点恢复的能力: 另外,在备份的同时,也会对数据自动加密,编入目录,来提高管理的效率,我们可以在表详情页中的备份选项卡进行备份设置的操作: 也可以按需创建一次性备份: 大家也可以访问 云原生数据库在线大会 了解数据库发展历史,及未来发展方向等。 四、总结DynamoDB除了提供数据存取管理的功能外,在高可用性(扩展、备份等)方面也做了不少努力,同时也有非常多的开箱即用的服务。因此,它不仅能在大规模数据的情况下保证高性能的数据存取,也能减少开发人员的建设运维成本。 当然DynamoDB也有不适用的场景:在产品开发的初期,如果没有一个完善清晰的设计方案,特别是走一步看一步的敏捷开发模式下,并不建议使用DynamoDB,因为按照DynamoDB的文档的理解:只有你对产品本身很熟悉时,才能设计好它的分区、排序键之类的。换而言之,当产品处于较成熟,或自己对产品很熟悉时,使用DynamoDB绝对能达到事半功倍的效果。 亚马逊云科技专为开发者们打造了多种学习平台:
|
|