第一章 (十二)—— 索引表模式.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(⼗⼆)—— 索引表模式 云计算设计模式 (⼗⼆)——索引表模式 创建索引过的被查询条件经常被引⽤的数据存储等领域。这种模式可以通过允许 ⽤ 程序更快速地定位数据来从数据存储中检索提⾼查询性能。 背景和问题 许多数据存储通过使⽤主键组织为实体的集合的数据。 ⽤程序可以使⽤此键来查找 和检索数据。图 1 显⽰了⼀个数据存储区保持顾客的信息的例⼦。主键是客户 ID 。 图1 - 按主键组织的客户信息 (客户ID ) ⽽主键是该取基于该关键字的值的数据的查询宝贵的, ⽤程序可能不能够使⽤主键 是否需要基于其它字段来检索数据。在顾客例如, ⽤程序不能使⽤该客户ID主键来 检索客户,如果它通过指定引⽤的⼀些其他属性的值,如在其中客户位于镇标准查询 数据完全。要执⾏⼀个查询,如这可能需要申请获取并检查每⼀个客户的记录,这可 能是⼀个缓慢的过程。 许多关系数据库管理系统⽀持⼆级索引。⼀种⼆次指数是由⼀个或多个⾮主 (辅助) 键领域举办⼀个单独的数据结构,它表⽰,其中每个索引值的数据被存储。在⼀第⼆ 索引的项⽬通常排序⽅法的第⼆个键的值,使数据的快速查找。这些指标通常是由数 据库管理系统⾃动进⾏维护。 由于需要⽀持您的 ⽤程序执⾏不同的查询,您可以创建任意多个⼆级指标。例如, 在⼀个关系数据库中凡客ID是主键的表的客户,也可能是有益的补充辅助指数在镇域 如果 ⽤程序频繁查找的客户在其居住的⼩镇。 然⽽,尽管⼆级指标是关系型系统的共同特征,使⽤云 ⽤⼤部分NoSQL数据存储不 提供同等的功能。 解决⽅案 如果数据存储不⽀持​​⼆级索引,你可以通过创建⾃⼰的索引表⼿动效仿他们。索引表 由指定的键组织数据。三种策略通常⽤于构建⼀个索引表,这取决于所需要的⼆次索 引的数⽬和该 ⽤程序执⾏的查询的性质: 重复数据的每个索引表中,⽽是由不同的密钥 (完全⾮规范化)组织它。图2显⽰了 索引表的组织包括城市和姓⽒相同的客户信息: 图2 - 索引表执⾏⼆级指标的客户数据。数据被复制到每个索引表中。 如果⽐较的时候,它是通过使⽤每个键查询的数⽬的数据是相对静态的这⼀策略可能 是适当的。如果数据是更加动态,保持每个索引表的处理开销可能会变得太⼤,这种 ⽅法是有⽤的。此外,如果数据量⾮常⼤,空间来存储重复的数据所需要的量将显 著。 创建由不同的密钥组织的归索引表和通过使⽤主键⽽不是重复它引⽤原始数据,如⽰ 于图3 中的原始数据被称为⼀个事实表: 图3 - 索引表执⾏⼆级指标的客户数据。该数据是由每个索引表所引⽤。 这种技术可以节省空间,降低了维护的重复数据的开销。的缺点是,⼀个 ⽤程序具 有通过使⽤第⼆密钥来执⾏两个查找操作以查找数据 (找到的主键的索引表中的数 据,然后查找在事实表中的数据通过使⽤主键)。 创建由重复的频繁检索的字段不同的按键组织的部分归索引表。引⽤原始数据来访问 较少频繁访问的字段。图4⽰出了这种结构。 图4 - 索引表执⾏⼆级指标的客户数据。经常访问的数据是重复的每个索引表中。 使⽤这种技术,你可以前两种⽅法之间取得平衡。可以快速地检索到通过使⽤单个查 找,常⽤的查询数据,⽽空间和维护开销是不⼀样⼤,复制整个数据集。 如果 ⽤程序通过指定值的组合频繁地查询数据 (例如,“查找⽣活在雷德蒙和具有 史密斯的姓所有客户” ),则可以实现键的索引表中的项⽬作为⼀个级联城市属性和 姓⽒属性的,如⽰于图5 中的键由镇排序,然后通过名字为那些具有镇相同的值的记 录。 图5 - 基于复合主键索引表 索引表可以加快了分⽚的数据查询操作,并在那⾥的碎⽚密钥散列特别有⽤。图 6 显 ⽰了⼀个⽰例,其中分⽚密钥是客户 ID 的散列。索引表可以由⾮散列值 (城市和名 字)组织数据,并提供该哈希分⽚键作为查找数据。这样可以节省从重复计算散列键 的 ⽤ (其可以是昂贵的操作),如果它需要检索的数据落在⼀个范围之内,或者它 需要读取的数据,以便在⾮散列密钥。例如,诸如“查找⽣活在雷德蒙所有客户”可以 由通过定位在索引表中的匹配项 (其全部存储在⼀个连续的块),并按照引⽤的客户 数据尽快解决的查询使⽤存储在索引表中的碎⽚的键。 图6 - 索引表中提供了快速查找的分⽚数据 问题和注意事项 在决定如何实现这个模式时,请考虑以下⼏点: 保持辅助索引的开销可能是显著。你必须分析和了解,您的 ⽤程序使⽤的查 询。只创建他们很可能被经常使⽤的索引表。不要投机创建索引的表,以⽀持 ⽤程序不执⾏查询,或者⼀个 ⽤程序只执⾏⾮常偶然。 在索引表中复制的数据所⽤的存储

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档