📜  DocumentDB-分区(1)

📅  最后修改于: 2023-12-03 15:00:31.360000             🧑  作者: Mango

DocumentDB 分区介绍

Azure DocumentDB是一种NoSQL文档数据库服务,它具有无需架构更改的水平扩展能力。 水平扩展允许Azure DocumentDB能够处理大量写入和读取请求,同时确保数据的高可用性和数据的一致性。 DocumentDB中的每个收藏集都可以分为多个分区,这些分区可以充分利用存储和吞吐量。本文将在介绍分区于DocumentDB间的工作机制,其应用场景和优势等方面向开发者提供详尽的介绍。

什么是分区?

在分布式数据库中,分区是将大型数据集分解成小的可处理部分的过程,可以将数据分散到不同的服务器上以实现水平扩展和高可用性。在DocumentDB中,分区是一种数据分配机制,可以充分利用计算和存储资源,以提高数据库性能、可用性、可扩展性。

DocumentDB中的分区

DocumentDB使用分区策略(Partition Key),通过将分区策略应用于收藏集中的数据,将数据分配到一个或多个物理分区。每个DocumentDB分区的大小为10GB,并且会自动进行水平分区操作,有需要时自动扩容。

一个分区的数据在一台服务器中存储,并且以数据可用性为优先,DocumentDB自动地将多个副本放置在不同的区域中,以确保数据可以在任意时间内访问和操作,即为高可用性模式,这也是DocumentDB的强大之处。

分区键设计

分区键是决定DocumentDB如何将数据分区的重要因素。它是DocumentDB中一个普通的属性,其值是一个非原子化的属性(如姓名或日期),或者是一个嵌套的属性(如家庭地址中的州或国家)。分区键必须满足两个条件:

  1. 它必须存在于每个文档中。
  2. 它必须有足够的分布均匀性,以便可以实现数据的负载均衡。

分区键的选择与数据库的应用有关,应该在设计数据库架构时仔细考虑。

分区与报告

将报告数据与分区结合使用时,查询的复杂性得以简化。在使用不同的分区键时,不同的查询将进行相应的优化,以改善响应时间和吞吐量。

例如,在一个销售管理应用程序中,可以使用产品ID作为分区键。在此配置下,查询每个产品ID的销售明细将获得最高吞吐量,而查询每天的销售明细将比对产品ID排序时更具有挑战性。使用数据分区后,即便实际运行的查询不是最具有负载均衡的类型,也不会影响整个应用程序的性能。

DocumentDB分区优势
数据水平可扩展性

DocumentDB中的每个收藏集都可以分为多个物理分区。每个分区都可以独立地具有一定数量的储存、吞吐量,通过增加或减少分区数量可实现数据水平可扩展性。

跨多个终端和应用持久性

DocumentDB数据存储在云中,并且完全在分布式文件系统中分散存储,因此,分布式部署就可实现跨多个客户端和应用程序的持久性。

数据高可用性

DocumentDB提供数据多副本同步功能,确保始终对客户端和应用程序进行读取和写入操作的实时可用性。DocumentDB自动地将多个副本放置在不同的区域中,以确保数据库不受单一故障点的影响,该功能也为数据高可用性提供了保障。

查询优化

DocumentDB基于分区键进行水平分区,提供查询通过选择性地限制查询边界来管理数据访问的功能。例如,在执行与特定分区键关联的查询时,DocumentDB可以直接访问或跳过分区。经过识别分区范围后,查询处理器即可跳过对其他分区的访问,提高查询性能。此外,查询执行时通过分割数据,将查询条件分发到并行计算中,以提高查询和分析吞吐量。

总结

文中,我们详细的了解了DocumentDB分区的工作原理和应用场景,以及它的优势。在实际应用中,只有深入了解分区与应用场景的匹配,才可以将分区设计得更优秀,提升性能表现,以满足复杂的业务审核。