CN111666278B - 数据存储、检索方法、电子设备及存储介质 - Google Patents

数据存储、检索方法、电子设备及存储介质 Download PDF

Info

Publication number
CN111666278B
CN111666278B CN201910167503.0A CN201910167503A CN111666278B CN 111666278 B CN111666278 B CN 111666278B CN 201910167503 A CN201910167503 A CN 201910167503A CN 111666278 B CN111666278 B CN 111666278B
Authority
CN
China
Prior art keywords
data
stored
storage
partition
request
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
Application number
CN201910167503.0A
Other languages
English (en)
Other versions
CN111666278A (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910167503.0A priority Critical patent/CN111666278B/zh
Publication of CN111666278A publication Critical patent/CN111666278A/zh
Application granted granted Critical
Publication of CN111666278B publication Critical patent/CN111666278B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及数据存储、检索方法、电子设备及存储介质。该数据存储方法包括:接收第一数据存储请求,所述第一数据存储请求用于将待存储数据存储在第一存储引擎中;若基于所述第一数据存储请求,确定所述待存储数据具有路由键,则获取所述待存储数据的路由键值;根据所述待存储数据的路由键值,确定所述待存储数据对应的第一存储引擎的分区;将所述待存储数据存储在所述待存储数据对应的第一存储引擎的分区中。本公开能够将路由键值相同的数据存储在第一存储引擎的同一个分区中,从而在通过第一存储引擎进行数据检索时,能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。

Description

数据存储、检索方法、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据存储、检索方法、电子设备及存储介质。
背景技术
表格存储(TableStore)是基于共享存储的高性能、低成本、易扩展且全托管的半结构化数据存储平台,支撑互联网和物联网数据的高效计算与分析。表格存储是一款分布式多模型数据库,支持多种数据模型(包括宽行、消息、时序、时空、图和文档等),满足不同应用场景的需求。
分布式数据库需要对数据进行分区,以利用分布式计算能力。分布式数据库的分区通常分为范围(Range)分区和哈希(Hash)分区。其中,范围分区是以列的值的范围作为分区的划分条件,将数据存放到列值所在的范围对应的分区中。哈希分区是将列的值先进行哈希计算,得到哈希值,再根据哈希值决定数据对应分区。哈希分区的方式可以将数据完全打散,有利于平衡访问压力。
数据库存储引擎是指数据库底层用于存储和检索数据的引擎。为了满足不同场景的需求,会有不同类型的存储引擎。例如,KeyValue引擎可以用于快速的单行查询和范围查询,Search引擎可以用于全文索引和多条件组合查询等。
通过Search引擎进行检索时,检索的范围常常是表中的所有记录,因此哈希计算的数据分布方式有利于平衡访问压力。然而,在某些情况下,用户只希望查询表中某个子维度范围下的数据。比如某文档类应用,可能将其所有用户的所有文档的信息存入一张表中,每次查询时只希望查询某个用户下的所有文档。如果采用哈希分区的方式,则一个用户的所有文档可能会分布在很多节点中,每次检索都需要检索所有节点,并对检索结果进行汇总,需要检索的数据量较大,检索效率较低。
发明内容
有鉴于此,本公开提出了一种数据存储、检索方法、电子设备及存储介质。
根据本公开的一方面,提供了一种数据存储方法,包括:
接收第一数据存储请求,所述第一数据存储请求用于将待存储数据存储在第一存储引擎中;
若基于所述第一数据存储请求,确定所述待存储数据具有路由键,则获取所述待存储数据的路由键值;
根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区;
将所述待存储数据存储在所述待存储数据对应的所述第一存储引擎的分区中。
在一种可能的实现方式中,根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区,包括:
根据所述待存储数据的路由键值,确定所述待存储数据对应的哈希值;
根据所述待存储数据对应的哈希值,确定所述待存储数据对应的所述第一存储引擎的分区。
在一种可能的实现方式中,所述路由键属于主键。
在一种可能的实现方式中,所述路由键不同于主键。
在一种可能的实现方式中,在接收第一数据存储请求之后,所述方法还包括:
若基于所述第一数据存储请求,确定所述待存储数据不具有路由键,则获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第一存储引擎的分区。
在一种可能的实现方式中,所述方法还包括:
接收第二数据存储请求,所述第二数据存储请求用于将所述待存储数据存储在第二存储引擎中;
基于所述第二数据存储请求,获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第二存储引擎的分区;
将所述待存储数据存储在所述待存储数据对应的所述第二存储引擎的分区中。
根据本公开的另一方面,提供了一种数据检索方法,包括:
接收第一数据检索请求,所述第一数据检索请求用于在第一存储引擎中进行数据检索;
若所述第一数据检索请求包含路由键值,则根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区;
在所述第一数据检索请求对应的所述第一存储引擎的分区中,根据所述第一数据检索请求进行检索,得到检索结果。
在一种可能的实现方式中,根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区,包括:
根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的哈希值;
根据所述第一数据检索请求对应的哈希值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
在一种可能的实现方式中,在接收第一数据检索请求之后,所述方法还包括:
若所述第一数据检索请求不包含路由键值,则根据所述第一数据检索请求中的完整主键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
在一种可能的实现方式中,所述方法还包括:
接收第二数据检索请求,所述第二数据检索请求用于在第二存储引擎中进行数据检索;
根据所述第二数据检索请求中的完整主键值,确定所述第二数据检索请求对应的所述第二存储引擎的分区;
在所述第二数据检索请求对应的所述第二存储引擎的分区中,根据所述第二数据检索请求进行检索,得到检索结果。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行:
接收第一数据存储请求,所述第一数据存储请求用于将待存储数据存储在第一存储引擎中;
若基于所述第一数据存储请求,确定所述待存储数据具有路由键,则获取所述待存储数据的路由键值;
根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区;
将所述待存储数据存储在所述对应的所述第一存储引擎的分区中;
接收第一数据检索请求,所述第一数据检索请求用于在所述第一存储引擎中进行数据检索;
若所述第一数据检索请求包含路由键值,则根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区;
在所述第一数据检索请求对应的所述第一存储引擎的分区中,根据所述第一数据检索请求进行检索,得到检索结果。
在一种可能的实现方式中,所述处理器被配置为执行:
根据所述待存储数据的路由键值,确定所述待存储数据对应的哈希值;
根据所述待存储数据对应的哈希值,确定所述待存储数据对应的所述第一存储引擎的分区;
根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的哈希值;
根据所述第一数据检索请求对应的哈希值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
在一种可能的实现方式中,所述路由键属于主键。
在一种可能的实现方式中,所述路由键不同于主键。
在一种可能的实现方式中,所述处理器被配置为执行:
若基于所述第一数据存储请求,确定所述待存储数据不具有路由键,则获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第一存储引擎的分区;
若所述第一数据检索请求不包含路由键值,则根据所述第一数据检索请求中的完整主键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
在一种可能的实现方式中,所述处理器被配置为执行:
接收第二数据存储请求,所述第二数据存储请求用于将所述待存储数据存储在第二存储引擎中;
基于所述第二数据存储请求,获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第二存储引擎的分区;
将所述待存储数据存储在所述待存储数据对应的所述第二存储引擎的分区中;
接收第二数据检索请求,所述第二数据检索请求用于在所述第二存储引擎中进行数据检索;
根据所述第二数据检索请求中的完整主键值,确定所述第二数据检索请求对应的所述第二存储引擎的分区;
在所述第二数据检索请求对应的所述第二存储引擎的分区中,根据所述第二数据检索请求进行检索,得到检索结果。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述数据存储方法或者上述数据检索方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述数据存储方法或者上述数据检索方法。
在本公开实施例中,接收第一数据存储请求,若基于第一数据存储请求,确定待存储数据具有路由键,则获取待存储数据的路由键值,根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区,并将待存储数据存储在待存储数据对应的第一存储引擎的分区中,由此能够将路由键值相同的数据存储在第一存储引擎的同一个分区中,从而在通过第一存储引擎进行数据检索时,能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的数据存储方法的流程图。
图2示出主键列和属性列的示意图。
图3示出根据本公开一实施例的数据存储方法中第一存储引擎包含多个分区的示意图。
图4示出根据本公开一实施例的数据存储方法中第二存储引擎包含多个分区的示意图。
图5示出根据本公开一实施例的数据检索方法的流程图。
图6示出根据本公开一实施例的数据存储装置的框图。
图7示出根据本公开一实施例的数据检索装置的框图。
图8是根据一示例性实施例示出的一种用于数据存储或数据检索的装置1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的数据存储方法的流程图。该数据存储方法的执行主体可以是数据存储装置。例如,该数据存储方法可以由服务器或其它处理设备执行。在一些可能的实现方式中,该数据存储方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。该数据存储方法可以应用于表格存储中。如图1所示,该数据存储方法包括步骤S11至步骤S14。
在步骤S11中,接收第一数据存储请求,第一数据存储请求用于将待存储数据存储在第一存储引擎中。
在本公开实施例中,存储引擎可以表示数据库底层用于存储和检索数据的引擎。
在一种可能的实现方式中,第一存储引擎为采用哈希分区方式的存储引擎。
作为该实现方式的一个示例,第一存储引擎为Search引擎。其中,Search引擎可以提供多条件组合检索、全文检索和地理空间检索等功能。
在该实现方式中,需要说明的是,尽管以Search引擎作为示例介绍了第一存储引擎如上,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景需求和/或个人喜好灵活确定第一存储引擎的类型,只要是采用哈希分区方式的存储引擎即可。
在步骤S12中,若基于第一数据存储请求,确定待存储数据具有路由键(RoutingKey),则获取待存储数据的路由键值。
在一种可能的实现方式中,路由键由用户指定。基于该实现方式,用户可以自定义第一存储引擎中的数据分布方式。
在一种可能的实现方式中,路由键属于主键(PrimaryKey)。
作为该实现方式的一个示例,用户可以指定多个主键列中的一列作为路由键。
图2示出主键列和属性列的示意图。如图2所示,在本公开实施例中,数据库可以看作是一系列行(Row)的集合,每一行分为主键和多个属性列,其中,主键可以由多个主键列组成。主键用于唯一标识一行,数据存储时需要包含完整的主键值,在数据检索时通过主键可以唯一定位到一行数据。在一种可能的实现方式中,主键不可更改,在路由键属于主键的情况下,路由键也不可更改,从而能够保证路由规则不变。在图2所示的示例中,主键包含多个主键列,主键列不能为空;每行的属性列的个数不限,属性列可以为空。
在另一种可能的实现方式中,路由键不同于主键。在该实现方式中,路由键可以为额外增加的字段,路由键既不属于主键,也不属于属性列。在该实现方式中,路由键不可更改。
在步骤S13中,根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区。
在本公开实施例中,路由键值相同的数据对应的第一存储引擎中的分区相同,即,路由键值相同的行会被索引到第一存储引擎的相同的分区中。
图3示出根据本公开一实施例的数据存储方法中第一存储引擎包含多个分区的示意图。
在一种可能的实现方式中,根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区,包括:根据待存储数据的路由键值,确定待存储数据对应的哈希值;根据待存储数据对应的哈希值,确定待存储数据对应的第一存储引擎的分区。在本公开实施例中,相同的路由键值对应于相同的哈希值,相同的哈希值对应于第一存储引擎中相同的分区。
在步骤S14中,将待存储数据存储在待存储数据对应的第一存储引擎的分区中。
在本公开实施例中,接收第一数据存储请求,若基于第一数据存储请求,确定待存储数据具有路由键,则获取待存储数据的路由键值,根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区,并将待存储数据存储在待存储数据对应的第一存储引擎的分区中,由此能够将路由键值相同的数据存储在第一存储引擎的同一个分区中,从而在通过第一存储引擎进行数据检索时,能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。
例如,一张表的主键由两列主键列构成,第一列为用户ID(UseID),第二列为文档ID(DocID),若用户指定用户ID为路由键,则用户ID相同的所有行就会被写入第一存储引擎的同一个分区中。
在一种可能的实现方式中,该方法还包括:若基于第一数据存储请求,确定待存储数据不具有路由键,则根据待存储数据的完整主键值,确定待存储数据对应的第一存储引擎的分区。其中,完整主键值表示所有主键列的值。在该实现方式中,若待存储数据不具有路由键,则可以根据待存储数据的完整主键值,确定待存储数据对应的哈希值,再根据待存储数据对应的哈希值,确定待存储数据对应的第一存储引擎的分区。
在一种可能的实现方式中,该方法还包括:接收第二数据存储请求,第二数据存储请求用于将待存储数据存储在第二存储引擎中;基于第二数据存储请求,获取待存储数据的完整主键值;根据待存储数据的完整主键值,确定待存储数据对应的第二存储引擎的分区;将待存储数据存储在待存储数据对应的第二存储引擎的分区中。
在一种可能的实现方式中,第二存储引擎为采用范围分区方式的存储引擎。
作为该实现方式的一个示例,第二存储引擎为KeyValue引擎。其中,KeyValue引擎具有单行查询和范围查询等功能。KeyValue引擎在数据分布上通常按照主键有序排序的方式,这种数据分布方式支持按照主键顺序进行范围查找。
在该实现方式中,需要说明的是,尽管以KeyValue引擎作为示例介绍了第二存储引擎如上,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景需求和/或个人喜好灵活确定第二存储引擎的类型,只要是采用范围分区方式的存储引擎即可。
图4示出根据本公开一实施例的数据存储方法中第二存储引擎包含多个分区的示意图。
本公开实施例可以应用于多模型数据库中。在进行数据存储时,可以先将待存储数据写入第二存储引擎中,再由第二存储引擎将待存储数据同步给第一存储引擎。
图5示出根据本公开一实施例的数据检索方法的流程图。该数据检索方法的执行主体可以是数据检索装置。例如,该数据检索方法可以由服务器或其它处理设备执行。在一些可能的实现方式中,该数据检索方法可以通过处理器调用检索器中检索的计算机可读指令的方式来实现。本公开实施例可以应用于多模型数据库中。如图5所示,该数据检索方法包括步骤S51至步骤S53。
在步骤S51中,接收第一数据检索请求,第一数据检索请求用于在第一存储引擎中进行数据检索。
在步骤S52中,若第一数据检索请求包含路由键值,则根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区。
在一种可能的实现方式中,根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区,包括:根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的哈希值;根据第一数据检索请求对应的哈希值,确定第一数据检索请求对应的第一存储引擎的分区。
在步骤S53中,在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索,得到检索结果。
在本公开实施例中,若第一数据检索请求包含路由键值,则可以仅在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索。
在本公开实施例中,接收第一数据检索请求,若第一数据检索请求包含路由键值,则根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区,并在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索,得到检索结果,从而能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。
在一种可能的实现方式中,该方法还包括:在接收第一数据检索请求之后,该方法还包括:若第一数据检索请求不包含路由键值,则根据第一数据检索请求中的完整主键值,确定第一数据检索请求对应的第一存储引擎的分区。在该实现方式中,在接收到第一数据检索请求后,判断第一数据检索请求是否包含路由键值,若第一数据检索请求不包含路由键值,则根据第一数据检索请求中的完整主键值,确定第一数据检索请求对应的第一存储引擎的至少一个分区,在该至少一个分区中进行检索。在获取来自不同分区的检索结果后,需要对来自不同分区的检索结果进行聚合,得到聚合结果。
在一种可能的实现方式中,该方法还包括:接收第二数据检索请求,第二数据检索请求用于在第二存储引擎中进行数据检索;根据第二数据检索请求中的完整主键值,确定第二数据检索请求对应的第二存储引擎的分区;在第二数据检索请求对应的第二存储引擎的分区中,根据第二数据检索请求进行检索,得到检索结果。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行:接收第一数据存储请求,第一数据存储请求用于将待存储数据存储在第一存储引擎中;若基于第一数据存储请求,确定待存储数据具有路由键,则获取待存储数据的路由键值;根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区;将待存储数据存储在对应的第一存储引擎的分区中;接收第一数据检索请求,第一数据检索请求用于在第一存储引擎中进行数据检索;若第一数据检索请求包含路由键值,则根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区;在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索,得到检索结果。
在一种可能的实现方式中,处理器被配置为执行:根据待存储数据的路由键值,确定待存储数据对应的哈希值;根据待存储数据对应的哈希值,确定待存储数据对应的第一存储引擎的分区;根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的哈希值;根据第一数据检索请求对应的哈希值,确定第一数据检索请求对应的第一存储引擎的分区。
在一种可能的实现方式中,路由键属于主键。
在一种可能的实现方式中,路由键不同于主键。
在一种可能的实现方式中,处理器被配置为执行:若基于第一数据存储请求,确定待存储数据不具有路由键,则获取待存储数据的完整主键值;根据待存储数据的完整主键值,确定待存储数据对应的第一存储引擎的分区;若第一数据检索请求不包含路由键值,则根据第一数据检索请求中的完整主键值,确定第一数据检索请求对应的第一存储引擎的分区。
在一种可能的实现方式中,处理器被配置为执行:接收第二数据存储请求,第二数据存储请求用于将待存储数据存储在第二存储引擎中;基于第二数据存储请求,获取待存储数据的完整主键值;根据待存储数据的完整主键值,确定待存储数据对应的第二存储引擎的分区;将待存储数据存储在待存储数据对应的第二存储引擎的分区中;接收第二数据检索请求,第二数据检索请求用于在第二存储引擎中进行数据检索;根据第二数据检索请求中的完整主键值,确定第二数据检索请求对应的第二存储引擎的分区;在第二数据检索请求对应的第二存储引擎的分区中,根据第二数据检索请求进行检索,得到检索结果。
本公开实施例提供的电子设备的处理器的具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
图6示出根据本公开一实施例的数据存储装置的框图。如图6所示,该装置包括:第一接收模块61,用于接收第一数据存储请求,第一数据存储请求用于将待存储数据存储在第一存储引擎中;第一获取模块62,用于若基于第一数据存储请求,确定待存储数据具有路由键,则获取待存储数据的路由键值;第一确定模块63,用于根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区;第一存储模块64,用于将待存储数据存储在待存储数据对应的第一存储引擎的分区中。
在一种可能的实现方式中,第一确定模块63用于:根据待存储数据的路由键值,确定待存储数据对应的哈希值;根据待存储数据对应的哈希值,确定待存储数据对应的第一存储引擎的分区。
在一种可能的实现方式中,路由键属于主键。
在一种可能的实现方式中,路由键不同于主键。
在一种可能的实现方式中,该装置还包括:第二获取模块,用于若基于第一数据存储请求,确定待存储数据不具有路由键,则获取待存储数据的完整主键值;第二确定模块,用于根据待存储数据的完整主键值,确定待存储数据对应的第一存储引擎的分区。
在一种可能的实现方式中,该装置还包括:第二接收模块,用于接收第二数据存储请求,第二数据存储请求用于将待存储数据存储在第二存储引擎中;第三获取模块,用于基于第二数据存储请求,获取待存储数据的完整主键值;第三确定模块,用于根据待存储数据的完整主键值,确定待存储数据对应的第二存储引擎的分区;第二存储模块,用于将待存储数据存储在待存储数据对应的第二存储引擎的分区中。
在本公开实施例中,接收第一数据存储请求,若基于第一数据存储请求,确定待存储数据具有路由键,则获取待存储数据的路由键值,根据待存储数据的路由键值,确定待存储数据对应的第一存储引擎的分区,并将待存储数据存储在待存储数据对应的第一存储引擎的分区中,由此能够将路由键值相同的数据存储在第一存储引擎的同一个分区中,从而在通过第一存储引擎进行数据检索时,能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。
在一些实施例中,本公开实施例提供的数据存储装置具有的功能或包含的模块可以用于执行上文方法实施例描述的数据存储方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
图7示出根据本公开一实施例的数据检索装置的框图。如图7所示,该装置包括:第三接收模块71,用于接收第一数据检索请求,第一数据检索请求用于在第一存储引擎中进行数据检索;第四确定模块72,用于若第一数据检索请求包含路由键值,则根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区;第一检索模块73,用于在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索,得到检索结果。
在一种可能的实现方式中,第四确定模块72用于:根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的哈希值;根据第一数据检索请求对应的哈希值,确定第一数据检索请求对应的第一存储引擎的分区。
在一种可能的实现方式中,该装置还包括:第五确定模块,用于若第一数据检索请求不包含路由键值,则根据第一数据检索请求中的完整主键值,确定第一数据检索请求对应的第一存储引擎的分区。
在一种可能的实现方式中,该装置还包括:第三接收模块,用于接收第二数据检索请求,第二数据检索请求用于在第二存储引擎中进行数据检索;第六确定模块,用于根据第二数据检索请求中的完整主键值,确定第二数据检索请求对应的第二存储引擎的分区;第二检索模块,用于在第二数据检索请求对应的第二存储引擎的分区中,根据第二数据检索请求进行检索,得到检索结果。
在本公开实施例中,接收第一数据检索请求,若第一数据检索请求包含路由键值,则根据第一数据检索请求中的路由键值,确定第一数据检索请求对应的第一存储引擎的分区,并在第一数据检索请求对应的第一存储引擎的分区中,根据第一数据检索请求进行检索,得到检索结果,从而能够大大减小需要检索的数据量,提高第一存储引擎的检索效率,并能节省计算资源。
在一些实施例中,本公开实施例提供的数据检索装置具有的功能或包含的模块可以用于执行上文方法实施例描述的数据检索方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
图8是根据一示例性实施例示出的一种用于数据存储或数据检索的装置1900的框图。例如,装置1900可以被提供为一服务器。参照图8,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作***,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (17)

1.一种数据存储方法,应用于数据库,其特征在于,包括:
接收第一数据存储请求,所述第一数据存储请求用于将待存储数据存储在第一存储引擎中;
若所述第一数据存储请求对应的表具有路由键,则获取所述待存储数据的路由键值;根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区,所述第一存储引擎为采用哈希分区方式的存储引擎;将所述待存储数据存储在根据所述路由键值确定的分区中;
若所述第一数据存储请求对应的表不具有路由键,则获取所述待存储数据的完整主键值;根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第一存储引擎的分区;将所述待存储数据存储在根据所述完整主键值确定的分区中。
2.根据权利要求1所述的方法,其特征在于,根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区,包括:
根据所述待存储数据的路由键值,确定所述待存储数据对应的哈希值;
根据所述待存储数据对应的哈希值,确定所述待存储数据对应的所述第一存储引擎的分区。
3.根据权利要求1所述的方法,其特征在于,所述路由键属于主键。
4.根据权利要求1所述的方法,其特征在于,所述路由键不同于主键。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二数据存储请求,所述第二数据存储请求用于将所述待存储数据存储在第二存储引擎中;
基于所述第二数据存储请求,获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第二存储引擎的分区;
将所述待存储数据存储在所述待存储数据对应的所述第二存储引擎的分区中。
6.一种数据检索方法,应用于数据库,其特征在于,所述数据库采用权利要求1-5中任一项所述的数据存储方法,包括:
接收第一数据检索请求,所述第一数据检索请求用于在第一存储引擎中进行数据检索;
若所述第一数据检索请求包含路由键值,则根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区;
在所述第一数据检索请求对应的所述第一存储引擎的分区中,根据所述第一数据检索请求进行检索,得到检索结果。
7.根据权利要求6所述的方法,其特征在于,根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区,包括:
根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的哈希值;
根据所述第一数据检索请求对应的哈希值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
8.根据权利要求6所述的方法,其特征在于,在接收第一数据检索请求之后,所述方法还包括:
若所述第一数据检索请求不包含路由键值,则根据所述第一数据检索请求中的完整主键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收第二数据检索请求,所述第二数据检索请求用于在第二存储引擎中进行数据检索;
根据所述第二数据检索请求中的完整主键值,确定所述第二数据检索请求对应的所述第二存储引擎的分区;
在所述第二数据检索请求对应的所述第二存储引擎的分区中,根据所述第二数据检索请求进行检索,得到检索结果。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行:
接收第一数据存储请求,所述第一数据存储请求用于将待存储数据存储在第一存储引擎中;
若所述第一数据存储请求对应的表具有路由键,则获取所述待存储数据的路由键值;根据所述待存储数据的路由键值,确定所述待存储数据对应的所述第一存储引擎的分区,所述第一存储引擎为采用哈希分区方式的存储引擎;将所述待存储数据存储在根据所述路由键值确定的分区中;
若所述第一数据存储请求对应的表不具有路由键,则获取所述待存储数据的完整主键值;根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第一存储引擎的分区;将所述待存储数据存储在根据所述完整主键值确定的分区中;
接收第一数据检索请求,所述第一数据检索请求用于在所述第一存储引擎中进行数据检索;
若所述第一数据检索请求包含路由键值,则根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区;
在所述第一数据检索请求对应的所述第一存储引擎的分区中,根据所述第一数据检索请求进行检索,得到检索结果。
11.根据权利要求10所述的电子设备,其特征在于,所述处理器被配置为执行:
根据所述待存储数据的路由键值,确定所述待存储数据对应的哈希值;
根据所述待存储数据对应的哈希值,确定所述待存储数据对应的所述第一存储引擎的分区;
根据所述第一数据检索请求中的路由键值,确定所述第一数据检索请求对应的哈希值;
根据所述第一数据检索请求对应的哈希值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
12.根据权利要求10所述的电子设备,其特征在于,所述路由键属于主键。
13.根据权利要求10所述的电子设备,其特征在于,所述路由键不同于主键。
14.根据权利要求10所述的电子设备,其特征在于,所述处理器被配置为执行:
若所述第一数据检索请求不包含路由键值,则根据所述第一数据检索请求中的完整主键值,确定所述第一数据检索请求对应的所述第一存储引擎的分区。
15.根据权利要求10所述的电子设备,其特征在于,所述处理器被配置为执行:
接收第二数据存储请求,所述第二数据存储请求用于将所述待存储数据存储在第二存储引擎中;
基于所述第二数据存储请求,获取所述待存储数据的完整主键值;
根据所述待存储数据的完整主键值,确定所述待存储数据对应的所述第二存储引擎的分区;
将所述待存储数据存储在所述待存储数据对应的所述第二存储引擎的分区中;
接收第二数据检索请求,所述第二数据检索请求用于在所述第二存储引擎中进行数据检索;
根据所述第二数据检索请求中的完整主键值,确定所述第二数据检索请求对应的所述第二存储引擎的分区;
在所述第二数据检索请求对应的所述第二存储引擎的分区中,根据所述第二数据检索请求进行检索,得到检索结果。
16.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1至5中任意一项所述的方法,或者执行权利要求6至8中任意一项所述的方法。
17.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至5中任意一项所述的方法,或者实现权利要求6至9中任意一项所述的方法。
CN201910167503.0A 2019-03-06 2019-03-06 数据存储、检索方法、电子设备及存储介质 Active CN111666278B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910167503.0A CN111666278B (zh) 2019-03-06 2019-03-06 数据存储、检索方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910167503.0A CN111666278B (zh) 2019-03-06 2019-03-06 数据存储、检索方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111666278A CN111666278A (zh) 2020-09-15
CN111666278B true CN111666278B (zh) 2024-03-26

Family

ID=72382240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910167503.0A Active CN111666278B (zh) 2019-03-06 2019-03-06 数据存储、检索方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111666278B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650759B (zh) * 2020-12-30 2023-10-27 中国平安人寿保险股份有限公司 数据查询方法、装置、计算机设备及存储介质
CN117555968B (zh) * 2024-01-12 2024-04-19 浙江智臾科技有限公司 数据处理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460394A (zh) * 2009-06-22 2012-05-16 思杰***有限公司 用于多核***中的分布式哈希表的***和方法
CN103838770A (zh) * 2012-11-26 2014-06-04 ***通信集团北京有限公司 一种数据逻辑分区的方法和***
CN107689977A (zh) * 2016-08-05 2018-02-13 厦门雅迅网络股份有限公司 分布式缓存和推送的路由方法及其***
CN108446363A (zh) * 2018-03-13 2018-08-24 北京奇安信科技有限公司 一种kv引擎的数据处理方法及装置
CN108920908A (zh) * 2018-06-28 2018-11-30 北京京东尚科信息技术有限公司 数据存储方法、装置和计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740724B2 (en) * 2014-04-29 2017-08-22 International Business Machines Corporation Data partitioning for high-efficiency data retrieval
US10901796B2 (en) * 2017-06-30 2021-01-26 Microsoft Technology Licensing, Llc Hash-based partitioning system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460394A (zh) * 2009-06-22 2012-05-16 思杰***有限公司 用于多核***中的分布式哈希表的***和方法
CN103838770A (zh) * 2012-11-26 2014-06-04 ***通信集团北京有限公司 一种数据逻辑分区的方法和***
CN107689977A (zh) * 2016-08-05 2018-02-13 厦门雅迅网络股份有限公司 分布式缓存和推送的路由方法及其***
CN108446363A (zh) * 2018-03-13 2018-08-24 北京奇安信科技有限公司 一种kv引擎的数据处理方法及装置
CN108920908A (zh) * 2018-06-28 2018-11-30 北京京东尚科信息技术有限公司 数据存储方法、装置和计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
云存储***中动态负载均衡算法研究;田浪军;陈卫卫;陈卫东;李涛;;计算机工程(10);全文 *

Also Published As

Publication number Publication date
CN111666278A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
US9607063B1 (en) NoSQL relational database (RDB) data movement
CN109614402B (zh) 多维数据查询方法和装置
CN107885873B (zh) 用于输出信息的方法和装置
CN111522927B (zh) 基于知识图谱的实体查询方法和装置
CN107480205B (zh) 一种进行数据分区的方法和装置
EP3311305A1 (en) Automated database schema annotation
CN107832440B (zh) 一种数据挖掘方法、装置、服务器及计算机可读存储介质
US10540361B2 (en) Executing conditions with negation operators in analytical databases
JP6932360B2 (ja) オブジェクト検索方法、装置およびサーバ
CN111247528B (zh) 查询处理
CN111666278B (zh) 数据存储、检索方法、电子设备及存储介质
US10552394B2 (en) Data storage with improved efficiency
US9910873B2 (en) Efficient sorting of large data set with duplicate values
US9984108B2 (en) Database joins using uncertain criteria
CN117009430A (zh) 数据管理方法、装置和存储介质及电子设备
US10318507B2 (en) Optimizing tables with too many columns in a database
US11669555B2 (en) System and method of creating index
CN114064729A (zh) 一种数据检索方法、装置、设备及存储介质
CN113448957A (zh) 一种数据查询方法和装置
CN113495891A (zh) 一种数据处理方法和装置
CN111639099A (zh) 全文索引方法及***
CN112988857A (zh) 一种业务数据的处理方法和装置
CN110750555A (zh) 用于生成索引的方法、装置、计算设备以及介质
CN114579573B (zh) 信息检索方法、装置、电子设备以及存储介质
CN110851438A (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
GR01 Patent grant
GR01 Patent grant