《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的更多相关文章

  1. Azure CosmosDB (9) Unique Key Constraints

    <Windows Azure Platform 系列文章目录> 在Azure Cosmos DB中,还支持Unique Key Constraints(唯一键约束). 我们可以在Azure ...

  2. Azure CosmosDB (12) 创建Cosmos DB并执行查询语句

    <Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...

  3. Azure CosmosDB (10) Azure Cosmos DB体系结构

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...

  4. 落地Azure CosmosDb的一个项目分享

    我们遇到了什么? 我们有这么一个业务场景,就是某供应商会去爬取某些数据,爬到后会发到一个FTP上,然后我们定时去获取这些数据 这个数据有大有小,小的30多M数据量百万级,大的数据量能到数百M上千万数据 ...

  5. 十四、mysql 分区之 HASH && KEY

    .hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname ) ) PARTITION ; 将 ...

  6. Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡

    <Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...

  7. MYSQL之水平分区----MySQL partition分区I(5.1)

    一.        分区的概念 二.        为什么使用分区?(优点) 三.        分区类型 四.        子分区 五.        对分区进行修改(增加.删除.分解.合并) 六 ...

  8. 分区表主键不包含分区键报错ERROR 1105 (HY000)

    ERROR 1105 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function MySQ ...

  9. SQL Server分区键列必须是主键一部分

    SQL Server分区键列必须是主键一部分. 必须把分区列包含在主键/唯一约束/唯一索引的键列中. USE tempdb GO -- 测试表 CREATE TABLE dbo.tb( id int, ...

随机推荐

  1. c++ cin cin.getline() getline()用法

    http://www.cnblogs.com/AndyJee/p/3821067.html 主要内容: 1.cin用法 2.cin.getline()用法 3.getline()用法 3.注意的问题 ...

  2. 浅谈requireJS 摘自http://www.cnblogs.com/giggle/p/5436710.html

    项目中大都使用模块化开发,requireJS作为AMD模块开发的典范,所以有必要学习下.通过一步步利用requireJS编写demo,从而学习requireJS的一个整体开发流程以及自我使用requi ...

  3. java第七周----json

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于 ...

  4. python之三级目录

    #python之三级目录低配版 menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{ }, 'HP':{ }, '渣打银行':{ }, 'CCTV':{ }, }, '望京': ...

  5. sdn交换机和普通交换机区别

    SDN交换机基本具有普通交换机的所有功能.SDN交换机特别的功能在于支持OpenFlow协议(有些只支持OpenFlow1.0,有些强点支持1.0和1.3).不过你要连接交换机再手动将所需的端口改成支 ...

  6. iOS .tbd

    http://stackoverflow.com/questions/31450690/why-xcode-7-shows-tbd-instead-of-dylib http://www.jiansh ...

  7. WEB学习笔记3-开发环境和工具

    WEB前端集成开发环境:Aptana Studio和WebStormWEB前端代码调试:IE浏览器自带的IE Dev Toolbar,Chrome浏览器自带的Developer Tools,Firef ...

  8. Git学习笔记--命令

    git init--初始化Git仓库 git add <fils>--将文件添加到暂存区,可添加多个文件,空格隔开 git commit--提交到仓库 git status--查看工作区状 ...

  9. exp迁移测试库10.2.0.5

    目的: 将一套10.2.0.5的UP-UNIX系统的数据,迁移到一台Windows环境下. 迁移方案:由于不同的操作系统,为了方便迁移,只是测试,使用EXP/IMP方式. 迁移流程: 一.源端导出 1 ...

  10. Android KitKat Immersive Mode使用

    写了一个方法,在onCreate和onResume中调用即可,4.4以上可用. private void openImmersiveMode() { if (android.os.Build.VERS ...