更新时间:2026-07-09 GMT+08:00
分享

DDS分片

DDS分片是华为云文档数据库服务(Document Database Service, DDS)的核心技术之一,通过将数据集水平拆分到多个Shard节点(分片节点)中,实现数据的分布式存储和并行处理。每个Shard存储数据的一部分,通过Shard Key(分片键)决定数据的分布规则。分片技术解决了单节点存储和性能瓶颈问题,支持高并发、大规模数据场景下的扩展性需求。

为什么需要DDS分片?

  • 应对数据量增长:单节点存储容量和性能有限,分片通过水平扩展提升存储和处理能力。
  • 负载均衡:避免数据热点,均匀分布读写压力到多个Shard节点。
  • 高可用性:分片结合副本集(Replica Set)机制,确保单点故障时数据不丢失且服务连续。
  • 弹性扩容:支持动态添加Shard节点,适应业务增长需求。

DDS分片的优势是什么?

华为云DDS分片通过水平扩展实现存储容量和吞吐量的线性增长,结合云原生架构提供自动分片管理、弹性扩容和故障自愈能力,大幅降低运维复杂度。具体请查看表1

表1 DDS分片的优势

优势类别

核心价值

说明

水平扩展能力

线性提升存储与吞吐。

通过增加Shard节点,实现存储容量和读写性能的线性增长,支持业务持续扩展。

云原生优化

自动化运维管理。

华为云托管服务提供自动分片管理、弹性扩容、故障自愈等能力,降低运维复杂度。

性能优化

写多读少场景优化。

支持RocksDB存储引擎(4.2+版本),针对IoT日志、监控数据等写密集型场景进行优化。

灵活分片策略

适配多样化业务模式。

支持范围分片(Range Sharding)和哈希分片(Hash Sharding),可根据业务特点选择最优策略。

低运维成本

智能均衡与迁移。

自动均衡(Balancer)和Chunk迁移机制,减少人工干预,确保集群负载均衡。

DDS分片的使用场景

表2 DDS分片的使用场景

场景类型

分片策略

适用场景特点

优化要点

IoT设备日志存储

按设备ID(device_id)哈希分片

  • 海量设备并行写入。
  • 数据按设备独立查询(如设备轨迹分析)。
  • 时间敏感数据自动过期。
  • 对device_id+timestamp建复合索引。
  • 启用TTL自动清理(如保留30天)。
  • 使用Snappy压缩减少存储占用。

游戏行为统计

按用户ID(user_id)哈希分片

  • 用户行为数据离散分布。
  • 高频查询用户历史行为(如成就统计)。
  • 需支持用户维度聚合分析。
  • 建立user_id+action_type+timestamp复合索引。
  • 配置读写分离降低主库压力。
  • 设置合理Chunk大小(如64MB)避免频繁迁移。

实时监控数据

按时间戳(timestamp)范围分片

  • 数据按时间顺序写入。
  • 需快速查询时间区间(如最近1小时指标)。
  • 冷热数据分离需求显著。
  • 调整Chunk大小为128MB平衡迁移效率。
  • 对时间戳字段单独索引。
  • 启用压缩并设置冷数据归档策略。

DDS分片的运行原理

  1. Shard Key选择策略
    • 均匀分布:优先选择基数大、重复值少的字段(如用户ID),确保数据在各Shard间均匀分布,避免热点瓶颈。
    • 查询匹配:Shard Key需与高频查询条件强关联(如按时间范围过滤),直接路由到目标Shard,减少跨分片扫描。
  2. 数据分布机制
    • 分片逻辑
      • 哈希分片:对Shard Key计算哈希值,按哈希范围将数据划分到不同Chunk。
      • 范围分片:按Shard Key的自然顺序(如时间戳、数值区间)划分Chunk。
    • 元数据管理:Config Server持久化记录Chunk与Shard的映射关系,供路由节点快速定位。
  3. 查询路由流程
    • 路由节点(Mongos)作用:解析客户端查询的Shard Key,根据Config Server的元数据确定目标Chunk所在Shard,直接转发请求。
    • 优化场景
      • 包含Shard Key的查询:精准路由到单一Shard。
      • 无Shard Key的查询:广播到所有Shard,由Mongos聚合结果(性能较低)。
  4. 动态均衡与迁移
    • Balancer监控:自动检测各Shard的Chunk数量或数据量差异,触发迁移任务。
    • 迁移流程
      • 源Shard冻结待迁移Chunk的写入。
      • 复制数据到目标Shard,同步增量操作。
      • 更新Config Server元数据后解除冻结。
    • 阈值控制:支持设置迁移时间窗口、Chunk大小阈值等,减少业务影响。

DDS分片的分类

表3 DDS分片的分类

分片类型

核心特点

典型适用场景

范围分片

按照分片键的数值范围进行数据划分(如时间戳区间),保证相邻数据物理位置相近。

时间序列数据(监控日志、时序数据)、需要范围查询的场景。

哈希分片

基于分片键的哈希值均匀分布数据,确保数据随机分散。

用户ID、设备ID等离散字段、高并发随机读写场景。

组合分片

通过refineCollectionShardKey添加后缀字段,支持多维度数据分布优化。

多条件组合查询(如customer_id+order_id)、复杂查询过滤场景。

DDS分片和MongoDB分片的区别

DDS分片与MongoDB分片虽然都基于MongoDB分片架构实现数据水平扩展,但DDS作为华为云托管服务,在云原生集成度、运维自动化程度和特定性能优化方面具有明显优势,更适合企业级大规模生产环境。以下是两者的简要对比表4

表4 DDS分片和MongoDB分片的区别

维度

DDS分片

MongoDB分片

云原生支持

提供全托管式分片集群管理,支持自动扩容、故障自愈、备份恢复等云原生能力。

需用户自行配置分片集群,节点维护和故障恢复依赖人工操作。

运维复杂度

集成自动化运维工具,包括自动均衡、监控告警、日志分析,大幅降低运维成本。

需手动管理Balancer、Chunk迁移、备份等,运维复杂度较高。

DDS分片的相关操作和特性

若想深入了解DDS分片的相关功能,您可以参考以下文档:

最佳实践:了解如何设置集群分片来提高数据库性能,请参阅通过设置数据分片提升性能

删除分片:了解如何释放分片集群实例的shard节点,请参阅删除分片

执行分片删除操作时,任务被阻塞:排查任务阻塞的原因,并提供相应的解决方法,请参阅删除分片进度确认与异常排查指南

相关文档