首页 > 知识点讲解
       查询模型
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL > 相关理论基础 > 
相关知识点:6个      
        不同的NoSQL数据存储提供的查询功能有重大分歧。然而设计的键值存储仅仅提供通过主键或一些id字段查找的功能,并且缺乏查询更进一步域的能力,而其他数据存储(像文档的数据库CouchDB和MongoDB)则允许某些复杂查询。在许多NoSQL数据库的设计中,相对于性能和可扩展性来说,丰富的动态查询功能已被省略的现状是并不奇怪的。另一方面,在使用NoSQL数据库时,有些情况下需要至少有一些非主键属性查询功能。
        现在许多NoSQL数据库是基于DHT(Distributed Hash Table,分散哈希表)模型的。为了访问和修改对象数据,客户端要求提供对象的主键,然后数据库再根据提供的主键进行相等匹配。
        例如,我们使用DHT实现一个顾客数据库,选择顾客编号cust_id作为主键。那么如果我们知道一个顾客对象的cust_id,我们就能进行get/set/operate操作了。
        现实世界中,我们可能想要基于非主属性查找数据,我们也可能基于“大于/不小于”关系进行查找,或者我们可能用一个布尔表达式来组合查询条件。
        下面将介绍几个NoSQL中常见的查询模型。
               结合SQL数据库
               一个最直接的方式是通过将NoSQL数据库拷贝到关系数据库或者文本数据库,来提供查询能力。当然,这就要求关系数据库要足够大以便能够存储每个对象的查询属性。由于我们仅仅将要查找的属性存到数据库中,而不是整个对象,故该方法是一个非常实用且常见的方法。结合SQL数据库的查询模型如下图所示。
               
               结合SQL数据库的查询模型
               分散/集合本地搜索
               一些NoSQL数据库提供本地数据库内的索引和查询处理机制。在这种情况下,我们可以让查询处理器将查询广播到DHT中的所有节点,在每个节点上将会执行查询,并将结果送回到查询处理器,然后查询处理器将结果聚集成一个单一响应。需要注意的是搜索并行地发生在DHT中所有节点上。分散/集合本地搜索的查询模型如下图所示。
               
               分散/集合本地搜索的查询模型
               分布式B+树
               B+树是一种用在关系型数据库管理系统中常见的索引结构。B+树的分布式版本可以用在DHT环境中。其基本思路是为了定位B+树的根节点哈希要搜索的属性。根节点的“值”包含其孩子节点的ID。因此,客户端为了找到孩子节点可以发起另一个DHT查找调用。继续这个过程,客户端最终向下导航到叶节点,从而与搜索条件匹配。紧接着,为了提取实际的对象,客户端将发起另一个DHT查找。
               值得注意的是,对象的创建和删除将会引起B+树节点的拆分/合并更新。这应该以原子的方式进行。分布式事务是一项昂贵的操作,但它的使用在这里是合理的,因为大多数的B+树的更新很少涉及超过一台机器。分布式B+树的查询模型如下图所示。
               
               分布式B+树的查询模型
               前缀哈希表/分布式Trie
               前缀哈希表(Prefix Hash Table,PHT,又名分布式Trie)是一个树形数据结构。在这个树形结构中,从根节点到叶子的每一条路径上均包含了键值的前缀,并且每个Trie中的节点都包含了它是谁的前缀的所有数据。PHT主要包含三个操作:lookup、range query和insert/delete。前缀哈希表的查询模型如下图所示。
               
               前缀哈希表的查询模型
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有