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…
在本文中,咱们将 独特理解 Amazon DocumentDB 4.0 当中的新增性能,并向您展现如何在 Amazon Cloud9 环境之上应用 Amazon DocumentDB 4.0 及事务。
📢 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的 2021 亚马逊云科技中国峰会!点击图片报名吧~
Amazon DocumentDB 4.0 中的新个性
以下是 Amazon DocumentDB 4.0 引入的各项次要性能个性。要查看新性能的残缺列表,请参阅MongoDB 4.0 兼容性。
- MongoDB 4.0 兼容性
https://docs.aws.amazon.com/d…
ACID 事务–Amazon DocumentDB 现可反对跨多个文档、语句、汇合及数据库执行事务。事务反对使您可能跨 Amazon DocumentDB 集群内的一个或多个文档执行 ACID 操作,从而简化利用开发流程。对于更多详细信息,请参阅 事务。
- 事务
https://docs.aws.amazon.com/d…
1. 变更流–当初,您能够在集群层级 (client.watch()或 mongo.watch()) 或者数据库层级 (db.watch()) 开启变更流。您也能够指定一个 startAtOperationTime 以关上变更流游标,并将变更流的保留周期缩短至 7 天(之前最多为 24 小时)。对于更多详细信息,请参阅在Amazon DocumentDB 上应用变更流。
- 在 Amazon DocumentDB 上应用变更流
https://docs.aws.amazon.com/d…
2.Amazon DMS–当初,您能够应用 Amazon Database Migration Service (Amazon DMS) 将 MongoDB 4.0 工作负载迁徙至 Amazon DocumentDB 4.0。Amazon DMS 现可反对以 MongoDB 4.0 为源、以 Amazon DocumentDB 4.0 为指标,并能够 Amazon DocumentDB 3.6 为源实现由 3.6 版本到 4.0 版本的降级。对于更多详细信息,请参阅 将 Amazon DocumentDB 作为 Amazon Database Migration Service 的指标。
- Amazon Database Migration Service
https://aws.amazon.com/cn/dms/ - 将 Amazon DocumentDB 作为 Amazon Database Migration Service 的指标
https://docs.aws.amazon.com/d…
3. 监控–通过增加事务,当初您能够应用五项新的 Amazon CloudWatch 指标:
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…
4. 性能与索引–新版本中还蕴含多项性能与索引改良:可在 $lookup 聚合阶段应用索引、可间接由索引 (所波及查问) 提供带有投射的 find()查问、可通过 findAndModify API 应用 hint()、对 $addToSet 操作符做出性能优化,同时改良并放大了总体索引大小。对于更多详细信息,请参阅 公布阐明。
- 公布阐明
https://docs.aws.amazon.com/d…
5. 操作符–咱们减少了对以下新聚合操作符的反对: $ifNull, $replaceRoot, $setIsSubset, $setInstersection, $setUnion 以及 $setEquals。对于更多详细信息,请参阅 反对的 MongoDB API、操作与数据类型。
- 反对的 MongoDB API、操作与数据类型
https://docs.aws.amazon.com/d…
6. 基于角色的访问控制 (RBAC)–应用 ListCollection 与 ListDatabase 命令,您当初能够抉择应用 authorizedCollections 与 authorizedDatabases 参数以容许用户列出其有权拜访的汇合与数据库,因而不再须要为此别离应用 listCollections 与 listDatabase 角色。用户还能够间接完结本人的游标,无需应用 KillCursor 角色。对于更多详细信息,请参阅 应用基于角色的访问控制(内置角色)限度数据库拜访行为。
- 应用基于角色的访问控制(内置角色)限度数据库拜访行为
https://docs.aws.amazon.com/d…
Amazon DocumentDB4.0 与事务入门指南
第一步是在您的默认 Amazon Virtual Private Cloud(Amazon VPC) 当中创立一个 Amazon Cloud9 环境外加一套 Amazon DocumentDB 集群。对于创立默认 VPC 的操作阐明,请参阅 Amazon VPC 入门指南。本文将演示如何应用 mongo shell 从 Amazon Cloud9 环境接入 Amazon DocumentDB 集群并运行事务。在创立 Amazon 资源时,咱们建议您遵循 Amazon 身份与拜访治理(IAM)最佳实际。
- 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…
创立 Amazon Cloud9 环境
要创立 Amazon Cloud9 环境,请实现以下操作步骤:
1. 在 Amazon Cloud9 控制台 上,抉择 Create environment。
- Amazon Cloud9 控制台
https://console.aws.amazon.co…
2. 在 Environment name and description 之下的 Name 局部,为环境输出名称。本文将环境命名为 Amazon DocumentDB Cloud9。
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
1. 在 Amazon EC2 控制台的 Network & Security 之下, 抉择 Security groups。
- Amazon EC2 控制台
https://console.aws.amazon.co…
2. 抉择 Create security group。
3. 在 Security group name 局部,输出 demoDocDB。
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…
2. 在 Engine version 局部, 抉择默认版本 (4.0.0)。
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…
要加密传输数据,请为 Amazon DocumentDB下载 CA 证书,具体代码如下:
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
- 下载 CA 证书
https://s3.amazonaws.com/rds-…
接入您的 Amazon DocumentDB 集群
当初,您能够接入本人的 Amazon DocumentDB 集群了。
1. 在 Amazon DocumentDB 控制台的 Clusters page 上找到您的集群。本文中应用 docdb-2020-10-09-21-45-11 集群。
2. 抉择您所创立的集群。
3. 复制其对应的连贯字符串。请疏忽掉 <insertYourPassword> 局部,以便在接入时由 mongo shell 提醒您输出明码。这样,您就不用以明文模式输出明码。
您的连贯字符串应相似于以下截屏所示。
4. 在输出明码时,您会看到 rs0:PRIMARY> 提醒,代表您已胜利接入 Amazon DocumentDB 集群。
对于故障排查的更多详细信息,请参阅Amazon DocumentDB 故障排查。
- Amazon DocumentDB 故障排查
https://docs.aws.amazon.com/d…
在接入 mongo shell 之后,您能够应用以下命令确认以后版本(4.0.0):
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
亚马逊云科技首席产品经理