【IT168 编译】DynamoDB是一个完全托管的NoSQL数据库服务,具有可扩展性,可以提供快速、可预期的性能。自AWS将它对外开放以来,受到了众多技术爱好者的喜爱。低成本、低延迟的查询服务,可以让任何拥有信用卡的人随时随地有效租用资金。对于需要可靠键值对存储的用户来讲更是不二之选。
虽然DynamoDB是数据库服务中的明星,但是作为程序员的你知道怎样正确使用它吗?
1、 你真的需要DynamoDB数据库吗?
首先,程序员应该知道DynamoDB是否真的适用你工作用的数据库。如果有少量数据需要聚合或建立连接,DynamoDB可能不是正确的工具,RDS或Aurora可能更适合。如果不考虑聚合与稳定性, 在ElastiCache上运行Redis可能更适合。
2、 仔细阅读DynamoDB使用手册
相信每个人在使用DynamoDB数据库服务系统时都会阅读它的使用手册,但是关于布置大数据的部分大多数程序员很容易错过。由于DynamoDB不是开放源码的,所以程序员无法了解压力测试和基准测试数据。因此,为了熟练掌握该工具,必须仔细阅读查看。
3、 向亚马逊客服人员寻求帮助
亚马逊服务端有许多实用工具来帮助用户解决相关问题。便捷的互联网促成了技术人员与客户之间零距离的接触,亚马逊技术人员会通过网络第一时间帮助您解决在产品使用方面遇到的问题。
4、关于吞吐量:先读取再写入
在DynamoDB数据库中,写入吞吐量比读取吞吐量支付的费用要高达5倍。如果您的工作涉及大量写入,建议先查看是否可以先读取数据,以避免原位更新。先读取将有助于避免在写入重的环境中节制和削减成本,还可以多次写入密钥,这样可以大大降低成本。
5、 学会利用upstream模块批量写入数据
如果每一次的数据信息更新都涉及Dynamo数据库,那你可以采用以下办法。每更新一次密钥,就整理记录需要更新的数据;每隔一段固定的时间,就批量写入一次,这样可以节省写入数据时间。
在DynamoDB中批处理允许程序员调整延迟要求,并将其与Dynamo的成本进行平衡。分区(在诸如Kafka或Storm等系统中)可以避免多个来源的数据锁定或竞争条件。
6、 动态调整吞吐量的峰值
如果应用程序的使用量不停波动,你可以使用自动扩展支持这个功能(即Auto-Scaling)。自动扩展允许EC2的容量根据需求自动调整,保证在流量高峰时增容,在流量较低时减容以节省成本。为了节省成本,您可以调整DynamoDB吞吐量的配置方式,以及使用AWS Lambda和CloudWatch两个事件。
7、 学会利用DynamoDB分析实时流数据
DynamoDB有一个鲜为人知的功能,可以将所有更改通过Kinesis发布并保存至Feed流。它的主要功能就是对实时流数据进行收集、处理并分析。实时流数据对构建其他项目而言非常有价值。
8、 记录所有分片(shards)
在程序开发过程中,程序员会发现这样一个有趣的问题:每当遇到节流误差时,我们都将试图更新的特定密钥记录下来。并且把这些有问题的“热键”列入黑名单。这让我们对分片的认识有了新的看法。
DynamoDB处理数据的方式取决于查询方式,所以了解查询模式、索引需求和吞吐量是很重要的。尽管DynamoDB是由AWS工程师运行的云服务,但它并不能解决糟糕的架构决策,因此,学会合理使用DynamoDB才是王道。