CN112925954B - 用于在图数据库中查询数据的方法和装置 - Google Patents
用于在图数据库中查询数据的方法和装置 Download PDFInfo
- Publication number
- CN112925954B CN112925954B CN202110264851.7A CN202110264851A CN112925954B CN 112925954 B CN112925954 B CN 112925954B CN 202110264851 A CN202110264851 A CN 202110264851A CN 112925954 B CN112925954 B CN 112925954B
- Authority
- CN
- China
- Prior art keywords
- storage layer
- filtering
- filter
- attribute information
- query
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000001914 filtration Methods 0.000 claims abstract description 188
- 230000014509 gene expression Effects 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 31
- 238000012216 screening Methods 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 24
- 238000010276 construction Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 abstract description 2
- 230000003044 adaptive effect Effects 0.000 abstract 1
- 238000012546 transfer Methods 0.000 description 50
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000009471 action Effects 0.000 description 10
- 238000013499 data model Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000452 restraining effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在图数据库中查询数据的方法和装置,其中,该方法包括:获取查询请求;基于查询请求生成查询表达式;分别判断查询层中的每个过滤条件是否能适配存储层中所能适配的目标比较器;响应于过滤条件可以适配存储层中的目标比较器,将一个或多个过滤条件下推到存储层;针对下推到存储层的每一个过滤条件,利用存储层中相应的目标比较器构造过滤器;利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤。使用本公开的方法,由存储层发送到查询层的数据量相较于原始的候选数据减少,使得查询层的过滤计算量大幅减少,同时使得发送到查询层的数据所消耗的网络带宽和发送时间都明显降低,最终减少了数据库的响应时延,提升了用户使用体验。
Description
技术领域
本公开涉及计算机领域,特别涉及用于在图数据库中查询数据的方法和装置。
背景技术
图是一种重要的数据结构,其广泛应用于包括金融、商务等多个领域的数据存储。图数据一般由顶点(Vertex)和边(Edge)的集合组成,顶点和边可拥有若干个属性。图数据库(Graph Database)是一种NoSQL(泛指非关系型的数据库)。NoSQL数据库的产生解决了大规模数据集合、多重数据种类,特别是大数据应用所带来的问题。图数据库的主要功能是对图结构数据进行存储和管理,并对外提供图语义的查询服务。在本领域内,Neo4j和JanusGraph都是常用的图数据库并占据了不小的市场份额,并且分布式架构的图数据库技术是该领域主流的发展趋势。
目前本领域非常关注图数据库的查询技术(以下简称“图查询”),它是图数据库最基础和最常用的功能之一,其效率直接影响上层应用的用户体验。衡量图查询效率的一个重要指标是时延(Latency),其表示查询请求从客户端发起至收到响应的总时间,常用单位为秒或毫秒。时延的值越低则表明查询性能越好。
因此,如何有效的降低时延成为本领域的重要课题。然而,目前还没有能够大幅度有效减少上述时延的方法。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
根据本公开的一方面,提供一种用于在图数据库中查询数据的方法,其中,图数据库包括查询层和存储层,上述方法包括:获取查询请求;基于查询请求生成查询表达式,查询表达式包括用于查询层筛选数据的多个过滤条件,每个过滤条件用于筛选相应的数据属性信息;分别判断存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器;响应于存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将一个或多个过滤条件下推到存储层;针对被下推到存储层的每一过滤条件,利用存储层中相应的目标比较器构造过滤器;利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对存储层中存储的候选数据进行初次筛选;以及将初次筛选所筛选得到的多个候选数据发送至查询层。
根据本公开的另一方面,还提供一种用于在图数据库中查询数据的装置,其中,图数据库包括查询层和存储层,装置包括:获取单元,配置成获取查询请求;生成单元,基于查询请求生成查询表达式,查询表达式包括用于查询层筛选数据的多个过滤条件,每个过滤条件用于筛选相应的数据属性信息;判断单元,配置成分别判断存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器;下推单元,配置成响应于存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将一个或多个过滤条件下推到存储层;构造单元,配置成针对被下推到存储层的每一过滤条件,利用存储层中相应的目标比较器构造过滤器;第一筛选单元,配置成利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对存储层中存储的候选数据进行初次筛选;和发送单元,将初次筛选所筛选得到的多个候选数据发送至查询层。
根据本公开的又另一方面,提供了一种计算机设备,包括:存储器、处理器以及存储在存储器上的计算机程序,其中,处理器被配置为执行计算机程序以实现上述用于在图数据库中查询数据的方法的步骤。
根据本公开的又另一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述用于在图数据库中查询数据的方法的步骤。
根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,其中,计算机程序被处理器执行时实现上述用于在图数据库中查询数据的方法的步骤。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1是示出根据本公开示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;
图2是示出根据本公开示例性实施例的用于在图数据库中查询数据的方法的流程图;
图3是示出根据本公开示例性实施例的树结构的查询表达式的示意图;
图4是示出根据本公开示例性实施例的用于在图数据库中查询数据的方法的流程图;
图5是示出根据本公开示例性实施例的用于构造过滤器的方法的流程图;
图6是示出根据本公开示例性实施例的HBase的数据模型的示意图;
图7是示出根据本公开示例性实施例的JanusGraph的数据模型的示意图;
图8是示出根据本公开示例性实施例的在HBase中构造的树结构的查询表达式的示意图;
图9是示出根据本公开示例性实施例的用于构造过滤器的方法的流程图;
图10是示出根据示例性实施例的用于在图数据库中查询数据的装置的示意性组成框图;
图11是示出能够应用于示例性实施例的示例性计算设备的结构框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统100的示意图。
参考图1,该系统100包括客户端设备110、服务器120、以及将客户端设备110与服务器120通信地耦合的网络130。
客户端设备110包括显示器114和可经由显示器114显示的客户端应用(APP)112。客户端应用112可以为运行前需要下载和安装的应用程序或者作为轻量化应用程序的小程序(liteapp)。在客户端应用112为运行前需要下载和安装的应用程序的情况下,客户端应用112可以被预先安装在客户端设备110上并被激活。在客户端应用112为小程序的情况下,用户102可以通过在宿主应用中搜索客户端应用112(例如,通过客户端应用112的名称等)或扫描客户端应用112的图形码(例如,条形码、二维码等)等方式,在客户端设备110上直接运行客户端应用112,而无需安装客户端应用112。在一些实施例中,客户端设备110可以是任何类型的移动计算机设备,包括移动计算机、移动电话、可穿戴式计算机设备(例如智能手表、头戴式设备,包括智能眼镜,等)或其他类型的移动设备。在一些实施例中,客户端设备110可以替换地是固定式计算机设备,例如台式机、服务器计算机或其他类型的固定式计算机设备。
服务器120典型地为由互联网服务提供商(ISP)或互联网内容提供商(ICP)部署的服务器。服务器120可以代表单台服务器、多台服务器的集群、分布式系统、或者提供基础云服务(诸如云数据库、云计算、云存储、云通信)的云服务器。将理解的是,虽然图1中示出服务器120与仅一个客户端设备110通信,但是服务器120可以同时为多个客户端设备提供后台服务。
网络130的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)、和/或诸如互联网之类的通信网络的组合。网络130可以是有线或无线网络。在一些实施例中,使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来处理通过网络130交换的数据。此外,还可以使用诸如安全套接字层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、网际协议安全(IPsec)等加密技术来加密所有或者一些链路。在一些实施例中,还可以使用定制和/或专用数据通信技术来取代或者补充上述数据通信技术。
为了本公开实施例的目的,在图1的示例中,客户端应用112可以为数据查询应用,该数据查询应用可以提供基于数据查询的各种功能。与此相应,服务器120可以是与该数据查询应用一起使用的服务器。该服务器120可以基于路网数据向客户端设备110中运行的客户端应用112提供在线数据服务。替换地,服务器120也可以将路网数据提供给客户端设备110,由客户端设备110中运行的客户端应用112根据该路网数据提供本地数据查询服务。
以下将结合附图对本公开的用于在图数据库中查询数据的方法进行进一步描述。
图2是示出根据本公开示例性实施例的用于在图数据库中查询数据的方法的流程图。图数据一般由顶点(Vertex)和边(Edge)的集合组成,其可以用于记录不同主体之间交互的信息,顶点和边均可以拥有若干个属性。目前,最基础和最常用的图查询是检索指定顶点所关联的边的集合,并且这些边的属性需满足若干过滤条件,其被称为“以顶点为中心的查询”。以金融关系为例,图数据可以是不同转账主体之间的转账信息,图的顶点可以是不同的转账主体,而边可以是主体之间的转账记录。例如:图数据库中记录有“XXX年X月X日,A公司向B银行转账10万元”的数据,那么A公司和B银行就是图数据的顶点,该转账记录就是图数据的边。这种边具有方向性,例如,A公司向B银行转账,那么边的方向就是从A公司指向B银行,也可以理解为该边为以A公司为顶点的出边,以B银行为顶点的入边。上述转账时间XXX年X月X日、转账金额10万元以及相关的转账摘要都可以是该边的属性。
上述图数据库主要包括接口层1010、查询层1020和存储层1030,接口层1010主要用于获取用户的查询请求,存储层1030存储所有图数据,查询层1020对存储层1030中的数据进行筛选,以得到用户所需的数据。查询层1020的查询引擎的可以为JanusGraph,存储层1030的存储引擎可以为HBase。可以理解,在本发明另外一些实施例中,查询层1020和存储层1030还可以是其他合适的图数据库的引擎。
如图2所示,上述查询数据的方法可以包括以下步骤:
步骤S201,获取查询请求;
步骤S202,基于查询请求生成查询表达式,查询表达式包括用于查询层筛选数据的多个过滤条件,每个过滤条件用于筛选相应的数据属性信息;
步骤S203,分别判断存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器;
步骤S204,响应于存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将一个或多个过滤条件下推到存储层;
步骤S205,针对被下推到存储层的每一过滤条件,利用存储层中相应的目标比较器构造过滤器;
步骤S206,利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对存储层中存储的候选数据进行初次筛选;以及
步骤S207,将初次筛选所筛选得到的多个候选数据发送至查询层;
步骤S208,响应于存储层中不具有与一个或多个过滤条件的类型适配的目标比较器,不进行该过滤条件的下推。
本公开的技术方案将部分过滤条件下推到存储层中,以在存储层中对候选数据进行初次筛选。因此,后续发送到查询层的数据的数量相较于原始的候选数据大幅度减少,从而使得发送到查询层的数据所消耗的网络带宽和发送时间都明显降低,减少了数据库的响应时延,提升了用户使用体验。同时,本公开的方法还可以减少(或消除)查询层的过滤耗时,同时减少数据发送阶段的内存使用量,节省了通信资源。
在步骤S201中,图数据库接收并获取来自使用查询功能服务的用户的查询请求。图数据库后续基于该查询请求将符合查询条件的目标数据筛选出来,并提供给用户。具体地,用户端设备110可以将查询请求发送到服务器120中的图数据库的接口层1010中,接口层1010获取该查询请求。还以金融关系为例,该查询请求具体可以是,例如“查询2018年至2020年,A公司向B个人转账1万元-3万元,转账摘要中包含“工资”的目标数据”。
在步骤S202中,在数据库的查询层1020中解析和处理接口层1010下发的图语义查询请求,然后构建对应的计算步骤或对存储层1030的操作计划并生成查询表达式,查询表达式可以但不限于表示为树(Tree)结构。
图3示出了根据本公开一个实施例的树结构的查询表达式的示意图。如图3所示,查询表达式包括多个过滤条件,每个过滤条件用于筛选数据的一个相应的属性信息。在图3的树结构中,每个叶子节点都表示一个过滤条件,各个过滤条件通过逻辑OR或者AND进行连接。还以步骤S201中的查询请求为例,“查询2018年至2020年,A公司向B个人转账1万元-3万元,转账摘要中包含“工资”的目标数据”可以表示为“转账时间:2018年至2020年(过滤条件1)”、“转账金额:1万元-3万元(过滤条件2)”以及“转账摘要包括字符串:工资(过滤条件3)”这三个过滤条件的组合,可以理解这三个过滤条件之间通过逻辑AND进行连接。这三个过滤条件所要筛选的属性分别是转账时间、金额以及转账摘要,“2018年至2020年”、“1万元-3万元”、转账摘要所记载的内容是相应的属性信息。可以理解,在一些其他的实施例中,查询表达式可以具有更多或更少的过滤条件,并且每个过滤条件之间还可以通过逻辑OR或AND和OR的组合进行连接。
在步骤S203,可以根据存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器,将查询表达式中的部分过滤条件下推到存储层1030中。在现有技术中用户查询数据时,存储层1030往往将存储的所有相关数据都发送到查询层1020中,然后查询层1020再根据查询表达式对这些数据进行筛选,得到用户关心的数据。然而使用这种查询方式,存储层1030往往要发送大量的数据到查询层1020中,因此造成系统的时延较长,使得用户体验下降,同时还占用系统较多的带宽,浪费通信资源。为了解决上述问题,本公开将查询层1020中的部分过滤条件下推到存储层1030中,也就是说在存储层1030中实现部分过滤条件,并完成至少部分数据的筛选工作,从而减少从存储层1030发送到查询层1020的数据量,大幅度减少时延。为了筛选出可下推的过滤条件,需要遍历上述查询表达式的树结构,对每个过滤条件是否能够下推做出判断。每个过滤条件的类型根据该过滤条件所要筛选的属性的类型和该过滤条件谓词共同决定。上述谓词是指诸如“大于”、“小于”、“等于”或“不等于”等的逻辑关系动词。例如:某一过滤条件为:转账金额大于等于100万,那么转账金额为所要筛选的属性,“大于等于”是谓词。
在本步骤中,将可下推的过滤条件存储在Map集合(Map<PropertyKey,List<PropertyFilter>>)中,并在后续下推到存储层,以实现查询层1020和存储层1030下推的对接。具体地,每个谓词结构由属性筛选器(PropertyFilter)记录,并将可下推的过滤条件放入到列表(List)中。在PropertyFilter中标识符isAND标记不同的过滤条件之间是AND还是OR的逻辑,标识符isEqual标识过滤条件是否为等值过滤,标识符isRegex标识过滤条件是否为正则过滤。
在步骤S204中,当判断出存储层1030中具有与该过滤条件的类型适配的目标比较器时,则将该过滤条件进行下推。一般来说,存储层1030的计算能力远差于查询层1020,因此并非所有的过滤条件都可以下推到存储层1030来实现。只有当过滤条件满足上述下推条件时,才能够对过滤条件进行下推。适配的比较器一般是指可以在存储层1030中实现该过滤条件的比较器。因此对于已知的存储引擎(例如,HBase)何种类型的过滤条件可以下推一般是预先设定的。在下文中,将会详细描述在以HBase为存储引擎的图数据库中,将何种过滤条件进行下推。
在步骤S205中,针对每个下推后的过滤条件,利用存储层中相应的目标比较器构造过滤器。对每个下推的过滤条件,都可以使用存储层中的目标比较器构造相应的过滤器,从而能够在存储层中实现该过滤条件。
在步骤S206中,利用过滤器对存储层1030中存储的候选数据进行初次筛选。上述候选数据是指在存储层1030中存储的所有与本次查询相关的所有数据。如上所述,经过下推的过滤条件均能够在存储层1030中实现,特别是可以通过存储引擎(例如,HBase)中的比较器构造出过滤器,以替代查询层1020中相应的过滤功能,从而可以对候选数据进行初次筛选。
在步骤S206中,由于在存储层1030中,已经基于某些下推的过滤条件对候选数据进行了初次筛选,因此,后续发送到查询层1020的数据的数量相较于原始的候选数据大幅减少。从而,数据发送到查询层1020所消耗的网络带宽和时间都会大大降低,进而减少(或消除)查询层1020的过滤耗时,同时也可减少数据发送阶段的内存使用量。接口层1010可以进而将筛选后的数据发送至用户终端,以供用户查看。
在步骤S207中,对于没有适配的目标比较器的过滤条件,其无法在存储层1030中实现,因此可以不下推到存储层1030,也就是将其保留在查询层1020中,以用于在查询层1020中筛选相关数据。在将初次筛选后的候选数据从存储层发送到查询层的步骤之后,基于至少一个过滤条件,在查询层中对初次筛选所筛选得到的候选数据进行二次筛选,以得到最终筛选数据。
图4是示出根据本公开示例性实施例的用于在图数据库中查询数据的方法的流程图。该方法是图2中方法的进一步细化,其主要包括以下步骤:
步骤S401,获取查询请求;
步骤S402,基于查询请求生成查询表达式,查询表达式包括用于查询层筛选数据的多个过滤条件,每个过滤条件用于筛选相应的数据属性信息;
步骤S403,分别判断存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器;
步骤S404,响应于存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将一个或多个过滤条件下推到存储层;
步骤S405,分别判断存储层中内置的一个或多个比较器是否与多个过滤条件中的每个过滤条件的类型适配;
步骤S406,响应于确定一个或多个比较器中的其中一个比较器与该过滤条件的类型适配,将该比较器确定为与该过滤条件的类型适配的目标比较器;
步骤S407,针对每一预设过滤条件,响应于确定一个或多个比较器均不与该预设过滤条件的类型适配,在存储层中构建与该预设过滤条件的类型适配的目标比较器;
步骤S408,针对被下推到存储层的每一过滤条件,利用存储层中相应的目标比较器构造过滤器;
步骤S409,利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对存储层中存储的候选数据进行初次筛选;
步骤S410,将初次筛选所筛选得到的多个候选数据发送至查询层;
步骤S411,响应于存储层中不具有与一个或多个过滤条件的类型适配的目标比较器,不进行该过滤条件的下推。
上述步骤S401-S404、S408-S411和图2中所示的方法的相应步骤类似,这里不再详细描述。
在步骤S405中,对已经确定下推的过滤条件进行进一步区分,上述过滤条件还可以包括两种情况:1)可以直接利用存储层的存储引擎中内置的比较器构造过滤器;2)不能直接利用内置的比较器构造过滤器,需要对存储引擎中内置的比较器进行扩展,并构造新的比较器。
在步骤S406中,若上述过滤条件属于情况1),则直接使用存储层已有的比较器造过滤器。
在步骤S407中,若上述过滤条件属于情况2),则对存储引擎中内置的比较器进行扩展,并构造新的比较器。这里需要注意,只有一些预设过滤条件能够通过对存储引擎中内置的比较器进行扩展来实现,这些预设过滤条件的类型将在后文中详细阐述。
图5、图9分别示出根据本公开示例性实施例的用于构造过滤器的两种方法的流程图。上述两种方法可以认为是与图4中步骤S404至S408相对应的子方法。
图5中的方法主要针对可下推的过滤条件为与第一属性信息相关的预设数值范围的情况。在这种情况下属性信息可以表示为数值,例如:转账时间的值、转账金额的值等。具体地,该方法可以包括以下步骤:
步骤S501,将过滤条件的下推到存储层;
步骤S502,分别判断每个过滤条件是否为与第一属性信息相关的预设数值范围;
步骤S503,响应于确定过滤条件为与第一属性信息相关的预设数值范围,确定存储层中具有与该过滤条件的类型适配的内置的目标比较器;
步骤S504,使用存储层中的二进制前缀比较器对预设数值范围的起始值和/或结束值进行约束,以构造过滤器;
步骤S505,确定过滤条件为第二属性信息等于或不等于预设字符串;
步骤S506,响应于确定过滤条件为第二属性信息等于或不等于预设字符串,在存储层中构建二进制子串比较器,二进制子串比较器能够对多种编码格式的字符串进行比较操作,并构造相应的过滤器;
步骤S507,基于查询表达式中被下推至存储层的一个或多个过滤条件之间的逻辑关系,利用存储层中的筛选器列表将一个或多个过滤器进行逻辑组合;
在详细描述图5所示方法之前,首先对存储引擎HBase以及查询引擎JanusGraph的数据结构进行简要说明。图6示出了根据本公开示例性实施例的HBase的数据模型的示意图。如图6所示,在HBase数据模型下,数据列表由行(Row)组成。每行数据由键(key)进行标识,并由若干个数据单元(cell)组成。数据单元则由列(column)和值(value)组成。数据单元由给定行中的列进行标识。
图7示出了根据本公开示例性实施例的JanusGraph的数据模型的示意图。如图7所示,类似于HBase,JanusGraph将每条数据存储为存储后端中的一行。顶点ID(JanusGraph唯一分配给图数据的每个顶点的ID)是用于标识行的键。图数据中的每个边和属性信息都存储为行中的单个数据单元,并允许插入和删除。因此,对目标数据的查询过程实际上就是查找符合要求的边的数据单元的过程。特定存储后端中每行允许的最大数据单元格数也是JanusGraph可以针对此后端支持的顶点的最大程度。如果存储后端支持键的排序,则数据将按顶点ID进行排序,JanusGraph可以分配顶点ID,以便有效地对图形进行分区。
其中,需要注意的是列和值都是由多个元素拼接而成的,例如边的数据单元的列由边的标签ID、方向、排序键(sort key)等构成,value部分则由签名键(signature key)和边的其它若干属性(Properties)构成。从图6和图7中可以看出,JanusGraph的数据模型和HBase的数据模型的结构具有对应关系,在将数据写入存储层1030中时,JanusGraph可以将其数据单元内的列和值分别存储在相应的HBase数据单元的列和值上。
为了利用过滤下推技术,JanusGraph引入排序键作为边的数据单元的column的一部分,JanusGraph可以将数据中的某一待筛选的属性信息(一般为数值信息)存储在排序键的位置处,这样对排序键位置处的属性信息的数值范围类型的过滤就能在HBase中通过内置的专门对column的数值进行过滤的列范围(ColumnRange)过滤器来实现。例如,还以金融关系为例,若某一图数据库接收到用户关于转账金额的数据查询请求较多,并希望能够将筛选转账金额的过滤条件进行下推的情况下。在写入数据时,可以预先将转账金额这一属性信息存储在上述排序键的位置,这样后续关于转账金额这一属性的过滤条件都可以下推到HBase中通过ColumnRange过滤器来实现。
如果查询需要同时对边上的两个属性进行范围过滤,例如查询某人的资金交易记录,通常会对资金关系上的时间范围和金额范围同时过滤(例如,查询某人在2020年到2021年期间转账金额在10万到100万之间的数据,那么需要对两个属性,即转账时间和金额同时进行过滤),此时查询表达式将会包括关于转账时间的第一过滤条件以及关于转账金额的第二过滤条件。关于转账金额的第二过滤条件可以通过上述在列中引入排序键的方法下推到存储层1030,并通过列范围(ColumnRange)过滤器来实现。
为了对另一数值信息的过滤条件,也就是转账时间的过滤条件进行下推,在获取查询请求之前需要对图数据库进行另外的预操作。具体地,在对图数据库进行管理时,可以对转账时间这一属性信息进行标记,JanusGraph会将标记后的属性的数值信息存储在数据单元value的签名键的位置。因此,在存储引擎HBase中,该属性的数值信息会相应地存储在value的起始位置,从而后续可以利用诸如二进制前缀比较器(BinaryPrefixComparator)的比较器对上述数值信息进行过滤。
本实施例方法针对的就是如上所述的属性信息为数值信息的过滤器的构造。在步骤S502中分别判断每个过滤条件是否为与第一属性信息相关的预设数值范围。若过滤条件所要筛选的第一属性信息是数值类型的信息(例如:时间、金额等),且过滤条件是筛选该数值在一定范围内的数据,那么可以确定存储层1030中存在与该过滤条件适配的内置的比较器。例如上述列举的第一过滤条件(转账时间2020年到2021年)以及第二过滤条件(转账金额10万至100万)均是满足上述要求的过滤条件。
如上所述,已经预先将待筛选的第一属性信息通过预先标记的方式存储在了存储层1030的数据单元的值的起始位置。例如以转账时间为例,可以将每条数据的转账时间都存储在HBase的数据单元的值的起始位置。从而在步骤S504中,可以使用存储引擎中内置的BinaryPrefixComparator构造对转账时间进行筛选的过滤器。还以上述列举的第一过滤条件(转账时间2020年到2021年)为例,可以利用两个BinaryPrefixComparator分别对预设数值范围的起始值和结束值进行约束。具体地,第一BinaryPrefixComparator用于筛选时间信息大于等于20200101的数据,同时第二BinaryPrefixComparator用于筛选时间信息小于等于20211231的数据,然后使用存储引擎中内置的筛选器列表(FilterList)构造逻辑AND,选取第一BinaryPrefixComparator和第二BinaryPrefixComparator筛选出的数据的交集,就可以得到满足上述第一过滤条件的数据。在另外一些实施例中,过滤条件可以只包含起始值或结束值(也就是过滤条件仅包含大于和小于中的一者),例如筛选大于100的数据,同样可以利用两个BinaryPrefixComparator构造该过滤器。具体地,第一BinaryPrefixComparator对“100”所对应的字节形式做前缀匹配,第二BinaryPrefixComparator对相同数值类型的计算设备所能表示的最大值所对应的字节形式做前缀匹配(例如:如果100是int整型,则计算设备所能表示的最大值为2的32次方,如果100对应的是long类型,则所能表示的最大值为2的64次方),所要过滤的数据就是100到最大值之间的数据。
综上,在本实施例中,可以结合JanusGraph对排序键的设置以及对签名键的设置完成对用于筛选数值信息的至少两个过滤条件的下推。例如,可以将关于转账金额的信息存储在排序键中,将关于转账时间的信息存储在签名键中,这样关于转账金额的第一过滤条件和关于转账时间的第二过滤条件都可以下推到存储层1030。第一过滤条件通过ColumnRange过滤器来实现,第二过滤条件通过两个BinaryPrefixComparator来实现。这两个过滤条件筛选出来的数据还可以利用筛选器列表构造逻辑AND,以获得同时满足第一过滤条件和第二过滤条件的数据。
在步骤S505中,若过滤条件不是与第一属性信息相关的预设数值范围,则可以确定存储层不存与过滤条件的类型适配的内置的比较器。此时可以继续判断过滤条件是否为第二属性信息等于或不等于预设字符串,其中第二属性信息表示为字符串,例如可以是例如“工资”、“男”等的字符串。特别地,在HBase中可以将诸如“18”、“100”等的数值转换为字符串类型进行表示,因此在这种情况下也可以将这些数值理解为字符串。若能够确定过滤条件为第二属性信息等于或不等于预设字符串,那么可以通过在存储层中构建新的比较器的方式来构造相应的过滤器。例如,满足上述判断标准的过滤条件例如可以是:性别为“男”。
图数据的边的除排序键和签名键以外的其它属性都存储在边数据单元的值的非起始位置,具体每个属性的存储形式是由其属性键的内部id和属性信息编码并拼接而成键ID值对(KeyIDValue Pair),多个属性按一定顺序拼接而形成了图7所示的其他属性的部分。因此,对边的某个属性信息的等值(或不等值)过滤逻辑,可以转换为该属性信息的KeyIDValue Pair是否为边数据单元的值的一部分,所以理论上可以使用HBase内置的子串比较器(SubstringComparator)构造这种过滤条件的过滤器。
但是,SubstringComparator需要一个满足UTF-8编码的构造参数,而属性信息的KeyIDValue Pair是经过JanusGraph特殊压缩编码而成,它不符合任何通用的编码规范,所以无法直接使用SubstringComparator。在步骤S506中,可以在原始的HBase引擎的基础上,通过对引擎接口的拓展,构建一个新的二进制子串比较器(SubBinaryComparator),其可以完成任意编码格式的字节子串匹配过滤。可以利用上述拓展的SubBinaryComparator比较器构造过滤器以实现上述过滤条件。
当然,上述只列举了一种可以通过构建新的比较器的方式来构造过滤器的过滤条件。在另外一些实施例中,还可以存在其他可以通过上述方式来构造过滤器的过滤条件,这里不再一一列举。
步骤S507中,可以基于查询表达式中被下推至存储层的一个或多个过滤条件之间的逻辑关系,利用存储层中的筛选器列表将一个或多个过滤器进行逻辑组合。
如上所述,可以把查询层1020查询表达式看作为树结构,叶子节点是一个过滤条件,其它非叶子节点是OR或者AND的复合逻辑,另外树的根root是一个天然的AND逻辑。
由于上述可下推的过滤条件已经存储在了Map<PropertyKey,List<PropertyFilter>>,因此在步骤S507中,可以使用Map<PropertyKey,List<PropertyFilter>>信息构造HBase的过滤条件组合。每个PropertyFilter记录HBase中对应的过滤条件,如果List包含多个PropertyFilter则使用HBase中可嵌套的FilterList组合这些过滤条件,组合的逻辑包括MUST_PASS_ALL(AND逻辑)以及MUST_PASS_ONE(OR逻辑)等。因此,在HBase中,可以利用过滤器(Value Filter)和FilterList构造出与图3所示的查询树结构相对应的树结构,图8是示出根据本公开示例性实施例的在HBase中构造的树结构的查询表达式的示意图。
图9中的方法主要针对可下推的过滤条件为与确定过滤条件为第三属性信息包含预设字符子串的情况。在这种情况下属性信息可以表示为字符串,例如:诸如“工资”、“贷款”等转账摘要中常出现的字词短语。具体地,该方法包括以下步骤:
步骤S901,将过滤条件下推到存储层1030。
步骤S902,分别判断每个过滤条件是否为第三属性信息包含预设字符子串;
步骤S903,基于过滤条件为第三属性信息包含预设字符子串,确定存储层中具有与该过滤条件的类型适配的内置的目标比较器;
步骤S904,利用子串比较器生成用于预设字符子串的正则表达式,以构造过滤器;
步骤S905,基于过滤条件不是第三属性信息包含预设字符子串,在存储层中构建与该预设过滤条件的类型适配的目标比较器;
步骤S906,基于查询表达式中被下推至存储层的一个或多个过滤条件之间的逻辑关系,利用存储层中的筛选器列表将一个或多个过滤器进行逻辑组合。
在步骤S902中分别判断每个过滤条件是否为第三属性信息包含预设字符子串。若过滤条件所要筛选的第三属性信息是字符串类型的信息(例如:转账摘要的全部文字内容),且过滤条件是第三属性信息包含预设字符子串,那么可以确定存储层1030中存在与该过滤条件适配的内置的比较器。例如,满足上述要求的过滤条件可以是转账摘要中包含“工资”字样。
对于值类型为字符串(String)的属性信息,它们在被JanusGraph编码后的KeyIDValue Pair中依然含有字符串本身的原始串,同时它也是边数据单元的value的一部分。所以可借助HBase内置的的正则表达式字符串比较器(RegexStringComparator)构造过滤器,只需将对单个属性信息的正则匹配表达式改写成对整个数据单元的Value的正则匹配即可。上述正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。由于正则表达式的情形较多,在步骤S904中,可以对上述方法进行进一步改进。具体地,由于String类型属性的子串过滤查询最常用,其正则过滤表达式为“.*substring.*”,所以可直接使用HBase内置的SubstringComparator构造过滤器以实现该过滤条件。
上述图5、图9所示的两种方法分别用于不同形式的过滤条件的过滤器的构造。但是,可以理解的是,在一些实施例中,可以结合上述两种方法,以实现对更多种过滤条件的过滤器的构造。例如,在图5所示的方法中,步骤S502可以判断每个过滤条件是否为第一属性信息相关的预设数值范围或者是第三属性信息包含预设字符子串,若判断结果为是,则利用存储层中内置的比较器构建相应的过滤器,如此可以实现同时构造上述三类过滤条件的过滤器。另外,在步骤S507中,可以基于查询表达式中各个过滤条件之间的逻辑关系,利用存储引擎中内置的FilterList构造多个过滤条件之间的逻辑AND和OR,以对多个过滤条件筛选出的数据进行整合。
示例性地,以步骤S101中的查询请求为例,“查询2018年至2020年,A公司向B个人转账1万元-3万元,转账摘要中包含“工资”的目标数据”可以表示为“转账时间:2018年至2020年(过滤条件1)”、“转账金额:1万元-3万元(过滤条件2)”以及“转账摘要包括字符子串:工资(过滤条件3)”这三个过滤条件的组合,可以理解这三个过滤条件之间通过逻辑AND进行连接。那么通过上述方法分别构造出上述三个过滤器后,可以进一步利用FilterList的MUST_PASS_ALL(AND逻辑)组合这些过滤条件。
本公开还提供了一种用于在图数据库中查询数据的装置,图10是示出根据示例性实施例的用于在图数据库中查询数据的装置的示意性组成框图。如图10所示,该装置包括:获取单元1011、生成单元1021、判断单元1022、下推单元1023、构造单元1031、第一筛选单元1034和发送单元1032。获取单元1011配置成获取查询请求。生成单元1021基于查询请求生成查询表达式,查询表达式包括用于查询层筛选数据的多个过滤条件,每个过滤条件用于筛选相应的数据属性信息。判断单元1022配置成分别判断存储层中是否具有与多个过滤条件中的每个过滤条件的类型适配的目标比较器。下推单元1023配置成响应于存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将一个或多个过滤条件下推到存储层。构造单元1031配置成针对被下推到存储层的每一过滤条件,利用存储层中相应的目标比较器构造过滤器。第一筛选单元1034配置成利用一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对存储层中存储的候选数据进行初次筛选。发送单元1032将初次筛选所筛选得到的多个候选数据发送至查询层。
存储层中内置有一个或多个比较器,判断单元1022还配置成分别判断存储层中内置的一个或多个比较器是否与多个过滤条件中的每个过滤条件的类型适配;响应于确定一个或多个比较器中的其中一个比较器与该过滤条件的类型适配,将该比较器确定为与该过滤条件的类型适配的目标比较器。
多个过滤条件包括一个或多个预设过滤条件,装置还包括:构建单元1033,配置成针对每一预设过滤条件,响应于确定一个或多个比较器均不与该预设过滤条件的类型适配,在存储层中构建与该预设过滤条件的类型适配的目标比较器。
数据属性信息包括第一属性信息,第一属性信息的表示为数值,并且判断单元1022还配置成:分别判断每个过滤条件是否为与第一属性信息相关的预设数值范围;响应于确定过滤条件为与第一属性信息相关的预设数值范围,确定存储层中具有与该过滤条件的类型适配的内置的目标比较器。
存储层中具有内置的二进制前缀比较器,并且构造单元1031还配置成:使用存储层中的二进制前缀比较器对预设数值范围的起始值和/或结束值进行约束,以构造过滤器。
上述装置还包括:标记单元1024。标记单元1024配置成对第一属性信息进行标记,以使得查询层将第一属性信息存储在相应的数据单元的值的起始位置。
第二属性信息的表示为字符串,一个或多个预设过滤条件包括第二属性信息等于或不等于预设字符串,并且构建单元1033还配置成:在存储层中构建二进制子串比较器,二进制子串比较器能够对多种编码格式的字符串进行比较操作。
数据属性信息包括第三属性信息,第三属性信息的表示为字符串,判断单元1022还配置成:分别判断每个过滤条件是否为第三属性信息包含预设字符子串;响应于确定过滤条件为第三属性信息包含预设字符子串,确定存储层中具有与该过滤条件的类型适配的内置的目标比较器。
存储层中具有内置的子串比较器,并且构造单元1031还配置成:利用子串比较器生成用于预设字符子串的正则表达式,以构造过滤器。
构造单元1031还配置成:基于查询表达式中被下推至存储层的一个或多个过滤条件之间的逻辑关系,利用存储层中的筛选器列表将一个或多个过滤器进行逻辑组合。
上述装置还包括:第二筛选单元1025。第二筛选单元1025配置成基于至少一个过滤条件,在查询层中对初次筛选所筛选得到的候选数据进行二次筛选,以得到最终筛选数据。
应当理解,图10中所示装置1000的各个单元可以与参考图2描述的方法200中的各个步骤相对应。由此,上面针对方法200描述的操作、特征和优点同样适用于装置1000及其包括的单元。为了简洁起见,某些操作、特征和优点在此不再赘述。
虽然上面参考特定单元讨论了特定功能,但是应当注意,本文讨论的各个单元的功能可以分为多个单元,和/或多个单元的至少一些功能可以组合成单个单元。本文讨论的特定单元执行动作包括该特定单元本身执行该动作,或者替换地该特定单元调用或以其他方式访问执行该动作(或结合该特定单元一起执行该动作)的另一个组件或单元。因此,执行动作的特定单元可以包括执行动作的该特定单元本身和/或该特定单元调用或以其他方式访问的、执行动作的另一单元。例如,上面描述的构建单元1033和构造单元1031在一些实施例中可以组合成单个单元。如本文使用的,短语“实体A发起动作B”可以是指实体A发出执行动作B的指令,但实体A本身并不一定执行该动作B。
还应当理解,本文可以在软件硬件元件或程序单元的一般上下文中描述各种技术。上面关于图10描述的各个单元可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些单元可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些单元可以被实现为硬件逻辑/电路。例如,在一些实施例中,生成单元1021、判断单元1022、下推单元1023中的一个或多个可以一起被实现在片上系统(System on Chip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(Central Processing Unit,CPU)、微控制器、微处理器、数字信号处理器(Digital Signal Processor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
根据本公开的一方面,提供了一种计算机设备,其包括存储器、处理器以及存储在存储器上的计算机程序。该处理器被配置为执行计算机程序以实现上文描述的任一方法实施例的步骤。
根据本公开的一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。
根据本公开的一方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。
在下文中,结合图11描述这样的计算机设备、非暂态计算机可读存储介质和计算机程序产品的说明性示例。
图11示出了可以被用来实施本文所描述的方法的计算机设备1100的示例配置。举例来说,图1中所示的服务器120和/或客户端设备110可以包括类似于计算机设备1100的架构。上述用于在图数据库中查询数据的装置也可以全部或至少部分地由计算机设备1100或类似设备或系统实现。
计算机设备1100可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其它合适的计算机设备或计算系统。计算机设备1100的示例包括但不限于:台式计算机、服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算机设备1100的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。
计算机设备1100可以包括能够诸如通过系统总线1114或其他适当的连接彼此通信的至少一个处理器1102、存储器1104、(多个)通信接口1106、显示设备1108、其他输入/输出(I/O)设备1110以及一个或更多大容量存储设备1112。
处理器1102可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器1102可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器1102可以被配置成获取并且执行存储在存储器1104、大容量存储设备1112或者其他计算机可读介质中的计算机可读指令,诸如操作系统1116的程序代码、应用程序1118的程序代码、其他程序1120的程序代码等。
存储器1104和大容量存储设备1112是用于存储指令的计算机可读存储介质的示例,指令由处理器1102执行来实施前面所描述的各种功能。举例来说,存储器1104一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备1112一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器1104和大容量存储设备1112在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器1102作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
多个程序单元可以存储在大容量存储设备1112上。这些程序包括操作系统1116、一个或多个应用程序1118、其他程序1120和程序数据1122,并且它们可以被加载到存储器1104以供执行。这样的应用程序或程序单元的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):服务器120中的应用(包括获取单元1011、生成单元1021、判断单元1022、下推单元1023、标记单元1024和第二筛选单元1025、构建单元1033、构造单元1031、第一筛选单元1034和发送单元1032)、方法200和/或方法400(包括方法200、400的任何合适的步骤)、和/或本文描述的另外的实施例。
虽然在图11中被图示成存储在计算机设备1100的存储器1104中,但是单元1116、1118、1120和1122或者其部分可以使用可由计算机设备1100访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。
计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,信息诸如是计算机可读指令、数据结构、程序单元或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算机设备访问的任何其他非传送介质。
与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序单元或其他数据。本文所定义的计算机存储介质不包括通信介质。
计算机设备1100还可以包括一个或更多通信接口1106,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、BluetoothTM接口、近场通信(NFC)接口等。通信接口1106可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如LAN、电缆等等)和无线网络(例如WLAN、蜂窝、卫星等等)、因特网等等。通信接口1106还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。
在一些示例中,可以包括诸如监视器之类的显示设备1108,以用于向用户显示信息和图像。其他I/O设备1110可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。
虽然在附图和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,并且词语“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。
Claims (26)
1.一种用于在图数据库中查询数据的方法,其中,所述图数据库包括查询层和存储层,所述方法包括:
获取查询请求;
在所述查询层中基于所述查询请求生成查询表达式,所述查询表达式包括用于所述查询层筛选数据的多个过滤条件,每个所述过滤条件用于筛选相应的数据属性信息;
分别判断所述存储层中是否具有与所述多个过滤条件中的每个过滤条件的类型适配的目标比较器;
响应于所述存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将所述一个或多个过滤条件从所述查询层下推到所述存储层;
针对被下推到所述存储层的每一过滤条件,利用所述存储层中相应的目标比较器构造过滤器;
利用所述一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对所述存储层中存储的候选数据进行初次筛选;以及
将所述初次筛选所筛选得到的多个候选数据发送至所述查询层,
其中,所述存储层中内置有一个或多个比较器,并且分别判断所述存储层中是否具有与所述多个过滤条件中的每个过滤条件的类型适配的目标比较器包括:
分别判断所述存储层中内置的所述一个或多个比较器是否与所述多个过滤条件中的每个过滤条件的类型适配;
响应于确定所述一个或多个比较器中的其中一个比较器与该过滤条件的类型适配,将该比较器确定为与该过滤条件的类型适配的目标比较器。
2.如权利要求1所述的方法,其中,所述多个过滤条件包括一个或多个预设过滤条件,并且所述方法还包括:
针对每一预设过滤条件,响应于确定所述一个或多个比较器均不与该预设过滤条件的类型适配,在所述存储层中构建与该预设过滤条件的类型适配的目标比较器。
3.如权利要求1所述的方法,其中,所述数据属性信息包括第一属性信息,所述第一属性信息的表示为数值,
其中,分别判断所述存储层中内置的所述一个或多个比较器是否与所述多个过滤条件中的每个过滤条件的类型适配包括:
分别判断每个所述过滤条件是否为与所述第一属性信息相关的预设数值范围;
响应于确定所述过滤条件为与所述第一属性信息相关的预设数值范围,确定所述存储层中具有与该过滤条件的类型适配的内置的目标比较器。
4.如权利要求3所述的方法,其中,所述存储层中具有内置的二进制前缀比较器,
其中,基于所述过滤条件的类型,利用所述存储层中相应的目标比较器构造过滤器包括:
使用所述存储层中的所述二进制前缀比较器对所述预设数值范围的起始值和/或结束值进行约束,以构造所述过滤器。
5.如权利要求4所述的方法,其中,在获取对目标数据的查询请求的步骤之前还包括:
对所述第一属性信息进行标记,以使得所述查询层将所述第一属性信息存储在数据单元的值的起始位置。
6.如权利要求2所述的方法,其中,所述数据属性信息包括第二属性信息,所述第二属性信息的表示为字符串,所述一个或多个预设过滤条件包括第二属性信息等于或不等于预设字符串。
7.如权利要求6所述的方法,其中,针对每一预设过滤条件,响应于确定所述一个或多个比较器均不与该预设过滤条件的类型适配,在所述存储层中构建与该预设过滤条件的类型适配的目标比较器包括:
在存储层中构建二进制子串比较器,所述二进制子串比较器能够对多种编码格式的字符串进行比较操作。
8.如权利要求1所述的方法,其中,所述数据属性信息包括第三属性信息,所述第三属性信息的表示为字符串,
其中,分别判断所述存储层中内置的所述一个或多个比较器是否与所述多个过滤条件中的每个过滤条件的类型适配还包括:
分别判断每个所述过滤条件是否为所述第三属性信息包含预设字符子串;
响应于确定所述过滤条件为所述第三属性信息包含预设字符子串,确定所述存储层中具有与该过滤条件的类型适配的内置的目标比较器。
9.如权利要求8所述的方法,其中,所述存储层中具有内置的子串比较器,
其中,基于所述过滤条件的类型,利用所述存储层中相应的目标比较器构造过滤器还包括:
利用所述子串比较器生成用于所述预设字符子串的正则表达式,以构造所述过滤器。
10.如权利要求1-9中任一项所述的方法,其中,针对被下推到所述存储层的每一过滤条件,利用所述存储层中相应的目标比较器构造过滤器还包括:
基于所述查询表达式中被下推至所述存储层的所述一个或多个所述过滤条件之间的逻辑关系,利用所述存储层中的筛选器列表将一个或多个过滤器进行逻辑组合。
11.如权利要求1-9中任一项所述的方法,其中,所述多个过滤条件包括未被下推至存储层的至少一个过滤条件,
所述方法还包括:
在将初次筛选后的所述候选数据从所述存储层发送到所述查询层的步骤之后,基于所述至少一个过滤条件,在所述查询层中对所述初次筛选所筛选得到的所述候选数据进行二次筛选,以得到最终筛选数据。
12.如权利要求1-9中任一项所述的方法,其中,所述查询层以JanusGraph为查询引擎。
13.如权利要求1-9中任一项所述的方法,其中,所述存储层以HBase为存储引擎。
14.一种用于在图数据库中查询数据的装置,其中,所述图数据库包括查询层和存储层,所述装置包括:
获取单元,配置成获取查询请求;
生成单元,在所述查询层中基于所述查询请求生成查询表达式,所述查询表达式包括用于所述查询层筛选数据的多个过滤条件,每个所述过滤条件用于筛选相应的数据属性信息;
判断单元,配置成分别判断所述存储层中是否具有与所述多个过滤条件中的每个过滤条件的类型适配的目标比较器;
下推单元,配置成响应于所述存储层中具有与一个或多个过滤条件的类型适配的目标比较器,将所述一个或多个过滤条件从所述查询层下推到所述存储层;
构造单元,配置成针对被下推到所述存储层的每一过滤条件,利用所述存储层中相应的目标比较器构造过滤器;
第一筛选单元,配置成利用所述一个或多个过滤条件各自相应的一个或多个过滤器进行过滤,以对所述存储层中存储的候选数据进行初次筛选;和
发送单元,配置成将所述初次筛选所筛选得到的多个候选数据发送至所述查询层,
其中,所述存储层中内置有一个或多个比较器,
所述判断单元,还配置成分别判断所述存储层中内置的所述一个或多个比较器是否与所述多个过滤条件中的每个过滤条件的类型适配;以及
响应于确定所述一个或多个比较器中的其中一个比较器与该过滤条件的类型适配,将该比较器确定为与该过滤条件的类型适配的目标比较器。
15.如权利要求14所述的装置,其中,所述多个过滤条件包括一个或多个预设过滤条件,并且所述装置还包括:
构建单元,配置成针对每一预设过滤条件,响应于确定所述一个或多个比较器均不与该预设过滤条件的类型适配,在所述存储层中构建与该预设过滤条件的类型适配的目标比较器。
16.如权利要求14所述的装置,其中,所述数据属性信息包括第一属性信息,所述第一属性信息的表示为数值,并且所述判断单元还配置成:
分别判断每个所述过滤条件是否为与所述第一属性信息相关的预设数值范围;以及
响应于确定所述过滤条件为与所述第一属性信息相关的预设数值范围,确定所述存储层中具有与该过滤条件的类型适配的内置的目标比较器。
17.如权利要求16所述的装置,其中,所述存储层中具有内置的二进制前缀比较器,并且所述构造单元还配置成:
使用所述存储层中的所述二进制前缀比较器对所述预设数值范围的起始值和/或结束值进行约束,以构造所述过滤器。
18.如权利要求17所述的装置,还包括:
标记单元,配置成对所述第一属性信息进行标记,以使得所述查询层将所述第一属性信息存储在数据单元的值的起始位置。
19.如权利要求15所述的装置,其中,所述数据属性信息包括第二属性信息,所述第二属性信息的表示为字符串,所述一个或多个预设过滤条件包括第二属性信息等于或不等于预设字符串,并且所述构建单元还配置成:
在存储层中构建二进制子串比较器,所述二进制子串比较器能够对多种编码格式的字符串进行比较操作。
20.如权利要求14所述的装置,其中,所述数据属性信息包括第三属性信息,所述第三属性信息的表示为字符串,所述判断单元还配置成:
分别判断每个所述过滤条件是否为所述第三属性信息包含预设字符子串;以及
响应于确定所述过滤条件为所述第三属性信息包含预设字符子串,确定所述存储层中具有与该过滤条件的类型适配的内置的目标比较器。
21.如权利要求20所述的装置,其中,所述存储层中具有内置的子串比较器,并且所述构造单元还配置成:
利用所述子串比较器生成用于所述预设字符子串的正则表达式,以构造所述过滤器。
22.如权利要求14-21中任一项所述的装置,其中,所述构造单元还配置成:
基于所述查询表达式中被下推至所述存储层的所述一个或多个所述过滤条件之间的逻辑关系,利用所述存储层中的筛选器列表将一个或多个过滤器进行逻辑组合。
23.如权利要求14-21中任一项所述的装置,还包括:
第二筛选单元,配置成基于至少一个所述过滤条件,在所述查询层中对所述初次筛选所筛选得到的所述候选数据进行二次筛选,以得到最终筛选数据。
24.一种计算机设备,包括:
存储器、处理器以及存储在所述存储器上的计算机程序,
其中,所述处理器被配置为执行所述计算机程序以实现权利要求1-13中任一项所述的方法的步骤。
25.一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1-13中任一项所述的方法的步骤。
26.一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1-13中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110264851.7A CN112925954B (zh) | 2021-03-05 | 2021-03-05 | 用于在图数据库中查询数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110264851.7A CN112925954B (zh) | 2021-03-05 | 2021-03-05 | 用于在图数据库中查询数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112925954A CN112925954A (zh) | 2021-06-08 |
CN112925954B true CN112925954B (zh) | 2024-05-24 |
Family
ID=76172618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110264851.7A Active CN112925954B (zh) | 2021-03-05 | 2021-03-05 | 用于在图数据库中查询数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925954B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113987237B (zh) * | 2021-12-30 | 2022-04-12 | 北京微步在线科技有限公司 | 一种基于图数据库的并行查询方法及装置 |
CN114925123B (zh) * | 2022-04-24 | 2024-06-07 | 杭州悦数科技有限公司 | 一种分布式的图数据库与图计算系统间的数据传输方法 |
CN114969044A (zh) * | 2022-05-30 | 2022-08-30 | 北京火山引擎科技有限公司 | 一种基于数据湖的物化列创建方法以及数据查询方法 |
CN117591564B (zh) * | 2024-01-11 | 2024-05-28 | 支付宝(杭州)信息技术有限公司 | 一种针对图数据库的图数据查询方法及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108090064A (zh) * | 2016-11-21 | 2018-05-29 | 腾讯科技(深圳)有限公司 | 一种数据查询方法、装置、数据存储服务器及系统 |
CN109582808A (zh) * | 2018-11-22 | 2019-04-05 | 北京锐安科技有限公司 | 一种用户信息查询方法、装置、终端设备和存储介质 |
CN110928901A (zh) * | 2019-10-28 | 2020-03-27 | 武大吉奥信息技术有限公司 | 基于MapServer服务协议的图层联合查询方法、设备及存储设备 |
CN111382146A (zh) * | 2018-12-29 | 2020-07-07 | 浙江宇视科技有限公司 | 数据存储控制方法、装置、设备以及存储介质 |
CN111680041A (zh) * | 2020-05-31 | 2020-09-18 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 面向异构数据的安全高效存取方法 |
CN112328620A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种分布式数据库查询加速方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10445319B2 (en) * | 2017-05-10 | 2019-10-15 | Oracle International Corporation | Defining subgraphs declaratively with vertex and edge filters |
-
2021
- 2021-03-05 CN CN202110264851.7A patent/CN112925954B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108090064A (zh) * | 2016-11-21 | 2018-05-29 | 腾讯科技(深圳)有限公司 | 一种数据查询方法、装置、数据存储服务器及系统 |
CN109582808A (zh) * | 2018-11-22 | 2019-04-05 | 北京锐安科技有限公司 | 一种用户信息查询方法、装置、终端设备和存储介质 |
CN111382146A (zh) * | 2018-12-29 | 2020-07-07 | 浙江宇视科技有限公司 | 数据存储控制方法、装置、设备以及存储介质 |
CN110928901A (zh) * | 2019-10-28 | 2020-03-27 | 武大吉奥信息技术有限公司 | 基于MapServer服务协议的图层联合查询方法、设备及存储设备 |
CN111680041A (zh) * | 2020-05-31 | 2020-09-18 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 面向异构数据的安全高效存取方法 |
CN112328620A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种分布式数据库查询加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112925954A (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112925954B (zh) | 用于在图数据库中查询数据的方法和装置 | |
CN102999561B (zh) | 数据集和数据服务的上下文趋向 | |
CN102129469B (zh) | 一种面向虚拟实验的非结构化数据访问方法 | |
CN105183912B (zh) | 异常日志确定方法和装置 | |
CN109964216A (zh) | 识别未知数据对象 | |
WO2019076062A1 (zh) | 功能页面定制方法及应用服务器 | |
US20120284270A1 (en) | Method and device to detect similar documents | |
WO2018036324A1 (zh) | 一种智慧城市信息共享的方法和装置 | |
US11216474B2 (en) | Statistical processing of natural language queries of data sets | |
CN102915365A (zh) | 基于Hadoop的分布式搜索引擎构建方法 | |
US11216455B2 (en) | Supporting synergistic and retrofittable graph queries inside a relational database | |
JP2018097846A (ja) | Api学習 | |
WO2014081727A1 (en) | Search and navigation to specific document content | |
US11449477B2 (en) | Systems and methods for context-independent database search paths | |
CN107506464A (zh) | 一种基于ES实现HBase二级索引的方法 | |
CN110716952A (zh) | 一种多源异构数据处理方法、装置和存储介质 | |
WO2020024903A1 (zh) | 用于搜索区块链数据的方法、设备及计算机可读存储介质 | |
US10078624B2 (en) | Method of generating hierarchical data structure | |
CN104142930A (zh) | 通用δ数据装载 | |
JP5558514B2 (ja) | 多重範囲スキャンでのnソートクエリを最適に処理する方法及び装置 | |
JP2022137281A (ja) | データ照会方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN115017182A (zh) | 一种可视化的数据分析方法及设备 | |
CN106570153A (zh) | 一种海量url的数据提取方法及系统 | |
CN113348514B (zh) | 预测化学结构性质的方法和系统 | |
AU2020385370A1 (en) | Shareable and nested transactions on hash chains |
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 |