CN107679218A - 基于内存的搜索方法及装置 - Google Patents

基于内存的搜索方法及装置 Download PDF

Info

Publication number
CN107679218A
CN107679218A CN201710977902.4A CN201710977902A CN107679218A CN 107679218 A CN107679218 A CN 107679218A CN 201710977902 A CN201710977902 A CN 201710977902A CN 107679218 A CN107679218 A CN 107679218A
Authority
CN
China
Prior art keywords
search
data
internal memory
instruction
dictionary
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
CN201710977902.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.)
Kyushu Medical Information Technology (wuhan) Co Ltd
Original Assignee
Kyushu Medical Information Technology (wuhan) 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 Kyushu Medical Information Technology (wuhan) Co Ltd filed Critical Kyushu Medical Information Technology (wuhan) Co Ltd
Priority to CN201710977902.4A priority Critical patent/CN107679218A/zh
Publication of CN107679218A publication Critical patent/CN107679218A/zh
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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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

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)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种基于内存的搜索方法及装置,所述方法包括:加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中;接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。本发明提供的基于内存的搜索方案,将数据库中多个数据表中的多类型数据统一加载至数据字典后,再进行相应的搜索匹配,减少了搜索中的数据关联,以减少了数据关联所需的资源消耗,极大地提高了搜索速度。

Description

基于内存的搜索方法及装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于内存的搜索方法及装置。
背景技术
目前,信息系统的数据存储还是以关系型数据库为主,虽然当前NoSQL数据库的应用领域有所扩展。但由于关系型数据库的优点,它还是用于保存绝大部分的业务数据信息。SQL语言有丰富的表达能力,可以完成各种复杂的应用场景。在关系型数据库中查询数据还是利用SQL语句,采用表之间的关联来查出所需要的数据。
在实际应用场景中,需要查询的信息往往存在于多个数据表中,就意味着存在多次数据关联。每一次的数据关联都需要消耗资源,系统查询的速度随着关联次数的增加逐步变慢。数据表保存在磁盘中,磁盘的读取速度比较慢,只有在某些数据频繁使用时,才会被数据库系统调用到内存中,此时性能会有所提高。但在大部分情况下,查询的数据是随机分布的,总体上的性能不会得到提升。因此,采用这种方式,由于受制于磁盘的性能,时间运行速度不可能得到根本性的提升。
发明内容
有鉴于此,本发明的目的在于提供一种基于内存的搜索方法及装置,以解决上述问题。
本发明的较佳实施例提供一种基于内存的搜索方法,所述方法包括:
加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中;
接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。
进一步地,所述方法还包括:
为各类型的数据设置各自对应的同步周期;
获取所述数据库中发生改变的数据;
根据所述发生改变的数据的同步周期将该数据同步至所述数据字典中。
进一步地,所述方法还包括:
将各类型的数据的同步运行信息记录至日志文件中,所述同步运行信息包括同步周期以及执行同步的SQL语句。
进一步地,根据所述配置文件分别从数据库的多个数据表中加载所需的多种类型的数据至数据字典中,并保存的步骤,包括:
执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据;
将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中;
将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。
进一步地,所述搜索指令包含多个搜索条件,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果的步骤,包括:
执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据;
将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果;
判断该中间结果是否满足所述搜索指令中的全部搜索条件;
若满足,则将该中间结果作为搜索结果;
若不满足,则返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
进一步地,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果的步骤,还包括:
记录每次搜索操作的搜索运行信息,并将所述搜索运行信息保存至日志文件中,所述搜索运行信息包括搜索时间以及搜索结果所包含的中间结果数目。
本发明另一较佳实施例提供一种基于内存的搜索装置,所述装置包括:
加载模块,用于加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需的多种类型的数据至数据字典中,以将所述数据加载至内存中;
搜索模块,用于接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。
进一步地,所述装置还包括:
设置模块,用于为各类型的数据设置各自对应的同步周期;
获取模块,用于获取所述数据库中发生改变的数据;
同步模块,用于根据所述发生改变的数据的同步周期将该数据同步至所述数据字典中。
进一步地,所述加载模块包括数据获取单元、保存单元以及记录单元;
所述数据获取单元用于执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据;
所述保存单元用于将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中;
所述记录单元用于将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。
进一步地,所述搜索指令包含多个搜索条件,所述搜索模块包括搜索单元、装配单元、判断单元、第一执行单元以及第二执行单元;
所述搜索单元用于执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据;
所述装配单元用于将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果;
所述判断单元用于判断该中间结果是否满足所述搜索指令中的全部搜索条件;
所述第一执行单元用于在该中间结果满足所述搜索指令中的全部搜索条件时,将该中间结果作为搜索结果;
所述第二执行单元用于在该中间结果不满足所述搜索指令中的全部搜索条件时,返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
本发明实施例提供的基于内存的搜索方法及装置,根据加载的内存搜索的配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中。再根据接收到的搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令匹配的搜索结果。通过上述过程,将数据库中多个数据表中的多类型数据统一加载至数据字典后,再进行相应的搜索匹配,减少了搜索中的数据关联,以减少了数据关联所需的资源消耗,极大地提高了搜索速度。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明较佳实施例提供的一种电子设备的示意性结构框图。
图2为本发明较佳实施例提供的基于内存的搜索方法的流程图。
图3为图2中步骤S101的子步骤的流程图。
图4为图2中步骤S102的子步骤的流程图。
图5为本发明较佳实施例提供的基于内存的搜索装置的功能模块框图。
图6为本发明较佳实施例提供的加载模块的功能模块框图。
图7为本发明较佳实施例提供的搜索模块的功能模块框图。
图标:100-电子设备;110-基于内存的搜索装置;111-加载模块;1111-数据获取单元;1112-保存单元;1113-记录单元;112-搜索模块;1121-搜索单元;1122-装配单元;1123-判断单元;1124-第一执行单元;1125-第二执行单元;113-设置模块;114-获取模块;115-同步模块;120-处理器;130-存储器。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参阅图1,为本发明较佳实施例提供的一种电子设备100的示意性结构框图。所述电子设备100包括基于内存的搜索装置110、处理器120及存储器130。其中,所述存储器130与处理器120之间直接或间接地电性连接,以实现数据的传输或交互。所述基于内存的搜索装置110包括至少一个可以软件或固件的形式存储于所述存储器130中或固化在所述电子设备100的操作系统中的软件功能模块。所述处理器120用于执行存储器130中存储的可执行模块,例如所述基于内存的搜索装置110包括的软件功能模块或计算机程序。
在本实施例中,所述电子设备100可以是独立的具有数据处理能力的终端设备,例如个人电脑、笔记本电脑等。
如图2所示,是本发明实施例提供的一种应用于图1所示的电子设备100的基于内存的搜索方法的示意性流程图。所应说明的是,本实施例提供的方法不以图2及以下所述的顺序为限制。下面将对图2所示的具体流程进行详细的阐述。
步骤S101,加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中。
在实际场景中,所需查询的数据源往往很多,例如多达几十处,而这些数据源位于不同的数据列表中,在进行查询时往往存在关联,则需要分别至不同的数据列表进行搜索,造成查询效率低下。在本实施例中,将需要查询的数据全部加载至数据字典中进行保存,以将数据加载至系统内存中,以提高数据查询匹配的效率。可选地,在本实施例中,加载内存搜索的配置文件,根据配置文件从数据库的多个数据表中加载所需的多种类型的数据至数据字典中并保存。
在本实施例中,所述的数据字典为C#语句中的Dictory字典类型,通过key能快速找到value(所存对象)的能力。利用数据字典以用于数据的查询匹配其效率很高,远超过一般的数组或列表。
请参阅图3,在本实施例中,步骤S101可以包括步骤S1011、步骤S1012以及步骤S1013三个子步骤。
步骤S1011,执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据。
步骤S1012,将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中。
步骤S1013,将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。
可选地,在本实施例中,利用.net中的Linq技术,根据配置文件来进行关联查询。Linq是语言集成查询(Language Integrated Query)的简称,想要利用Linq进行查询,数据源需要支持IEnumerable或IEnumerable(T)泛型接口或派生接口(如泛型的IQueryable(T)接口)。通过使用Linq以查询预加载至内存中的数据,可达到快速得到查询结果的效果。
SQL语句是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。利用Linq查询可指定要从数据源中检索的信息,且还可指定在返回这些信息之前如何对其进行排序、分组以及结构化。
系统执行预设的SQL语句,根据配置文件从数据库的多个数据表中获取查询所需的每一种类型的数据。将获取到的多类型数据依次加载至数据字典中,此时所需查询的数据全部加载至系统内存中。可选地,可采用例如from子句来获取数据源,在某些情况下,原数据表中的元素中本身可能是序列或包含序列,则可采用复合from子句以获取含内部集合的数据源。
此外,系统将每一种类型的数据的初始化运行信息记录至日志文件中,其中,包括初始化所执行的SQL语句以及初始化的执行时间等。
步骤S102,接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。
在本实施例中,接收用户所输入的搜索指令,该搜索指令包括了具体的搜索条件。应当理解,该搜索指令所包含的搜索条件往往为多个,在这种情况下,一次搜索操作不能得到正确的搜索结果。因此需要依次根据各搜索条件对数据字典中的多类型数据进行搜索以及装配以得到最终搜索结果。
请参阅图4,在本实施例中,步骤S102可以包括步骤S1021、步骤S1022、步骤S1023、步骤S1024以及步骤S1025五个子步骤。
步骤S1021,执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据。
步骤S1022,将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果。
步骤S1023,判断该中间结果是否满足所述搜索指令中的全部搜索条件,若满足,则执行以下步骤S1024,若不满足,则返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
步骤S1024,将该中间结果作为搜索结果。
可选地,在用户搜索指令的触发下执行搜索操作,解析搜索指令中包含的具体的搜索条件。若搜索条件为多个,则需依次根据各搜索条件来进行相应搜索。可选地,可采用例如复合from子句来进行多条件搜索。例如若搜索指令为“搜索出所有学生中高三年级的学生成绩在90分以上的”,则可以将搜索指令解析为三个搜索条件,即“学生”、“高三年级”以及“成绩在90分以上”。首先遍历学生对象集合中的每个学生对象,然后用另一个from子句,对每个学生对象的表明年级的属性进行遍历,筛选出年级为高三年级的学生对象,再用另一个from子句对筛选出的学生对象中的成绩属性进行遍历,筛选出含有90分以上的学生信息进行返回。
则在上述过程,在进行第二次搜索操作,即筛选出学生对象中的高三年级的学生对象时,其实是结合了第一次搜索操作的搜索数据的,即第二次的搜索操作的数据和上一次的搜索操作即第一次搜索操作的搜索数据相装配,得到第二次搜索操作的中间结果。若此时,该中间结果满足所有的搜索条件,则可将该中间结果作为最终的搜索结果返回。在本实施例中,第二搜索操作的中间结果并未满足所有的搜索条件,则需要在第二搜索操作的基本上,进行第三次的搜索操作。在进行第三次搜索操作时,将搜索出的数据与第二搜索操作的搜索数据相装配,作为第三次搜索操作的中间结果。在本实施例中,第三次搜索操作的中间结果已满足所有的搜索条件,则可将第三次搜索操作的中间结果作为最终的搜索结果并返回。
步骤S1025,记录每次搜索操作的搜索运行信息,并将所述搜索运行信息保存至日志文件中,所述搜索运行信息包括搜索时间以及搜索结果所包含的中间结果数目。
在本实施例中,还可将每次搜索操作的搜索运行信息保存至日志文件中,其中,搜索运行信息包括每次搜索操作的搜索时间、最终的搜索结果包括的中间结果数目等。
可选地,在本实施例中,所述方法还包括以下步骤:
步骤S103,为各类型的数据设置各自对应的同步周期。
步骤S104,获取所述数据库中发生改变的数据。
步骤S105,根据所述发生改变的数据的同步周期将该数据同步至所述数据字典中。
在本实施例中,数据库中各类型的数据源均会不断地更新,但不同类型的数据源更新的频率有较大差异。针对不同类型的数据源定义不同的同步周期,以将数据库中发生改变的数据定时同步至数据字典中。在本实施例中,在设置同步周期时,需要考虑到降低数据库系统的负荷。在本实施例中,对不同类型的数据设置同步周期时,可使得同时进行数据同步的运行时间一般不超过0.2秒。应当理解,在实际场景中,业务上要求数据更新要及时,但也不是要求严格精确,因为在技术上严格精确一方面不可能完全达到,另一方面在实际上起到的意义不大。因此,可结合多方面的因素来考虑数据更新规则。
在本实施例中,获取数据库中已发生改变的,即已更新过的数据,并根据这些数据其各自对应的同步周期将发生改变的数据同步至数据字典中,使数据字典中的数据与数据库中的数据源达到同步更新。
此外,在本实施例中,所述方法还包括以下步骤:
步骤S106,将各类型的数据的同步运行信息记录至日志文件中,所述同步运行信息包括同步周期以及执行同步的SQL语句。
请参阅图5,为本发明另一较佳实施例提供的基于内存的搜索装置110的功能模块框图。所述基于内存的搜索装置110包括加载模块111、搜索模块112、设置模块113、获取模块114以及同步模块115。
所述加载模块111用于加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中。具体地,该加载模块111可用于执行图2中所示的步骤S101,具体的操作方法可参考步骤S101的详细描述。
所述搜索模块112用于接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。具体地,该搜索模块112可用于执行图2中所示的步骤S102,具体的操作方法可参考步骤S102的详细描述。
所述设置模块113用于为各类型的数据设置各自对应的同步周期。具体地,该设置模块113可用于执行图2中所示的步骤S103,具体的操作方法可参考步骤S103的详细描述。
所述获取模块114用于获取所述数据库中发生改变的数据。具体地,该获取模块114可用于执行图2中所示的步骤S104,具体的操作方法可参考步骤S104的详细描述。
所述同步模块115用于根据所述发生改变的数据的同步周期将该数据同步至所述数据字典中。具体地,该同步模块115可用于执行图2中所示的步骤S105,具体的操作方法可参考步骤S105的详细描述。
请参阅图6,在本实施例中,所述加载模块111包括数据获取单元1111、保存单元1112以及记录单元1113。
所述数据获取单元1111用于执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据。具体地,该数据获取单元1111可用于执行图3中所示的步骤S1011,具体的操作方法可参考步骤S1011的详细描述。
所述保存单元1112用于将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中。具体地,该保存单元1112可用于执行图3中所示的步骤S1012,具体的操作方法可参考步骤S1012的详细描述。
所述记录单元1113用于将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。具体地,该记录单元1113可用于执行图3中所示的步骤S1013,具体的操作方法可参考步骤S1013的详细描述。
请参阅图7,在本实施例中,所述搜索指令包括多个搜索条件,所述搜索模块112包括搜索单元1121、装配单元1122、判断单元1123、第一执行单元1124以及第二执行单元1125。
所述搜索单元1121用于执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据。具体地,该搜索单元1121可用于执行图4中所示的步骤S1021,具体的操作方法可参考步骤S1021的详细描述。
所述装配单元1122用于将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果。具体地,该装配单元1122可用于执行图4中所示的步骤S1022,具体的操作方法可参考步骤S1022的详细描述。
所述判断单元1123用于判断该中间结果是否满足所述搜索指令中的全部搜索条件。具体地,该判断单元1123可用于执行图4中所示的步骤S1023,具体的操作方法可参考步骤S1023的详细描述。
所述第一执行单元1124用于在该中间结果满足所述搜索指令中的全部搜索条件时,将该中间结果作为搜索结果。具体地,该第一执行单元1124可用于执行图4中所示的步骤S1024,具体的操作方法可参考步骤S1024的详细描述。
所述第二执行单元1125用于在该中间结果不满足所述搜索指令中的全部搜索条件时,返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
综上所述,本发明实施例提供的基于内存的搜索方法及装置,根据加载的内存搜索的配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中。再根据接收到的搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令匹配的搜索结果。通过上述过程,将数据库中多个数据表中的多类型数据统一加载至数据字典后,再进行相应的搜索匹配,减少了搜索中的数据关联,以减少了数据关联所需的资源消耗,极大地提高了搜索速度。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于内存的搜索方法,其特征在于,所述方法包括:
加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中;
接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。
2.根据权利要求1所述的基于内存的搜索方法,其特征在于,所述方法还包括:
为各类型的数据设置各自对应的同步周期;
获取所述数据库中发生改变的数据;
根据所述发生改变的数据的同步周期将该发生改变的数据同步至所述数据字典中。
3.根据权利要求2所述的基于内存的搜索方法,其特征在于,所述方法还包括:
将各类型的数据的同步运行信息记录至日志文件中,所述同步运行信息包括同步周期以及执行同步的SQL语句。
4.根据权利要求1所述的基于内存的搜索方法,其特征在于,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,并保存的步骤,包括:
执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据;
将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中;
将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。
5.根据权利要求1所述的基于内存的搜索方法,其特征在于,所述搜索指令包含多个搜索条件,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果的步骤,包括:
执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据;
将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果;
判断该中间结果是否满足所述搜索指令中的全部搜索条件;
若满足,则将该中间结果作为搜索结果;
若不满足,则返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
6.根据权利要求5所述的基于内存的搜索方法,其特征在于,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果的步骤,还包括:
记录每次搜索操作的搜索运行信息,并将所述搜索运行信息保存至日志文件中,所述搜索运行信息包括搜索时间以及搜索结果所包含的中间结果数目。
7.一种基于内存的搜索装置,其特征在于,所述装置包括:
加载模块,用于加载内存搜索的配置文件,根据所述配置文件分别从数据库的多个数据表中加载所需搜索的多种类型的数据至数据字典中,以将所述数据加载至内存中;
搜索模块,用于接收搜索指令,根据所述搜索指令在所述数据字典中进行搜索、装配以得到与所述搜索指令相匹配的搜索结果。
8.根据权利要求7所述的基于内存的搜索装置,其特征在于,所述装置还包括:
设置模块,用于为各类型的数据设置各自对应的同步周期;
获取模块,用于获取所述数据库中发生改变的数据;
同步模块,用于根据所述发生改变的数据的同步周期将该发生改变的数据同步至所述数据字典中。
9.根据权利要求7所述的基于内存的搜索装置,其特征在于,所述加载模块包括数据获取单元、保存单元以及记录单元;
所述数据获取单元用于执行预设的SQL语句,根据所述配置文件从数据库的多个数据表中获取所需查询的多种类型的数据;
所述保存单元用于将各所述数据保存至数据字典中,以将各所述数据加载至系统内存中;
所述记录单元用于将各种类型的数据的初始化运行信息记录至日志文件中,所述初始化运行信息包括执行的SQL语句以及执行的时间。
10.根据权利要求7所述的基于内存的搜索装置,其特征在于,所述搜索指令包含多个搜索条件,所述搜索模块包括搜索单元、装配单元、判断单元、第一执行单元以及第二执行单元;
所述搜索单元用于执行搜索操作,在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据;
所述装配单元用于将该次搜索操作搜索出的数据与上一次搜索操作搜索出的数据进行装配,生成该次搜索操作的中间结果;
所述判断单元用于判断该中间结果是否满足所述搜索指令中的全部搜索条件;
所述第一执行单元用于在该中间结果满足所述搜索指令中的全部搜索条件时,将该中间结果作为搜索结果;
所述第二执行单元用于在该中间结果不满足所述搜索指令中的全部搜索条件时,返回执行在所述数据字典中搜索出与所述搜索指令中的其中一个搜索条件相匹配的数据的步骤,直到获得的中间结果满足所述搜索指令中的全部搜索条件为止。
CN201710977902.4A 2017-10-17 2017-10-17 基于内存的搜索方法及装置 Pending CN107679218A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710977902.4A CN107679218A (zh) 2017-10-17 2017-10-17 基于内存的搜索方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710977902.4A CN107679218A (zh) 2017-10-17 2017-10-17 基于内存的搜索方法及装置

Publications (1)

Publication Number Publication Date
CN107679218A true CN107679218A (zh) 2018-02-09

Family

ID=61140927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710977902.4A Pending CN107679218A (zh) 2017-10-17 2017-10-17 基于内存的搜索方法及装置

Country Status (1)

Country Link
CN (1) CN107679218A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800237A (zh) * 2019-01-28 2019-05-24 广州酷狗计算机科技有限公司 数据查询方法、装置和计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329685A (zh) * 2008-07-30 2008-12-24 烽火通信科技股份有限公司 一种家庭网关上内存数据库的实现方法
CN101706801A (zh) * 2009-11-17 2010-05-12 广州从兴电子开发有限公司 一种内存数据库数据的管理方法及系统
CN104408180A (zh) * 2014-12-15 2015-03-11 北京国双科技有限公司 内存数据的查询方法和装置
CN104462108A (zh) * 2013-09-17 2015-03-25 中兴通讯股份有限公司 数据库结构对象处理方法及装置
CN104504158A (zh) * 2015-01-19 2015-04-08 浪潮(北京)电子信息产业有限公司 一种快速更新业务的内存缓存的方法和设备
CN106503008A (zh) * 2015-09-07 2017-03-15 网宿科技股份有限公司 文件存储方法和装置及文件查询方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329685A (zh) * 2008-07-30 2008-12-24 烽火通信科技股份有限公司 一种家庭网关上内存数据库的实现方法
CN101706801A (zh) * 2009-11-17 2010-05-12 广州从兴电子开发有限公司 一种内存数据库数据的管理方法及系统
CN104462108A (zh) * 2013-09-17 2015-03-25 中兴通讯股份有限公司 数据库结构对象处理方法及装置
CN104408180A (zh) * 2014-12-15 2015-03-11 北京国双科技有限公司 内存数据的查询方法和装置
CN104504158A (zh) * 2015-01-19 2015-04-08 浪潮(北京)电子信息产业有限公司 一种快速更新业务的内存缓存的方法和设备
CN106503008A (zh) * 2015-09-07 2017-03-15 网宿科技股份有限公司 文件存储方法和装置及文件查询方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800237A (zh) * 2019-01-28 2019-05-24 广州酷狗计算机科技有限公司 数据查询方法、装置和计算机可读存储介质

Similar Documents

Publication Publication Date Title
US11068439B2 (en) Unsupervised method for enriching RDF data sources from denormalized data
US11907244B2 (en) Modifying field definitions to include post-processing instructions
CN102982075B (zh) 支持访问异构数据源的系统和方法
CN109947770A (zh) 一种数据库查询方法、终端设备及存储介质
CN102236672A (zh) 一种数据导入方法及装置
US20070239673A1 (en) Removing nodes from a query tree based on a result set
EP3671526B1 (en) Dependency graph based natural language processing
US20150278268A1 (en) Data encoding and corresponding data structure
CN109766354A (zh) 业务数据查询的优化方法、装置及设备
US9582572B2 (en) Personalized search library based on continual concept correlation
CN107291964B (zh) 一种基于HBase实现模糊查询的方法
CN105956123A (zh) 基于局部更新软件的数据处理方法及装置
CN106982150A (zh) 一种基于Hadoop的移动互联网用户行为分析方法
CN108241540A (zh) 一种跨数据源查询的任务调度方法以及装置
US20160371284A1 (en) Componentized Data Storage
US20160103906A1 (en) Generating and implementing local search engines over large databases
CN104765767B (zh) 针对智能学习的知识存储系统及其知识搜索方法
CN103077192A (zh) 一种数据处理方法及其系统
CN105718521A (zh) 一个基于Wavelet Tree的网络数据包索引系统
CN105138649A (zh) 数据的搜索方法、装置及终端
EP2909744A1 (en) Performing a search based on entity-related criteria
US8407255B1 (en) Method and apparatus for exploiting master-detail data relationships to enhance searching operations
US20160125095A1 (en) Lightweight temporal graph management engine
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN107679218A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180209