云服务器内容精选

  • 限制条件 目前4.0、4.2、4.4版本的集群实例和3.4、4.0、4.2、4.4版本的副本集实例支持该功能。 开启增量备份对4U以下规格的实例性能影响较为明显,因此4U以下规格的实例增量备份默认关闭。 当发生以下场景时,会停止增量备份。待下一次自动全量备份完成后,会重新开始增量备份。 rename操作 collmod操作 创建用户 删除用户 创建角色 删除角色 打开集群Shard ip 修改集群Shard ip密码 打开集群Config ip 修改集群Config ip密码 修改rwuser账号密码
  • 使用限制 库表恢复与CPU及内存规格相关,恢复单表内数据到指定时间点,最大支持单条数据大小见表1。 库表级恢复失败时,可通过扩容规格或分批次进行库表时间点恢复。 表1 规格信息 CPU类型 规格类型 vCPU(个) 内存(GB) 单集合恢复最大支持单条数据大小 x86 通用型 2 4 400KB 2 8 800KB 4 8 1MB 4 16 1.3MB 8 16 1.3MB 8 32 2MB 增强Ⅱ型 1 8 400KB 2 8 800KB 2 16 800KB 4 16 1.3MB 4 32 1.3MB 8 32 2MB 8 64 3MB 16 64 4MB 16 128 7MB 32 128 7MB 32 256 10MB 64 256 10MB 64 512 16MB 鲲鹏 - 2 4 400KB - 2 8 800KB - 4 8 1MB - 4 16 1.3MB - 8 16 1.3MB - 8 32 2MB - 16 32 2MB - 16 64 4MB
  • 使用限制 库表恢复与CPU及内存规格相关,恢复单表内数据到指定时间点,最大支持单条数据大小见表1。 库表级恢复失败时,可通过扩容规格或分批次进行库表时间点恢复。 表1 规格信息 CPU类型 规格类型 vCPU(个) 内存(GB) 单集合恢复最大支持单条数据大小 x86 通用型 2 4 400KB 2 8 800KB 4 8 1MB 4 16 1.3MB 8 16 1.3MB 8 32 2MB 增强Ⅱ型 1 8 400KB 2 8 800KB 2 16 800KB 4 16 1.3MB 4 32 1.3MB 8 32 2MB 8 64 3MB 16 64 4MB 16 128 7MB 32 128 7MB 32 256 10MB 64 256 10MB 64 512 16MB 鲲鹏 - 2 4 400KB - 2 8 800KB - 4 8 1MB - 4 16 1.3MB - 8 16 1.3MB - 8 32 2MB - 16 32 2MB - 16 64 4MB
  • 使用须知 文档数据库服务的审计日志功能默认是关闭的,您可以根据业务需要开启审计日志,开启后系统记录读写操作的审计信息,可能会有5%-15%的性能影响。 开启审计日志会收取一定费用,收费详情请参见产品价格详情。 文档数据库服务会去检测已生成的审计日志,若审计日志超过用户自定义的保留天数,则将其删除。建议审计日志保存180天以上,用于审计回溯和问题分析等场景。 审计策略修改后,文档数据库服务将按照新的策略执行审计,原审计日志的保留天数以修改后审计策略的保留天数为准。 审计日志不建议删除,如需删除,请先确保审计日志删除后仍然符合您所在地或者企业的安全合规要求,建议删除前下载日志文件在本地备份。审计日志删除后不可恢复,请谨慎操作。 您可以通过文档数据库服务查看、下载和删除DDS实例审计日志,详情请参见通过文档数据库服务查看审计日志;也可以按照日志配置管理配置后,在LTS服务查看DDS实例审计日志的详细信息,包括搜索日志、日志可视化、下载日志和查看实时日志等功能,详情请参见通过 云日志 服务查看审计日志。 审计日志默认每小时生成一次,如果日志大小超过最大限制10MB,则会额外生成新的审计日志。 客户数据需要使用UTF-8编码格式,对于非UTF-8格式数据,对应语句的审计结果可能会有缺失、遗漏或乱码等非预期现象。
  • 事件样例 如下提供了查询副本集状态信息的样例,详细的字段解释可参考事件结构。 { "atype": "replSetGetStatus", "ts": { "$date": "2022-06-29T07:23:29.077+0000" }, "local": { "ip": "127.0.0.1", "port": 8636 }, "remote": { "ip": "127.0.0.1", "port": 50860 }, "users": [ { "user": "rwuser", "db": "admin" } ], "roles": [ { "role": "root", "db": "admin" } ], "param": { "command": "replSetGetStatus", "ns": "admin", "args": { "replSetGetStatus": 1, "forShell": 1, "$clusterTime": { "clusterTime": { "$timestamp": { "t": 1656487409, "i": 117 } }, "signature": { "hash": { "$binary": "PTJhGQ6cr8RyzuqbevXfG0xWj/c=", "$type": "00" }, "keyId": { "$numberLong": "7102437926763495425" } } }, "$db": "admin" } }, "result": 0 }
  • 使用须知 目前集群和副本集支持迁移可用区操作。 跨可用区实例以及IPV6子网创建的实例不支持该操作。 对于副本集实例,如果当前存在只读节点或未激活的备节点,不支持该操作。 对于集群实例,如果当前存在只读节点,不支持该操作。 可用区迁移所需时间和数据量大小有关,整个过程可能耗时1小时,并且会伴随60秒以内的闪断,请在业务低峰期执行迁移可用区操作。建议使用高可用连接进行访问,并且确保应用程序具有重连机制。 迁移的目标可用区和当前实例的可用区处于同一区域。 关于区域和可用区的详情,请参见区域和可用区。 为保证实例稳定运行,请在业务低峰期执行迁移可用区操作。
  • 操作步骤 进入快速购买文档数据库DDS页面。 在“购买数据库实例”页面,选择计费模式,填写并选择实例相关信息后,单击“立即购买”。 图1 基础配置 表1 基础配置 参数 描述 计费模式 选择“包年/包月”或“按需计费”。 包年/包月 用户选购完服务配置后,可以根据需要设置购买时长,系统会一次性按照购买价格对账户余额进行扣费。 创建成功后,如果包周期实例到期后不再长期使用资源,可将“包年/包月”实例转为“按需计费”,到期后将转为按需计费实例。具体请参见包周期实例转按需计费。 说明: “包年/包月”方式购买的实例不能直接删除,仅支持资源退订操作,如何退订资源请参见退订包周期实例。 按需计费 用户选购完服务配置后,无需设置购买时长,系统会根据消费时长对账户余额进行扣费。 创建成功后,如果需要长期使用资源,可将“按需计费”实例转为“包年/包月”,继续使用这些资源的同时,享受包周期的低资费。具体请参见按需计费实例转包周期。 区域 资源所在的区域。 说明: 不同区域的内网不互通,且购买后不能更换,请谨慎选择。 项目 当前区域对应的项目,可进行切换。 可用区 可用区是指在同一区域下,电力、网络隔离的物理区域,可用区内部网络互通,不同可用区之间物理隔离。 目前支持将实例部署在单可用区或3可用区。 说明: 目前3可用区的功能只针对部分区域开放,如果您在当前区域的管理控制台上没有看到3可用区,请切换至其他支持3可用区的区域进行购买。 如果业务要求实例之间的网络延时较低,则建议您选择单可用区,将实例的组件部署在同一个可用区内。实例选择单可用区部署时,会默认配置为反亲和部署。反亲和部署是出于高可用性考虑,将您的Primary、Secondary和Hidden节点分别创建在不同的物理机上。 如果业务需要较高的容灾能力,建议您选择3可用区。此时,实例下的dds mongos节点、shard节点和config节点分别部署在3个不同的可用区内。 实例类型 选择“集群”。 集群类型的实例包含dds mongos、shard和config节点。其中,shard和config节点均采用三节点副本集架构,保证高可用。 兼容MongoDB版本 4.4 4.2 4.0 3.4 CPU类型 当前文档数据库实例的CPU架构支持x86和鲲鹏两种类型。 说明: MongoDB4.0、3.4版本可选,其他版本无需选择,默认X86。 x86 x86类型的CPU架构采用复杂指令集(CISC),CISC指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。由于指令执行较为复杂所以每条指令花费的时间较长。 鲲鹏 鲲鹏类型的CPU架构采用RISC精简指令集(RISC),RISC是一种执行较少类型计算机指令的微处理器,它能够以更快的速度执行操作,使计算机的结构更加简单合理地提高运行速度,相对于X86类型的CPU架构具有更加均衡的性能功耗比。 鲲鹏类型CPU架构的优势是高密度低功耗,可以提供更高的性价比,满足重载业务场景使用。 规格类型 x86 CPU架构下,针对不同的应用场景,可以选择不同的规格类型。 通用型(s6)。通用型的规格实例,适合平时不会持续高压力使用CPU,但偶尔需要提高计算性能完成工作负载的场景,包括但不限于:轻量级的Web服务器、开发、测试环境以及中低性能数据库等。 增强Ⅱ型(c6)。多项技术优化,计算性能强劲稳定,配套25GE(千兆以太网)智能高速网卡,提供超高网络带宽和PPS收发包能力。是高负载场景首选,对于计算与网络有更高性能要求的网站和Web应用、通用数据库及缓存服务器,中重载企业应用等更加适用。 支持的实例规格请参见集群实例规格。 dds mongos性能规格 dds mongos节点的CPU和内存,请参见集群实例规格。创建成功后,可进行规格变更,请参见变更集群实例的CPU和内存规格。 dds mongos数量 数量可选范围为2~32,创建成功后,可进行节点扩容,请参见添加集群实例的节点。 shard性能规格 shard节点的CPU和内存,请参见集群实例规格。shard存储用户的数据,用户不能直接连接shard。创建成功后,可进行规格变更,请参见变更集群实例的CPU和内存规格。 shard存储空间 存储空间最小10GB,最大5000GB,用户选择大小必须为10的整数倍。创建成功后可进行扩容,请参见扩容集群实例的磁盘空间。 说明: 用户购买的存储空间超过600GB,当剩余的可用存储空间为18GB时,实例状态将被设置为只读。 用户购买的存储空间小于等于600GB,当实际使用量到总存储空间的97%时,实例状态将被设置为只读。 此时建议您清理多余的资源或进行扩容。 shard数量 数量可选范围为2~32,创建成功后,可进行节点扩容,请参见添加集群实例的节点。 config性能规格 config节点的CPU和内存,请参见集群实例规格,存储实例的配置信息,用户不能直接连接。创建成功后,可进行规格变更,请参见变更集群实例的CPU和内存规格。 config存储空间 根据config节点的作用和最小需要,存储空间为20GB,创建成功后不可进行扩容。 图2 网络设置及购买时长与数量 表2 网络设置 参数 描述 虚拟私有云 文档数据库实例所在的 虚拟专用网络 ,可对不同业务进行网络隔离,方便地管理、配置内部网络,进行安全、快捷的网络变更。您需要创建或选择所需的虚拟私有云。如何创建虚拟私有云,请参见《虚拟私有云用户指南》中的创建虚拟私有云和子网。所需虚拟私有云的使用限制请参见实例连接方式介绍。 如果不创建或没有可选的虚拟私有云,文档数据库服务默认为您分配资源。 说明: 实例创建完成后不支持切换虚拟私有云,请谨慎选择所属虚拟私有云。 企业项目 该参数针对企业用户使用,如需使用该功能,请联系客服申请开通。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 请在下拉框中选择所在的企业项目,其中,default为默认项目。更多企业项目相关的信息,请参见《企业管理用户指南》的项目管理。 如果需要自定义企业项目,请在控制台右上角单击“企业”,进入“企业项目”页面创建,具体请参见《企业管理用户指南》中“创建企业项目”的内容。 表3 购买时长与数量 参数 描述 购买时长 选择“包年/包月”方式的用户需要设置购买时长,最短为1个月,最长为3年。 自动续费 默认不勾选,不进行自动续费。 勾选后实例自动续费,自动续费周期与原订单周期一致。 购买数量 购买数量与集群实例配额有关,所需购买数量超出实例配额时,可根据界面提示申请扩大配额。批量购买的“包年/包月”实例,除实例名称和实例ID外,其余配置信息一致。 在“规格确认”页面,核对实例信息。 包年/包月 如果需要修改,单击“上一步”,修改实例信息。 核对无误后,单击“去支付”,进入“付款”页面,选择支付方式,完成支付。 按需计费 如果需要修改,单击“上一步”,修改实例信息。 核对无误后,单击“提交”,开始创建实例。 单击“返回实例列表”。实例创建成功后,用户可以在“实例管理”页面,查看并管理自己的数据库实例。 创建实例过程中,实例运行状态显示为“创建中”,此过程约15分钟。创建完成的实例的运行状态显示为“正常”。 创建实例时,默认开启自动备份策略,后期可修改。创建成功后,文档数据库服务会自动创建一个全量备份。
  • 使用须知 开启或关闭SSL会导致实例重启,请谨慎操作。 在开启或关闭SSL时,文档数据库服务会进行一次重启,重启过程中每个节点会有一次约30秒的闪断,建议您安排好业务并确保应用有重连机制。 开启SSL,可以通过SSL方式连接数据库,具有更高的安全性。 目前已禁用不安全的加密算法,支持的安全加密算法对应的加密套件参考如下。 版本 支持的TLS版本 支持的加密算法套件 3.4 TLS 1.2 AES256-GCM-SHA384 AES128-GCM-SHA256 4.0 TLS 1.2 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-GCM-SHA256 用户的客户端所在服务器需要支持对应的TLS版本以及对应的加密算法套件,否则会连接失败。 关闭SSL,可以采用非SSL方式连接数据库。
  • 使用文档数据库服务要注意什么 故障切换 文档数据库实例采用多路由+多分片+副本集的部署形态,当路由主机出现故障时,可实时动态切换。副本集包含多个副本,当主节点发生故障时,系统会在30秒之内切换到备节点。 实例的弹性云服务器,对用户都不可见,这意味着,只允许用户应用程序访问数据库对应的IP地址和端口。 文档数据库服务使用的 对象存储服务 上的备份文件,对用户不可见,它们只对后台管理系统可见。 申请文档数据库服务后,用户不需要进行数据库的基础运维(比如高可用、安全补丁等),但还需要重点关注以下事情: 文档数据库实例的CPU、IOPS、空间是否足够,如果不够需要优化或者扩容。 文档数据库实例是否存在性能问题,是否有大量的慢查询,查询语句是否需要优化,是否有多余的索引或者索引缺失等。 父主题: 产品咨询
  • 内核版本说明 本章节介绍文档数据库服务DDS的内核版本更新说明,补丁升级不会影响任何功能和接口。 表1 文档数据库服务DDS4.4版本说明 版本 日期 说明 4.4 2024年6月 lookup支持指定pipeline时,同时指定localField和foreignField。 修复setLogLevel屏蔽存储层信息日志的问题。 update支持hint指定索引。 2024年5月 优化changestream CPU资源占用。 优化备份期间删表可能造成的备份出错问题。 db.currentOp()命令查询结果添加effectiveUsers字段。 支持mongo exporter。 2024年4月 $lookup支持目标为分片表。 changestream支持$startAfter。 优化分布式事务在shard主备倒换场景下的表现。 2024年3月 修复了setWindowFields输出的字段缺失问题。 2024年2月 changeStream读取性能优化。 优化了过期oplog数据的清理性能。 修复了geoNear在执行explain()时的展示缺失问题。 2024年1月 修复了正则匹配时出现的概率性失效问题。 2023年12月 优化了单文档查性能。 限制reIndex危险命令的执行权限。 2023年11月 修复了内存监控功能,在命令执行后结果内容展示缺失的问题。 2023年10月 优化了ServerStatus命令获取锁的方式。 修复了节点选举时出现的概率性失效问题。 2023年9月 支持在多文档事务中创建索引和创建集合操作。 支持设置单个集合的autosplit属性。 修复了创建稀疏索引并用字段值null去查询时,与MongoDB官方4.4表现不一致的问题。 2023年8月 增加主动限制连接数能力。 兼容支持Parallel Change Stream特性。 修复了禁止读写时,在集群实例上仍可以执行聚合命令的问题。 优化了慢日志捕捉方式。 2023年7月 存储引擎压缩算法优化。 CreateIndex命令自动路由到主节点执行。 被动Compact同步逻辑优化。 2023年5月 serverStatus中的oplogTruncation项新增 totalTimeProcessingMicros、processingMethod、totalTimeTruncatingMicros、truncateCount统计。 2023年4月 优化了事务执行逻辑。 2023年3月 新增存储故障自动切换特性。 副本集支持defaultReadWriteConcern特性。 集群支持PITR特性。 2023年1月 tcmalloc内存管理策略优化。 支持分布式大事务。 2022年11月 新增compound hash index特性。 新增mutable shard key values特性。 兼容支持mirrored reads特性。 表2 文档数据库服务DDS4.2版本说明 版本 日期 说明 4.2 2024年6月 修复setLogLevel命令屏蔽存储层信息日志的问题。 2024年5月 优化changestream CPU资源占用。 db.currentOp()命令查询结果添加effectiveUsers字段。 支持mongo exporter。 2024年4月 优化分布式事务在shard主备倒换场景下的表现。 2024年3月 兼容支持startAfter特性。 2024年2月 changeStream读取性能优化。 优化了过期oplog数据的清理性能。 修复了geoNear在执行explain()时的展示缺失问题。 2024年1月 修复了正则匹配时出现的概率性失效问题。 2023年12月 优化了单文档查询性能。 限制reIndex危险命令的执行权限。 2023年11月 修复了内存监控功能,在命令执行后结果内容展示缺失的问题。 2023年10月 优化了ServerStatus命令获取锁的方式。 修复了节点选举时出现的概率性失效问题。 2023年9月 支持在多文档事务中创建索引和创建集合操作。 支持设置单个集合的autosplit属性。 2023年8月 增加主动限制连接数能力。 修复了有锁情况下部分会话概率性killPending的问题。 优化了慢日志捕捉方式。 2023年7月 存储引擎压缩算法优化。 CreateIndex命令自动路由到主节点执行。 被动Compact同步逻辑优化。 修复MongoDB开源社区问题SERVER-39044导致的系统session表概率性刷新失败。 2023年6月 优化副本集针对10KB文档执行update操作的性能。 修复SERVER-37408漏洞。 修复SERVER-39074漏洞。 2023年5月 修复主备倒换后writeConcern错误码匹配问题。 2023年4月 优化了事务执行逻辑。 修复了带参数执行dropIndexes()与MongoDB官方4.2表现不一致的问题。 修复了在emrc=true并且dirty Cache升高时,重启较慢的问题。 2023年3月 新增存储故障自动切换特性。 降低主备复制延迟。 集群支持PITR特性。 2023年1月 支持分布式大事务。 修复SERVER-42518漏洞。 修复SERVER-37686漏洞。 2022年11月 修复了MongoDB Compass通过SSL连接概率性出现失败的问题。 修复了find查询字段为null时,与MongoDB官方4.2表现不一致的问题。 2022年10月 新增索引一致性检查特性。 修复CVE-2020-7921漏洞。 2022年9月 创建索引调整为默认后台创建。 开放replSetGetConfig命令。 2022年6月 支持zstd压缩算法。 mongos支持releaseFreeMemory命令。 表3 文档数据库服务DDS4.0版本说明 版本 日期 说明 4.0 2024年6月 适配mongo exporter。 2024年5月 无。 2024年4月 无。 2024年3月 无。 2024年2月 修复了geoNear在执行explain()时的展示缺失问题。 2024年1月 修复了正则匹配时出现的概率性失效问题。 2023年12月 优化了单文档查询性能。 限制reIndex危险命令的执行权限。 2023年11月 无。 2023年10月 优化了ServerStatus命令获取锁的方式。 修复了节点选举时出现的概率性失效问题。 2023年9月 resizeOplog逻辑优化。 2023年8月 修复了禁止读写时,在集群实例上仍可以执行聚合命令的问题。 修复了有锁情况下部分会话概率性killPending的问题。 优化了慢日志捕捉方式。 2023年7月 CreateIndex命令自动路由到主节点执行。 被动Compact同步逻辑优化。 修复MongoDB开源社区问题SERVER-39044导致的系统session表概率性刷新失败。 修复Robot 3T登录集群实例,在默认设置readPreference为secondaryPreferred时,创建索引会提示NotMaster的问题。 2023年6月 提供不检查密码复杂度的开关参数enableCheckPassword。 优化索引删除步骤,提高索引删除效率。 2023年5月 修复SERVER-37408漏洞。 修复SERVER-39074漏洞。 2023年4月 修复了带参数执行dropIndexes()与MongoDB官方4.2表现不一致的问题。 修复了在emrc=true并且dirty Cache升高时,重启较慢的问题。 2023年3月 新增存储故障自动切换特性。 修复CVE-2018-20805漏洞。 2023年1月 修复SERVER-42518漏洞。 修复SERVER-37686漏洞。 2022年11月 修复了MongoDB Compass通过SSL连接概率性出现失败的问题。 2022年10月 新增索引一致性检查特性。 修复CVE-2020-7921漏洞。 2022年7月 创建索引调整为默认后台创建。 开放replSetGetConfig命令。 2022年6月 mongos支持releaseFreeMemory命令。 表4 文档数据库服务DDS3.4版本说明 版本 日期 说明 3.4 2024年6月 无。 2024年5月 无。 2024年4月 优化聚合查询,$project支持新增映射字段。 2024年3月 无。 2024年2月 无。 2024年1月 无。 2023年12月 限制reIndex危险命令的执行权限。 2023年11月 无。 2023年10月 优化了ServerStatus命令获取锁的方式 。 2023年9月 慢日志信息细化。 2023年8月 修复了禁止读写时,在集群实例上仍可以执行聚合命令的问题。 修复了有锁情况下部分会话概率性killPending的问题。 优化了慢日志捕捉方式。 2023年7月 ReleaseFreeMemory同步到3.4版本。 2023年5月 修复SERVER-37408漏洞。 修复SERVER-39074漏洞。 2023年4月 修复了集群中config备节点上activeSession更新不及时的问题。 2023年3月 新增存储故障自动切换特性。 修复CVE-2018-20805漏洞。 2023年1月 修复SERVER-42518漏洞。 修复SERVER-37686漏洞。 2022年10月 修复CVE-2020-7921漏洞。 修复heapprofile的值显式不正确的问题。 2022年7月 修复弱密码校验问题。 2022年6月 mongos日志信息脱敏。 父主题: 产品发布说明
  • 其他易用性增强 Jumbo Chunk自动均衡。 在之前版本出现Jumbo Chunk问题时,通常只能通过手动迁移Chunk解决,而在4.4新版本中支持Jumbo Chunk的自动迁移与平衡,该功能全程后台进行,减少了不必要的告警,缓解了运维人员的压力,让数据库具有更强的健壮性。 分布式事务支持单一文档大小超过16MB。 在之前的版本中,当您尝试插入大于16MB的文档或尝试以使其超过16MB的方式更新现有文档的时,DDS服务器将返回错误。而在4.4版本中,DDS对于分布式事务放开了这一限制,以更加适应实际业务需求。 projection增强。 DDS 4.4版本完全兼容MongoDB 4.4版本的projection新语法和用法,例如: projection中目前现在可以支持聚合语法,例如使用聚合算子等功能。 projection中支持使用json嵌套格式对指定字段进行映射。 projection中支持使用$符指定映射数组元素的具体index的子元素。 find命令添加allowDiskUse选项。 在DDS 4.4之前的版本,如果数据库在处理排序操作时超过内存使用限制,则具有阻塞排序的查找操作将失败。而在4.4版本中,find命令可以使用临时文件来支持大型无索引排序,当allowDiskUse选项为true时,find命令针对超过内存限制100MB的无索引(阻塞)排序操作,会使用磁盘上的临时文件。 参考用法: db.coll.find({"location" : "unit12" }) .sort({"time" : 1}) .allowDiskUse()
  • 复合哈希分片键(Compound Hashed Shard Keys) 在4.4以前的版本中,当您指定哈希分片键时,只能指定单字段的哈希分片键,但是长期以往很容易导致集合数据在分片上分布不不均。 在最新的4.4版本中支持了复合哈希索引,意即您可以在复合索引中指定单个哈希字段,可以作为前缀也可以作为后缀,位置不限,由此来支持复合哈希分片键。 参考用法如下: sh.shardCollection( "test.coll", { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" } //哈希字段作为后缀 ) sh.shardCollection( "test.coll", { "_id" : "hashed", "fieldA" : 1} //哈希字段作为前缀 ) 这种灵活的复合哈希索引具有很多优点,消解很多库表设计的复杂性,例如:当集合指定的片键值是逐渐递增的,并且业务总是会访问那些最新加入数据,这会导致大部分的流量打向同一分片。在没有复合哈希分片键的情况下,需要先针对被访问的字段进行哈希值的计算,将结果作为特殊字段存放在文档中,然后再通过范围分片的方式指定其作为片键来解决这类问题。 但是在新版本中,直接把目标字段指定为哈希索引,即可轻松解决上述问题,极大简化了业务逻辑。
  • 默认读写关注(Default Read and Write Concerns) 在4.4以前的版本中,当要执行的操作没有显示指定readConcern或writeConcern时,会有默认行为。例如:readConcern默认为local,writeConcern默认为{w: 1}。但这个默认行为是不可以变更的,有时会带来不必要的麻烦。如果用户希望保证数据的强一致性,让所有的insert操作的writeConcern默认为{w: majority},令所有的read操作的readConcern默认为majority,那么只能在所有访问DDS的代码中来显示指定这个配置。 但在4.4新版本中,您可以通过setDefaultRWConcern命令来配置全局默认的readConcern和writeConcern,例如: db.adminCommand({ "setDefaultRWConcern" : 1, "defaultWriteConcern" : { "w" : "majority" }, "defaultReadConcern" : { "level" : "majority" } }) 您也可以通过getDefaultRWConcern命令获取当前默认的readConcern和writeConcern。
  • 对冲读(Hedged Reads) 页面响应速度直接影响用户使用体验,和经济效益息息相关。如果一个网页的加载时间超过3秒,那么用户的跳出率会大幅上升。针对这类问题,DDS 4.4版本提供了对冲读(Hedged Reads)的能力,意即在DDS分片集群中,mongos节点会把一个客户端的读请求同时发送给某个Shard分片的多个副本集节点,最后选择响应最快节点的返回结果回复给客户端,来减少业务侧感知到的延迟。 您可以通过配置Read Preference参数来使用对冲读(Hedged Reads)功能,因此可以针对每一个具体的Operation进行配置。 当Read Preference配置为nearest时,默认开启对冲读(Hedged Reads)功能; 当Read Preference配置为primary时,不支持对冲读(Hedged Reads); 当Read Preference指定为其他参数时,需要显示地指明hedgeOptions才会启用对冲读功能。 例如: db.collection.find({ }).readPref( "secondary", // mode设置 [ { "usage": "read" }, { } ], // tag标签 { enabled: true } // hedgeOptions开关 )
  • 可变分片键(Mutable Shard Keys) 在DDS分片集群中,一个好的Shard key至关重要,因为它决定了分片集群在指定的Workload(工作量)下是否有良好的扩展性。但是在实际使用DDS的过程中,即使我们事先仔细斟酌了要选择的Shard Key,也会因为Workload的变化而导致出现Jumbo Chunk(超过预设大小的Chunk),或者业务流量都打向单一分片的情况。 在上一版本4.2中,虽然允许修改Shard key的Value,但是数据的跨分片迁移由于其基于分布式事务的实现机制,导致整个过程性能开销很大,不能很好的解决访问热点或者Jumbo Chunk问题。针对这类问题,在4.4版本中,您可以通过refineCollectionShardKey命令给现有的Shard Key增加一到多个Suffix Field来改善现有数据在Chunk上的分布情况。并且,由于refineCollectionShardKey命令不涉及任何形式的数据迁移,因此性能开销非常低。不过由于Shard Key需要相应的Index支持,因此在执行refineCollectionShardKey命令前,请提前创建新Shard Key所对应的Index。 以下操作演示了如何在DDS 4.4集群实例上使用可变分片键功能: 使用shardCollection命令,将test库下的coll集合按照customer_id字段进行范围分片(Range based sharding): use admin db.adminCommand({ shardCollection: "test.coll", key: { "customer_id": 1 } }) 为了将coll集合的分片键调整为customer_id字段和order_id字段,即{ "customer_id": 1, "order_id": 1 },首先需要创建对应索引: use test db.coll.createIndex({ "customer_id": 1, "order_id": 1 }) 之后使用refineCollectionShardKey命令添加order_id作为一个Suffix Field,来改变分片键(命令执行完成后可以使用sh.status()命令验证修改结果): use admin db.adminCommand( { refineCollectionShardKey: "test.coll", key: { customer_id: 1, order_id: 1 } } )