文章图片
文章图片
Amazon DocumentDB(兼容MongoDB)是一项快速、可扩展、具备高可用性的全托管文档数据库服务,可支持MongoDB工作负载。今天,我们宣布Amazon DocumentDB正式获得MongoDB 4.0兼容能力。通过此次升级,现在您可以使用原子性、一致性、隔离性与持久性(ACID)事务,为数据库或集群打开变更流游标等等。关于Amazon DocumentDB 4.0的完整发行版说明,请参阅MongoDB 4.0兼容性。
- Amazon DocumentDB(兼容MongoDB)
https://aws.amazon.com/cn/doc... - MongoDB 4.0兼容性
https://docs.aws.amazon.com/d...
文章图片
想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~
Amazon DocumentDB 4.0中的新特性 以下是Amazon DocumentDB 4.0引入的各项主要功能特性。要查看新功能的完整列表,请参阅MongoDB 4.0兼容性。
- MongoDB 4.0兼容性
https://docs.aws.amazon.com/d...
- 事务
https://docs.aws.amazon.com/d...
- 在Amazon DocumentDB上使用变更流
https://docs.aws.amazon.com/d...
- Amazon Database Migration Service
https://aws.amazon.com/cn/dms/ - 将Amazon DocumentDB作为Amazon Database Migration Service的目标
https://docs.aws.amazon.com/d...
TransactionsOpen, TransactionsOpenMax, TransactionsAborted, TransactionsStarted 以及 TransactionsCommitted, 外加 currentOp, ServerStatus与 profiler等新字段。关于更多详细信息,请参阅使用Amazon CloudWatch监控Amazon DocumentDB。
- Amazon CloudWatch
https://aws.amazon.com/cn/clo... - 使用Amazon CloudWatch监控Amazon DocumentDB
https://docs.aws.amazon.com/d...
- 发布说明
https://docs.aws.amazon.com/d...
- 支持的MongoDB API、操作与数据类型
https://docs.aws.amazon.com/d...
- 使用基于角色的访问控制(内置角色)限制数据库访问行为
https://docs.aws.amazon.com/d...
- Amazon Virtual Private Cloud
https://amazonaws-china.com/vpc/ - Amazon VPC
https://docs.aws.amazon.com/v...
文章图片
在本演练中,请使用特定区域内的默认VPC。关于更多详细信息,请参阅创建Virtual Private Cloud (VPC)。
- 创建Virtual Private Cloud (VPC)
https://docs.aws.amazon.com/A...
1.在Amazon Cloud9控制台上,选择 Create environment。
- Amazon Cloud9控制台
https://console.aws.amazon.co...
3.选择Next step。
4.在Configure settings部分,直接使用全部默认选项。
5.选择Next step。
6.在Review部分, 选择Create environment。
Amazon Cloud9环境的置备最多可能需要3分钟。在完成之后,您会看到以下命令提示符。
文章图片
您将被重新定向至命令提示符,在这里安装mongo shell并接入Amazon DocumentDB集群。
创建安全组 在此步骤中,您将使用Amazon Elastic Compute Cloud(Amazon EC2)创建一个新的安全组,借此从Amazon Cloud9环境中的端口27017(Amazon DocumentDB的默认端口)连接至Amazon DocumentDB集群。
- Amazon Elastic Compute Cloud
https://amazonaws-china.com/ec2
- Amazon EC2控制台
https://console.aws.amazon.co...
3.在Security group name部分,输入demoDocDB。
【身兼数职的Amazon DocumentDB,还有什么不为人知的功能()】4.在 VPC部分,接受使用您的默认VPC。
5.在Description部分,输入相应描述。
6.在Inbound rules部分, 选择Add rule。
7.在Type部分, 选择Custom TCP Rule。
8.在Port Range部分,输入27017。源安全组为您刚刚为Amazon Cloud9环境创建的安全组。
9.要查看可用安全组列表,请在目标字段内输入cloud9。
10.选择名称为amazon-cloud9-的安全组。
11.接受所有默认选项,而后选择Create security group。
下图所示,为您在此步骤中创建的安全组,以及在创建Amazon Cloud9环境时创建的Amazon Cloud9安全组。
文章图片
创建一套 Amazon DocumentDB 4.0集群 要创建您的Amazon DocumentDB 4.0集群,请完成以下操作步骤:
1.在Amazon DocumentDB控制台上的Clusters页面中,选择Create。
- Amazon DocumentDB控制台
https://signin.aws.amazon.com...
3.在Create Amazon DocumentDB cluster页面的Instance class部分, 选择 t3.medium。
4.在Number of instances部分, 选择1。用于将成本控制在最低水平。
5.其他设置全部保留为默认选项。
6.在Authentication部分,输入用户名与密码。
7.开启Show advanced settings。
文章图片
8.在Network settings部分的VPC security groups当中, 选择demoDocDB。
文章图片
9.选择Create cluster。
Amazon DocumentDB现在开始配置您的集群,这可能需要几分钟才能完成。当集群与实例状态皆显示为Available时,您即可接入该集群。在Amazon DocumentDB设置集群的过程中,请完成剩余步骤以接入Amazon DocumentDB集群。
安装4.0 mongo shell 现在,您可以安装mongo shell,并使用这款命令行实用工具接入并查询您的Amazon DocumentDB集群。
1.在Amazon Cloud9r控制台的Your environments之下, 选择Amazon DocumentDBCloud9。选择Open IDE。
2.要安装4.0 mongo shell,请在命令提示符中使用以下命令创建repo文件:echo -e “[mongodb-org-4.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/...\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/stati...” | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
3.完成之后,使用以下命令安装mongo shell:sudo yum install-y mongodb-org-shell
传输层安全(TLS)协议将在Amazon DocumentDB集群上默认启用。关于更多详细信息,请参阅管理Amazon DocumentDB Cluster TLS设置。
- 管理Amazon DocumentDB Cluster TLS设置
https://docs.aws.amazon.com/d...
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
- 下载CA证书
https://s3.amazonaws.com/rds-...
1.在Amazon DocumentDB控制台的Clusters page上找到您的集群。本文中使用 docdb-2020-10-09-21-45-11集群。
文章图片
2.选择您所创建的集群。
3.复制其对应的连接字符串。请忽略掉
文章图片
您的连接字符串应类似于以下截屏所示。
文章图片
4.在输入密码时,您会看到rs0:PRIMARY> 提示,代表您已成功接入Amazon DocumentDB集群。
关于故障排查的更多详细信息,请参阅Amazon DocumentDB故障排查。
- Amazon DocumentDB故障排查
https://docs.aws.amazon.com/d...
db.version()
输出结果如下:
4.0.0
使用事务 现在,您已经使用mongo shell成功接入集群了,接下来即可使用事务。这里我们使用典型的事务用例,即某人的账户中借钱,并将这笔钱存入另一人的账户当中。由于此用例需要使用数据库内的两项单独操作,因此我们希望两项操作在同一事务内完成并遵循ACID原则。在本演练中,我们从Bob的银行账户向Alice的银行账户转账400美元。两个账户的初始余额都为500美元。
- 为了从空集合开始,我们首先将账户集合删除:
db.account.drop()
您将得到以下输出结果:
{true, false}
- 将数据插入集合以代表Bob的账户:
db.account.insert({"_id": 1, "name": "Bob", "balance": 500.00});
您将得到以下输出结果:
WriteResult({ "nInserted" : 1 })
- 将数据插入集合以代表Alice的账户:
db.account.insert({“_id”: 2, “name”: “Alice”, “balance”: 500.00});
您将得到以下输出结果:
WriteResult({ “nInserted” : 1 })
- 要启动一项事务,请为账户创建会话与会话对象:
var mySession =getMongo().startSession();
6. var mySessionObject = mySession.getDatabase('test').getCollection('account');
mySession.startTransaction({readConcern: {level: 'snapshot'}, writeConcern: {w: 'majority'}});
- 在此事务中,从Bob账户处借取400美元:
mySessionObject.updateOne({"_id": 2}, {"$inc": {"balance": 400}});
您将得到以下输出结果:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
- 同样的,向Alice账户中增加400美元:
mySessionObject.updateOne({"_id": 1}, {"$inc": {"balance": -400}});
您将得到以下输出结果:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
- 在此事务中,您可以使用以下代码查看两个账户的更新状态:
mySessionObject.find()
{ "_id" : 2, "name" : "Alice", "balance" : 900 }{ "_id" : 1, "name" : "Bob", "balance" : 100 }
- 如果您在事务之外查看,则会发现更新结果尚未显示:
db.account.find()
您将得到以下输出结果:
{ "_id" : 1, "name" : "Alice", "balance" : 500 }{ "_id" : 2, "name" : "Bob", "balance" : 500 }
- 提交事务并关闭会话:
- 要查看更新结果,请使用以下代码:
db.account.find()
您将得到以下输出结果:
{ "_id" : 2, "name" : "Alice", "balance" : 900 }{ "_id" : 1, "name" : "Bob", "balance" : 100 }
资源清理 在完成演练之后,您应停止Amazon DocumentDB集群或将其删除以降低成本。在默认情况下,经过30分钟的闲置周期,您的Amazon Cloud9环境将停止运行基础EC2实例以帮助节约成本。
总结 本文向您介绍了Amazon DocumentDB中的MongoDB 4.0兼容性,同时展示了如何通过创建Amazon Cloud9环境、安装mongo 4.0 shell、创建Amazon DocumentDB集群、接入集群并通过简单用例使用Amazon DocumentDB 4.0与事务。关于更多详细信息,请参阅MongoDB 4.0兼容性与事务。关于最新发布内容与博文的详细信息,请参阅Amazon DocumentDB (兼容MongoDB )资源。
- MongoDB 4.0兼容性
https://docs.aws.amazon.com/d... - 事务
https://docs.aws.amazon.com/d... - Amazon DocumentDB (兼容MongoDB )资源
https://aws.amazon.com/docume...
文章图片
Joseph Idziorek
亚马逊云科技首席产品经理
推荐阅读
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- python|深度盘点(一文详解数据分析中100个常用指标和术语)
- 专注于最有价值的事情!——亚马逊云科技首席科学家工作心得分享
- Data|单链表的增删查改
- C|生成一个整数集合的所有子集
- Big|Anaconda 换源
- Data|拜占庭将军问题中的签名算法SM,以及有关证明。
- 大数据|HBase导出CSV格式数据的方法
- big|zookeeper集群启动时报Connection refused错误