高效的NoSQL数据库服务Amozon DynamoDB体验分享

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 高效的NoSQL数据库服务Amozon DynamoDB体验分享

一、前言


亚马逊的活动力度一向都比较大,因此让我有机会体验了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与传统的关系型数据库的区别,这里简单的做一个介绍:


数据库 数据集 结构 优势
关系型数据库 表格/行列存储 关系型数据库的结构是预先定义好的,表与表之间可以建立关系、约束等。 能够保证数据的安全性和完整性
NoSQL 键值对(字典)结构 在非关系型数据库中,数据可以在任何时候任何地方添加。不需要预先定义。 扩展性高、体积更小、速度更快。


因此,如果业务关系不复制、依赖简单又需要经常修改字段,对性能要求很高但安全性要求不高的情况下,使用DynamoDB是非常不错的选择。反之还是建议使用诸如mysql这类的传统关系型数据库。


二、Amozon DynamoDB上手教程


1)帐号注册


没有AWS帐号的小伙伴需要先进行帐号注册:注册及上手试用地址 (在账单登记页可以使用国内的信用卡)


2)创建和查询NoSQL表


2.1 建表

建立帐号后,按照官方的DynamoDB使用教程即可快速的创建NoSQL表:


c4f41427b34340f08610b72dc6f0f0e0.png


2.2 添加数据


这里与官方文档稍有出入,实际操作可以通过点击列表的表名称-浏览项目-创建项目进行创建,如下图所示:

a3b45d32536047b3a73d281cc2f7f34b.gif


2.3 查询数据


然后点击运行按钮(也可以设置筛选条件)就可以将我们刚添加的数据查询出来:


29554bc02b9c42d3a2f115d336a358ea.png


2.4 删除/修改数据


选中列表中任意数据,就可以在右上角的“操作”按钮中选择对应的操作对数据进行修改或删除:

4a608056ae204c959eba246d0d720ad5.png


需要删除表的话,在外层的表列表中选择对应的表数据,点击删除按钮即可:

49d4feecab68460bbe7d244718aab071.png

3)使用Python管理DynamoDB


我们还可以使用Python来管理DynamoDB,官方文档有详细的教程,这里不再赘述。


4)踩坑记录


《使用 Amazon DynamoDB 和 Amazon SNS 构建回合制游戏》 教程中,按照走到应用部署这一步时,执行:bash scripts/create-lambda.sh命令出现了下图中的报错:

648b68aca8b749938ba159652661844a.png

按照提示将执行create-lambda.sh文件执行命令改为nodejs14.x后,再将之前新建的资源删除后即运行成功:

707a7c5e75ef41fc9b20431df8521d69.png

后面也是一路绿灯,完成了回合制游戏的构建。


三、Amozon DynamoDB特点说明

1)DynamoDB分区键、排序键的理解

1.1 分区键

在我们建表时,会让我们指定分区建:

03cc8626e9dd4291a92165882d246c6d.png


那分区键的作用是什么呢?这里给大家举一个例子说明:


比如现在有这样一个身份证号:210122199206140257,从这个身份证号就能快速的知道这是一位来自辽宁省、沈阳市.、辽中县的一名29岁男生。

身份证格式规则说明:前1-6位为行政区划代码即归属地,第7-14位为出生年月日,第15-17位为顺序代码,在同一个地区出生同一个出生的人通过顺序号码区分,第17位奇数表示男性,偶数表示女性,第18位为校验码,用于校验身份证号码是否合法。

而DynamoDB的分区键也有同样的作用,通过指定标识来对数据分区,这样查询数据会显著提高。


1.2 排序键


排序键可以让将我们的数据按指定的排序存储,在后续获取数据的时候就能够通过二分查找的方式来降低查询的时间复杂度。


2)DynamoDB的二级索引


在诸如Mysql之类的关系型数据库中,通过建立索引能够让我们在查想要数据时,不对全表进行扫描而是通过索引查询指定行范围的数据,这样有更快的速度。创建索引后,我们再修改表的数据,数据库会自动更改索引来映射表的修改,无需我们手动操作。


在dynamodb中如何实现类似的操作呢?


我们可以创建二级索引来实现类似的目的,DynamoDB的索引和oracle,mysql这些关系式数据库的索引有很大不同。DynamoDB的二级索引是由一个hash键和多个range键所组成的,它对支持应用程序需要的查询模式至关重要,关于DynamoDB索引的使用和介绍可以访问管理索引文档进行学习。


3)DynamoDB的备份和还原


数据备份和回滚恢复是至关重要的,DynamoDB具有完全自动化的按需备份、还原和时间点恢复的能力:

259925d180af41a4a658e1e5ecc6b664.png

另外,在备份的同时,也会对数据自动加密,编入目录,来提高管理的效率,我们可以在表详情页中的备份选项卡进行备份设置的操作:


46b9e67a647a4756b646ecdcb549e9b8.png


也可以按需创建一次性备份:

afba69972a464cf597b6e5a164028ee5.png


大家也可以访问 云原生数据库在线大会 了解数据库发展历史,及未来发展方向等。


四、总结


DynamoDB除了提供数据存取管理的功能外,在高可用性(扩展、备份等)方面也做了不少努力,同时也有非常多的开箱即用的服务。因此,它不仅能在大规模数据的情况下保证高性能的数据存取,也能减少开发人员的建设运维成本。

在游戏应用中,消息、通知的收发是必不可少的,另外游戏应用对性能的要求也相对于传统前后端分离应用来讲会高不少,通过Amazon DynamoDB 和 Amazon SNS的组合,能够轻松解决这两个问题:


0ca503ff11f74b35b40e2491ebf15414.png


当然DynamoDB也有不适用的场景:在产品开发的初期,如果没有一个完善清晰的设计方案,特别是走一步看一步的敏捷开发模式下,并不建议使用DynamoDB,因为按照DynamoDB的文档的理解:只有你对产品本身很熟悉时,才能设计好它的分区、排序键之类的。换而言之,当产品处于较成熟,或自己对产品很熟悉时,使用DynamoDB绝对能达到事半功倍的效果。


亚马逊云科技专为开发者们打造了多种学习平台:


入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源:点我访问

架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等:点我访问

构建者库:了解亚马逊云科技如何构建和运营软件:点我访问

用于在亚马逊云科技平台上开发和管理应用程序的工具包::点我访问


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6天前
|
SQL 存储 NoSQL
SQL vs. NoSQL:如何根据大数据需求选择合适数据库
【4月更文挑战第8天】本文对比分析了SQL与NoSQL数据库在大数据项目中的应用。SQL数据库适合结构化数据、强一致性和复杂事务处理,如金融系统,而NoSQL则适用于半结构化和非结构化数据、高并发及大数据场景,如社交网络。选择时应考虑业务需求、技术栈、团队经验和成本效益,以找到最佳解决方案。随着技术发展,NewSQL和Multi-model数据库也提供了更多选择。
35 0
|
6天前
|
JSON NoSQL MongoDB
理解Nosql数据库的mongodb
【5月更文挑战第5天】MongoDB是2009年发布的一款通用型NoSQL数据库,结合了关系模型和NoSQL的优点,适用于各种现代应用。其特点包括图形界面、数据服务、云基础设施集成(AWS, Azure, Google Cloud)。它具备全面的查询能力、ACID事务、可调整的一致性保证,并有多语言驱动及工具,可在任何地方运行。
66 4
|
3天前
|
NoSQL Shell MongoDB
NoSQL数据使用指令和引擎连接数据库实例
【5月更文挑战第8天】本文介绍了MongoDB的本地使用和常用操作,包括通过mongo shell连接数据库、显示数据库和集合,以及副本集设置。最后提到了MongoDB的日志功能和顶点集的使用,如capped collection的创建和管理。
44 3
|
3天前
|
存储 缓存 NoSQL
NoSQL缓存数据库的使用场景实例和命令速查表
【5月更文挑战第8天】Redis 是一个内存数据结构服务,用 C 编写,支持五种数据结构,不仅限于键值对。它用于缓存、消息队列、订阅/发布系统等,提供持久化、主从复制和集群支持。了解其核心数据结构和应用场景是有效利用 Redis 的关键。
46 3
NoSQL缓存数据库的使用场景实例和命令速查表
|
6天前
|
NoSQL atlas MongoDB
Nosql数据库MongoDB的使用场景
【5月更文挑战第5天】 MongoDB是全球性的多云数据库,可在私有、公共和混合云中运行,提供高可用性、扩展性和合规性。 安全特性包括认证、授权、审计、网络隔离和加密。可提供跨云操作、可视化工具、搜索功能和数据湖支持,适用于现代应用开发,包括边缘数据处理。
36 1
|
6天前
|
PHP 数据库
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-2
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
6天前
|
存储 PHP Apache
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-1
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
6天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
170 0
|
6天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
332 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
6天前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库(NoSQL)的语法
【4月更文挑战第11天】NoSQL数据库语法各异,无统一标准。Redis以其多样数据类型(如字符串、散列)和命令式操作(如`SET`、`GET`)为特点,而MongoDB采用类似JavaScript的查询语言,支持复杂操作。适应不同NoSQL数据库需学习相应语法,参考官方文档是最佳实践。
14 3