CN112131214A - 数据写入、数据查询的方法、系统、设备和存储介质 - Google Patents

数据写入、数据查询的方法、系统、设备和存储介质 Download PDF

Info

Publication number
CN112131214A
CN112131214A CN201910555008.7A CN201910555008A CN112131214A CN 112131214 A CN112131214 A CN 112131214A CN 201910555008 A CN201910555008 A CN 201910555008A CN 112131214 A CN112131214 A CN 112131214A
Authority
CN
China
Prior art keywords
data
primary key
target
module
writing
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
CN201910555008.7A
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 Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910555008.7A priority Critical patent/CN112131214A/zh
Publication of CN112131214A publication Critical patent/CN112131214A/zh
Pending legal-status Critical Current

Links

Images

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/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/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/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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

本发明公开了一种数据写入、数据查询的方法、系统、设备和存储介质,所述数据写入方法包括将待写入数据以键值对的形式写入键值存储系统中;预设二级索引列;获取第一主键集合;建立二级索引列的值与第一主键集合之间的第一索引关系,并将第一索引关系写入键值存储系统中;预设全文索引列;获取全文索引列中对应的词条,并获取第二主键集合;建立词条和第二主键集合之间的第二索引关系,并将第二索引关系写入键值存储系统中。本发明实现同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,解决了现有技术中存在的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的问题。

Description

数据写入、数据查询的方法、系统、设备和存储介质
技术领域
本发明涉及数据管理技术领域,特别涉及一种数据写入、数据查询的方法、系统、设备和存储介质。
背景技术
目前,关系型数据库和全文检索属于两种独立的数据处理方式,即现有的不存在能够兼顾关系查询和全文检索的数据存储系统。为了同时实现关系查询和全文检索的需求,现有的方式是将关系型数据库和全文检索通过以下步骤进行集成:
部署一套关系型数据库服务,用于接受事务型数据的写入和查询;部署一套全文检索服务,用于接受分析性和检索性的全文检索请求;部署一套周期性数据传输和同步服务,基于关系型数据库的存量静态数据和增量动态数据将数据周期性同步到全文检索服务中。具体地,首先从关系型数据库中查询出来一份静态数据,并记录查询数据时的时间戳t1。将静态数据一次性写入到全文检索服务中,然后从时间戳t1开始采集后面的所有关系型数据库的日志信息,根据关系型数据库的动态日志信息生成增量数据,将增量数据周期性地写入到全文检索服务中。
因此,现有的能够同时支持关系型数据库和全文检索的方式存在如下缺陷:(1)需要部署三套服务,实施难度和复杂度均比较大;(2)对于同一份数据,只是由于需要满足不同的数据使用和查询需求,就必须被从一个服务周期性的传输到另一个服务中,因此易造成存储资源和网络资源的极大浪费;(3)由于需要对数据进行周期性的同步和传输,由于现有的同步周期都比较长,从而会导致全文检索服务中的数据相较于关系型数据库中的数据存在极大的数据延时,进一步地导致了全文检索结果不准确。
发明内容
本发明要解决的技术问题是现有技术中能够同时满足关系查询和全文检索的需求的数据存储系统需要部署三套服务,存在实施难度和复杂度大、易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确等缺陷,目的在于提供一种数据写入、数据查询的方法、系统、设备和存储介质。
本发明是通过下述技术方案来解决上述技术问题:
本发明提供一种数据写入方法,所述数据写入方法包括:
将待写入数据以键值对的形式写入键值存储系统中;
其中,所述键值存储系统中包括多个数据表,所述键值对包括所述数据表对应的主键;
预设所述数据表中用于关系查询的二级索引列;
获取与所述二级索引列的值对应的第一主键集合;
建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中;
预设所述数据表中用于全文检索的全文索引列;
获取所述全文索引列中对应的词条,并获取包含所述词条的不同的所述数据表对应的第二主键集合;
建立所述词条和所述第二主键集合之间的第二索引关系,并将所述第二索引关系写入所述键值存储系统中。
较佳地,所述将待写入数据以键值对的形式写入键值存储系统中的步骤之前还包括:
向所述键值存储系统发送申请写入所述待写入数据的请求;
根据所述请求生成一个写入序列号;
将所述写入序列号和所述待写入数据写入预写日志系统。
较佳地,所述将待写入数据以键值对的形式写入键值存储系统中的步骤之后、所述获取所述全文索引列中对应的词条的步骤之前还包括:
判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则执行建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中的步骤,并继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则执行获取所述全文索引列中对应的词条的步骤;或,
在所述待写入数据成功写入所述键值存储系统后,判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则执行获取所述全文索引列中对应的词条的步骤,并继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则执行建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中的步骤。
较佳地,所述建立所述词条和所述第二主键集合之间的第二索引关系的步骤包括:
采用Lucene(一种全文检索引擎)建立所述词条和所述第二主键集合之间的第二索引关系。
本发明还提供一种数据查询方法,所述数据查询方法采用上述的数据写入方法实现,所述数据查询方法包括:
获取过滤条件;
当所述过滤条件包括所述二级索引列中的值和目标词条时,则根据所述二级索引列中的值获取对应的所述第一主键集合和根据所述目标词条获取对应的所述第二主键集合;
将所述第一主键集合和所述第二主键集合的交集作为目标主键集合;
根据所述目标主键集合查询得到对应的目标数据。
较佳地,当所述过滤条件只包括目标主键时,则获取所述目标主键对应的目标键值;
根据所述目标键值从所述键值存储系统中查询得到与所述目标主键对应的目标数据。
较佳地,当所述过滤条件只包括所述二级索引列中的值时,则获取与所述二级索引列中的值相对应的所述第一主键集合;
根据所述第一主键集合查询得到对应的目标数据。
较佳地,当所述过滤条件只包括目标词条时,则获取与所述目标词条相对应的所述第二主键集合;
根据所述第二主键集合查询得到对应的目标数据。
本发明还提供一种数据写入系统,所述数据写入系统包括数据写入模块、二级索引列预设模块、第一主键集合获取模块、第一索引关系建立模块、第一索引关系写入模块、全文索引列预设模块、第二主键集合获取模块、第二索引关系建立模块和第二索引关系写入模块;
所述数据写入模块用于将待写入数据以键值对的形式写入键值存储系统中;
其中,所述键值存储系统中包括多个数据表,所述键值对包括所述数据表对应的主键;
所述二级索引列预设模块用于预设所述数据表中用于关系查询的二级索引列;
所述第一主键集合获取模块用于获取与所述二级索引列的值对应的第一主键集合;
所述第一索引关系建立模块用于建立所述二级索引列的值与所述第一主键集合之间的第一索引关系;
所述第一索引关系写入模块用于将所述第一索引关系写入所述键值存储系统中;
所述全文索引列预设模块用于预设所述数据表中用于全文检索的全文索引列;
所述第二主键集合获取模块用于获取所述全文索引列中对应的词条,并获取包含所述词条的不同的所述数据表对应的第二主键集合;
所述第二索引关系建立模块用于建立所述词条和所述第二主键集合之间的第二索引关系;
所述第二索引关系写入模块用于将所述第二索引关系写入所述键值存储系统中。
较佳地,所述数据写入系统还包括请求发送模块、序列号获取模块和第一写入模块;
所述请求发送模块用于向所述键值存储系统发送申请写入所述待写入数据的请求;
所述序列号获取模块用于根据所述请求生成一个写入序列号;
所述第一写入模块用于将所述写入序列号和所述待写入数据写入预写日志系统。
较佳地,所述数据写入系统还包括判断模块;
所述判断模块用于判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则调用所述第一索引关系建立模块,并继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则调用所述第二主键集合获取模块;或,
所述判断模块用于判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则调用所述第二主键集合获取模块,并继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则调用所述第一索引关系建立模块。
较佳地,所述第二索引关系建立模块用于采用Lucene建立所述词条和所述第二主键集合之间的第二索引关系。
本发明还提供一种数据查询系统,所述数据查询系统采用上述的数据写入系统实现,所述数据查询系统包括过滤条件获取模块、目标主键获取模块和目标数据查询模块;
所述过滤条件获取模块用于获取过滤条件;
所述目标主键获取模块用于当所述过滤条件包括所述二级索引列中的值和目标词条时,则根据所述二级索引列中的值获取对应的所述第一主键集合和根据所述目标词条获取对应的所述第二主键集合,并将所述第一主键集合和所述第二主键集合的交集作为目标主键集合;
所述目标数据查询模块用于根据所述目标主键集合查询得到对应的目标数据。
较佳地,所述目标主键获取模块用于当所述过滤条件只包括目标主键时,则获取所述目标主键对应的目标键值;
所述目标数据查询模块用于根据所述目标键值从所述键值存储系统中查询得到与所述目标主键对应的目标数据。
较佳地,所述目标主键获取模块用于当所述过滤条件只包括所述二级索引列中的值时,则获取与所述二级索引列中的值相对应的所述第一主键集合;
所述目标数据查询模块用于根据所述第一主键集合查询得到对应的目标数据。
较佳地,所述目标数据查询模块用于当所述过滤条件只包括目标词条时,则获取与所述目标词条相对应的所述第二主键集合;
所述目标数据查询模块用于根据所述第二主键集合查询得到对应的目标数据。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述的数据写入方法。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述的数据查询方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据写入方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据查询方法的步骤。
本发明的积极进步效果在于:
本发明中,通过在写入待写入数据时,通过在一个事务中首先将待写入数据写入键值存储系统,然后再进行二级索引写入和倒排索引写入;当进行该数据查询时,结合过滤条件并根据二级索引和倒排索引查询出满足条件的主键集合,进而查询出最终的目标数据,从而实现同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
附图说明
图1为本发明实施例1的数据写入方法的流程图。
图2为本发明实施例2的数据写入方法的流程图。
图3为本发明实施例3的数据查询方法的流程图。
图4为本发明实施例5的数据写入系统的结构示意图。
图5为本发明实施例6的数据写入系统的结构示意图。
图6为本发明实施例7的数据查询系统的结构示意图。
图7为本发明实施例9的实现数据写入方法的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
如图1所示,本实施例的数据写入方法包括:
S101、将待写入数据以键值对的形式写入键值存储系统中;
其中,键值存储系统中包括多个数据表,键值对包括数据表对应的主键。
具体地,Key(键)对应的格式为:表ID:主键ID:主键值;Value(值)的内容是一行数据中所有列名、列值组合在一起的字符串转换成的Byte(比特)数组。
采用RocksDB(一种数据库软件)对键值存储系统中基础数据的读写支持,将实际存储在RocksDB中的为上述格式对应的字符串转换成的Byte数组进行存储,以使得数据占据比较小的内存容量和保证数据传输的速度。
S102、预设数据表中用于关系查询的二级索引列;
S103、获取与二级索引列的值对应的第一主键集合;
S104、建立二级索引列的值与第一主键集合之间的第一索引关系,并将第一索引关系写入键值存储系统中;
在关系型数据库领域,二级索引用于根据非主键列的内容快速查找到对应主键的数据结构。其中,二级索引列对应表中的非主键列,通过非主键列的值快读定位到含有非主键列的值的所有行的主键。
具体地,二级索引的格式为Key-Value对,其中Value取值为null(空),key对应的格式为表ID:列ID:列值:主键值。
二级索引还可以在内存中通过B树或者B+树进行组织实现等方式实现,通过B树或者B+树进行组织实现的过程为现有的成熟技术,因此在此就不再赘述。
另外,将存储在RocksDB中的上述格式对应的字符串转换成的Byte数组进行存储。
S105、预设数据表中用于全文检索的全文索引列;
S106、获取全文索引列中对应的term(词条),并获取包含词条的不同的数据表对应的第二主键集合;
S107、建立词条和第二主键集合之间的第二索引关系,并将第二索引关系写入键值存储系统中。
具体地,基于倒排索引的思想,通过一个term快速找到特定列包含该term的所有行的主键集合或者文档对应的主键集合。
考虑到对于一张表,由于每插入一行数据都有可能会对倒排索引中的任何term对应的主键集合进行修改,因此倒排索引是经常需要修改的,因此不适合放在键值存储系统中,而是需要对其进行单独的管理和存储,本实施例中采用Lucene建立词条和第二主键集合之间的第二索引关系,实现对倒排索引的管理与存储。
本实施例中,在写入待写入数据时,通过在一个事务中首先将待写入数据写入键值存储系统,然后再进行二级索引写入和倒排索引写入,提交本次事务,完成数据的写入操作,从而实现能够同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例2
如图2所示,本实施例的数据写入方法是对实施例1的进一步改进,具体地:
步骤S101之前还包括:
S10101、向键值存储系统发送申请写入待写入数据的请求;
S10102、根据请求生成一个写入序列号;
S10103、将写入序列号和待写入数据写入预写日志系统。
步骤S101之后还包括:
判断待写入数据是否成功写入键值存储系统中,若成功写入,则继续判断数据表是否设有用于关系查询的二级索引列,若设有二级索引列,则执行步骤S104,并继续判断数据表中是否设有用于全文检索的全文索引列,若设有全文索引列,则执行步骤S106;或,
在待写入数据成功写入键值存储系统后,判断数据表中是否设有用于全文检索的全文索引列,若设有全文索引列,则执行步骤S106,并继续判断数据表是否设有用于关系查询的二级索引列,若设有二级索引列,则执行步骤S104。
即本实施例中,首先保证将待写入数据成功写入键值存储系统,然后再分别写入二级索引信息和全文索引信息,从而使得键值存储系统具备能够同时支持关系查询和全文检索的功能。其中二级索引信息和全文索引信息的写入的先后顺序不作具体要求。
另外,一旦写入键值存储系统的操作发生写入失败,则执行回滚操作,并记录本次写入失败的信息。
本实施例中,在写入待写入数据时,通过在一个事务中首先将待写入数据写入键值存储系统,然后再进行二级索引写入和倒排索引写入,提交本次事务,完成数据的写入操作,从而实现能够同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例3
本实施例的数据查询方法采用实施例1或2中任意一实施例的数据写入方法实现。
具体地,如图3所示,本实施例的数据查询方法包括:
S201、获取过滤条件;
S202、当过滤条件包括二级索引列中的值和目标词条时,则根据二级索引列中的值获取对应的第一主键集合和根据目标词条获取对应的第二主键集合;
S203、将第一主键集合和第二主键集合的交集作为目标主键集合;
S204、根据目标主键集合查询得到对应的目标数据。
本实施例中,结合过滤条件并根据二级索引和倒排索引查询出满足条件的主键集合,进而查询出最终的目标数据,从而实现同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例4
本实施例的数据查询方法是对实施例3的进一步改进,具体地:
步骤S201之后还包括:
当过滤条件只包括目标主键时,即不需要进行二级索引,也不需要进行全文检索,此时直接获取目标主键对应的目标键值;
根据目标键值从键值存储系统中查询得到与目标主键对应的目标数据。或,步骤S201之后还包括:
当过滤条件只包括二级索引列中的值时,即不需要进行全文检索,此时获取与二级索引列中的值相对应的第一主键集合;
根据第一主键集合查询得到对应的目标数据。或,步骤S201之后还包括:
当过滤条件只包括目标词条时,即不需要进行二级索引,此时获取与目标词条相对应的第二主键集合;
根据第二主键集合查询得到对应的目标数据。
本实施例中,结合不同的过滤条件,获取与过滤条件匹配的查询结果,基于目标主键、二级索引、全文索引分别独立地实现对目标数据的查询,从而改善了现有的数据查询的方式,提升了用户数据查询体验。
实施例5
如图4所示,本实施例的数据写入系统包括数据写入模块1、二级索引列预设模块2、第一主键集合获取模块3、第一索引关系建立模块4、第一索引关系写入模块5、全文索引列预设模块6、第二主键集合获取模块7、第二索引关系建立模块8和第二索引关系写入模块9。
数据写入模块1用于将待写入数据以键值对的形式写入键值存储系统中;
其中,键值存储系统中包括多个数据表,键值对包括数据表对应的主键。
具体地,Key对应的格式为:表ID:主键ID:主键值;Value的内容是一行数据中所有列名、列值组合在一起的字符串转换成的Byte数组。
采用RocksDB对键值存储系统中基础数据的读写支持,将实际存储在RocksDB中的为上述格式对应的字符串转换成的Byte数组进行存储,以使得数据占据比较小的内存容量和保证数据传输的速度。
二级索引列预设模块2用于预设数据表中用于关系查询的二级索引列;
第一主键集合获取模块3用于获取与二级索引列的值对应的第一主键集合;
第一索引关系建立模块4用于建立二级索引列的值与第一主键集合之间的第一索引关系;
第一索引关系写入模块5用于将第一索引关系写入键值存储系统中;
在关系型数据库领域,二级索引用于根据非主键列的内容快速查找到对应主键的数据结构。其中,二级索引列对应表中的非主键列,通过非主键列的值快读定位到含有非主键列的值的所有行的主键。
具体地,二级索引的格式为Key-Value对,其中Value取值为null(空),key对应的格式为表ID:列ID:列值:主键值。
二级索引还可以在内存中通过B树或者B+树进行组织实现等方式实现,通过B树或者B+树进行组织实现的过程为现有的成熟技术,因此在此就不再赘述。
另外,将存储在RocksDB中的上述格式对应的字符串转换成的Byte数组进行存储。
全文索引列预设模块6用于预设数据表中用于全文检索的全文索引列;
第二主键集合获取模块7用于获取全文索引列中对应的词条,并获取包含词条的不同的数据表对应的第二主键集合;
第二索引关系建立模块8用于建立词条和第二主键集合之间的第二索引关系;
具体地,第二索引关系建立模块用于采用Lucene建立词条和第二主键集合之间的第二索引关系。
第二索引关系写入模块9用于将第二索引关系写入键值存储系统中。
具体地,基于倒排索引的思想,通过一个term快速找到特定列包含该term的所有行的主键集合或者文档对应的主键集合。
考虑到对于一张表,由于每插入一行数据都有可能会对倒排索引中的任何term对应的主键集合进行修改,因此倒排索引是经常需要修改的,因此不适合放在键值存储系统中,而是需要对其进行单独的管理和存储,本实施例中采用Lucene建立词条和第二主键集合之间的第二索引关系,实现对倒排索引的管理与存储。
本实施例中,在写入待写入数据时,通过在一个事务中首先将待写入数据写入键值存储系统,然后再进行二级索引写入和倒排索引写入,提交本次事务,完成数据的写入操作,从而实现能够同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例6
如图5所示,本实施例的数据写入系统是对实施例5的进一步改进,具体地:
数据写入系统还包括请求发送模块10、序列号获取模块11和第一写入模块12。
请求发送模块11用于向键值存储系统发送申请写入待写入数据的请求;
序列号获取模块12用于根据请求生成一个写入序列号;
第一写入模块13用于将写入序列号和待写入数据写入预写日志系统。
数据写入系统还包括判断模块,该判断模块用于判断待写入数据是否成功写入键值存储系统中,若成功写入,则继续判断数据表是否设有用于关系查询的二级索引列,若设有二级索引列,则调用第一索引关系建立模块4,并继续判断数据表中是否设有用于全文检索的全文索引列,若设有全文索引列,则调用第二主键集合获取模块7;或,
判断模块用于判断待写入数据是否成功写入键值存储系统中,若成功写入,则继续判断数据表中是否设有用于全文检索的全文索引列,若设有全文索引列,则调用第二主键集合获取模块7,并继续判断数据表是否设有用于关系查询的二级索引列,若设有二级索引列,则调用第一索引关系建立模块4。
即本实施例中,首先保证将待写入数据成功写入键值存储系统,然后再分别写入二级索引信息和全文索引信息,从而使得键值存储系统具备能够同时支持关系查询和全文检索的功能。其中二级索引信息和全文索引信息的写入的先后顺序不作具体要求。
另外,一旦写入键值存储系统的操作发生写入失败,则执行回滚操作,并记录本次写入失败的信息。
本实施例中,在写入待写入数据时,通过在一个事务中首先将待写入数据写入键值存储系统,然后再进行二级索引写入和倒排索引写入,提交本次事务,完成数据的写入操作,从而实现能够同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例7
本实施例的数据查询系统采用实施例5或6中任意一实施例的数据写入系统实现。
具体地,如图6所示,本实施例的数据查询系统包括:
数据查询系统包括过滤条件获取模块13、目标主键获取模块14和目标数据查询模块15。
过滤条件获取模块13用于获取过滤条件;
目标主键获取模块14用于当过滤条件包括二级索引列中的值和目标词条时,则根据二级索引列中的值获取对应的第一主键集合和根据目标词条获取对应的第二主键集合,并将第一主键集合和第二主键集合的交集作为目标主键集合;
目标数据查询模块15用于根据目标主键集合查询得到对应的目标数据。
本实施例中,结合过滤条件并根据二级索引和倒排索引查询出满足条件的主键集合,进而查询出最终的目标数据,从而实现同时支持关系查询和全文检索的需求,降低了实现难度和复杂度,克服了现有的易造成存储资源和网络资源的极大浪费、易导致全文检索结果不准确的缺陷。
实施例8
本实施例的数据查询系统是对实施例7的进一步改进,具体地:
目标主键获取模块14用于当过滤条件只包括目标主键时,即不需要进行二级索引,也不需要进行全文检索,此时直接获取目标主键对应的目标键值;
目标数据查询模块15用于根据目标键值从键值存储系统中查询得到与目标主键对应的目标数据。或,
目标主键获取模块14用于当过滤条件只包括二级索引列中的值时,即不需要进行全文检索,此时获取与二级索引列中的值相对应的第一主键集合;
目标数据查询模块15用于根据第一主键集合查询得到对应的目标数据。或,
目标数据查询模块15用于当过滤条件只包括目标词条时,即不需要进行二级索引,此时获取与目标词条相对应的第二主键集合;
目标数据查询模块15用于根据第二主键集合查询得到对应的目标数据。
本实施例中,结合不同的过滤条件,获取与过滤条件匹配的查询结果,基于目标主键、二级索引、全文索引分别独立地实现对目标数据的查询,从而改善了现有的数据查询的方式,提升了用户数据查询体验。
实施例9
图7为本发明实施例9提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现实施例1或2中任意一实施例中的数据写入方法。图7显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。
总线33包括数据总线、地址总线和控制总线。
存储器32可以包括易失性存储器,例如随机存取存储器(RAM)321和/或高速缓存存储器322,还可以进一步包括只读存储器(ROM)323。
存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1或2中任意一实施例中的数据写入方法。
电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例10
本发明实施例10提供了一种电子设备,电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现实施例3或4中任意一实施例中的数据查询方法,该电子设备的具体结构参照实施例9中的电子设备,其工作原理与实施例9中的电子设备的工作原理基本一致,在此不再赘述。
实施例11
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现实施例1或2中任意一实施例中的数据写入方法中的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现实施例1或2中任意一实施例中的数据写入方法中的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
实施例12
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现实施例3或4中任意一实施例中的数据查询方法中的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现实施例3或4中任意一实施例中的数据查询方法中的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式作出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (18)

1.一种数据写入方法,其特征在于,所述数据写入方法包括:
将待写入数据以键值对的形式写入键值存储系统中;
其中,所述键值存储系统中包括多个数据表,所述键值对包括所述数据表对应的主键;
预设所述数据表中用于关系查询的二级索引列;
获取与所述二级索引列的值对应的第一主键集合;
建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中;
预设所述数据表中用于全文检索的全文索引列;
获取所述全文索引列中对应的词条,并获取包含所述词条的不同的所述数据表对应的第二主键集合;
建立所述词条和所述第二主键集合之间的第二索引关系,并将所述第二索引关系写入所述键值存储系统中。
2.如权利要求1所述的数据写入方法,其特征在于,所述将待写入数据以键值对的形式写入键值存储系统中的步骤之前还包括:
向所述键值存储系统发送申请写入所述待写入数据的请求;
根据所述请求生成一个写入序列号;
将所述写入序列号和所述待写入数据写入预写日志系统。
3.如权利要求1所述的数据写入方法,其特征在于,所述将待写入数据以键值对的形式写入键值存储系统中的步骤之后、所述获取所述全文索引列中对应的词条的步骤之前还包括:
判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则执行建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中的步骤,并继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则执行获取所述全文索引列中对应的词条的步骤;或,
在所述待写入数据成功写入所述键值存储系统后,判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则执行获取所述全文索引列中对应的词条的步骤,并继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则执行建立所述二级索引列的值与所述第一主键集合之间的第一索引关系,并将所述第一索引关系写入所述键值存储系统中的步骤。
4.一种数据查询方法,其特征在于,所述数据查询方法采用权利要求1至3中任意一项所述的数据写入方法实现,所述数据查询方法包括:
获取过滤条件;
当所述过滤条件包括所述二级索引列中的值和目标词条时,则根据所述二级索引列中的值获取对应的所述第一主键集合和根据所述目标词条获取对应的所述第二主键集合;
将所述第一主键集合和所述第二主键集合的交集作为目标主键集合;
根据所述目标主键集合查询得到对应的目标数据。
5.如权利要求4所述的数据查询方法,其特征在于,当所述过滤条件只包括目标主键时,则获取所述目标主键对应的目标键值;
根据所述目标键值从所述键值存储系统中查询得到与所述目标主键对应的目标数据。
6.如权利要求4所述的数据查询方法,其特征在于,当所述过滤条件只包括所述二级索引列中的值时,则获取与所述二级索引列中的值相对应的所述第一主键集合;
根据所述第一主键集合查询得到对应的目标数据。
7.如权利要求4所述的数据查询方法,其特征在于,当所述过滤条件只包括目标词条时,则获取与所述目标词条相对应的所述第二主键集合;
根据所述第二主键集合查询得到对应的目标数据。
8.一种数据写入系统,其特征在于,所述数据写入系统包括数据写入模块、二级索引列预设模块、第一主键集合获取模块、第一索引关系建立模块、第一索引关系写入模块、全文索引列预设模块、第二主键集合获取模块、第二索引关系建立模块和第二索引关系写入模块;
所述数据写入模块用于将待写入数据以键值对的形式写入键值存储系统中;
其中,所述键值存储系统中包括多个数据表,所述键值对包括所述数据表对应的主键;
所述二级索引列预设模块用于预设所述数据表中用于关系查询的二级索引列;
所述第一主键集合获取模块用于获取与所述二级索引列的值对应的第一主键集合;
所述第一索引关系建立模块用于建立所述二级索引列的值与所述第一主键集合之间的第一索引关系;
所述第一索引关系写入模块用于将所述第一索引关系写入所述键值存储系统中;
所述全文索引列预设模块用于预设所述数据表中用于全文检索的全文索引列;
所述第二主键集合获取模块用于获取所述全文索引列中对应的词条,并获取包含所述词条的不同的所述数据表对应的第二主键集合;
所述第二索引关系建立模块用于建立所述词条和所述第二主键集合之间的第二索引关系;
所述第二索引关系写入模块用于将所述第二索引关系写入所述键值存储系统中。
9.如权利要求8所述的数据写入系统,其特征在于,所述数据写入系统还包括请求发送模块、序列号获取模块和第一写入模块;
所述请求发送模块用于向所述键值存储系统发送申请写入所述待写入数据的请求;
所述序列号获取模块用于根据所述请求生成一个写入序列号;
所述第一写入模块用于将所述写入序列号和所述待写入数据写入预写日志系统。
10.如权利要求8所述的数据写入系统,其特征在于,所述数据写入系统还包括判断模块;
所述判断模块用于判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则调用所述第一索引关系建立模块,并继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则调用所述第二主键集合获取模块;或,
所述判断模块用于判断所述待写入数据是否成功写入所述键值存储系统中,若成功写入,则继续判断所述数据表中是否设有用于全文检索的全文索引列,若设有所述全文索引列,则调用所述第二主键集合获取模块,并继续判断所述数据表是否设有用于关系查询的二级索引列,若设有所述二级索引列,则调用所述第一索引关系建立模块。
11.一种数据查询系统,其特征在于,所述数据查询系统采用权利要求8至10中任意一项所述的数据写入系统实现,所述数据查询系统包括过滤条件获取模块、目标主键获取模块和目标数据查询模块;
所述过滤条件获取模块用于获取过滤条件;
所述目标主键获取模块用于当所述过滤条件包括所述二级索引列中的值和目标词条时,则根据所述二级索引列中的值获取对应的所述第一主键集合和根据所述目标词条获取对应的所述第二主键集合,并将所述第一主键集合和所述第二主键集合的交集作为目标主键集合;
所述目标数据查询模块用于根据所述目标主键集合查询得到对应的目标数据。
12.如权利要求11所述的数据查询系统,其特征在于,所述目标主键获取模块用于当所述过滤条件只包括目标主键时,则获取所述目标主键对应的目标键值;
所述目标数据查询模块用于根据所述目标键值从所述键值存储系统中查询得到与所述目标主键对应的目标数据。
13.如权利要求11所述的数据查询系统,其特征在于,所述目标主键获取模块用于当所述过滤条件只包括所述二级索引列中的值时,则获取与所述二级索引列中的值相对应的所述第一主键集合;
所述目标数据查询模块用于根据所述第一主键集合查询得到对应的目标数据。
14.如权利要求11所述的数据查询系统,其特征在于,所述目标数据查询模块用于当所述过滤条件只包括目标词条时,则获取与所述目标词条相对应的所述第二主键集合;
所述目标数据查询模块用于根据所述第二主键集合查询得到对应的目标数据。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算机程序时实现权利要求1至3中任一项所述的数据写入方法。
16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算机程序时实现权利要求4至7中任一项所述的数据查询方法。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的数据写入方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求4至7中任一项所述的数据查询方法的步骤。
CN201910555008.7A 2019-06-25 2019-06-25 数据写入、数据查询的方法、系统、设备和存储介质 Pending CN112131214A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910555008.7A CN112131214A (zh) 2019-06-25 2019-06-25 数据写入、数据查询的方法、系统、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910555008.7A CN112131214A (zh) 2019-06-25 2019-06-25 数据写入、数据查询的方法、系统、设备和存储介质

Publications (1)

Publication Number Publication Date
CN112131214A true CN112131214A (zh) 2020-12-25

Family

ID=73849366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910555008.7A Pending CN112131214A (zh) 2019-06-25 2019-06-25 数据写入、数据查询的方法、系统、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112131214A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612905A (zh) * 2020-12-28 2021-04-06 北京明略软件系统有限公司 基于Elasticsearch的数据处理方法、系统、计算机及可读存储介质
CN113268506A (zh) * 2021-05-24 2021-08-17 北京京东振世信息技术有限公司 缓存数据库的查询方法、装置、电子设备和可读存储介质
CN114969020A (zh) * 2021-02-23 2022-08-30 北京字节跳动网络技术有限公司 一种数据处理方法、装置、设备及介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612905A (zh) * 2020-12-28 2021-04-06 北京明略软件系统有限公司 基于Elasticsearch的数据处理方法、系统、计算机及可读存储介质
CN114969020A (zh) * 2021-02-23 2022-08-30 北京字节跳动网络技术有限公司 一种数据处理方法、装置、设备及介质
CN113268506A (zh) * 2021-05-24 2021-08-17 北京京东振世信息技术有限公司 缓存数据库的查询方法、装置、电子设备和可读存储介质
CN113268506B (zh) * 2021-05-24 2023-09-26 北京京东振世信息技术有限公司 缓存数据库的查询方法、装置、电子设备和可读存储介质

Similar Documents

Publication Publication Date Title
US11422982B2 (en) Scaling stateful clusters while maintaining access
CN106407250B (zh) 信息查询方法、装置、系统、服务器和客户端
US9639542B2 (en) Dynamic mapping of extensible datasets to relational database schemas
CN105224546B (zh) 数据存储和查询方法及设备
US9600500B1 (en) Single phase transaction commits for distributed database transactions
CN111324610A (zh) 一种数据同步的方法及装置
CN111651519B (zh) 数据同步方法、数据同步装置、电子设备及存储介质
CN106407360B (zh) 一种数据的处理方法及装置
CN112131214A (zh) 数据写入、数据查询的方法、系统、设备和存储介质
CN105279213A (zh) 一种日志数据库检索装置及检索方法
CN102917009B (zh) 一种基于云计算技术的股票数据采集和存储方法和系统
CN104090901A (zh) 一种对数据进行处理的方法、装置及服务器
CN111046036A (zh) 数据同步方法、装置、系统及存储介质
US20100153346A1 (en) Data integrity in a database environment through background synchronization
CN103353901A (zh) 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统
CN111400350B (zh) 配置数据读取方法、系统、电子设备和存储介质
CN113177090A (zh) 数据处理方法及装置
CN114691704A (zh) 一种基于MySQL binlog的元数据同步方法
CN104408084A (zh) 一种大数据筛选方法及装置
US20170270149A1 (en) Database systems with re-ordered replicas and methods of accessing and backing up databases
CN103841168A (zh) 数据副本更新方法及元数据服务器
CN114817293B (zh) 一种基于分布式sql的数据查询方法及系统
US9230011B1 (en) Index-based querying of archived data sets
CN111221814A (zh) 二级索引的构建方法、装置及设备
CN115080666A (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