CN109918472A - 存储和查询数据的方法、装置、设备和介质 - Google Patents

存储和查询数据的方法、装置、设备和介质 Download PDF

Info

Publication number
CN109918472A
CN109918472A CN201910147197.4A CN201910147197A CN109918472A CN 109918472 A CN109918472 A CN 109918472A CN 201910147197 A CN201910147197 A CN 201910147197A CN 109918472 A CN109918472 A CN 109918472A
Authority
CN
China
Prior art keywords
data
index
line
level
entity
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.)
Pending
Application number
CN201910147197.4A
Other languages
English (en)
Inventor
王杰
伍检
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910147197.4A priority Critical patent/CN109918472A/zh
Publication of CN109918472A publication Critical patent/CN109918472A/zh
Priority to US16/691,085 priority patent/US11334544B2/en
Priority to EP19210507.0A priority patent/EP3702932A1/en
Priority to JP2019211257A priority patent/JP6998928B2/ja
Priority to KR1020190162474A priority patent/KR102407510B1/ko
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

本公开的实施例涉及用于存储和查询数据的方法、装置、设备和介质。一种用于存储数据的方法包括针对待存储的数据,生成用于索引该数据的一级索引。该方法还包括将一级索引和该数据写入到数据表中的数据行中。该方法还包括基于数据表的查询规则和该数据,生成用于索引一级索引的二级索引。此外,该方法还包括将二级索引和一级索引写入到该数据表中的索引行中。本公开的实施例能够确保当知识库中的实体数据被频繁更新时,数据写入和数据查询的性能不会下降。

Description

存储和查询数据的方法、装置、设备和介质
技术领域
本公开的实施例涉及计算机领域,并且更具体地涉及用于存储和查询数据的方法、装置、设备和计算机可读存储介质。
背景技术
知识图谱又称为知识库(Knowledge Base),其被用于描述真实世界中存在的各种实体、它们之间的关系以及它们各自的属性。目前,知识图谱被广泛地应用于搜索、人工智能、深度学习等领域。
随着知识图谱中的数据规模的急剧增长和对数据的应用,知识图谱中的实体数据可能面临频繁的更新。此外,在知识图谱生成的各个环节中,往往也需要对知识图谱中的实体数据进行增量化修改。因此,期望提供存储和查询知识图谱中的实体数据的技术,从而确保在上述这些实体数据被频繁更新的场景中数据写入和数据查询的性能不会下降。
发明内容
根据本公开的示例实施例,提供了用于存储和查询数据的方案。
在本公开的第一方面中,提供了一种用于存储数据的方法。该方法包括:针对待存储的数据,生成用于索引该数据的一级索引;将一级索引和该数据写入到数据表中的数据行中;基于数据表的查询规则和该数据,生成用于索引一级索引的二级索引;以及将二级索引和一级索引写入到该数据表中的索引行中。
在本公开的第二方面中,提供了一种用于查询数据的方法。该方法包括:响应于接收到针对数据表中存储的数据的查询请求,从该数据表的一个或多个索引行中确定与该查询请求相匹配的索引行,该索引行存储用于索引数据的一级索引和用于索引一级索引的二级索引;基于该索引行中的一级索引,从数据表的一个或多个数据行中确定与该索引行相关联的数据行,该数据行存储一级索引和数据;确定该索引行与该数据行是否匹配;以及响应于确定该索引行与该数据行匹配,从该数据行中获取数据,以作为对查询请求的响应。
在本公开的第三方面中,提供了一种用于存储数据的装置。该装置包括:一级索引生成模块,被配置为针对待存储的数据,生成用于索引该数据的一级索引;数据行写入模块,被配置为将一级索引和该数据写入到数据表中的数据行中;二级索引生成模块,被配置为基于数据表的查询规则和该数据,生成用于索引一级索引的二级索引;以及索引行写入模块,被配置为将二级索引和一级索引写入到数据表中的索引行中。
在本公开的第四方面中,提供了一种用于查询数据的装置。该装置包括:索引行确定模块,被配置为响应于接收到针对数据表中存储的数据的查询请求,从数据表的一个或多个索引行中确定与该查询请求相匹配的索引行,该索引行存储用于索引数据的一级索引和用于索引一级索引的二级索引;数据行确定模块,被配置为基于索引行中的一级索引,从数据表的一个或多个数据行中确定与该索引行相关联的数据行,该数据行存储一级索引和数据;匹配模块,被配置为确定该索引行与该数据行是否匹配;以及数据获取模块,被配置为响应于确定该索引行与该数据行匹配,从该数据行中获取数据,以作为对查询请求的响应。
在本公开的第五方面中,提供了一种用于存储数据的设备。该设备包括:一个或多个处理器;以及存储装置,用于存储一个或多个程序,当该一个或多个程序被一个或多个处理器执行时,使得该一个或多个处理器实现根据本公开的第一方面的方法。
在本公开的第六方面中,提供了一种用于查询数据的设备。该设备包括:一个或多个处理器;以及存储装置,用于存储一个或多个程序,当该一个或多个程序被一个或多个处理器执行时,使得该一个或多个处理器实现根据本公开的第二方面的方法。
在本公开的第七方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
在本公开的第八方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第二方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本公开的实施例的示例系统的框图;
图2示出了根据本公开的实施例的用于存储和查询数据的示例服务器的框图;
图3示出了根据本公开的实施例的用于存储数据的方法的流程图;
图4A和4B示出了根据本公开的实施例的示例数据表的示意图;
图5示出了根据本公开的实施例的用于查询数据的方法的流程图;
图6示出了根据本公开的实施例的用于存储数据的装置的框图;
图7示出了根据本公开的实施例的用于查询数据的装置的框图;以及
图8示出了可以实施本公开实施例的计算设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,随着知识图谱中的数据规模的急剧增长和对数据的应用,知识图谱中的数据可能面临频繁的更新。此外,在知识图谱生成的各个环节中,往往也需要对知识图谱中的数据进行增量化修改。这些更新和修改往往依赖于存储系统对知识图谱中的数据的查询能力。
知识图谱中的数据通常可以利用主谓宾(SPO)形式的三元组来表示。以实体“绿萝”为例,与其关联的数据(也称为“实体数据”)例如包括“绿萝的生物学分类是单子叶植物纲”(其中,“绿萝”是主语,“生物学分类”是谓词,并且“单子叶植物纲”是宾语)、“绿萝的所述科目为天南星科”(其中,“绿萝”是主语,“生物学分类”是谓词,并且“单子叶植物纲”是宾语)等等。
以SPO数据“绿萝的生物学分类是单子叶植物纲”为例,如果实体“绿萝”和实体“单子叶植物纲”被看作是两个节点,关系“生物学分类”被看作是连接这两个节点的边缘,则该边缘可以被称为表示实体“绿萝”的节点的“出边”或“正边”,并且可以被称为表示实体“单子叶植物纲”的节点的“入边”或“反边”。实体“单子叶植物纲”可以被称为实体“绿萝”的“出边实体”或“正边实体”。实体“绿萝”可以被称为实体“单子叶植物纲”的“入边实体”或“反边实体”。实体“绿萝”相对于实体“单子叶植物纲”的关系也被称为“出边关系”或“正边关系”,而实体“单子叶植物纲”相对于实体“绿萝”的关系也被称为“入边关系”或“反边关系”。此外,为了便于说明,在本文中将SPO三元组中作为宾语的实体称为“对象”或“对象实体”。
知识图谱中的实体数据可以以多种格式来被表示。例如,一种JASON格式的实体数据的示例如下所示:
在上述JASON格式的实体数据中,主语的名称(name)为“绿萝”,对应的实体标识符(id)为“01rzqh7j”。谓词为“生物学分类(biologyClass)”,宾语的值(value)为“单子叶植物纲”,对应的实体标识符为“01702l79”。另一谓词为“所属科目(biologyFamily)”,宾语的值为“天南星科”,对应的实体标识符为“01mmz9lr”。
在知识图谱的生成和使用中,期望能够存储上述实体数据并且针对所存储的实体数据执行各种查询操作。例如,查询与绿萝有关的所有信息,也即查询给定主语(S)的所有SPO数据。又如,查询绿萝的生物学分类信息,也即给定主语和谓词的组合(SP),查询与该组合有关的SPO数据。又如,查询将单子叶植物纲作为宾语的所有实体(入边实体),也即给定宾语(O),查询与该宾语相关联的主语(S)。又如,查询所有生物学分类为单子叶植物纲的实体,也即给定宾语(O)和谓词(P)的组合,查询与该组合有关的主语(S),等等。
一些传统解决方案采用诸如mongoDB的数据库来进行实体数据的存储和查询。基于monogoDB的存储系统通常依赖于在单个数据表上建立多次索引,通过多次索引的查询来实现针对反边实体的查询。然而,多次索引往往会严重影响数据表的写入性能,因此不能够适应实体数据被频繁更新的应用场景。另一些传统解决方案采用诸如GraphIndex的图检索系统进行实体数据的存储和查询。这类解决方案能够实现针对静态实体数据集的图查询技术。然而,当对任意实体节点进行更新时,与该实体节点的连接的边缘往往也需要随之更新,从而带来较大的更新开销,因此也不能够适应实体数据被频繁更新的应用场景。
根据本公开的实施例,提出了一种用于存储和查询数据的方案。该方案实现了针对知识图谱中的实体数据的低成本和可扩展的存储和查询技术,从而能够解决上述问题和/或其他潜在问题。该方案将实体数据和用于索引实体数据的一级索引存储在数据表的数据行中,并且基于针对数据表的查询规则建立用于索引一级索引的二级索引。二级索引和一级索引被存储在同一数据表中的索引行中。当实体数据被更新时,新二级索引被生成,并且与一级索引一起被写入到该数据表的新索引行中。旧索引行的移除被延迟到实际数据查询前执行。以此方式,本公开的实施例能够确保当知识图谱中的实体数据被频繁更新时,数据写入和数据查询的性能不会下降。
以下将参照附图来具体描述本公开的实施例。
图1示出了根据本公开的实施例的示例系统100的框图。如图1所示,示例系统100总体上可以包括客户端120和多个服务器130-1、130-2……130-N(统称为或单独称为“服务器130”,其中N为自然数)。多个服务器130分别与多个数据表140-1、140-2……140-N(统称为或单独称为“数据表140”,其中N为自然数)相关联。应当理解,在图1中仅出于示例性的目的描述系统100的结构和功能,而不暗示对于本公开的范围的任何限制。本公开的实施例还可以被应用到具有不同的结构和/或功能的环境中。
在执行实体数据的存储时,用户110可以向客户端120输入待存储的数据(例如,如上所述的JASON格式的实体数据)。客户端120可以将待存储的数据转发给一个或多个服务器130,例如服务器130-1。服务器130-1可以将接收到的实体数据存储在数据表140-1中。
尽管在图1中示出每个服务器130与单个数据表140相关联,应当理解,这仅仅出于示例和便于说明的目的而无意于限制本公开的范围。在一些实施例中,每个服务器130可以与多个数据表相关联。在另一些实施例中,单个数据表可以被划分为多个数据分片,并且每个服务器130可以仅与多个数据分片中的至少一些数据分片相关联。也即,单个数据表可以跨多个服务器130被存储。
在执行实体数据的查询时,用户110可以向客户端120输入查询请求。查询请求例如可以包括但不限于:查询具有特定属性值的实体、查询与特定对象具有特定关系的实体、查询特定实体与特定对象之间的出边关系、查询特定实体与特定对象之间的入边关系、查询与特定实体有关的数据、查询具有特定出边关系的实体、查询具有特定入边关系的实体,等等。客户端120可以将该查询请求转发给多个服务器130。每个服务器130可以在其存储的数据表140中查询实体数据,以获得查询结果。每个服务器130可以将其查询结果返回给客户端120。客户端120可以将来自每个服务器130的查询结果进行合并,并将经合并的查询结果返回给用户110。
图2示出了根据本公开的实施例的示例服务器130的框图。如图2所示,示例服务器130总体上可以包括数据存储装置210、数据查询装置220、缓存装置230和存储装置240。应当理解,在图2中仅出于示例性的目的描述服务器130的结构和功能,而不暗示对于本公开的范围的任何限制。本公开的实施例还可以被应用到具有不同的结构和/或功能的服务器中。
如图2所示,数据存储装置210可以从客户端120接收待存储数据,并且将待存储数据存储在服务器130处的数据表140中。数据表140可以被存储到存储装置240中。为了提高数据表140的查询性能,数据表140中的至少部分数据可以被缓存到缓存装置230中。以下将进一步结合图3来详细描述数据存储装置210的操作。
如图2所示,数据查询装置220可以从客户端120接收查询请求,并且根据该查询请求对存储在服务器130处的数据表140执行查询操作。以下将进一步结合图5来详细描述数据查询装置220的操作。
图3示出了根据本公开的实施例的用于存储数据的方法300的流程图。例如,方法300可以由如图2所示的数据存储装置210执行。以下将结合图2来详细描述方法300。应当理解,方法300还可以包括未示出的附加框和/或可以省略所示出的框。本公开的范围在此方面不受限制。
在框310处,数据存储装置210针对待存储的数据,生成用于索引该数据的一级索引。
在一些实施例中,待存储的数据可以记录与知识库中的实体有关的信息。在下文中,以如上所述的关于实体“绿萝”的JASON格式的数据作为待存储数据的示例。在一些实施例中,例如,数据存储装置210可以从该数据中提取实体“绿萝”的标识符(也即,“01rzqh7j”),并且将该标识符作为用于索引该数据的一级索引。应当理解,这仅是生成一级索引的一种示例方式。在其他实施例中,数据存储装置210也可以基于实体的标识符和/或其他信息来生成用于索引数据的一级索引。
在框320处,数据存储装置210将生成的一级索引和待存储的数据写入到数据表140中的数据行中。
在一些实施例中,数据表140例如为分布式存储系统HBase中的数据表(或者HBase数据表中的一个数据分片)。HBase是一个高可靠性、高性能、面向列和可扩展的分布式存储系统,其以行为单位来进行数据存储。在一些实施例中,数据表140中的行可以分为数据行和索引行。在此所述的“数据行”指代存储有目标数据的行,而“索引行”指代仅存储索引信息的行。图4A示出了根据本公开的实施例的示例数据表140的示意图。如图4A所示,数据表140(HBase数据表或者HBase数据表的一个数据分片)可以包括索引区440和数据区450。数据区450可以包括多个数据行451、452等。索引区440可以包括多个索引行441、442等。
在一些实施例中,数据存储装置210可以通过将生成的一级索引作为数据行的行键(rowkey)并且将待存储的数据作为数据行的值来将两者写入到数据行中。例如,以图4A中的数据行451为例,一级索引420-1被作为该数据行451的行键,而对应的数据430-1被作为该数据行451的值。以图4A中的数据行452为例,一级索引420-2被作为该数据行452的行键,而对应的数据430-2被作为该数据行452的值。
在框330处,数据存储装置210基于数据表140的查询规则和待存储的数据,生成用于索引一级索引的二级索引。
在一些实施例中,数据存储装置210可以获取数据表140的索引配置信息。例如,数据表140的索引配置信息可以被预先存储在与数据表140相关联的关系数据库(例如,MySQL)中。在一些实施例中,该索引配置信息例如可以指示所关联的数据表140的标识符(例如,表名)、数据表140所支持的查询规则、数据表140中的脏索引行(也即,与其所关联的数据行不匹配的索引行)的处理规则等信息。在一些实施例中,数据存储装置210可以基于索引配置信息中所指示的数据表140的查询规则和待存储的数据本身来生成用于索引一级索引的二级索引。
在一些实施例中,数据表140的查询规则例如可以指示数据表140所支持的查询模式。数据表140中所存储的目标数据为知识库中的实体数据。以如上所述的关于实体“绿萝”的JASON格式的实体数据为例,其描述了实体“绿萝”的一个或多个属性值,和/或实体“绿萝”与一个或多个对象实体(如,对象实体“单子叶植物纲”、“天南星科”)之间的相应关系。在一些实施例中,数据表140所支持的查询模式例如可以是以下之一:查询数据表140中具有特定属性值的实体(例如,查询类型为“植物”的实体)、查询与特定对象具有特定关系的实体(例如,查询其“生物学分类”为“单子叶植物纲”的实体)、查询特定实体与特定对象之间的出边关系(例如,查询“绿萝”与“单子叶植物纲”之间的出边关系,即查询“绿萝”相对于“单子叶植物纲”的关系)、查询特定实体与特定对象之间的入边关系(例如,绿萝”与“单子叶植物纲”之间的入边关系,即查询“单子叶植物纲”相对于“绿萝”的关系)、查询与特定实体有关的数据(例如,查询实体“绿萝”的所有SPO数据)、查询具有特定出边关系的实体(例如,查询具有出边关系为“生物学分类”的实体)、查询具有特定入边关系的实体(例如,查询具有入边关系为“生物学分类”的实体)。
在一些实施例中,数据存储装置210可以基于数据表140的查询规则,通过解析实体数据中的各个SPO的语义来生成用于索引一级索引的二级索引。附加地,在一些实施例中,数据存储装置210可以通过将数据表140的起始主键作为二级索引的前缀来生成该二级索引。
以查询规则“查询其生物学分类为单子叶植物纲的实体”为例,该查询规则指示在给定SPO三元组中的宾语O和谓词P的情况下查询作为主语S的实体。例如,二级索引可以分为三段,每段之间用符号“|”分隔。第一段可以用于存储数据表140的起始主键和宾语O的id,两者之间用符号“’”分隔。假设数据表140的起始主键为“01akbg1g”,则第一段例如为“01akbg1g’01702l79”。第二段可以是与查询规则有关的JasonPath的表达式。针对该示例,第二段例如为“$.biologyClass.@id”。第三段可以是作为主语S的实体的id,也即要查询的实体数据的行键。针对该示例,第三段例如为“01rzqh7j”。也即,针对查询规则“查询其生物学分类为单子叶植物纲的实体”,生成的二级索引为“01akbg1g’01702l79|$.biologyClass.@id|01rzqh7j”。又如,以查询规则“查询其所属科目为天南星科的实体”为例,生成的二级索引为“01akbg1g’01mmz9lr|$.biologyFamily.@id|01rzqh7j”。
在框340处,数据存储装置210将二级索引和一级索引写入到数据表140中的索引行中。
在一些实施例中,数据存储装置210可以通过将生成的二级索引作为索引行的行键并且将作为数据行的行键的一级索引作为索引行的值来将两者写入到索引行中。例如,以图4A中的索引行441为例,其与数据行451相关联。二级索引410-1被作为该索引行441的行键,而作为数据行451的行键的一级索引420-1被作为该索引行441的值。以图4A中的索引行442为例,其与数据行452相关联。二级索引410-2被作为该索引行442的行键,而作为数据行452的行键的一级索引420-2被作为该索引行442的值。
附加地或备选地,在一些实施例中,数据存储装置210可以将彼此关联的数据行和索引行的写入作为一个批处理事务操作来执行,以保证数据行和索引行的写入的原子性以及数据行和索引行的一致性。
附加地或备选地,在一些实施例中,当数据表140存在多个数据分片时,数据存储装置210需要确保彼此关联的索引行和数据行(例如,索引行441和数据行451)始终被存储在同一数据分片中,以便在查询时实现索引和数据在同一服务器处被访问,从而避免索引和数据异地访问所带来的额外开销。为了实现这一目的,例如在生成索引行的行键(即,二级索引)时,数据存储装置210可以将数据行所在数据分片的起始主键作为索引行的行键的前缀。以此方式,数据存储装置210能够确保彼此关联的索引行和数据行始终被存储在同一数据表的同一数据分片中。此外,当数据表140的数据分片被拆分或者多个数据分片被合并时,数据存储装置210可以将彼此关联的索引行和数据行同步地拆分或者合并,也保证彼此关联的索引行和数据行始终被存储在同一数据表的同一数据分片中。
在一些实施例中,例如在将数据行和索引行写入到HBase数据表时,数据存储装置210可以使得索引行的行键按字典序始终排在数据行的行键之前,从而使得同一数据表(或数据表的同一数据分片)的前半区域为索引区而后半区域为数据区。此外,索引行的值和数据行的值可以被分别存储在HBase数据表的不同列簇中,从而实现索引行与数据行的物理隔离。
以此方式,知识图谱的实体数据能够被写入到数据表140中,以供后续查询。
在一些实施例中,数据存储装置210还可以从客户端120接收更新实体数据的请求。例如,如图4B所示,当数据存储装置210接收到将如图4A所示的数据行451中的原数据430-1更新为数据430-3的请求时,数据存储装置210可以将数据430-3写入到数据行451中。数据存储装置210可以基于经更新的数据430-3和数据表140的查询规则,生成用于索引原一级索引420-1的新二级索引420-3,并且将新二级索引420-3和原一级索引420-1写入到新索引行443中。如图4B所示,旧索引行441不会被立刻从数据表140中移除。如以下将结合图5进一步详细描述的,旧索引行441的移除将被延迟到实际查询前执行,从而保证频繁更新时数据表140的写入性能不会下降。附加地或备选地,在一些实施例中,数据行的更新和新索引行的写入可以作为一个批处理事务操作被执行,以保证更新的数据行和新索引行的一致性。
在一些实施例中,数据存储装置210可以将数据表140存储到如图2所示的存储装置240中。存储装置240例如可以利用第一存储介质而被实现。为了提高数据表140的查询性能,数据表140中的索引区440例如可以被缓存到如图2所示的一级缓存231中。一级缓存231例如可以利用第二存储介质而被实现。此外,数据表140中的数据区450例如可以被缓存到如图2所示的二级缓存232中。二级缓存232例如可以利用第三存储介质而被实现。
在一些实施例中,用于实现一级缓存231的第二存储介质的访问速度超过用于实现二级缓存232的第三存储介质的访问速度,并且第三存储介质的访问速度超过用于实现存储装置240的第一存储介质的访问速度。例如,第一存储介质的示例为磁盘,第二存储介质的示例为存储器,而第三存储介质的示例为固态盘。以上列举的仅是第一存储介质、第二存储介质和第三存储介质的示例,这些示例不被用于限制本公开的范围。应当理解,其他存储介质也可以被用于实现如图2所示的存储装置240和缓存装置230。
图5示出了根据本公开的实施例的用于查询数据的方法500的流程图。例如,方法500可以由如图2所示的数据查询装置220执行。以下将结合图2来详细描述方法500。应当理解,方法500还可以包括未示出的附加框和/或可以省略所示出的框。本公开的范围在此方面不受限制。
在框510处,数据查询装置220响应于接收到针对数据表140中存储的数据的查询请求,从数据表140的一个或多个索引行中确定与该查询请求相匹配的索引行,该索引行存储用于索引数据的一级索引和用于索引一级索引的二级索引。
在一些实施例中,数据查询装置220可以至少基于查询请求中的关键词来确定二级索引的至少一部分,并且从数据表140的一个或多个索引行中确定与确定的二级索引的至少一部分相匹配的索引行。
以查询请求“查询单子叶植物纲的反边实体”为例,该查询请求例如给定了SPO三元组中的宾语O的id(即,01702l79)。数据查询装置220可以通过将数据表140(或数据表的某个数据分片)的起始主键(例如,01akbg1g)与宾语O的id进行拼接,来确定二级索引的前缀“01akbg1g’01702l79”。数据查询装置220可以基于所确定的二级索引的前缀来扫描数据表140的索引区440,以确定与所确定的二级索引的前缀相匹配的索引行。
在一些实施例中,数据表140的索引区440中的至少一部分例如已被缓存在如图2所示的一级缓存231中。在此情况下,数据查询装置220可以首先在一级缓存231中执行索引行的扫描。如果与所确定的二级索引的前缀相匹配的索引行已被缓存在一级缓存231中,则数据查询装置220可以在一级缓存231中确定该索引行。否则,数据查询装置220可以在存储装置240中执行索引行的扫描,以从存储装置240中确定该索引行。在一些实施例中,当该索引行从存储装置240被确定时,数据查询装置220可以将该索引行回填到一级缓存231中,以便提高后续查询的效率。
在框520处,数据查询装置220基于该索引行中的一级索引,从数据表的一个或多个数据行中确定与该索引行相关联的数据行,该数据行存储一级索引和数据。
在一些实施例中,数据查询装置220可以基于所确定的索引行中的一级索引来扫描数据表140的数据区450,以确定与该一级索引相匹配的数据行。
在一些实施例中,数据表140的数据区450中的至少一部分例如已被缓存在如图2所示的二级缓存232中。在此情况下,数据查询装置220可以首先在二级缓存232中执行数据行的扫描。如果与所确定的一级索引相匹配的数据行已被缓存在二级缓存232中,则数据查询装置220可以在二级缓存232中确定该数据行。否则,数据查询装置220可以在存储装置240中执行数据行的扫描,以从存储装置240中确定与所确定的一级索引相匹配的数据行。在一些实施例中,当该数据行从存储装置240被确定时,数据查询装置220可以将该数据行回填到二级缓存232中,以便提高后续查询的效率。
在框530处,数据查询装置220确定该索引行与该数据行是否匹配。
在一些实施例中,索引行可以具有用于标识该索引行被写入到数据表140中的时间的第一标记,并且数据行可以具有用于标识该数据行被最后更新的时间的第二标记。在一些实施例中,数据查询装置220可以确定第一标记和第二标记是否匹配。当第一标记与第二标记不匹配时,数据查询装置220可以确定该索引行与该数据行不匹配(例如,在图4B中,由于数据行451的更新时间与索引行441的写入时间不匹配,所以数据行451和索引行441不匹配)。
附加地或备选地,当第一标记与第二标记匹配时,数据查询装置220可以进一步执行索引信息的比较以确定该索引行与该数据行是否匹配。以图4B中的数据行451和索引行443为例,两者的时间标记相匹配。在此情况下,数据查询装置220可以基于数据行451中的数据430-3和数据表140的查询规则来重新生成一组二级索引。数据查询装置220可以确定索引行443中的二级索引是否被包括在重新生成的这组二级索引中。如果索引行443中的二级索引被包括在重新生成的这组二级索引中,则数据查询装置220可以确定数据行451和索引行443两者匹配;否则,数据查询装置220可以确定数据行451和索引行443两者不匹配。
如果确定索引行与数据行匹配,则在框540处,数据查询装置220从该数据行中获取数据,以作为对查询请求的响应。例如,假设数据查询装置220已经确定如图4B所示的数据行451和索引行443两者匹配,则数据查询装置220可以从数据行451中获取数据430-3,以作为对查询请求的响应。
如果索引行与数据行不匹配,则在框550处,数据查询装置220从数据表140中移除该索引行。例如,假设数据查询装置220已经确定如图4B所示的数据行451和索引行441两者不匹配,则数据查询装置220可以将索引行441从数据表140中移除。
通过以上描述能够看出,本公开的实施例实现了针对知识图谱中的实体数据的低成本和可扩展的存储和查询技术,从而能够解决现有技术中存在的问题和/或其他潜在问题。本公开的实施例将实体数据和用于索引实体数据的一级索引存储在数据表的数据行中,并且基于针对数据表的查询规则建立用于索引一级索引的二级索引。二级索引和一级索引被存储在同一数据表中的索引行中。当实体数据被更新时,新二级索引被生成,并且与一级索引一起被写入到该数据表的新索引行中。旧索引行的移除被延迟到实际数据查询前执行。以此方式,本公开的实施例能够确保当知识图谱中的实体数据被频繁更新时,数据写入和数据查询的性能不会下降。
图6示出了根据本公开实施例的用于存储数据的装置600的示意性框图。该装置600可以被用于实现如图2所示的数据存储装置210。如图6所示,装置600可以包括一级索引生成模块610,被配置为针对待存储的数据,生成用于索引该数据的一级索引;数据行写入模块620,被配置为将一级索引和该数据写入到数据表中的数据行中;二级索引生成模块630,被配置为基于数据表的查询规则和该数据,生成用于索引一级索引的二级索引;以及索引行写入模块640,被配置为将二级索引和一级索引写入到数据表中的索引行中。
在一些实施例中,该数据记录与知识库中的实体有关的信息,并且一级索引生成模块610包括:标识符获取单元,被配置为从该数据中获取实体的标识符;以及一级索引生成单元,被配置为基于实体的所述标识符,来生成一级索引。
在一些实施例中,数据行写入模块包括:第一数据行写入单元,被配置为将一级索引作为数据行的键写入到该数据行中;以及第二数据行写入单元,被配置为将该数据作为数据行的值写入到该数据行中。
在一些实施例中,二级索引生成模块包括:配置信息获取单元,被配置为获取数据表的索引配置信息,索引配置信息指示该数据表的查询规则;以及第一生成单元,被配置为基于索引配置信息和数据,来生成二级索引。
在一些实施例中,数据表用于存储知识库中的实体的一个或多个属性值、和/或该实体与一个或多个对象之间的相应关系,并且针对数据表的查询规则包括以下至少一项:查询具有特定属性值的实体;查询与特定对象具有特定关系的实体;查询特定实体相对于特定对象的正向关系;查询特定对象相对于特定实体的反向关系;查询与特定实体有关的数据;查询与特定正向关系相关联的实体;以及查询与特定反向关系相关联的实体。
在一些实施例中,二级索引生成模块包括:起始主键确定单元,被配置为确定数据表的起始主键;以及第二生成单元,被配置为通过将起始主键作为二级索引的前缀,来生成二级索引。
在一些实施例中,索引行写入模块包括:第一索引行写入单元,被配置为将二级索引作为索引行的键写入到该索引行中;以及第二索引行写入单元,被配置为将一级索引作为该索引行的值写入到该索引行中。
在一些实施例中,装置600还包括:数据更新模块,被配置为响应于接收到更新存储在数据行中的数据的请求,更新该数据;新二级索引生成模块,被配置为基于经更新的数据和查询规则,生成用于索引一级索引的新二级索引;以及新索引行写入模块,被配置为将新二级索引和一级索引写入到数据表中的另一索引行中。
在一些实施例中,装置600还包括:存储模块,被配置为将数据表存储到利用第一存储介质实现的存储装置中;第一索引行缓存模块,被配置为将索引行缓存到利用第二存储介质实现的一级缓存中;以及第一数据行缓存模块,被配置为将数据行缓存到利用第三存储介质实现的二级缓存中。
在一些实施例中,第二存储介质的访问速度超过第三存储介质的访问速度,并且第三存储介质的访问速度超过第一存储介质的访问速度。
应当理解,装置600中记载的每个模块分别与参考图3描述的方法300中的每个步骤相对应,并且与方法300中的相应操作和特征具有同样的效果,具体细节不再赘述。
图7示出了根据本公开实施例的用于查询数据的装置700的示意性框图。该装置700可以被用于实现如图2所示的数据查询装置220。如图7所示,装置700可以包括索引行确定模块710,被配置为响应于接收到针对数据表中存储的数据的查询请求,从数据表的一个或多个索引行中确定与该查询请求相匹配的索引行,该索引行存储用于索引数据的一级索引和用于索引一级索引的二级索引;数据行确定模块720,被配置为基于索引行中的一级索引,从数据表的一个或多个数据行中确定与该索引行相关联的数据行,该数据行存储一级索引和数据;匹配模块730,被配置为确定索引行与数据行是否匹配;以及数据获取模块740,被配置为响应于确定索引行与数据行匹配,从数据行中获取数据,以作为对查询请求的响应。
在一些实施例中,数据表用于存储知识库中的实体的一个或多个属性值、和/或该实体与一个或多个对象之间的相应关系,并且该查询请求用于查询以下至少一项:具有特定属性值的实体;与特定对象具有特定关系的实体;特定实体与特定对象之间的出边关系;特定实体与特定对象之间的入边关系;与特定实体有关的数据;具有特定出边关系的实体;以及具有特定入边关系的实体。
在一些实施例中,装置700还包括:索引行移除模块,被配置为响应于确定索引行与数据行不匹配,从数据表中移除该索引行。
在一些实施例中,索引行确定模块710包括:二级索引确定单元,被配置为基于查询请求中的关键词,来确定二级索引的至少一部分;以及索引行确定单元,被配置为从一个或多个索引行中确定与二级索引的至少一部分相匹配的索引行。
在一些实施例中,匹配模块730包括:第一标记获取单元,被配置为获取索引行的第一标记,第一标记标识该索引行被写入数据表的第一时间;第二标记获取单元,被配置为获取数据行的第二标记,第二标记标识该数据行被更新的第二时间;标记匹配单元,被配置为确定第一标记与第二标记是否匹配;以及第一匹配确定单元,被配置为响应于确定第一标记与第二标记不匹配,确定索引行与数据行不匹配。
在一些实施例中,匹配模块730还包括:二级索引生成单元,被配置为响应于确定第一标记与第二标记匹配,基于数据行中的数据来生成一组二级索引;二级索引匹配单元,被配置为确定索引行中的二级索引是否被包括在该一组二级索引中;第二匹配确定单元,被配置为响应于确定索引行中的二级索引被包括在一组二级索引中,确定索引行与数据行匹配;以及第三匹配确定单元,被配置为响应于确定索引行中的二级索引在该一组二级索引中缺失,确定索引行与数据行不匹配。
在一些实施例中,数据表被存储在利用第一存储介质实现的存储装置中,一个或多个索引行中的至少一部分被缓存在利用第二存储介质实现的一级缓存中。索引行确定模块710包括:一级缓存搜索单元,被配置为确定索引行是否被缓存在一级缓存中;第一索引行确定单元,被配置为响应于确定索引行被缓存在一级缓存中,从一级缓存中确定该索引行;以及第二索引行确定单元,被配置为响应于确定索引行在一级缓存中缺失,从存储装置中确定该索引行。
在一些实施例中,装置700还包括:第二索引行缓存模块,被配置为响应于索引行从存储装置被确定,将该索引行缓存到一级缓存中。
在一些实施例中,一个或多个数据行中的至少一部分被缓存在利用第三存储介质实现的二级缓存中。数据行确定模块720包括:二级缓存搜索单元,被配置为确定数据行是否被缓存在二级缓存中;第一数据行确定单元,被配置为响应于确定该数据行被缓存在二级缓存中,从二级缓存中确定该数据行;以及第二数据行确定单元,被配置为响应于确定该数据行在二级缓存中缺失,从存储装置中确定该数据行。
在一些实施例中,装置700还包括:第二数据行缓存模块,被配置为响应于数据行从存储装置被确定,将该数据行缓存到二级缓存中。
在一些实施例中,第二存储介质的访问速度超过第三存储介质的访问速度,并且第三存储介质的访问速度超过第一存储介质的访问速度。
应当理解,装置700中记载的每个模块分别与参考图5描述的方法500中的每个步骤相对应,并且与方法500中的相应操作和特征具有同样的效果,具体细节不再赘述。
此外,装置600和/或700中所包括的模块和/或单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。在一些实施例中,一个或多个单元可以使用软件和/或固件来实现,例如存储在存储介质上的机器可执行指令。除了机器可执行指令之外或者作为替代,装置600和/或700中的部分或者全部单元可以至少部分地由一个或多个硬件逻辑组件来实现。作为示例而非限制,可以使用的示范类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD),等等。
图6和/或图7中所示的这些模块和/或单元可以部分或者全部地实现为硬件模块、软件模块、固件模块或者其任意组合。特别地,在某些实施例中,上文描述的流程、方法或过程可以由存储系统或与存储系统对应的主机或独立于存储系统的其它计算设备中的硬件来实现。
图8示出了可以用来实施本公开的实施例的示例设备800的示意性框图。设备800可以用于实现如图1所示的服务器130。如图8所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理,例如方法300和/或500。例如,在一些实施例中,方法300和/或500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU501执行时,可以执行上文描述的方法300和/或500的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法300和/或500。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (46)

1.一种用于存储数据的方法,包括:
针对待存储的数据,生成用于索引所述数据的一级索引;
将所述一级索引和所述数据写入到数据表中的数据行中;
基于所述数据表的查询规则和所述数据,生成用于索引所述一级索引的二级索引;以及
将所述二级索引和所述一级索引写入到所述数据表中的索引行中。
2.根据权利要求1所述的方法,其中所述数据记录与知识库中的实体有关的信息,并且生成所述一级索引包括:
从所述数据中获取所述实体的标识符;以及
基于所述实体的所述标识符,来生成所述一级索引。
3.根据权利要求1所述的方法,其中将所述一级索引和所述数据写入到所述数据行中包括:
将所述一级索引作为所述数据行的键写入到所述数据行中;以及
将所述数据作为所述数据行的值写入到所述数据行中。
4.根据权利要求1所述的方法,其中生成所述二级索引包括:
获取所述数据表的索引配置信息,所述索引配置信息指示所述数据表的所述查询规则;以及
基于所述索引配置信息和所述数据,来生成所述二级索引。
5.根据权利要求1所述的方法,其中所述数据表用于存储知识库中的实体的一个或多个属性值、和/或所述实体与一个或多个对象之间的相应关系,并且所述查询规则包括以下至少一项:
查询具有特定属性值的实体;
查询与特定对象具有特定关系的实体;
查询特定实体与特定对象之间的出边关系;
查询特定实体与特定对象之间的入边关系;
查询与特定实体有关的数据;
查询具有特定出边关系的实体;以及
查询具有特定入边关系的实体。
6.根据权利要求1所述的方法,其中生成所述二级索引包括:
确定所述数据表的起始主键;以及
通过将所述起始主键作为所述二级索引的前缀,来生成所述二级索引。
7.根据权利要求1所述的方法,其中将所述二级索引和所述一级索引写入到所述索引行中包括:
将所述二级索引作为所述索引行的键写入到所述索引行中;以及
将所述一级索引作为所述索引行的值写入到所述索引行中。
8.根据权利要求1所述的方法,还包括:
响应于接收到更新存储在所述数据行中的所述数据的请求,更新所述数据;
基于经更新的数据和所述查询规则,生成用于索引所述一级索引的新二级索引;以及
将所述新二级索引和所述一级索引写入到所述数据表中的另一索引行中。
9.根据权利要求1所述的方法,还包括:
将所述数据表存储到利用第一存储介质实现的存储装置中;
将所述索引行缓存到利用第二存储介质实现的一级缓存中;以及
将所述数据行缓存到利用第三存储介质实现的二级缓存中。
10.根据权利要求9所述的方法,其中所述第二存储介质的访问速度超过所述第三存储介质的访问速度,并且所述第三存储介质的所述访问速度超过所述第一存储介质的访问速度。
11.一种用于查询数据的方法,包括:
响应于接收到针对数据表中存储的数据的查询请求,从所述数据表的一个或多个索引行中确定与所述查询请求相匹配的索引行,所述索引行存储用于索引所述数据的一级索引和用于索引所述一级索引的二级索引;
基于所述索引行中的所述一级索引,从所述数据表的一个或多个数据行中确定与所述索引行相关联的数据行,所述数据行存储所述一级索引和所述数据;
确定所述索引行与所述数据行是否匹配;以及
响应于确定所述索引行与所述数据行匹配,从所述数据行中获取所述数据,以作为对所述查询请求的响应。
12.根据权利要求11所述的方法,其中所述数据表用于存储知识库中的实体的一个或多个属性值、和/或所述实体与一个或多个对象之间的相应关系,并且所述查询请求用于查询以下至少一项:
具有特定属性值的实体;
与特定对象具有特定关系的实体;
特定实体与特定对象之间的出边关系;
特定实体与特定对象之间的入边关系;
与特定实体有关的数据;
具有特定出边关系的实体;以及
具有特定入边关系的实体。
13.根据权利要求11所述的方法,还包括:
响应于确定所述索引行与所述数据行不匹配,从所述数据表中移除所述索引行。
14.根据权利要求11所述的方法,其中从所述一个或多个索引行中确定所述索引行包括:
至少基于所述查询请求中的关键词,来确定所述二级索引的至少一部分;以及
从所述一个或多个索引行中确定与所述二级索引的所述至少一部分相匹配的索引行。
15.根据权利要求11所述的方法,其中确定所述索引行与所述数据行是否匹配包括:
获取所述索引行的第一标记,所述第一标记标识所述索引行被写入所述数据表的第一时间;
获取所述数据行的第二标记,所述第二标记标识所述数据行被更新的第二时间;
确定所述第一标记与所述第二标记是否匹配;以及
响应于确定所述第一标记与所述第二标记不匹配,确定所述索引行与所述数据行不匹配。
16.根据权利要求15所述的方法,其中确定所述索引行与所述数据行是否匹配还包括:
响应于确定所述第一标记与所述第二标记匹配,基于所述数据行中的所述数据来生成一组二级索引;
确定所述索引行中的所述二级索引是否被包括在所述一组二级索引中;
响应于确定所述索引行中的所述二级索引被包括在所述一组二级索引中,确定所述索引行与所述数据行匹配;以及
响应于确定所述索引行中的所述二级索引在所述一组二级索引中缺失,确定所述索引行与所述数据行不匹配。
17.根据权利要求11所述的方法,其中所述数据表被存储在利用第一存储介质实现的存储装置中,所述一个或多个索引行中的至少一部分被缓存在利用第二存储介质实现的一级缓存中,并且从所述一个或多个索引行中确定所述索引行包括:
确定所述索引行是否被缓存在所述一级缓存中;
响应于确定所述索引行被缓存在所述一级缓存中,从所述一级缓存中确定所述索引行;以及
响应于确定所述索引行在所述一级缓存中缺失,从所述存储装置中确定所述索引行。
18.根据权利要求17所述的方法,还包括:
响应于所述索引行从所述存储装置被确定,将所述索引行缓存到所述一级缓存中。
19.根据权利要求17所述的方法,其中所述一个或多个数据行中的至少一部分被缓存在利用第三存储介质实现的二级缓存中,并且从所述一个或多个数据行中确定所述数据行包括:
确定所述数据行是否被缓存在所述二级缓存中;
响应于确定所述数据行被缓存在所述二级缓存中,从所述二级缓存中确定所述数据行;以及
响应于确定所述数据行在所述二级缓存中缺失,从所述存储装置中确定所述数据行。
20.根据权利要求19所述的方法,还包括:
响应于所述数据行从所述存储装置被确定,将所述数据行缓存到所述二级缓存中。
21.根据权利要求19所述的方法,其中所述第二存储介质的访问速度超过所述第三存储介质的访问速度,并且所述第三存储介质的访问速度超过所述第一存储介质的访问速度。
22.一种用于存储数据的装置,包括:
一级索引生成模块,被配置为针对待存储的数据,生成用于索引所述数据的一级索引;
数据行写入模块,被配置为将所述一级索引和所述数据写入到数据表中的数据行中;
二级索引生成模块,被配置为基于所述数据表的查询规则和所述数据,生成用于索引所述一级索引的二级索引;以及
索引行写入模块,被配置为将所述二级索引和所述一级索引写入到所述数据表中的索引行中。
23.根据权利要求22所述的装置,其中所述数据记录与知识库中的实体有关的信息,并且所述一级索引生成模块包括:
标识符获取单元,被配置为从所述数据中获取所述实体的标识符;以及
一级索引生成单元,被配置为基于所述实体的所述标识符,来生成所述一级索引。
24.根据权利要求22所述的装置,其中所述数据行写入模块包括:
第一数据行写入单元,被配置为将所述一级索引作为所述数据行的键写入到所述数据行中;以及
第二数据行写入单元,被配置为将所述数据作为所述数据行的值写入到所述数据行中。
25.根据权利要求22所述的装置,其中所述二级索引生成模块包括:
配置信息获取单元,被配置为获取所述数据表的索引配置信息,所述索引配置信息指示所述数据表的所述查询规则;以及
第一生成单元,被配置为基于所述索引配置信息和所述数据,来生成所述二级索引。
26.根据权利要求22所述的装置,其中所述数据表用于存储知识库中的实体的一个或多个属性值、和/或所述实体与一个或多个对象之间的相应关系,并且所述查询规则包括以下至少一项:
查询具有特定属性值的实体;
查询与特定对象具有特定关系的实体;
查询特定实体与特定对象之间的出边关系;
查询特定实体与特定对象之间的入边关系;
查询与特定实体有关的数据;
查询具有特定出边关系的实体;以及
查询具有特定入边关系的实体。
27.根据权利要求22所述的装置,其中所述二级索引生成模块包括:
起始主键确定单元,被配置为确定所述数据表的起始主键;以及
第二生成单元,被配置为通过将所述起始主键作为所述二级索引的前缀,来生成所述二级索引。
28.根据权利要求22所述的装置,其中所述索引行写入模块包括:
第一索引行写入单元,被配置为将所述二级索引作为所述索引行的键写入到所述索引行中;以及
第二索引行写入单元,被配置为将所述一级索引作为所述索引行的值写入到所述索引行中。
29.根据权利要求22所述的装置,还包括:
数据更新模块,被配置为响应于接收到更新存储在所述数据行中的所述数据的请求,更新所述数据;
新二级索引生成模块,被配置为基于经更新的数据和所述查询规则,生成用于索引所述一级索引的新二级索引;以及
新索引行写入模块,被配置为将所述新二级索引和所述一级索引写入到所述数据表中的另一索引行中。
30.根据权利要求22所述的装置,还包括:
存储模块,被配置为将所述数据表存储到利用第一存储介质实现的存储装置中;
第一索引行缓存模块,被配置为将所述索引行缓存到利用第二存储介质实现的一级缓存中;以及
第一数据行缓存模块,被配置为将所述数据行缓存到利用第三存储介质实现的二级缓存中。
31.根据权利要求30所述的装置,其中所述第二存储介质的访问速度超过所述第三存储介质的访问速度,并且所述第三存储介质的所述访问速度超过所述第一存储介质的访问速度。
32.一种用于查询数据的装置,包括:
索引行确定模块,被配置为响应于接收到针对数据表中存储的数据的查询请求,从所述数据表的一个或多个索引行中确定与所述查询请求相匹配的索引行,所述索引行存储用于索引所述数据的一级索引和用于索引所述一级索引的二级索引;
数据行确定模块,被配置为基于所述索引行中的所述一级索引,从所述数据表的一个或多个数据行中确定与所述索引行相关联的数据行,所述数据行存储所述一级索引和所述数据;
匹配模块,被配置为确定所述索引行与所述数据行是否匹配;以及
数据获取模块,被配置为响应于确定所述索引行与所述数据行匹配,从所述数据行中获取所述数据,以作为对所述查询请求的响应。
33.根据权利要求32所述的装置,其中所述数据表用于存储知识库中的实体的一个或多个属性值、和/或所述实体与一个或多个对象之间的相应关系,并且所述查询请求用于查询以下至少一项:
具有特定属性值的实体;
与特定对象具有特定关系的实体;
特定实体与特定对象之间的出边关系;
特定实体与特定对象之间的入边关系;
与特定实体有关的数据;
具有特定出边关系的实体;以及
具有特定入边关系的实体。
34.根据权利要求32所述的装置,还包括:
索引行移除模块,被配置为响应于确定所述索引行与所述数据行不匹配,从所述数据表中移除所述索引行。
35.根据权利要求32所述的装置,其中所述索引行确定模块包括:
二级索引确定单元,被配置为至少基于所述查询请求中的关键词,来确定所述二级索引的至少一部分;以及
索引行确定单元,被配置为从所述一个或多个索引行中确定与所述二级索引的所述至少一部分相匹配的索引行。
36.根据权利要求32所述的装置,其中所述匹配模块包括:
第一标记获取单元,被配置为获取所述索引行的第一标记,所述第一标记标识所述索引行被写入所述数据表的第一时间;
第二标记获取单元,被配置为获取所述数据行的第二标记,所述第二标记标识所述数据行被更新的第二时间;
标记匹配单元,被配置为确定所述第一标记与所述第二标记是否匹配;以及
第一匹配确定单元,被配置为响应于确定所述第一标记与所述第二标记不匹配,确定所述索引行与所述数据行不匹配。
37.根据权利要求36所述的装置,其中所述匹配模块还包括:
二级索引生成单元,被配置为响应于确定所述第一标记与所述第二标记匹配,基于所述数据行中的所述数据来生成一组二级索引;
二级索引匹配单元,被配置为确定所述索引行中的所述二级索引是否被包括在所述一组二级索引中;
第二匹配确定单元,被配置为响应于确定所述索引行中的所述二级索引被包括在所述一组二级索引中,确定所述索引行与所述数据行匹配;以及
第三匹配确定单元,被配置为响应于确定所述索引行中的所述二级索引在所述一组二级索引中缺失,确定所述索引行与所述数据行不匹配。
38.根据权利要求32所述的装置,其中所述数据表被存储在利用第一存储介质实现的存储装置中,所述一个或多个索引行中的至少一部分被缓存在利用第二存储介质实现的一级缓存中,并且所述索引行确定模块包括:
一级缓存搜索单元,被配置为确定所述索引行是否被缓存在所述一级缓存中;
第一索引行确定单元,被配置为响应于确定所述索引行被缓存在所述一级缓存中,从所述一级缓存中确定所述索引行;以及
第二索引行确定单元,被配置为响应于确定所述索引行在所述一级缓存中缺失,从所述存储装置中确定所述索引行。
39.根据权利要求38所述的装置,还包括:
第二索引行缓存模块,被配置为响应于所述索引行从所述存储装置被确定,将所述索引行缓存到所述一级缓存中。
40.根据权利要求38所述的装置,其中所述一个或多个数据行中的至少一部分被缓存在利用第三存储介质实现的二级缓存中,并且所述数据行确定模块包括:
二级缓存搜索单元,被配置为确定所述数据行是否被缓存在所述二级缓存中;
第一数据行确定单元,被配置为响应于确定所述数据行被缓存在所述二级缓存中,从所述二级缓存中确定所述数据行;以及
第二数据行确定单元,被配置为响应于确定所述数据行在所述二级缓存中缺失,从所述存储装置中确定所述数据行。
41.根据权利要求40所述的装置,还包括:
第二数据行缓存模块,被配置为响应于所述数据行从所述存储装置被确定,将所述数据行缓存到所述二级缓存中。
42.根据权利要求40所述的装置,其中所述第二存储介质的访问速度超过所述第三存储介质的访问速度,并且所述第三存储介质的所述访问速度超过所述第一存储介质的访问速度。
43.一种用于存储数据的设备,包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现根据权利要求1-10中任一项所述的方法。
44.一种用于查询数据的设备,包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现根据权利要求11-21中任一项所述的方法。
45.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-10中任一项所述的方法。
46.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求11-21中任一项所述的方法。
CN201910147197.4A 2019-02-27 2019-02-27 存储和查询数据的方法、装置、设备和介质 Pending CN109918472A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201910147197.4A CN109918472A (zh) 2019-02-27 2019-02-27 存储和查询数据的方法、装置、设备和介质
US16/691,085 US11334544B2 (en) 2019-02-27 2019-11-21 Method, apparatus, device and medium for storing and querying data
EP19210507.0A EP3702932A1 (en) 2019-02-27 2019-11-21 Method, apparatus, device and medium for storing and querying data
JP2019211257A JP6998928B2 (ja) 2019-02-27 2019-11-22 データを記憶およびクエリするための方法、装置、設備、および媒体
KR1020190162474A KR102407510B1 (ko) 2019-02-27 2019-12-09 데이터 저장 및 조회 방법, 장치, 기기 및 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910147197.4A CN109918472A (zh) 2019-02-27 2019-02-27 存储和查询数据的方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN109918472A true CN109918472A (zh) 2019-06-21

Family

ID=66962601

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910147197.4A Pending CN109918472A (zh) 2019-02-27 2019-02-27 存储和查询数据的方法、装置、设备和介质

Country Status (5)

Country Link
US (1) US11334544B2 (zh)
EP (1) EP3702932A1 (zh)
JP (1) JP6998928B2 (zh)
KR (1) KR102407510B1 (zh)
CN (1) CN109918472A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297881A (zh) * 2019-07-08 2019-10-01 北京友缘在线网络科技股份有限公司 用于实现二级索引的方法和计算机可读介质
CN110489475A (zh) * 2019-08-14 2019-11-22 广东电网有限责任公司 一种多源异构数据处理方法、系统及相关装置
CN110737807A (zh) * 2019-10-18 2020-01-31 深圳市华宝电子科技有限公司 一种数据存储方法、行车记录仪、服务器和存储介质
CN111506570A (zh) * 2020-03-05 2020-08-07 百度在线网络技术(北京)有限公司 数据存储及查询方法、装置、电子设备及存储介质
CN112883125A (zh) * 2021-04-28 2021-06-01 北京奇岱松科技有限公司 一种实体数据处理方法、装置、设备和存储介质
CN113127416A (zh) * 2020-01-15 2021-07-16 北京沃东天骏信息技术有限公司 数据查询方法和装置
CN117131042A (zh) * 2023-08-01 2023-11-28 上海沄熹科技有限公司 一种数据库函数索引实现方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220023202A (ko) 2020-08-20 2022-03-02 주식회사 엘지에너지솔루션 콘택터 관리 방법 및 그 방법을 제공하는 배터리 시스템
EP4092674A1 (en) * 2021-05-19 2022-11-23 Commissariat à l'Energie Atomique et aux Energies Alternatives A non-volatile memory programming circuit and a method of programming non-volatile memory devices
CN116108023B (zh) * 2023-04-12 2023-07-04 北京首信科技股份有限公司 一种用于HBase数据库的数据检索方法和装置
CN117688013A (zh) * 2024-02-01 2024-03-12 北方健康医疗大数据科技有限公司 一种基于缓存索引的主索引生成方法、装置、设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010050955A1 (en) * 2000-03-24 2001-12-13 Cha Zhang Methods and arrangements for handling concentric mosaic image data
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101295323A (zh) * 2008-06-30 2008-10-29 腾讯科技(深圳)有限公司 一种用于索引更新的处理方法和系统
CN101435708A (zh) * 2008-12-05 2009-05-20 四川长虹电器股份有限公司 移动导航设备中矢量地图的实时漫游与缩放的方法
US20110029478A1 (en) * 2009-05-20 2011-02-03 Broeker Stephen A Stream Star Schema and Nested Binary Tree for Data Stream Analysis
CN102567314A (zh) * 2010-12-07 2012-07-11 中国电信股份有限公司 知识查询装置和方法
CN102768674A (zh) * 2012-06-12 2012-11-07 上海方正数字出版技术有限公司 一种基于路径结构的xml数据存储方法
CN105740405A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 存储数据的方法和装置
CN108170726A (zh) * 2015-10-21 2018-06-15 华为技术有限公司 数据查询方法和装置
CN109299110A (zh) * 2018-11-09 2019-02-01 东软集团股份有限公司 数据查询方法、装置、存储介质和电子设备
CN109376173A (zh) * 2018-11-08 2019-02-22 郑州云海信息技术有限公司 一种数据查询方法、装置、电子设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61220027A (ja) 1985-03-27 1986-09-30 Hitachi Ltd 文書ファイリングシステム及び情報記憶検索システム
JPH0692493B2 (ja) * 1990-03-13 1994-11-16 タイガースポリマー株式会社 積層体用加硫ゴムシートの製造方法
US6708178B1 (en) 2001-06-04 2004-03-16 Oracle International Corporation Supporting B+tree indexes on primary B+tree structures with large primary keys
WO2006090367A2 (en) 2005-02-24 2006-08-31 Xeround Systems Ltd. Method and apparatus for distributed data management in a switching network
KR100834760B1 (ko) * 2006-11-23 2008-06-05 삼성전자주식회사 최적화된 인덱스 검색 방법 및 장치
WO2015027425A1 (zh) * 2013-08-29 2015-03-05 华为技术有限公司 存储数据的方法和装置
CN105159895A (zh) 2014-05-28 2015-12-16 国际商业机器公司 用于存储和查询数据的方法和系统
TWI526857B (zh) * 2014-11-06 2016-03-21 The database acceleration method is used to calculate the index value and the hybrid layer cache
CN107924417B (zh) 2015-08-26 2022-04-15 片山成仁 数据库管理装置及其方法
US20170193041A1 (en) 2016-01-05 2017-07-06 Sqrrl Data, Inc. Document-partitioned secondary indexes in a sorted, distributed key/value data store
US10936559B1 (en) * 2016-09-28 2021-03-02 Amazon Technologies, Inc. Strongly-consistent secondary index for a distributed data set
CN107273540B (zh) * 2017-07-05 2021-09-24 北京三快在线科技有限公司 分布式搜索及索引更新方法、系统、服务器及计算机设备
US11106697B2 (en) * 2017-11-15 2021-08-31 Hewlett Packard Enterprise Development Lp Reading own writes using context objects in a distributed database
CN111506604B (zh) * 2019-01-31 2023-06-13 伊姆西Ip控股有限责任公司 访问数据的方法、装置和计算机程序产品

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010050955A1 (en) * 2000-03-24 2001-12-13 Cha Zhang Methods and arrangements for handling concentric mosaic image data
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101295323A (zh) * 2008-06-30 2008-10-29 腾讯科技(深圳)有限公司 一种用于索引更新的处理方法和系统
CN101435708A (zh) * 2008-12-05 2009-05-20 四川长虹电器股份有限公司 移动导航设备中矢量地图的实时漫游与缩放的方法
US20110029478A1 (en) * 2009-05-20 2011-02-03 Broeker Stephen A Stream Star Schema and Nested Binary Tree for Data Stream Analysis
CN102567314A (zh) * 2010-12-07 2012-07-11 中国电信股份有限公司 知识查询装置和方法
CN102768674A (zh) * 2012-06-12 2012-11-07 上海方正数字出版技术有限公司 一种基于路径结构的xml数据存储方法
CN108170726A (zh) * 2015-10-21 2018-06-15 华为技术有限公司 数据查询方法和装置
CN105740405A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 存储数据的方法和装置
CN109376173A (zh) * 2018-11-08 2019-02-22 郑州云海信息技术有限公司 一种数据查询方法、装置、电子设备及存储介质
CN109299110A (zh) * 2018-11-09 2019-02-01 东软集团股份有限公司 数据查询方法、装置、存储介质和电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALEX HOMER等: "《云计算架构模式》", 31 December 2017 *
似梦似意境: "Hbase 二级索引", 《HTTPS://BLOG.CSDN.NET/LUOMINGKUI1109/ARTICLE/DETAILS/82762852》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297881A (zh) * 2019-07-08 2019-10-01 北京友缘在线网络科技股份有限公司 用于实现二级索引的方法和计算机可读介质
CN110489475A (zh) * 2019-08-14 2019-11-22 广东电网有限责任公司 一种多源异构数据处理方法、系统及相关装置
CN110737807A (zh) * 2019-10-18 2020-01-31 深圳市华宝电子科技有限公司 一种数据存储方法、行车记录仪、服务器和存储介质
CN113127416A (zh) * 2020-01-15 2021-07-16 北京沃东天骏信息技术有限公司 数据查询方法和装置
CN111506570A (zh) * 2020-03-05 2020-08-07 百度在线网络技术(北京)有限公司 数据存储及查询方法、装置、电子设备及存储介质
CN112883125A (zh) * 2021-04-28 2021-06-01 北京奇岱松科技有限公司 一种实体数据处理方法、装置、设备和存储介质
CN117131042A (zh) * 2023-08-01 2023-11-28 上海沄熹科技有限公司 一种数据库函数索引实现方法及装置

Also Published As

Publication number Publication date
KR20200104789A (ko) 2020-09-04
EP3702932A1 (en) 2020-09-02
US20200272610A1 (en) 2020-08-27
JP2020140699A (ja) 2020-09-03
JP6998928B2 (ja) 2022-01-18
KR102407510B1 (ko) 2022-06-10
US11334544B2 (en) 2022-05-17

Similar Documents

Publication Publication Date Title
CN109918472A (zh) 存储和查询数据的方法、装置、设备和介质
CN109857917B (zh) 面向威胁情报的安全知识图谱构建方法及系统
CN110291517B (zh) 图数据库中的查询语言互操作性
CN109559234B (zh) 一种区块链状态数据的存储方法、设备和存储介质
CN110032575A (zh) 数据查询方法、装置、设备和存储介质
CN103902698B (zh) 一种数据存储系统和存储方法
KR102177190B1 (ko) 유연한 스키마를 사용한 데이터 관리
CN106776823B (zh) 一种时序数据管理方法、设备和装置
CN111782265B (zh) 基于字段级血缘关系的软件资源系统及其建立方法
US20180144061A1 (en) Edge store designs for graph databases
CN104423982B (zh) 请求的处理方法和处理设备
CN105550375A (zh) 一种异构数据的整合方法及系统
CN109815240A (zh) 用于管理索引的方法、装置、设备和存储介质
US10445370B2 (en) Compound indexes for graph databases
CN109271428A (zh) 数据抽取方法及基于地理信息的数据展示方法
CN110008738A (zh) 用于区块链合约数据的缓存方法、装置、介质和计算设备
CN110866029A (zh) sql语句构建方法、装置、服务器及可读存储介质
CN104461929B (zh) 基于拦截器的分布式数据缓存方法
CN110019644B (zh) 对话实现中的搜索方法、装置和计算机可读存储介质
CN109189759A (zh) Kv存储系统中的数据读取方法、数据查询方法、装置及设备
CN114090760A (zh) 表格问答的数据处理方法、电子设备及可读存储介质
CN110209780A (zh) 一种问题模板生成方法、装置、服务器及存储介质
US10872085B2 (en) Recording lineage in query optimization
CN109460416A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN109376154A (zh) 数据读取、写入方法及数据读取、写入系统

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