Azure CosmosDB (7) 分区键Partition Key
《Windows Azure Platform 系列文章目录》
Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale),缩放后的数据子集被称为逻辑分区(Logical partitions)。在同一个逻辑分区的数据都有相同的分区键(Partition Key)。
举个例子,假设我们对上海市所有的人口数据都保存到CosmosDB中,选择不同的分区键Partition Key,则会产生不同的逻辑分区结果。
1.假设我们按照户籍区县进行分区,因为上海市有19个区县,则会产生19个不同的逻辑分区。
2.假设我们按照性别进行分区,则会产生2个不同的逻辑分区(男性、女性)
3.假设我们按照身份证号码进行分区,因为身份证号码都是唯一的。假设我们有1000条人口数据,则会产生1000个不同的逻辑分区
管理逻辑分区
Azure CosmosDB以透明的方式自动管理逻辑分区在物理分区(物理服务器)上的位置,以满足业务数据的横向扩展和可伸缩性,同时支持性能需求。
随着应用程序的吞吐量和存储要求的提高,Azure Cosmos DB 可移动逻辑分区,以自动在更多的服务器之间分散负载。
Azure Cosmos DB 使用基于哈希的分区在物理分区之间分散逻辑分区。 Azure Cosmos DB 对项的分区键值进行哈希处理。 哈希处理结果确定了物理分区。 然后,Azure Cosmos DB 在物理分区之间均匀分配分区键哈希的键空间。
与访问多个分区的查询相比,访问单个分区中的数据的查询更具成本效益。 只允许针对单个逻辑分区中的项执行事务(在存储过程或触发器中)
选择分区
我们在使用Partition Key分区键时候,需要注意以下几点:
1.单个逻辑分区的存储空间上限为 10GB
2.对每个CosmosDB分区的最小吞吐量为每秒400个Request Unit (RU)。
假设我们对CosmosDB分区的RU设置为500,但是真实的Request吞吐量超过500,则请求将因为RU不足而有限制。请务必选择不会导致应用程序中产生“热点”的分区键
3.请合理选择Azure CosmosDB的分区键,以保证数据平均的分布。平衡数据查询和事务查询,以实现横向扩展
4.我们在选择分区键的时候,尽量保证该分区键可以被作为过滤条件,以提高查询的效率。
避免在所有分区下查询某一条数据,因为没有定义分区键查询效率会非常低下。
Azure CosmosDB (7) 分区键Partition Key的更多相关文章
- Azure CosmosDB (9) Unique Key Constraints
<Windows Azure Platform 系列文章目录> 在Azure Cosmos DB中,还支持Unique Key Constraints(唯一键约束). 我们可以在Azure ...
- Azure CosmosDB (12) 创建Cosmos DB并执行查询语句
<Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...
- Azure CosmosDB (10) Azure Cosmos DB体系结构
<Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...
- 落地Azure CosmosDb的一个项目分享
我们遇到了什么? 我们有这么一个业务场景,就是某供应商会去爬取某些数据,爬到后会发到一个FTP上,然后我们定时去获取这些数据 这个数据有大有小,小的30多M数据量百万级,大的数据量能到数百M上千万数据 ...
- 十四、mysql 分区之 HASH && KEY
.hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname ) ) PARTITION ; 将 ...
- Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡
<Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...
- MYSQL之水平分区----MySQL partition分区I(5.1)
一. 分区的概念 二. 为什么使用分区?(优点) 三. 分区类型 四. 子分区 五. 对分区进行修改(增加.删除.分解.合并) 六 ...
- 分区表主键不包含分区键报错ERROR 1105 (HY000)
ERROR 1105 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function MySQ ...
- SQL Server分区键列必须是主键一部分
SQL Server分区键列必须是主键一部分. 必须把分区列包含在主键/唯一约束/唯一索引的键列中. USE tempdb GO -- 测试表 CREATE TABLE dbo.tb( id int, ...
随机推荐
- 2017-10-6模拟赛T1 手工(handicraft.*)
题目 题解 题意很明显,就不讲了. 我们发现从一个A边形切出一个B边形有几种情况: 1. 得到一个(A-B+2)边形和一个B边形(直线过两顶点): 2. 得到一个(A-B+3)边形和一个B边形(直线过 ...
- SQL Server分页查询的万能存储过程
CREATE proc [dbo].[p_paging]@tableName varchar(8000), --表名.视图名@indexCol varchar(50) = 'id', --标识列名(如 ...
- 设置Ubuntu右侧显示扩展屏幕。。。
sudo xrandr --output VGA1 --right-of LVDS1 --auto
- 2018-4-25 html基础知识
HTML 理解HTML元素以及构成 1.理解HTML元素以及构成 HTML是一种标记语言,是由一个一个的标记组成的,用于告诉浏览器怎么构建网页的.就像人体里面的DNA一样,控制着人体的组成.同时,也正 ...
- i love my girl
for(int i=0;i<forever;i++) System.out.println("i love my girl!");
- java多线程、线程池及Spring配置线程池详解
1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源.2.java中简单的实现多线程的方式 继承Thread ...
- Linux下的tar压缩解压缩命令详解(转)
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...
- ROS使用小知识点
输入 rosrun rqt_graph rqt_graph 可以打开一个界面观察节点与话题的关系 绿色和蓝色的是节点 红色的是话题 查看ros中额的tf转换信息 rosrun rqt_tf_tree ...
- ArcMap图层属性表中添加图片
一看标题是不是有点懵?懵就对了!刚接触到的时候我也有点懵,属性表不是都是文本啊数字啊之类的格式,怎么还可以存图片,下面就带大家来看看吧! 一.关于图层入库问题 图层进入数据库和图层以shp格式存储时, ...
- Vue基础之数据绑定
我们学习一门新语言或者框架时,第一件事是什么呢,那必然是向世界say Hello. 创建一个Vue应用 话不多说,先上代码,让我们感受一下Vue的核心功能 <!DOCTYPE html> ...