CN108932258B - 数据索引处理方法及装置 - Google Patents
数据索引处理方法及装置 Download PDFInfo
- Publication number
- CN108932258B CN108932258B CN201710379991.2A CN201710379991A CN108932258B CN 108932258 B CN108932258 B CN 108932258B CN 201710379991 A CN201710379991 A CN 201710379991A CN 108932258 B CN108932258 B CN 108932258B
- Authority
- CN
- China
- Prior art keywords
- objects
- query
- data
- outlier
- range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据索引处理方法及装置,其中所述方法包括:从存储有多个对象的一个数据扩展中确定至少一个离群对象,所述多个对象为具有数值属性的数据,所述多个对象包括多个第一对象,以及与所述多个第一对象的分布特征不一致的所述至少一个离群对象;为所述数据扩展建立索引信息,所述索引信息用于记录所述至少一个离群对象、所述多个第一对象中的最小对象及最大对象;接收查询请求,所述查询请求包含有查询条件,所述查询条件用于指示查询范围;根据所述索引信息,以及所述查询范围,判断是否在所述数据扩展中查询所述查询范围内的对象。采用本发明实施例,可减小数据查询的范围,并提高数据查询效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及数据索引处理方法及装置。
背景技术
索引是为了加速对数据表中数据行的检索而创建的一种分散的存储结构。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。常见的索引有区块范围索引(Block Range Index,BRIN),BRIN通过记录表的一段连续存储空间范围(也称为“数据扩展”)内的对象的最大值和最小值,为该数据扩展建立索引信息,当采用SQL语句查询某个对象时,如果该对象在该数据扩展的索引信息中记录的最值小值与最大值构成的区间范围之外,则跳过对该数据扩展中的对象查询;如果该对象属于该数据扩展的索引信息中记录的最值小值与最大值之间的区间,则可以对该数据扩展中的对象进行查询。
但是,现有的BRIN只是将数据扩展(Data Extent)中的最大值和最小值作为索引的唯一指标,使得最大值与最小值之间的区间很大,进而导致查询效率较低。
发明内容
本发明实施例提供一种数据索引处理方法及装置,以减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
第一方面,本发明实施例提供了一种数据索引处理方法,包括:数据库服务器可以从存储有多个对象的一个数据扩展中确定至少一个离群对象;为该数据扩展建立索引信息;接收查询请求,该查询请求包含有查询条件,该查询条件用于指示查询范围;根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象。其中,该多个对象为具有数值属性的数据,该多个对象包括多个第一对象,以及与该多个第一对象的分布特征不一致的该至少一个离群对象。其中,该索引信息用于记录该至少一个离群对象、该多个第一对象中的最小对象及最大对象。
在该技术方案中,为数据扩展建立索引信息,由于该索引信息中记录的该多个第一对象中的最小对象及最大对象不是离群对象,因而,可缩小该索引信息中记录的最小对象与最大对象之间的区间长度,进而,减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
在一种可能的实施方式中,在该查询范围为第二对象时,数据库服务器可以将该第二对象与该索引信息中记录的该至少一个离群对象、该多个第一对象中的最小对象及最大对象进行比较,以判断是否在该数据扩展中查询该第二对象。
在该技术方案中,在该查询范围为第二对象时,数据库服务器可以将该第二对象与该索引信息中记录的对象进行比较,以判断是否在该数据扩展中查询该第二对象。
在该技术方案中,在该第二对象小于该多个第一对象中的最小对象,或该第二对象大于该多个第一对象中的最大对象时,可将第二对象与该至少一个离群对象比较,在第二对象与该至少一个离群对象不相同时,可以跳过对该数据扩展中的对象查询,可以减小查询的范围。
在一种可能的实施方式中,在第二对象与该至少一个离群对象相同时,数据库服务器可以在该数据扩展中查询第二对象。
在该技术方案中,在第二对象与至少一个离群对象相同时,数据库服务器可以在该数据扩展中查询第二对象,以便可以快速查询到需要查询的对象。
在一种可能的实施方式中,在查询范围为数值区间时,在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象未落在该数值区间内,数据库服务器可以跳过对该数据扩展中的对象查询。
在该技术方案中,数据库服务器可以在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象未落在该数值区间内时,可以跳过对该数据扩展中的对象查询,可以减小查询的范围。
在一种可能的实施方式中,数据库服务器可以将该多个对象进行排序,并计算排序后的每两个相邻对象的差值;根据计算得到的差值确定该至少一个离群对象。
在该技术方案中,数据库服务器可以通过计算排序后的多个对象中每两个相邻对象的差值,以确定该数据扩展中的至少一个离群对象,以便提高获取离群对象的速度。
在一种可能的实施方式中,数据库服务器可以对该多个对象进行聚类分析,以确定该至少一个离群对象。
该技术方案中,数据库服务器可以对该多个对象进行聚类分析,可以提高获取离群对象的准确性。
第二方面,本发明实施例提供了数据索引处理装置,该数据索引处理装置具有实现上述第一方面或第一方面可能的实现方式中行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。该模块可以是软件和/或硬件。
第三方面,本发明实施例提供了一种数据库服务器,该数据库服务器包括:存储器,用于存储一个或多个程序;处理器,用于调用存储在该存储器中的程序以实现上述第一方面的方法设计中的方案。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被至少一个处理器执行时,可以实现上述第一方面和第一方面的各可能的实施方式以及有益效果。
第五方面,本发明实施例提供了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机实现上述第一方面的方法的步骤,该计算机程序产品解决问题的实施方式以及有益效果可以参见上述第一方面和第一方面的各可能的方法的实施方式以及有益效果,重复之处不再赘述。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种数据库***的结构示意图;
图2是本发明实施例提供的一种单机数据库***的结构示意图;
图3是本发明实施例提供的一种集群数据库***的结构示意图;
图4是本发明实施例提供的一种集群数据库***的结构示意图;
图5是本发明实施例提供的一种数据库服务器的结构示意图;
图6是本发明实施例提供的数据库***中的逻辑存储结构示意图;
图7是本发明实施例提供的一种数据索引处理方法的流程示意图;
图8是本发明实施例提供的一种数据索引处理装置的结构示意图;
图9是本发明的实施例提供的一种数据库服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
本申请实施例的技术方案可以典型地应用于数据库***(Database System),更具体地,可应用于数据库管理***(Database Management System,DBMS),或者部署有DBMS的数据库服务器。
本申请实施例所应用的数据库***的架构如图1所示,该数据库***包括数据库和数据库管理***(DBMS)。其中,数据库是指存储在数据存储器中的有组织的数据集合,即按照一定的数据模型组织、存储和使用的相关联的数据集合,比如,数据库可以包括一个或者多个数据表(简称“表”)。DBMS用于建立、使用和维护数据库,以及对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。
DBMS提供多种功能,以使客户端建立,修改和询问数据库,客户端通常是运行在用户设备上的一个应用程序。DBMS所提供的功能包括但不限于:(1)数据定义功能,DBMS提供数据定义语言(Data Definition Language,DDL)来定义数据库结构,DDL用于刻画数据库框架,并可以被保存在数据字典中;(2)数据存取功能,DBMS提供数据操纵语言(DataManipulation Language,DML),实现对数据库数据的基本存取操作,比如检索、***、修改和删除;(3)数据库运行管理功能,DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效;(4)数据库的建立和维护功能,包括数据库初始数据的装入,数据库的转储、恢复、重组织,***性能监视、分析等功能;(5)数据库的传输,DBMS提供处理数据的传输,实现客户端与DBMS之间的通信,通常与操作***协调完成。
数据库***通常可分为单机数据库***和集群数据库***。具体地,图2为单机数据库***示意图,包括数据库管理***和数据存储器,该数据库管理***用于提供数据库的查询和修改等服务,该数据库管理***将数据存储到数据存储器中。在单机数据库***中,数据库管理***和数据存储器通常位于单一服务器上,比如一台对称多处理器(Symmetric Multi-Processor,SMP)服务器。该SMP服务器包括多个处理器,所有的处理器共享资源,如总线,内存和I/O***等。数据库管理***的功能可由一个或多个处理器执行内存中的程序来实现。
图3为采用共享磁盘(Shared-storage)架构的集群数据库***示意图,包括多个节点(如图3中的节点1-N),每个节点部署有数据库管理***,分别为用户提供数据库的查询和修改等服务,多个数据库管理***存储有共享的数据在共享数据存储器中,并且通过交换机对数据存储器中的数据执行读写操作。共享数据存储器可以为共享磁盘阵列。集群数据库***中的节点可以为物理机,比如数据库服务器,也可以为运行在抽象硬件资源上的虚拟机。若节点为物理机,则交换机为存储区网络(Storage Area Network,SAN)交换机、以太网交换机,光纤交换机或其它物理交换设备。若节点为虚拟机,则交换机为虚拟交换机。
图4为采用无共享(Shared-nothing)架构的集群数据库***示意图,每个节点具有各自独享的硬件资源(如数据存储器)、操作***和数据库,节点之间通过网络来通信。该体系下,数据将根据数据库模型和应用特点被分布到各个节点上,查询任务将被分割成若干部分,在所有节点上并行执行,彼此协同计算,作为整体提供数据库服务,所有通信功能都在一个高宽带网络互联体系上实现。如同图3所描述的共享磁盘架构的集群数据库***一样,这里的节点既可以是物理机,也可以是虚拟机。
在本申请所有实施例中,数据库***的数据存储器包括但不限于固态硬盘(SSD)、磁盘阵列或其他类型的非瞬态计算机可读介质。图2至图4中虽未示出数据库,应理解,数据库存储在数据存储器中。所属领域的技术人员可以理解一个数据库***可能包括比图2至图4中所示的部件更少或更多的组件,或者包括与图2至图4中所示组件不同的组件,图2至图4仅仅示出了与本申请实施例所公开的实现方式更加相关的组件。例如,虽然图3和至图4中已经描述了4个节点,但所属领域的技术人员可理解成一个集群数据库***可包含任何数量的节点。各节点的数据库管理***功能可分别由运行在各节点上的软件、硬件和/或固件的适当组合来实现。
本领域技术人员根据本申请实施例的教导可以很清楚地理解,本申请实施例的方法可典型地应用于数据库管理***,该数据库管理***安装或者部署在数据库单机数据库***、Shared-nothing架构的集群数据库***、Shared-storage架构的集群数据库***,或其它类型的数据库***中。
为了便于理解和描述,作为示例而非限定,下面以图5中的数据库服务器100为例说明本申请实施例的方案。该数据库服务器具体可以为图2所述的单机数据库***中的SMP服务器,或者图3或图4中所述的一个节点。具体的,如图5所示,数据库服务器100,包括:至少一个处理器104、存储可执行代码的非瞬态计算机可读介质(non-transitory computer-readable medium)106和数据库管理***108。所述可执行代码在被至少一个处理器104执行时被配置为实现数据库管理***108的组件和功能。非瞬态计算机可读介质106可以包括一个或多个非易失性存储器,作为示例,非易失性存储器包括半导体存储器设备,例如可擦可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),电可擦只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)和闪存(flashmemory);磁盘,例如内部硬盘(internal hard disk)或可移动磁盘(removable disk),磁光盘(magneto optical disk),以及CD ROM和DVD-ROM。此外,非瞬态计算机可读介质106还可以包括被配置为主存储器(main memory)的任何设备。至少一个处理器104可以包括任何类型的通用计算电路或专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。至少一个处理器104也可以是耦合到一个或多个半导体基板的一个或多个处理器,例如CPU。
数据库管理***108可以是关系型数据库管理***(Relational DatabaseManagement System,RDBMS)。数据库管理***108支持结构化查询语言(Structured QueryLanguage,SQL)。通常,SQL是指专门用于管理关系型数据库中保存的数据的专用编程语言。SQL可以指代各种类型的数据相关语言,包括例如数据定义语言和数据操纵语言,其中SQL的范围可以包括数据***,查询,更新和删除,模式创建和修改以及数据访问控制。
查询(query)是请求查看,访问和/或操纵存储在数据库中的数据。例如,数据库管理***108可以从客户端102接收SQL格式的查询(称为SQL查询)。通常,数据库管理***108通过通信接口,比如应用程序接口(API)或者以太网接口等网络接口接收客户端的查询,从数据库访问相关数据并操纵相关数据以生成查询所对应的查询结果,并将查询结果通过上述通信接口返回到客户端102。数据库是按一定的数学模型组织、描述和存储的数据集合,数据库可以包括一个或多个数据库结构或格式,例如行存储和列存储。数据库通常存储于数据存储器中,比如图5中的数据存储器120,或者非瞬态计算机可读介质106。当数据库存储于非瞬态计算机可读介质106时,数据库管理***108为内存数据库管理***。对于单机数据库***而言,数据存储器120可以集成在数据库服务器100中,通过总线与至少一个处理器104、以及非瞬态计算机可读介质106连接。
客户端102可以包括被配置成与数据库管理***108交互的任何类型的设备或应用程序。在一些示例中,客户端102包括一个或多个应用服务器。
数据库管理***108包括解析器112、查询优化器114、查询执行器122和存储引擎134。解析器110用于执行对客户端102提交的查询(Query)的语法、语义分析,将查询中的视图展开、划分为小的查询块。查询优化器114为查询生成一组可能被使用的执行计划,估算出每个执行计划的代价,比较计划的代价,最终选择一个最优的执行计划。查询执行器122依照查询的执行计划进行操作,以产生查询结果。存储引擎134负责管理表的数据、索引,同时也会管理运行时的Cache、Buffer、事务、Log等数据。
数据库管理***108负责为所有数据分配逻辑存储空间。数据库空间的分配单位有数据块(Data Block),数据扩展(Data Extent),和段(Segment)。图6说明了这些数据结构之间的关系。存储数据的最小粒度(Finest Level of Granularity)被称为数据块,也叫做逻辑块(Logical Block),或数据页(Data Page))。一个数据块对应于磁盘上数个字节的物理空间。处于数据块之上的逻辑数据库空间是数据扩展。数据扩展是为存储数据而分配的一组连续的数据块。位于数据扩展之上的逻辑数据库存储结构是段。段由一组数据扩展构成,这些数据扩展位于同一表空间(Tablespace)中,用于存储各种逻辑数据结构。例如每个表(Table)的数据都存储在其自身的数据段中,每个索引(Index)的数据都存储在其自身的索引段(Index Segment)中。如果表或索引是分区存储(Partitioned)的,则每个分区拥有自己的段。数据库管理***108为段分配空间时以数据扩展为单位。当段内已有的数据扩展没有可用空间时,数据库管理***108为此段分配一个新的数据扩展。因为数据扩展是随需分配的,所以一个段内的数据扩展在磁盘上未必是连续的。另外,尽管一个段以及属于它的所有数据扩展必须包含在同一表空间中,而且每个数据扩展只能包含于同一个数据文件中。但在一个表空间内,属于同一个段的数据扩展可以分布在多个数据文件上,即段可以跨文件存储。所以若要查询某个非键字段(也就是说,不包含唯一值),可能需要搜索整个表空间,即要访问表的全部数据扩展。为了提高数据的查找速度,存储引擎134可以为表创建索引,这样,多数查询可以仅扫描少量索引段及数据扩展,而不是遍历所有数据扩展。索引一般以文件形式存储在数据存储器120上,比如索引页,索引检索需要物理I/O操作。索引的创建方式会直接影响到数据查询的速度。
基于以上描述的数据库服务器100本申请实施例提出了一种新的数据索引处理方法,以提高数据查询的速度,进而提升查询性能。
图7示出了根据本申请实施例的一种数据索引处理方法的流程示意图,该方法包括如下步骤:
S701、数据库服务器可以从存储的一个数据扩展中确定至少一个离群对象。
需要说明的是,如图5所示的数据库服务器中的存储引擎134可以执行步骤S701从数据存储器120中存储的一个数据扩展中确定至少一个离群对象。
其中,该多个对象为具有数值属性的数据,该多个对象包括多个第一对象,以及与该多个第一对象的分布特征不一致的该至少一个离群对象。
需要说明的是,离群对象可以是指在数据扩展中与其他对象的分布特征不一致的对象。对象的分布特征指示了一个对象样本中大多数对象的分布规律、数值范围或者是数量关系。例如,在多个对象组成的样本空间中,大多数对象的分布特征均为正态分布,则该样本空间中不服从正态分布的对象即为离群对象。离群对象也可以是指该数据扩展中的极端最大值或极端最小值,如该数据扩展的对象的范围是0-10万,然而该数据扩展中的大多数对象都集中在3万~8万之间,小于3万的对象仅有一个对象0,大于8万的仅有对象10万,即0、10万分别为该数据扩展中的极端最小值和极端最大值,即可以将0和10万当作离群对象。通常,可以通过聚类算法或者简单的数值比较,就能确定出一个样本空间中的离群对象。
如上所述,每个表的数据都存储在其自身的数据段中,每个数据段又包含了由特定数量的连续数据块构成的一个或多个数据扩展。一个数据扩展被分配用于存储多个对象,其中,该多个对象为具有数值属性的数据,它可以是数值,也可以是字符或者元组等。以一个数据表中的一列/行数据为例,该列/行数据中的每一个数据记录可视为一个对象。可以理解的是,对象还可以有对应的名称或ID、以及描述信息。本发明实施例中对此不作限定。
本发明实施例中,一个数据扩展中存储的对象可能包括至少一个离群对象,例如,为字段定义非NULL的缺省值的某个数据扩展中可以包括至少一个离群对象;引用数据类型的极值(如日期类型的极值0001-01-01和9999-12-31)的某个数据扩展中也可以包括至少一个离群对象;业务数据记录表的某个数据扩展中也可以包括至少一个离群对象,如用户投诉表的日期字段,大部分数据都是记录的近期的投诉数据,但可能几年前的投诉数据被记录进来,几年前的投诉数据就属于至少一个离群对象;以及数据出现的概率异常及操作失误等因素会导致数据库的某个数据扩展包括至少一个离群对象。如果采用区块范围索引为具有至少一个离群对象的数据扩展创建索引,该数据扩展中的至少一个离群对象就被作为该数据扩展的索引的最大对象或者最小对象,这样该数据扩展的真正的有效数据范围被至少一个离群对象覆盖,从而影响该数据扩展的数据查询的效率。所以该数据库服务器可以通过肖维特算法、格鲁布斯算法、Q检验算法或聚类算法等算法或简单的数值比较的方式从存储的一个数据扩展中确定至少一个离群对象,以便可以进一步对至少一个离群对象进行处理。
作为一种可选的实施例,数据库服务器从存储的一个数据扩展中确定至少一个离群对象的具体方式可以为:将该多个对象进行排序,并计算排序后的每两个相邻对象的差值;根据计算得到的差值确定该至少一个离群对象。
需要说明的是,如图5所示的数据库服务器中的存储引擎134可以执行将该多个对象进行排序,并计算排序后的每两个相邻对象的差值;根据计算得到的差值确定该至少一个离群对象。
本发明实施例中,数据库服务器可以将该多个对象进行排序,并计算排序后的每两个相邻对象的差值,根据计算得到的差值确定该至少一个离群对象,以便可以快速确定该至少一个离群对象。
举例来说,该数据扩展中的多个对象为(-1,18612,18706,18889,18567,18701,999999),将该多个对象进行排序得到(-1,18567,18612,18701,18706,18889,999999),计算排序后的每两个相邻对象的差值得到(18568,45,89,5,183,981110),由于差值18568和981110远大于其他差值,所以可以将-1及999999作为该至少一个离群对象。
作为一种可选的实施例,数据库服务器从存储的一个数据扩展中确定至少一个离群对象的具体方式可以为:从该数据扩展中获取至少三个对象,该至少三个对象中的每个对象小于该数据扩展中的其他对象;按照大小的顺序对该至少三个对象进行排序;计算第三对象与该第三对象后的第一个对象之间的第一差值,以及该第三对象后的第一个对象与该第三对象后的第二个对象的第二差值,该第三对象为经过排序的数据中的任一对象;当该第一差值与该第二差值之间的比值大于预设比例阈值时,确定该第三对象为该至少一个离群对象。
需要说明的是,如图5所示的数据库服务器中的存储引擎134可以执行从该数据扩展中获取至少三个对象,该至少三个对象中的每个对象小于该数据扩展中的其他对象;按照大小的顺序对该至少三个对象进行排序;计算第三对象与该第三对象后的第一个对象之间的第一差值,以及该第三对象后的第一个对象与该第三对象后的第二个对象的第二差值,该第三对象为经过排序的数据中的任一对象;当该第一差值与该第二差值之间的比值大于预设比例阈值时,确定该第三对象为该至少一个离群对象。
举例来说,假设该数据扩展中的多个对象为(-1,18612,18706,18889,18567,18701,999999),预设比例阈值为200,数据库服务器可以获取三个较小的对象(-1,18612,18567),按照从小到大顺序对三个较小的对象进行排序,得到排序后的对象为(-1,18567,18612),可以将-1当作第三对象,则该第三对象后的第一个对象为18567,该第三对象后的第二个对象为18612,计算得到第三对象与该第三对象后的第一个对象之间的第一差值为-18568,以及该第三对象后的第一个对象与该第三对象后的第二个对象之间的第二差值为-45,计算得到第一差值与第二差值之间的比值为-18568/-45=412,由于412>200,因此确定-1为至少一个离群对象。
具体的,上述获取至少一个离群对象的方式可以用表达式表示为:
其中,Vi表示经过排序的至少三个对象中的第i个对象,Pi为经过排序的至少三个对象中连续三个对象之间的差值的比值,U表示预设比例阈值,预设比例阈值可以是根据该数据扩展中的对象的分布特征动态设置的,即对象分布比较集中,可以将该预设比例阈值设置为一个较小值(如,200),对象分布比较分散,可以将该预设比例阈值设置为一个较大值(如,400)。可选的,该预设比例阈值也可以是用户根据个人的喜好设置的。可选的,该预设比例阈值还可以是该数据库服务器的出厂时出厂商设置的,本发明实施例不作限定。
需要说明的是,数据库服务器可以在数据扩展中获取K个较小的对象,并判断获取得到的K个较小的对象是否是至少一个离群对象,可以提高获取至少一个离群对象的效率。其中,K为正整数,且K≥3,K的大小可以根据该数据扩展所包含的对象的数量、对象的分布特征或获取至少一个离群对象所采用的算法等因素确定。
作为一种可选的实施例,数据库服务器在当前需要处理的一个数据扩展中获取至少一个离群对象的具体方式可以为:从该数据扩展中获取至少三个对象,该至少三个对象中的每个对象大于该数据扩展中的其他对象;按照大小的顺序对该至少三个对象进行排序;计算第三对象与该第三对象后的第一个对象之间的第一差值,以及该第三对象后的第一个对象与该第三对象后的第二个对象的第二差值,该第三对象为经过排序的数据中的任一对象;当该第一差值与该第二差值之间的比值大于预设比例阈值时,确定该第三对象为该至少一个离群对象。
举例来说,假设该数据扩展中的多个对象为(-1,18612,18706,18889,18567,18701,999999),预设比例阈值为200,获取得到的三个较大的对象为(999999,18706,18889),并按照从大到小的顺序对三个较大的对象进行排序,得到排序后的对象为(999999,18889,18706),可以将999999当作第三对象,则该第三对象后的第一个对象为18889,该第三对象后的第二个对象为18706,计算得到第三对象与该第三对象后的第一个对象之间的第一差值为981110,以及该第三对象后的第一个对象与该第三对象后的第二个对象之间的第二差值为183,计算得到第一差值与第二差值之间的比值为981110/183≈5361.35,由于5361.35>200,因此可以确定999999为至少一个离群对象。
综上,在数据扩展中的多个对象为(-1,18612,18706,18889,18567,18701,999999)时,-1和999999为至少一个离群对象。
需要说明的是,数据库服务器可以在数据扩展中获取M个较大的对象,并判断获取得到的M个较大的对象是否是至少一个离群对象,可以提高获取至少一个离群对象的效率。其中,M为正整数,且M≥3,M的大小可以根据该数据扩展所包含的对象的数量、对象的分布特征或获取至少一个离群对象所采用的算法等因素确定。另外,K与M的取值可以相等,也可以不相等,本发明实施例不做限定。
作为一种可选的实施方式,数据库服务器从存储的一个数据扩展中确定至少一个离群对象的具体方式可以为:对该多个对象进行聚类分析,以确定该至少一个离群对象。
需要说明的是,如图5所示的数据库服务器中的存储引擎134可以对该多个对象进行聚类分析,以确定该至少一个离群对象。
本发明实施例中,数据库服务器可以采用聚类分析的方式从该数据扩展中确定出该至少一个离群对象,即通过聚类分析的方式获取大多数对象的分布特征,将与该分布特征不一致的对象作为该至少一个离群对象。
S702、数据库服务器为该数据扩展建立索引信息,该索引信息用于记录该至少一个离群对象、该多个第一对象中的最小对象及最大对象。
需要说明的是,如图5所示的数据库服务器中的存储引擎134可以执行步骤S702为该数据扩展建立索引信息,该索引信息用于记录该至少一个离群对象、该多个第一对象中的最小对象及最大对象。
本发明实施例中,数据库服务器可以为该数据扩展建立索引信息,以便在需要查询对象时,可以根据建立的索引信息来判断是否需要在该数据扩展中查询需要查询的对象,由于该索引信息中记录的该多个第一对象中的最大对象、最小对象不是离群对象,因而,可缩小该索引信息中记录的最小对象与最大对象之间的区间长度,进而,减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
举例来说,假设该数据扩展中的对象为(-1,18612,18706,18889,18567,18701,999999),数据库服务器可以确定该区段中的至少一个离群对象为-1和999999,多个第一对象为除至少一个离群对象以外的其他对象,即该多个第一对象为(18612,18706,18889,18567,18701),该多个第一对象中的最小对象为18567,最大对象为18889,为该数据扩展建立索引信息,该索引信息记录的该多个第一对象中的最小对象为18567,最大对象为18889以及该至少一个离群对象为-1和999999。而采用传统的方式获取到的最大对象为999999、最小对象为-1,为该数据扩展建立索引信息,该索引信息记录的最大对象为999999和最小对象为-1,可见,本发明可以通过识别出数据扩展中的至少一个离群对象,可缩小该索引信息中记录的最小对象与最大对象之间的区间长度,可以减小数据扫描的范围,并提高查询效率。
S703、数据库服务器接收查询请求,该查询请求包含有查询条件,该查询条件用于指示查询范围。
需要说明的是,如图5所示的数据库服务器中的解析器110可以执行步骤S703通过通信接口从客户端102接收查询请求,该查询请求包含有查询条件,该查询条件用于指示查询范围,并执行对客户端102提交的查询请求(Query)的语法、语义分析,将查询中的视图展开、划分为小的查询块。
查询优化器114为该查询请求生成一组可能被使用的执行计划,估算出每个执行计划的代价,比较计划的代价,最终选择一个最优的执行计划,该最优的执行计划为基于本发明建立的索引信息对该查询范围中的对象进行查询。
本发明实施例中,该数据范围可以是某个对象或者某个数值区间,数据库服务器可以针对该对象或者该数值区间进行查询,具体的数据库服务器可以接收查询请求,该查询请求可以包含有查询条件,该查询条件可以用于指示查询范围。其中该查询请求可以是用户通过客户端向数据库服务器发起的,也可以是数据库服务器或客户端自动发起的。
需要说明的是,该数值区间可是开区间,也可以是闭区间,或者半开半闭区间,如数值区间为[5,10]、[0,100)、(20,30)或(2000,5000]。
S704、数据库服务器根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以依照查询的执行计划执行步骤S704根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象。并根据查询操作产生一个查询结果,并将查询结果通过上述通信接口返回到客户端102。
本发明实施例中,数据库服务器可以将该查询范围中对应的对象与索引信息中记录的对象进行比较,以判断是否在该数据扩展中查询该查询范围内的对象,由于该索引信息中记录的该多个第一对象中的最小对象及最大对象不是离群对象,因而可减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
作为一种可选的实施例,在该查询范围为第二对象时,根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象的具体实施方式可以包括:将该第二对象与该索引信息中记录的该至少一个离群对象、该多个第一对象中的最小对象及最大对象进行比较,以判断是否在该数据扩展中查询该第二对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以依照查询的执行计划执行以下步骤:将该第二对象与该索引信息中记录的该至少一个离群对象、该多个第一对象中的最小对象及最大对象进行比较,以判断是否在该数据扩展中查询该第二对象。并根据查询操作产生一个查询结果,并将查询结果通过上述通信接口返回到客户端102。
本发明实施例中,数据库服务器可以将第二对象与至少一个离群对象、该多个第一对象中的最小对象以及最大对象进行比较,以判断是否在所述数据扩展中查询该第二对象。由于该索引信息中记录的该多个第一对象中的最小对象及最大对象不是离群对象,因而可减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
作为可以可选的实施例,在该查询范围为数值区间时,根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象的具体实施方式可以包括:将数值区间的最大对象、最小对象分别与该索引信息中记录的该至少一个离群对象、该多个第一对象中的最小对象以及最大对象进行比较,以判断是否在该数据扩展中查询该查询范围内的对象,由于该索引信息中记录的该多个第一对象中的最小对象及最大对象不是离群对象,因而减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
表1
举例来说,表1为采用传统的方式为各个数据扩展建立的索引信息,存储器中存储的三个数据扩展,分别为第一数据扩展、第二数据扩展以及第三数据扩展,其中第一数据扩展的索引信息中记录的最小对象为-600,最大对象为20033;第二数据扩展的索引信息中包括的最小对象为-1,最大对象为38976;第三数据扩展的索引信息中包括的最小对象为-1,最大对象为999999。
表2
表2为采用本发明为各个数据扩展建立的索引信息,表2中的数据扩展中的对象与表1的数据扩展的对象相同,但是表2中第一数据扩展的索引信息中记录的多个第一对象中的最小对象为185,最大对象为20033,至少一个离群对象为-600;第二数据扩展的索引信息中记录的多个第一对象中的最小对象为18567,最大对象为38976,至少一个离群对象为-1;第三数据扩展的索引信息中记录的多个第一对象中的最小对象为39003,最大对象为52761,至少一个离群对象为-1和999999。若该查询范围为对第二对象(如第二对象为10000),根据表1中的索引信息,数据库服务器需要在这三个数据扩展中查询该第二对象,而根据表2中的索引信息,数据库服务器可以将第二对象与各个数据扩展的索引信息中的至少一个离群对象、多个第一对象中的最小对象以及最大对象进行比较,由于第二对象大于第一数据扩展的索引信息中记录的多个第一对象中的最小对象(该最小对象为185),且小于第一数据扩展的索引信息中记录的多个第一对象中的最大对象(该最大对象为20033),因此数据库服务器可以仅仅在第一数据扩展中查询该第二对象。可见,本发明建立的索引信息减小了索引查询的范围,可以提高查询效率,同时也降低了数据库服务器的CPU消耗和I/O消耗。
进一步举例来说,若该查询范围为数值区间,该数值区间为(20,30),根据表1中的索引信息,数据库服务器需要在该三个数据扩展中查询该查询范围内的对象,根据表2中的索引信息,数据库服务器可以跳过对该三个数据扩展的查询,进而可以提高查询效率,同时也降低了数据库服务器的CPU消耗和I/O消耗。
作为一种可选的实施例,数据库服务器将该第二对象与该至少一个离群对象、该多个第一对象中的最小对象及最大对象进行比较,以判断是否在该数据扩展中查询该第二对象的具体实施方式包括:在该第二对象小于该多个第一对象中的最小对象,或该第二对象大于该多个第一对象中的最大对象时,将该第二对象与该至少一个离群对象进行比较;在该第二对象与该至少一个离群对象不相同时,跳过对该数据扩展中的对象查询。在第二对象与至少一个离群对象相同时,可以在该数据扩展中查询第二对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以在该第二对象小于该多个第一对象中的最小对象,或该第二对象大于该多个第一对象中的最大对象时,将该第二对象与该至少一个离群对象进行比较;在该第二对象与该至少一个离群对象不相同时,跳过对该数据扩展中的对象查询。在第二对象与至少一个离群对象相同时,可以在该数据扩展中查询第二对象。
举例来说,对于存储器中存储的三个数据扩展中,采用本发明为各个数据扩展建立的索引信息,如表2所示,在该查询范围为第二对象(如第二对象为100)时,数据库服务器可以将第二对象与第一数据扩展的索引信息中记录的多个第一对象中的最小对象(该最小对象为185)以及最大对象(该最大对象为20033)进行比较,由于第二对象小于该多个第一对象中的最小对象,可以将该第二对象与第一数据扩展的索引信息中记录的至少一个离群对象(至少一个离群对象为-600)进行比较,由于第二对象与该至少一个离群对象不相同,因而数据库服务器可以跳过对第一数据扩展中的对象查询,进而数据库服务器可以将第二对象与第二数据扩展、第三数据扩展的索引信息中包括的多个第一对象中的最大对象、最小对象、至少一个离群对象进行比较,并可以跳过对第二数据扩展、第三数据扩展中的对象查询。若该查询范围为第二对象(如第二对象为999999)时,数据库服务器可以将第二对象与第一数据扩展、第二数据扩展的索引信息中记录的多个第一对象中的最大对象、最小对象、至少一个离群对象进行比较,由于第二对象不属于第一数据扩展、第二数据区间的多个第一对象中的最小对象与最大对象之间的区间,且与第一数据扩展、第二数据扩展的索引信息中记录的至少一个离群对象不相同,因而数据库服务器可以跳过对第一数据扩展、第二数据扩展中的对象的查询。数据库服务器可以将第二对象与第三数据扩展的索引信息中记录的多个第一对象中的最小对象(该最小对象为39003)以及最大对象(该最大对象为52761)进行比较,由于第二对象大于该多个第一对象中的最大对象,可以将第二对象与第三数据扩展的索引信息中记录的至少一个离群对象(至少一个离群对象为-1和999999)进行比较,由于第二对象与该数据扩展的索引信息中记录的至少一个离群对象(该至少一个离群对象为999999)相同,因此数据库服务器可以在第三数据扩展中查询第二对象。
本发明实施例中,在第二对象小于该多个第一对象中的最小对象,或第二对象大于该多个第一对象中的最大对象时,数据库服务器可以将第二对象与该至少一个离群对象进行比较,以判断第二对象是否与该至少一个离群对象相同,在第二对象与该至少一个离群对象不相同时,数据库服务器可以跳过对该数据扩展中的对象查询,以便可以减小数据查询的范围,进而,提高查询的效率;在第二对象与该至少一个离群对象相同时,数据库服务器可以在该数据扩展中查询第二对象,以便快速查询到第二对象。
需要说明的是,该至少一个离群对象中可能包括多个离群对象,第二对象与至少一个离群对象相同是指第二对象与该至少一个离群对象中的任一对象相同,第二对象与该至少一个离群对象不相同是指第二对象与该至少一个离群对象中的任一对象不相同。
作为一种可选的实施例,数据库服务器还可以执行以下步骤:在第二对象大于或等于该多个第一对象中的最小对象,且第二对象小于或等于该多个第一对象中的最大对象时,可以在该数据扩展中查询第二对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以在第二对象大于或等于该多个第一对象中的最小对象,且第二对象小于或等于该多个第一对象中的最大对象时,可以在该数据扩展中查询第二对象。
举例来说,对于需要处理的数据的三个数据扩展中,采用本发明为各个数据扩展建立的索引信息,如表2所示,该查询范围为第二对象(如第二对象为15679)时,数据库服务器可以将第二对象与各个数据扩展的索引信息中记录的多个第一对象中的最大对象、最小对象、至少一个离群对象进行比较,由于第二对象大于第一数据扩展的索引信息中记录的多个第一对象中的最小对象(该最小对象为185),且小于第一数据扩展的索引信息中记录的多个第一对象中的最大对象(该最大对象为20033),因此数据库服务器可以在第一数据扩展中查询第二对象。
本发明实施例中,在第二对象大于或等于该多个第一对象中的最小对象,且第二对象小于或等于该多个第一对象中的最大对象时,可以在该数据扩展中查询第二对象,以便可以快速查询到第二对象。
作为一种可选的实施例,在该数据范围为数值区间时,根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象的具体实施方式可以包括:在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象未落在该数值区间内,跳过对该数据扩展中的对象查询。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象未落在该数值区间内时,跳过对该数据扩展中的对象查询。
需要说明的是,该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集可以是指:该数值区间的最大对象小于该多个第一对象中的最小对象,或该数值区间的最小对象大于该多个第一对象中的最大对象时。
需要说明的是,在该至少一个离群对象未落在该数值区间内可以是指:该至少一个离群对象与该数值区间的最大对象、或者最小对象不相等,或者该至少一个离群对象大于该数值区间的最大对象,该至少一个离群对象小于该数值区间的最小对象。
举例来说,对于存储器中存储的三个数据扩展中,采用本发明为各个数据扩展建立的索引信息,如表2所示,该查询范围为数值区间时,该数值区间为[100,150],则数值区间的最小对象为100,最大对象为150,由于该数值区间最大对象小于第一数据扩展的索引信息中记录的多个第一对象中的最小对象,数据库服务器可以将该数值区间的最小对象、最大对象与第一数据扩展的索引信息中记录的至少一个离群对象进行比较,由于该至少一个离群对象未落在该数值区间内,因此可以跳过对第一数据扩展中的对象查询。
本发明实施例中,在该数据范围为数值区间时,数据库服务器可以将该数值区间的最小对象、最大对象分别与该索引信息中记录的多个第一对象中的最小对象、最大对象进行比较,在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集时,可以将该数值区间的最大对象、最小对象分别与该至少一个离群对象进行比较,在该至少一个离群对象未落在该数值区间内时,跳过对该数据扩展中的对象查询,以便可以减小数据查询的范围,进而,提高数据查询的效率。
作为一种可选的实施例,在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间有交集时,数据库服务器可以在该数据扩展中该查询范围内的对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间有交集时,数据库服务器可以在该数据扩展中该查询范围内的对象。
举例来说,该数值区间为(30,50),若由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间为[20,40],则可以确定该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间有交集,数据库服务器可以在该数据扩展中对数值区间(30,40]内的对象进行查询;若由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间为[35,40],则可以确定该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间有交集,数据库服务器可以在该数据扩展中对数值区间[35,40]内的对象进行查询。
作为一种可选的实施例,在该数据范围为数值区间时,根据该索引信息,以及该查询范围,判断是否在该数据扩展中查询该查询范围内的对象的具体实施方式可以包括:在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象落在该数值区间内时,可以在该数据扩展中查询该查询范围内的对象。
需要说明的是,如图5所示的数据库服务器中的查询执行器122可以在该数值区间与由该索引信息中记录的该多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且该至少一个离群对象落在该数值区间内时,可以在该数据扩展中查询该查询范围内的对象。
举例来说,对于存储器中存储的三个数据扩展中,采用本发明为各个数据扩展建立的索引信息,如表2所示,该查询范围为数值区间时,该数值区间为[-700,150],则数值区间的最小对象为-700,最大对象为150,由于该数值区间最大对象小于第一数据扩展的索引信息中记录的多个第一对象中的最小对象,数据库服务器可以将该数值区间的最小对象、最大对象与第一数据扩展的索引信息中记录的至少一个离群对象进行比较,由于该至少一个离群对象落在该数值区间内,因此可以在该数据扩展中查询对象-600。
在图7所描述的方法中,数据库服务器通过识别出该数据扩展的至少一个离群对象,为该数据扩展建立索引信息,由于该索引信息中记录的该多个第一对象中的最小对象及最大对象不是离群对象,因而可减小执行查询的过程中,数据扫描的范围,提高数据查询效率。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。
请参见图8,图8是本发明实施例提供的一种数据索引处理装置的结构示意图,该装置可设置在数据库服务器中,该数据索引处理装置80可以包括确定模块801、建立模块802、接收模块803、判断模块804。
可选的,确定模块801、建立模块802可以包括或者相当于图5所示的数据库服务器中的存储引擎134,接收模块803可以包括或者相当于图5所示的数据库服务器中的解析器110,判断模块804可以包括或者相当于图5所示的数据库服务器中的查询优化器114及查询执行器122,本发明实施例不做限定。
本发明实施例中,该数据索引处理装置80具有实现上述图7对应实施例中的数据索引处理方法中数据库服务器执行的相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件。基于同一发明构思,由于该数据索引处理装置解决问题的原理以及有益效果可以参见上述数据索引处理方法实施方式以及所带来的有益效果,因此该数据索引处理装置的实施方式可以参见上述方法实施方式,重复之处不再赘述。
上述详细阐述了本发明实施例的装置,下面提供了本发明实施例的数据库服务器。
请参见图9,图9是本发明实施例提供的一种数据库服务器90,该数据库服务器90包括处理器901、存储器902和收发器903,所述处理器901、存储器902和收发器903通过总线相互连接。
处理器901可以是一个或多个中央处理器(英文:Central Processing Unit,简称:CPU),在处理器901是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器902包括但不限于是随机存储记忆体(英文:Random Access Memory,简称:RAM)、只读存储器(英文:Read-Only Memory,简称:ROM)、可擦除可编程只读存储器(英文:Erasable Programmable Read Only Memory,简称:EPROM)、或便携式只读存储器(英文:Compact Disc Read-Only Memory,简称:CD-ROM),该存储器902用于相关指令及数据。收发器903用于接收和发送数据。
可选的,处理器901可以包括或者相当于图8所示的数据索引处理装置中的确定模块801、建立模块802、判断模块804;收发器903可以包括或者相当于图8所示的数据索引处理装置中的接收模块803,本发明实施例不做限定。
可选的,处理器901可以包括或者相当于图5所示的解析器112、查询优化器114、查询执行器122和存储引擎134,存储器902可以包括或者相当于图5所示数据存储器120。
收发器903可以包括或者相当于图5所示物理I/O。
本发明实施例中,该数据库服务器的存储器902,用于存储一个或多个程序;处理器901,用于调用存储在该存储器902中的程序以执行上述图7对应实施例中的数据索引处理方法的步骤,该数据库服务器解决问题的实施方式以及有益效果可以参见上述图7对应实施方式以及有益效果,重复之处不再赘述。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序解决问题的实施方式以及有益效果可以参见上述图7数据索引处理方法的实施方式以及有益效果,重复之处不再赘述。
本发明还提供了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行上述图7对应实施例中的数据索引处理方法的步骤,该计算机程序产品解决问题的实施方式以及有益效果可以参见上述图7数据索引处理方法的实施方式以及有益效果,重复之处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (16)
1.一种数据索引处理方法,其特征在于,包括:
从存储有多个对象的一个数据扩展中确定至少一个离群对象,所述多个对象为具有数值属性的数据,所述多个对象包括多个第一对象,以及与所述多个第一对象的分布特征不一致的所述至少一个离群对象;
为所述数据扩展建立索引信息,所述索引信息用于记录所述至少一个离群对象、所述多个第一对象中的最小对象及最大对象;
接收查询请求,所述查询请求包含有查询条件,所述查询条件用于指示查询范围;
根据所述索引信息,以及所述查询范围,判断是否在所述数据扩展中查询所述查询范围内的对象。
2.如权利要求1所述的方法,其特征在于,若所述查询范围为第二对象,则所述根据所述索引信息,以及所述查询范围,判断是否在所述数据扩展中查询所述查询范围内的对象,包括:
将所述第二对象与所述索引信息中记录的所述至少一个离群对象、所述多个第一对象中的最小对象及最大对象进行比较,以判断是否在所述数据扩展中查询所述第二对象。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
在所述第二对象小于所述多个第一对象中的最小对象,或所述第二对象大于所述多个第一对象中的最大对象时,将所述第二对象与所述至少一个离群对象进行比较;
在所述第二对象与所述至少一个离群对象不相同时,跳过对所述数据扩展中的对象查询。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第二对象与所述至少一个离群对象相同时,在所述数据扩展中查询所述第二对象。
5.如权利要求1所述的方法,其特征在于,若所述查询范围为数值区间,则所述根据所述索引信息,以及所述查询范围,判断是否在所述数据扩展中查询所述查询范围内的对象,包括:
在所述数值区间与由所述索引信息中记录的所述多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且所述至少一个离群对象未落在所述数值区间内时,跳过对所述数据扩展中的对象查询。
6.如权利要求1-5任一所述的方法,其特征在于,所述从存储有多个对象的一个数据扩展中确定至少一个离群对象,包括:
将所述多个对象进行排序,并计算排序后的每两个相邻对象的差值;
根据计算得到的差值确定所述至少一个离群对象。
7.如权利要求1-5任一所述的方法,其特征在于,所述从存储有多个对象的一个数据扩展中确定至少一个离群对象,包括:
通过对所述多个对象进行聚类分析,以确定所述至少一个离群对象。
8.一种数据索引处理装置,其特征在于,包括:
确定模块,用于从存储有多个对象的一个数据扩展中确定至少一个离群对象,所述多个对象为具有数值属性的数据,所述多个对象包括多个第一对象,以及与所述多个第一对象的分布特征不一致的所述至少一个离群对象;
建立模块,用于为所述数据扩展建立索引信息,所述索引信息用于记录所述至少一个离群对象、所述多个第一对象中的最小对象及最大对象;
接收模块,用于接收查询请求,所述查询请求包含有查询条件,所述查询条件用于指示查询范围;
判断模块,用于根据所述索引信息,以及所述查询范围,判断是否在所述数据扩展中查询所述查询范围内的对象。
9.如权利要求8所述的装置,其特征在于,所述查询范围为第二对象;
所述判断模块,具体用于将所述第二对象与所述索引信息中记录的所述至少一个离群对象、所述多个第一对象中的最小对象及最大对象进行比较,以判断是否在所述数据扩展中查询所述第二对象。
10.如权利要求9所述的装置,其特征在于,
所述判断模块,具体用于在所述第二对象小于所述多个第一对象中的最小对象,或所述第二对象大于所述多个第一对象中的最大对象时,将所述第二对象与所述至少一个离群对象进行比较;在所述第二对象与所述至少一个离群对象不相同时,跳过对所述数据扩展中的对象查询。
11.如权利要求9所述的装置,其特征在于,
所述判断模块,具体用于在所述第二对象与所述至少一个离群对象相同时,在所述数据扩展中查询所述第二对象。
12.如权利要求8所述的装置,其特征在于,所述查询范围为数值区间;
所述判断模块,具体用于在所述数值区间与由所述索引信息中记录的所述多个第一对象中的最小对象及最大对象为端点构成的数值区间没有交集,且所述至少一个离群对象未落在所述数值区间内时,跳过对所述数据扩展中的对象查询。
13.如权利要求8-12任一所述的装置,其特征在于,
所述确定模块,具体用于将所述多个对象进行排序,并计算排序后的每两个相邻对象的差值;根据计算得到的差值确定所述至少一个离群对象。
14.如权利要求8-12任一所述的装置,其特征在于,
所述确定模块,具体用于通过对所述多个对象进行聚类分析,以确定所述至少一个离群对象。
15.一种数据库服务器,其特征在于,所述数据库服务器包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求1至7中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710379991.2A CN108932258B (zh) | 2017-05-25 | 2017-05-25 | 数据索引处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710379991.2A CN108932258B (zh) | 2017-05-25 | 2017-05-25 | 数据索引处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932258A CN108932258A (zh) | 2018-12-04 |
CN108932258B true CN108932258B (zh) | 2022-05-24 |
Family
ID=64450777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710379991.2A Active CN108932258B (zh) | 2017-05-25 | 2017-05-25 | 数据索引处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108932258B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468406A (zh) * | 2020-03-31 | 2021-10-01 | 北京沃东天骏信息技术有限公司 | 一种数据展示方法和装置 |
CN112559554B (zh) * | 2020-12-24 | 2024-01-26 | 北京百家科技集团有限公司 | 一种查询语句优化方法及装置 |
CN117951169A (zh) * | 2022-10-18 | 2024-04-30 | 华为云计算技术有限公司 | 查询数据的方法和相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN104715031A (zh) * | 2015-03-12 | 2015-06-17 | 福建工程学院 | 一种海量数据近似聚集查询中的离群分治取样方法 |
CN105160039A (zh) * | 2015-10-13 | 2015-12-16 | 四川携创信息技术服务有限公司 | 一种基于大数据的查询方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287020B2 (en) * | 2001-01-12 | 2007-10-23 | Microsoft Corporation | Sampling for queries |
CN100456300C (zh) * | 2006-10-27 | 2009-01-28 | 北京航空航天大学 | 基于二维草图的三维模型检索方法 |
US20100198829A1 (en) * | 2009-01-30 | 2010-08-05 | Elzinga D Blair | Method and computer-program product for ranged indexing |
CN106528815B (zh) * | 2016-11-14 | 2019-07-02 | 中国人民解放军理工大学 | 一种路网移动对象概率聚集查询方法及*** |
-
2017
- 2017-05-25 CN CN201710379991.2A patent/CN108932258B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN104715031A (zh) * | 2015-03-12 | 2015-06-17 | 福建工程学院 | 一种海量数据近似聚集查询中的离群分治取样方法 |
CN105160039A (zh) * | 2015-10-13 | 2015-12-16 | 四川携创信息技术服务有限公司 | 一种基于大数据的查询方法 |
Non-Patent Citations (1)
Title |
---|
"一种支持离散面目标自然邻居查询的空间索引";李佳田等;《2007年"信息化测绘论坛"暨中国测绘学会年会论文集》;20080828;289-297 * |
Also Published As
Publication number | Publication date |
---|---|
CN108932258A (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241093B (zh) | 一种数据查询的方法、相关装置及数据库*** | |
US20170083573A1 (en) | Multi-query optimization | |
CN108536705B (zh) | 数据库***中对象的编码及运算方法与数据库服务器 | |
US11663213B2 (en) | Distinct value estimation for query planning | |
US8386463B2 (en) | Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table | |
EP3098730B1 (en) | Aggregating database entries by hashing | |
CN113227998A (zh) | 全面支持自主json文档对象(ajd)云服务的技术 | |
CN108536692B (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
US8949222B2 (en) | Changing the compression level of query plans | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
WO2016167999A1 (en) | Geo-scale analytics with bandwidth and regulatory constraints | |
US11030196B2 (en) | Method and apparatus for processing join query | |
CN108804473B (zh) | 数据查询的方法、装置和数据库*** | |
US11704317B2 (en) | Partial group by for eager group by placement query plans | |
CN108932258B (zh) | 数据索引处理方法及装置 | |
US20230418820A1 (en) | Accessing index data to handle null values during execution of a query that involves negation | |
Hewasinghage et al. | A cost model for random access queries in document stores | |
Ciritoglu et al. | Hard: a heterogeneity-aware replica deletion for hdfs | |
US8583687B1 (en) | Systems and methods for indirect algebraic partitioning | |
US11449521B2 (en) | Database management system | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
US20170031982A1 (en) | Maintaining Performance in the Presence of Insertions, Deletions, and Streaming Queries | |
CN113868267A (zh) | 注入时序数据的方法、查询时序数据的方法及数据库*** | |
Hamirwasia | FAST: Fragment Assisted Storage for query execution in read-only databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |