|
|
51CTO旗下网站
|
|
移动端

3.2.4.2 设计规范

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍设计规范。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-13 11:00

3.2.4.2 设计规范

在关系数据库中,通常只需通过向现有数据库添加索引就可以解决性能问题。然而在使用表服务时,预先将设计做正确很重要,因为以后进行更改会很难并且开销会很高。设计要查询的表时必须考虑一些关键问题。

1. 常用查询范式

点查询

通过指定 PartitionKey 和RowKey 值,此类查询可高效地利用索引查找单个实体,是最高效的一种查找方式,可用于且建议用于大容量查找或要求最低延迟的查找。例如:$filter=(PartitionKey eq 'IT') and (RowKey eq '0003')

范围查询

使用 PartitionKey 并筛选一系列RowKey 值,从而返回多个实体。PartitionKey 值确定特定分区,RowKey 值确定该分区中的实体子集。例如:$filter=PartitionKey eq 'IT' and RowKey ge '0003' and RowKey lt '0010'

分区扫描

使用 PartitionKey 并筛选另一个非键属性,可能会返回多个实体。PartitionKey 值确定特定分区,而属性值将选择该分区中的实体子集。例如:$filter=PartitionKey eq 'IT' and Name eq 'Jim'

表扫描

不包括 PartitionKey 且效率极低,因为它会依次搜索构成表的所有分区,查找所有匹配的实体。无论筛选器是否使用 RowKey 它都将执行表扫描。例如:$filter=Name eq 'Jones'

排序

返回多个实体的查询将按 PartitionKey 和RowKey 顺序返回实体。若要避免对客户端中的实体重新排序,请选择定义最常见排序顺序的 RowKey。

请注意,使用“or”指定基于 RowKey 值的筛选器将导致分区扫描,而不会视为范围查询。因此,应避免使用筛选器(如查询:$filter=PartitionKey eq 'IT' and (RowKey eq '0003'or RowKey eq '0004'))。

2. 如何选择适当的PartitionKey

从存储客户端库的 5.x 版开始,可以为文件共享或单个文件生成共享访问签名 (SAS)。还可以在文件共享上创建一个共享访问策略以管理共享访问签名。建议创建共享访问策略,因为它提供了一种在受到威胁时撤销 SAS 的方式。以下示例在一个共享上创建共享访问策略,然后使用该策略为共享中的一个文件提供 SAS 约束。

理想的 PartitionKey 可实现高效查询,具有足够多的分区,来确保解决方案可伸缩。通常,实体列具有合适的属性,可以将实体分布到足够多的分区。例如,在存储员工的信息的系统中,部门可以是一个好的PartitionKey。

3. 如何针对表服务优化查询

表服务将使用单个聚集索引中的 PartitionKey 和RowKey 值自动编制实体的索引,因此使点查询成为了最高效的方式。但是,只有PartitionKey 和RowKey 的群集索引上具有索引。

例如根据Name、Age 来查询某个部门下相同人员的信息,可以将员工ID、Name 及Age 组合成复合键形式来设计RowKey,这样直接可以基于点查询完成此类业务需求。

4. 如何对表服务中的数据进行排序

表服务依次按PartitionKey 和RowKey 以升序排序返回实体。这些键是字符串值,以确保数字值正确排序,应将值转换为固定长度并使用零进行填充。例如,如果用作RowKey的员工ID 值是个整数值,则应将员工ID 123 转换为00000123。

3. 如何针对表服务优化查询

表服务将使用单个聚集索引中的 PartitionKey 和RowKey 值自动编制实体的索引,因此使点查询成为了最高效的方式。但是,只有PartitionKey 和RowKey 的群集索引上具有索引。

例如根据Name、Age 来查询某个部门下相同人员的信息,可以将员工ID、Name 及Age 组合成复合键形式来设计RowKey,这样直接可以基于点查询完成此类业务需求。

4. 如何对表服务中的数据进行排序

表服务依次按PartitionKey 和RowKey 以升序排序返回实体。这些键是字符串值,以确保数字值正确排序,应将值转换为固定长度并使用零进行填充。例如,如果用作RowKey的员工ID 值是个整数值,则应将员工ID 123 转换为00000123。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

游戏开发核心技术--剧本和角色创造

《游戏开发核心技术--剧本和角色创造》分“剧本”、“角色”和“游戏玩法”三部分,第一部分着重说明故事的历史、一般故事元素、传统故事设...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊