开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情
Amozon DynamoDB是什么?
Amazon DynamoDB 是一种全托管 NoSQL 数据库服务,相当于在NoSQL的基础上做了很多扩展,附加了很多降本增效的功能,让开发人员不需要额外去维护什么,开箱即用。它主要提供的服务有:无缝扩展,快速可预测的性能,减少繁琐的管理分布式数据库的工作负担,提供静态加密、按需备份、自动维护过期项目等。极大的减少开发人员的时间成本和提高建设效率。
可能有些小伙伴不清晰NoSQL与传统的关系型数据库的区别,这里简单的做一个介绍:
| 数据库 | 数据集 | 结构 | 优势 |
|---|---|---|---|
| 关系型数据库 | 表格/行列存储 | 关系型数据库的结构是预先定义好的,表与表之间可以建立关系、约束等。 | 能够保证数据的安全性和完整性 |
| NoSQL | 键值对(字典)结构 | 在非关系型数据库中,数据可以在任何时候任何地方添加。不需要预先定义。 | 扩展性高、体积更小、速度更快。 |
因此,如果业务关系不复制、依赖简单又需要经常修改字段,对性能要求很高但安全性要求不高的情况下,使用DynamoDB是非常不错的选择。反之还是建议使用诸如mysql这类的传统关系型数据库。
总结
DynamoDB除了提供数据存取管理的功能外,在高可用性(扩展、备份等)方面也做了不少努力,同时也有非常多的开箱即用的服务。因此,它不仅能在大规模数据的情况下保证高性能的数据存取,也能减少开发人员的建设运维成本。 在游戏应用中,消息、通知的收发是必不可少的,另外游戏应用对性能的要求也相对于传统前后端分离应用来讲会高不少,通过Amazon DynamoDB 和 Amazon SNS的组合,能够轻松解决这两个问题:
当然DynamoDB也有不适用的场景:在产品开发的初期,如果没有一个完善清晰的设计方案,特别是走一步看一步的敏捷开发模式下,并不建议使用DynamoDB,因为按照DynamoDB的文档的理解:只有你对产品本身很熟悉时,才能设计好它的分区、排序键之类的。换而言之,当产品处于较成熟,或自己对产品很熟悉时,使用DynamoDB绝对能达到事半功倍的效果。