CN105183394B - 一种数据存储处理方法和装置 - Google Patents

一种数据存储处理方法和装置 Download PDF

Info

Publication number
CN105183394B
CN105183394B CN201510604139.1A CN201510604139A CN105183394B CN 105183394 B CN105183394 B CN 105183394B CN 201510604139 A CN201510604139 A CN 201510604139A CN 105183394 B CN105183394 B CN 105183394B
Authority
CN
China
Prior art keywords
cache
data
unit
level cache
level
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
CN201510604139.1A
Other languages
English (en)
Other versions
CN105183394A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510604139.1A priority Critical patent/CN105183394B/zh
Publication of CN105183394A publication Critical patent/CN105183394A/zh
Priority to PCT/CN2016/092414 priority patent/WO2017050014A1/zh
Application granted granted Critical
Publication of CN105183394B publication Critical patent/CN105183394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Abstract

本发明公开了一种数据存储处理方法和装置,所述方法包括:将数据分别存储到数据库、一级缓存和二级缓存中;当接收到数据查询请求时,先到一级缓存中进行查询;如果一级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存无法获得查询结果则到二级缓存中进行查询;如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存无法获得查询结果,则到数据库中进行查询;如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。本发明的技术方案减轻了数据库的访问压力,具有减少器材损耗,降低人员维护成本的有益效果。

Description

一种数据存储处理方法和装置
技术领域
本发明涉及网络通信技术领域,特别涉及一种数据存储处理方法和装置。
背景技术
随着网络通信技术的发展和生活节奏的加快,人们获知信息的方式越来越多,同时获知信息的速度也越来越快,例如,许多事件甚至刚刚发生就在网络上广为流传,而提供这些热点新闻的服务方往往需要应付大量用户在短时间内极大量的数据查询。服务方通常将获取到的数据采用数据库进行存储,存储的数据写入硬盘中,而在用户希望查询数据时如果直接从硬盘读取数据,会造成硬盘访问压力过大。通常采取的做法是将数据库中的数据写入缓存中,当接收到数据查询请求时从缓存中查找数据。然而,对于在短时间内接收到大量数据查询请求的情况,即使在读取速度更快的缓存中查找数据有时也会造成缓存访问压力过大,而一旦读取速度更快的缓存崩溃,大量的数据查询请求就会直接读取数据库的硬盘,由于硬盘的读取速度不如缓存,可以预见硬盘也会崩溃。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据存储处理方法和装置。
依据本发明的一个方面,提供了一种数据存储处理方法,包括:
将数据分别存储到所述数据库、一级缓存和二级缓存中;当接收到数据查询请求时,先到一级缓存中进行查询;如果一级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存无法获得查询结果则到二级缓存中进行查询;如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存无法获得查询结果,则到数据库中进行查询;如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。
可选地,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:对于一条数据,先将该条数据写入数据库中,再将该条数据写入一级缓存和二级缓存中;当一级缓存和二级缓存的任一个写入失败时,将该条数据从一级缓存和二级缓存中删除。
可选地,所述一级缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;一级缓存的N个缓存节点与二级缓存的N个缓存节点一一对应地存储同样的数据;N为自然数。
可选地,所述一级缓存由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;所述一级缓存中的每组缓存中的N个缓存节点均与二级缓存的N个缓存节点一一对应地存储同样的数据。
可选地,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:将该数据存储到数据库中;将该数据存储到一级缓存的每组缓存中,以及将该数据存储到二级缓存中。
可选地,所述到一级缓存中进行查询包括:通过一致性哈希算法将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询;或者,根据一级缓存中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询。
可选地,该方法进一步包括:一级缓存和二级缓存存满后,当有新的数据需要存储时,从一级缓存和二级缓存中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存和二级缓存中。
可选地,该方法进一步包括:当对数据库中的数据进行修改时,对一级缓存和二级缓存中的相同数据也做同样的修改。
依据本发明的另一方面,提供了一种数据存储处理装置,包括:数据库单元、一级缓存单元、二级缓存单元、写处理单元和读处理单元;所述写处理单元,适于将数据分别存储到数据库单元、一级缓存单元和二级缓存单元中;所述读处理单元,适于在接收到数据查询请求时,先到一级缓存单元中进行查询;如果一级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存单元无法获得查询结果则到二级缓存单元中进行查询;如果二级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存单元无法获得查询结果,则到数据库单元中进行查询;如果数据库单元中存在所请求的数据则向请求方返回查询到的数据,如果数据库单元中不存在所请求的数据则向请求方返回查询失败的结果。
可选地,所述写处理单元,适于对于一条数据,先将该条数据写入数据库单元中,再将该条数据写入一级缓存单元和二级缓存单元中;当一级缓存单元和二级缓存单元的任一个写入失败时,将该条数据从一级缓存单元和二级缓存单元中删除。
可选地,所述一级缓存单元由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;所述一级缓存单元的N个缓存节点与所述二级缓存单元的N个缓存节点一一对应地存储同样的数据;N为自然数。
可选地,所述一级缓存单元由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;所述一级缓存单元中的每组缓存中的N个缓存节点均与二级缓存单元的N个缓存节点一一对应地存储同样的数据。
可选地,所述写处理单元,适于将数据存储到数据库单元中,将数据存储到一级缓存单元的每组缓存中,以及将数据存储到二级缓存单元中。
可选地,所述读处理单元,适于在到一级缓存单元中进行查询时,通过一致性哈希算法将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询;或者,适于根据一级缓存单元中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询。
可选地,所述写处理单元,适于在一级缓存单元和二级缓存单元存满后,当有新的数据需要存储时,从一级缓存单元和二级缓存单元中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存单元和二级缓存单元中。
可选地,所述写处理单元,进一步适于当对数据库单元中的数据进行修改时,对一级缓存单元和二级缓存单元中的相同数据也做同样的修改。
由上述可知,本发明提供的技术方案通过设置数据的存储方式,将数据分别存储到数据库、一级缓存和二级缓存中,当接收到数据查询请求时,首先到一级缓存中进行查询,如果一级缓存中存在所请求的数据,则向请求方返回查询的数据;如果从一级缓存中无法获得查询结果,则说明一级缓存可能崩溃或处于宕机等不可用状态,这需要再到二级缓存中进行查询,如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,说明此时一级缓存可能崩溃或处于宕机等不可用状态;如果无法从二级缓存中同样无法获得查询结果,则说明二级缓存可能也崩溃或处于宕机等不可用状态,不过此种情况极少出现,此时需要到数据库中进行查询。如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。这样利用一级缓存缓解了数据库的大部分数据查询压力,即使当一级缓存来不及处理过多的数据查询请求时,也可以利用二级缓存对从一级缓存中无法获得查询结果的数据查询请求进行处理,这样基本可以实现对所有数据查询请求的处理,只有在一级缓存和二级缓存中都未获得查询结果的数据查询请求才会到数据库中进行查询,这样的数据查询请求是极为少量,在数据库的处理能力内的,从而极大地减轻了数据库的访问压力,也能更好地应需要在较短时间内处理大量的数据查询请求的情况,具有减少器材损耗,降低人员维护成本的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种数据存储处理方法的流程图;
图2示出了根据本发明一个实施例的一种数据存储处理装置的结构示意图;
图3示出了一种缓存节点的对应关系示意图;
图4示出了又一种缓存节点的对应关系示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种数据存储处理方法的流程图,如图1所示,该方法包括:
步骤S110,将数据分别存储到数据库、一级缓存和二级缓存中。
步骤S120,当接收到数据查询请求时,先到一级缓存中进行查询。
步骤S130,如果一级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存无法获得查询结果则到二级缓存中进行查询。
步骤S140,如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存无法获得查询结果,则到数据库中进行查询。
步骤S150,如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。
可见,如图1所示的方法,通过设置数据的存储方式,将数据分别存储到数据库、一级缓存和二级缓存中,当接收到数据查询请求时,首先到一级缓存中进行查询,如果一级缓存中存在所请求的数据,则向请求方返回查询的数据;如果从一级缓存中无法获得查询结果,则一级缓存可能崩溃或处于宕机等不可用状态,需要进一步到二级缓存中进行查询;如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,说明此时一级缓存确实因处于崩溃或宕机等状态导致不可用;如果同样无法从二级缓存中获得查询结果,则说明二级缓存也可能也崩溃或处于宕机等不可用状态,不过此种情况极少出现,此时需要到数据库中进行查询。此外,还存在一级缓存中没有存储数据查询请求所查询的数据的情形(由于一级缓存和二级缓存的数据具有一致性,在此情形二级缓存中同样也没有所查询的数据),此时需要直接到数据库进行查询。如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。这样利用两级的缓存缓解了数据库的大部分数据查询压力,即使当一级缓存来不及处理过多的数据查询请求时,也可以利用二级缓存对无法从一级缓存中获得查询结果的数据查询请求进行处理,这样基本可以实现对所有数据查询请求的处理,只有在一级缓存和二级缓存中都未获得查询结果的数据查询请求才会到数据库中进行查询,这样的数据查询请求是极为少量,在数据库的处理能力内的,从而极大地减轻了数据库的访问压力,也能更好地应需要在较短时间内处理大量的数据查询请求的情况,具有减少器材损耗,降低人员维护成本的有益效果。
具体地,将数据分别存储到数据库、一级缓存和二级缓存中包括:对于一条数据,先将该条数据写入数据库中,再将该条数据写入一级缓存和二级缓存中;当一级缓存和二级缓存的任一个写入失败时,将该条数据从一级缓存和二级缓存中删除。
这保证了一级缓存、二级缓存和数据库中数据的一致性。由于数据库中的硬盘是数据的主要存储方式,对于一条数据,首先需要将其写入数据库的硬盘中。然后,再将该条数据写入一级缓存和二级缓存中。承担数据查询请求处理的主要是一级缓存,一般先将数据写入一级缓存,再将数据写入二级缓存。当数据写入一级缓存失败时,则将该条数据从一级缓存和二级缓存中删除;同样地,如果数据写入一级缓存成功,而在写入二级缓存失败时,将该条数据从一级缓存和二级缓存中删除。这是由于网络服务器一般采用关系型数据库,数据存储时会对应产生key,而数据查询请求的处理就是通过查询key获得与该key对应的数据。即使一条数据写入失败,如果不删除该条数据的key,就会出现数据查询请求处理错误的情况。例如,一条数据在写入一级缓存时失败,而在一级缓存中依然留下了与该条数据对应的key,而value为空,那么即使该条数据在二级缓存写入成功,由于在处理数据查询请求时先在一级缓存中进行查询,那么实际返回的数据就是空value,并不能正确返回数据查询请求。为了避免这种情况的发生,本实施例中采取当一级缓存和二级缓存的任一个写入失败时,将该条数据从一级缓存和二级缓存中删除,具体可以删除该条数据的key和对应的value。
在本发明的一个实施例中,提供了一种一级缓存和二级缓存的组成方式:一级缓存由N个缓存节点组成,二级缓存由N个缓存节点组成;一级缓存的N个缓存节点与二级缓存的N个缓存节点一一对应地存储同样的数据;N为自然数。
这样的一级缓存和二级缓存实际形成了master-slave模式。一级缓存作为master层,二级缓存作为slave层,二者存储的数据和组成的缓存节点数完全相同,可以看做互为镜像的两层缓存。这样就保证了结构数据查询流程的稳定性,以及便于检查和确认存储数据的一致性。请注意,在上述master-slave模式下,一级缓存和二级缓存并没有主从的关系,只是在查询时访问顺序上的不同。
在本发明的一个实施例中,提供了又一种一级缓存和二级缓存的组成方式:一级缓存由M组缓存组成,每组缓存由N个缓存节点组成,二级缓存由N个缓存节点组成;一级缓存中的每组缓存中的N个缓存节点均与二级缓存的N个缓存节点一一对应地存储同样的数据。
这时一级缓存作为一个集群,类比前述实施例,本实施例中每组缓存与其他任一组缓存都是互为镜像的,所包含的节点数和存储的数据是完全相同的。这是为了处理如下情形:在一批数据查询请求中,对于某条或某些数据的查询请求量格外大。如果将数据查询请求按数据进行平均分配,会造成各缓存节点查询工作量不均,甚至造成缓存节点的崩溃。如,每一缓存节点中存储100条数据,各数据的查询请求量比较一致,都在每分钟300条左右。此时某一缓存节点中的某一条数据突然变成了热点数据,数据查询量急速加大,此时其他各缓存节点并未受到影响,而存储该热点数据的缓存节点无法应付突然产生的大量数据查询请求,导致崩溃。而该数据在其他缓存节点中并未存储,此时大量的数据查询请求无法在一级缓存中获得查询结果,需要到二级缓存中进行查询。而如果二级缓存的配置与一级缓存完全相同,则依然无法处理如此大量的数据查询请求导致存储该热点数据的缓存节点崩溃,大量的数据查询请求访问数据库造成数据库崩溃。此时为了解决该问题,在一级缓存中设置多组缓存,这样在某一数据变为热点数据,数据查询量加大时,可以将数据查询请求按一定的规则分配到一级缓存的各组缓存中,由于每组缓存中都有对应的缓存节点保存该热点数据,可以成功进行数据查询,极好地解决了某条或某些数据查询量大的问题。
具体地,将数据分别存储到所述数据库、一级缓存和二级缓存中包括:将该数据存储到数据库中;将该数据存储到一级缓存的每组缓存中,以及将该数据存储到二级缓存中。
同样地,可以参考前述实施例中数据存储的规则,保证各缓存和数据库中数据的一致性,在此不再赘述。
在本发明的一个实施例中,到一级缓存中进行查询包括:
通过一致性哈希算法将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询;或者,根据一级缓存中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询。
本实施例进一步地说明了,如果一级缓存中包含多组缓存,如何分配查询请求的问题。考虑到本发明的技术方案可以很好地应用在分布式系统中,一个较好解决该问题的方法是采用一致性哈希算法。在具体实施时,可以从以下几个方面进行考虑:
1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓缓存中去,这样可以使得所有的缓存节点都得到利用。
2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓存中,又有新的缓存加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓存中去,而不会被映射到旧的一级缓存中的其他缓存组。
3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓存,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓存上时,由于不同终端所见的缓存范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓存组中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓存中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。
4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓存组中,那么对于一个特定的缓存组而言,也可能被不同的用户映射为不同的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓存的负荷。此时可以根据一级缓存中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存的一组缓存。
在本发明的一个实施例中,该方法进一步包括:
一级缓存和二级缓存存满后,当有新的数据需要存储时,从一级缓存和二级缓存中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存和二级缓存中。
具体地,可以采用LRU算法进行实现。LRU算法,是指在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到。因此只需要在每次调换时,找到最少使用的那个页面调出内存。应用到本实施例中,即可以将在一级缓存和二级缓存存满时,删除很久未访问的数据,具体可以通过设置阈值来实现。在获得存储空间后便可以写入新数据。当然,一般而言该方法适用于短时间内,如果该问题长期出现,维护人员可以根据存储情况等添置新缓存。
在本发明的一个实施例中,该方法进一步包括:
当对数据库中的数据进行修改时,对一级缓存和二级缓存中的相同数据也做同样的修改。
该实施例同样是为了保护数据的一致性。一条数据的key对应的value可能需要不断地更新,如新闻的后续报道。而在修改时,同样先要在数据库硬盘先进行修改,修改成功后还需要对一级缓存和二级缓存中的数据进行修改。依然如前述实施例中提到的数据存储规则,当数据在一级缓存或二级缓存修改失败时,需要同时删除一级缓存和二级缓存中的数据,理由不再赘述。
图2示出了根据本发明一个实施例的一种数据存储处理装置的结构示意图,如图2所示,数据存储处理装置200包括:数据库单元210、一级缓存单元220、二级缓存单元230、写处理单元240和读处理单元250。
写处理单元240,适于将数据分别存储到数据库单元210、一级缓存单元220和二级缓存单元230中。
读处理单元250,适于在接收到数据查询请求时,先到一级缓存单元220中进行查询;如果一级缓存单元220中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存单元220无法获得查询结果则到二级缓存单元230中进行查询;如果二级缓存单元230中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存单230元无法获得查询结果,则到数据库单元210中进行查询;如果数据库单元210中存在所请求的数据则向请求方返回查询到的数据,如果数据库单元210中不存在所请求的数据则向请求方返回查询失败的结果。
可见,图2所示的数据存储处理装置200通过设置数据的存储方式,将数据分别存储到数据库单元210、一级缓存单元220和二级缓存单元230中,当接收到数据查询请求时,首先到一级缓存单元220中进行查询,如果一级缓存单元220中存在所请求的数据,则向请求方返回查询的数据;如果从一级缓存单元220中无法获得查询结果,则一级缓存单元220可能崩溃或处于宕机等不可用状态,需要进一步到二级缓存单元230中进行查询;如果二级缓存单元230中存在所请求的数据则向请求方返回查询到的数据,说明此时一级缓存单元220确实因处于崩溃或宕机等状态导致不可用;如果同一无法从二级缓存单元230中获得查询结果,则说明二级缓存单元230也可能也崩溃或处于宕机等不可用状态,不过此种情况极少出现,此时需要到数据库单元210中进行查询。此外,还存在一级缓存单元220中没有存储数据查询请求所查询的数据的情形(由于一级缓存和二级缓存的数据具有一致性,在此情形二级缓存单元230中同样也没有所查询的数据),此时需要直接到数据库单元210进行查询。如果数据库单元210中存在所请求的数据则向请求方返回查询到的数据,如果数据库单元210中不存在所请求的数据则向请求方返回查询失败的结果。这样利用两级级缓存缓解了数据库的大部分数据查询压力,即使当一级缓存来不及处理过多的数据查询请求时,也可以利用二级缓存对无法从一级缓存中获得查询结果的数据查询请求进行处理,这样基本可以实现对所有数据查询请求的处理,只有在一级缓存和二级缓存中都未获得查询结果的数据查询请求才会到数据库中进行查询,这样的数据查询请求是极为少量,在数据库的处理能力内的,从而极大地减轻了数据库的访问压力,也能更好地应需要在较短时间内处理大量的数据查询请求的情况,具有减少器材损耗,降低人员维护成本的有益效果。
具体地,写处理单元240,适于对于一条数据,先将该条数据写入数据库单元210中,再将该条数据写入一级缓存单元220和二级缓存单元230中;当一级缓存单元210和二级缓存单元220的任一个写入失败时,将该条数据从一级缓存单元210和二级缓存单元220中删除。
这保证了一级缓存单元220、二级缓存单元230和数据库单元210中数据的一致性。由于数据库中的硬盘是数据的主要存储方式,对于一条数据,首先需要将其写入数据库的硬盘中。然后,再将该条数据写入一级缓存和二级缓存中。在本实施例中承担数据查询请求处理的主要是一级缓存单元220,一般先将数据写入一级缓存单元220,再将数据写入二级缓存单元230。当数据写入一级缓存单元220失败时,则将该条数据从一级缓存单元220和二级缓存单元230中删除;同样地,如果数据写入一级缓存单元220成功,而在写入二级缓存单元230失败时,将该条数据从一级缓存单元220和二级缓存单元230中删除。这是由于网络服务器一般采用关系型数据库,数据存储时会对应产生key,而数据查询请求的处理就是通过查询key获得与该key对应的数据。即使一条数据写入失败,如果不删除该条数据的key,就会出现数据查询请求处理错误的情况。例如,一条数据在写入一级缓存单元220时失败,而在一级缓存单元220中依然留下了与该条数据对应的key,而value为空,那么即使该条数据在二级缓存单元230写入成功,由于在处理数据查询请求时先在一级缓存单元220中进行查询,那么实际返回的数据就是空value,并不能正确返回数据查询请求。为了避免这种情况的发生,本实施例中采取当一级缓存单元220和二级缓存单元230的任一个写入失败时,将该条数据从一级缓存单元220和二级缓存单元230中删除,具体可以删除该条数据的key和对应的value。
在本发明的一个实施例中,图2所示的装置中,一级缓存单元220由N个缓存节点组成,二级缓存单元230由N个缓存节点组成;一级缓存单元220的N个缓存节点与二级缓存单元230的N个缓存节点一一对应地存储同样的数据;N为自然数。图3示出了一种缓存节点的对应关系示意图。
如图3所示,这样的一级缓存单元和二级缓存单元实际形成了master-slave模式。一级缓存单元作为master层,二级缓存单元作为slave层,二者存储的数据和组成的缓存节点数完全相同,可以看做互为镜像的两层缓存。这样就保证了结构数据查询流程的稳定性,以及便于检查和确认存储数据的一致性。请注意,在上述master-slave模式下,一级缓存和二级缓存并没有主从的关系,只是在查询时访问顺序上的不同。
在本发明的一个实施例中,图2所示的装置中,一级缓存单元220由M组缓存组成,每组缓存由N个缓存节点组成,二级缓存单元230由N个缓存节点组成;一级缓存单元220中的每组缓存中的N个缓存节点均与二级缓存单元230的N个缓存节点一一对应地存储同样的数据。图4示出了又一种缓存节点的对应关系示意图。
如图4所示,这时一级缓存单元作为一个集群,类比前述实施例,本实施例中每组缓存与其他任一组缓存都是互为镜像的,所包含的节点数和存储的数据是完全相同的。这是为了处理如下情形:在一批数据查询请求中,对于某条或某些数据的查询请求量格外大。如果将数据查询请求按数据进行平均分配,会造成各缓存节点查询工作量不均,甚至造成缓存节点的崩溃。如,每一缓存节点中存储100条数据,各数据的查询请求量比较一致,都在每分钟300条左右。此时某一缓存节点中的某一条数据突然变成了热点数据,数据查询量急速加大,此时其他各缓存节点并未受到影响,而存储该热点数据的缓存节点无法应付突然产生的大量数据查询请求,导致崩溃。而该数据在其他缓存节点中并未存储,此时大量的数据查询请求无法在一级缓存单元中获得查询结果,需要到二级缓存单元中进行查询。而如果二级缓存单元的配置与一级缓存单元完全相同,则依然无法处理如此大量的数据查询请求导致存储该热点数据的缓存节点崩溃,大量的数据查询请求访问数据库造成数据库崩溃。此时为了解决该问题,在一级缓存单元中设置多组缓存,这样在某一数据变为热点数据,数据查询量加大时,可以将数据查询请求按一定的规则分配到一级缓存的各组缓存中,由于每组缓存中都有对应的缓存节点保存该热点数据,可以成功进行数据查询,极好地解决了某条或某些数据查询量大的问题。
在本发明的一个实施例中,上述装置中,写处理单元240,适于将数据存储到数据库单元210中,将数据存储到一级缓存单元220的每组缓存中,以及将数据存储到二级缓存单元230中。
同样地,可以参考前述实施例中数据存储的规则,保证各缓存单元和数据库单元210中数据的一致性,在此不再赘述。
在本发明的一个实施例中,上述装置中,读处理单元250,适于在到一级缓存单元220中进行查询时,通过一致性哈希算法将查询请求定向到一级缓存单元220的一组缓存,到该组缓存中进行查询;或者,适于根据一级缓存单元220中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存单元220的一组缓存,到该组缓存中进行查询。
本实施例进一步地说明了,如果一级缓存单元220中包含多组缓存,如何分配查询请求的问题。考虑到本发明的技术方案可以很好地应用在分布式系统中,一个较好解决该问题的方法是采用一致性哈希算法。在具体实施时,可以从以下几个方面进行考虑:
1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓缓存中去,这样可以使得所有的缓存节点都得到利用。
2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓存中,又有新的缓存加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓存中去,而不会被映射到旧的一级缓存中的其他缓存组。
3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓存,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓存上时,由于不同终端所见的缓存范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓存组中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓存中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。
4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓存组中,那么对于一个特定的缓存组而言,也可能被不同的用户映射为不同的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓存的负荷。此时可以根据一级缓存单元220中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存单元220的一组缓存。
在本发明的一个实施例中,上述装置中,写处理单元240,适于在一级缓存单元220和二级缓存单元230存满后,当有新的数据需要存储时,从一级缓存单元220和二级缓存单元230中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存单元220和二级缓存单元230中。
具体地,可以采用LRU算法进行实现。LRU算法,是指在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到。因此只需要在每次调换时,找到最少使用的那个页面调出内存。应用到本实施例中,即可以将在一级缓存单元220和二级缓存单元230存满时,删除很久未访问的数据,具体可以通过设置阈值来实现。在获得存储空间后便可以写入新数据。当然,一般而言该方法适用于短时间内,如果该问题长期出现,维护人员可以根据存储情况等添置新缓存。
在本发明的一个实施例中,上述装置中,写处理单元240,进一步适于当对数据库单元210中的数据进行修改时,对一级缓存单元220和二级缓存单元230中的相同数据也做同样的修改。
该实施例同样是为了保护数据的一致性。一条数据的key对应的value可能需要不断地更新,如新闻的后续报道。而在修改时,同样先要在数据库单元210先进行修改,修改成功后还需要对一级缓存单元220和二级缓存单元230中的数据进行修改。依然如前述实施例中提到的数据存储规则,当数据在一级缓存单元220或二级缓存单元230修改失败时,需要同时删除一级缓存单元220和二级缓存单元230中的数据,理由不再赘述。
综上所述,本发明的技术方案,通过设置一级缓存和二级缓存处理数据查询请求,缓解了数据库的访问压力,同时根据实施中可能遇见的多种情形,对一级缓存和二级缓存中的缓存节点做了相应的分配,并介绍了不同情形下数据的写入和修改方法,以及具体处理数据查询请求的方式。本发明的技术方案作为一个完整的技术方案,有效地减轻了数据库面对大量数据查询请求时的访问压力,提供了有序、可靠、完整的解决方法,具有减少器材损耗,降低人员维护成本的有益效果。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据存储处理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
依据本发明的一方面,提供了A1、一种数据存储处理方法,其中,该方法包括:
将数据分别存储到所述数据库、一级缓存和二级缓存中;
当接收到数据查询请求时,先到一级缓存中进行查询;
如果一级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存无法获得查询结果则到二级缓存中进行查询;
如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存无法获得查询结果,则到数据库中进行查询;
如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果。
A2、如A1所述的方法,其中,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:
对于一条数据,先将该条数据写入数据库中,再将该条数据写入一级缓存和二级缓存中;
当一级缓存和二级缓存的任一个写入失败时,将该条数据从一级缓存和二级缓存中删除。
A3、如A1所述的方法,其中,
所述一级缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;
一级缓存的N个缓存节点与二级缓存的N个缓存节点一一对应地存储同样的数据;
N为自然数。
A4、如A1所述的方法,其中,
所述一级缓存由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;
所述一级缓存中的每组缓存中的N个缓存节点均与二级缓存的N个缓存节点一一对应地存储同样的数据。
A5、如A4所述的方法,其中,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:
将该数据存储到数据库中;
将该数据存储到一级缓存的每组缓存中,以及将该数据存储到二级缓存中。
A6、如A4所述的方法,其中,所述到一级缓存中进行查询包括:
通过一致性哈希算法将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询;
或者,根据一级缓存中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询。
A7、如A1-A6中任一项所述的方法,其中,该方法进一步包括:
一级缓存和二级缓存存满后,当有新的数据需要存储时,从一级缓存和二级缓存中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存和二级缓存中。
A8、如A1-A6中任一项所述的方法,其中,该方法进一步包括:
当对数据库中的数据进行修改时,对一级缓存和二级缓存中的相同数据也做同样的修改。
依据本发明的另一方面,提供了B9、一种数据存储处理装置,其中,该装置包括:数据库单元、一级缓存单元、二级缓存单元、写处理单元和读处理单元;
所述写处理单元,适于将数据分别存储到数据库单元、一级缓存单元和二级缓存单元中;
所述读处理单元,适于在接收到数据查询请求时,先到一级缓存单元中进行查询;如果一级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存单元无法获得查询结果则到二级缓存单元中进行查询;如果二级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存单元无法获得查询结果,则到数据库单元中进行查询;如果数据库单元中存在所请求的数据则向请求方返回查询到的数据,如果数据库单元中不存在所请求的数据则向请求方返回查询失败的结果。
B10、如B9所述的装置,其中,
所述写处理单元,适于对于一条数据,先将该条数据写入数据库单元中,再将该条数据写入一级缓存单元和二级缓存单元中;当一级缓存单元和二级缓存单元的任一个写入失败时,将该条数据从一级缓存单元和二级缓存单元中删除。
B11、如B9所述的装置,其中,
所述一级缓存单元由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;
所述一级缓存单元的N个缓存节点与所述二级缓存单元的N个缓存节点一一对应地存储同样的数据;
N为自然数。
B12、如B9所述的装置,其中,
所述一级缓存单元由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;
所述一级缓存单元中的每组缓存中的N个缓存节点均与二级缓存单元的N个缓存节点一一对应地存储同样的数据。
B13、如B12所述的装置,其中,
所述写处理单元,适于将数据存储到数据库单元中,将数据存储到一级缓存单元的每组缓存中,以及将数据存储到二级缓存单元中。
B14、如B12所述的装置,其中,
所述读处理单元,适于在到一级缓存单元中进行查询时,通过一致性哈希算法将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询;或者,适于根据一级缓存单元中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询。
B15、如B9-B14中任一项所述的装置,其中,
所述写处理单元,适于在一级缓存单元和二级缓存单元存满后,当有新的数据需要存储时,从一级缓存单元和二级缓存单元中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存单元和二级缓存单元中。
B16、如B9-B14中任一项所述的装置,其中,
所述写处理单元,进一步适于当对数据库单元中的数据进行修改时,对一级缓存单元和二级缓存单元中的相同数据也做同样的修改。

Claims (14)

1.一种数据存储处理方法,其中,该方法包括:
将数据分别存储到数据库、一级缓存和二级缓存中;
当接收到数据查询请求时,先到一级缓存中进行查询;
如果一级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存无法获得查询结果则到二级缓存中进行查询;
如果二级缓存中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存无法获得查询结果,则到数据库中进行查询;
如果数据库中存在所请求的数据则向请求方返回查询到的数据,如果数据库中不存在所请求的数据则向请求方返回查询失败的结果;
其中,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:
对于一条数据,先将该条数据写入数据库中,再将该条数据写入一级缓存和二级缓存中,当一级缓存和二级缓存的任一个写入失败时,将该条数据从一级缓存和二级缓存中删除,以保证一级缓存、二级缓存和数据库中数据的一致性。
2.如权利要求1所述的方法,其中,
所述一级缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;
一级缓存的N个缓存节点与二级缓存的N个缓存节点一一对应地存储同样的数据;
N为自然数。
3.如权利要求1所述的方法,其中,
所述一级缓存由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存由N个缓存节点组成;
所述一级缓存中的每组缓存中的N个缓存节点均与二级缓存的N个缓存节点一一对应地存储同样的数据。
4.如权利要求3所述的方法,其中,所述将数据分别存储到所述数据库、一级缓存和二级缓存中包括:
将该数据存储到数据库中;
将该数据存储到一级缓存的每组缓存中,以及将该数据存储到二级缓存中。
5.如权利要求3所述的方法,其中,所述到一级缓存中进行查询包括:
通过一致性哈希算法将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询;
或者,根据一级缓存中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存的一组缓存,到该组缓存中进行查询。
6.如权利要求1-5中任一项所述的方法,其中,该方法进一步包括:
一级缓存和二级缓存存满后,当有新的数据需要存储时,从一级缓存和二级缓存中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存和二级缓存中。
7.如权利要求1-5中任一项所述的方法,其中,该方法进一步包括:
当对数据库中的数据进行修改时,对一级缓存和二级缓存中的相同数据也做同样的修改。
8.一种数据存储处理装置,其中,该装置包括:数据库单元、一级缓存单元、二级缓存单元、写处理单元和读处理单元;
所述写处理单元,适于将数据分别存储到数据库单元、一级缓存单元和二级缓存单元中;
所述读处理单元,适于在接收到数据查询请求时,先到一级缓存单元中进行查询;如果一级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从一级缓存单元无法获得查询结果则到二级缓存单元中进行查询;如果二级缓存单元中存在所请求的数据则向请求方返回查询到的数据,如果从二级缓存单元无法获得查询结果,则到数据库单元中进行查询;如果数据库单元中存在所请求的数据则向请求方返回查询到的数据,如果数据库单元中不存在所请求的数据则向请求方返回查询失败的结果;
其中,所述写处理单元,适于对于一条数据,先将该条数据写入数据库单元中,再将该条数据写入一级缓存单元和二级缓存单元中,当一级缓存单元和二级缓存单元的任一个写入失败时,将该条数据从一级缓存单元和二级缓存单元中删除,以保证一级缓存单元、二级缓存单元和数据库中数据的一致性。
9.如权利要求8所述的装置,其中,
所述一级缓存单元由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;
所述一级缓存单元的N个缓存节点与所述二级缓存单元的N个缓存节点一一对应地存储同样的数据;
N为自然数。
10.如权利要求8所述的装置,其中,
所述一级缓存单元由M组缓存组成,每组缓存由N个缓存节点组成,所述二级缓存单元由N个缓存节点组成;
所述一级缓存单元中的每组缓存中的N个缓存节点均与二级缓存单元的N个缓存节点一一对应地存储同样的数据。
11.如权利要求10所述的装置,其中,
所述写处理单元,适于将数据存储到数据库单元中,将数据存储到一级缓存单元的每组缓存中,以及将数据存储到二级缓存单元中。
12.如权利要求10所述的装置,其中,
所述读处理单元,适于在到一级缓存单元中进行查询时,通过一致性哈希算法将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询;或者,适于根据一级缓存单元中的各组缓存的负载能力和/或可用状态,将查询请求定向到一级缓存单元的一组缓存,到该组缓存中进行查询。
13.如权利要求8-12中任一项所述的装置,其中,
所述写处理单元,适于在一级缓存单元和二级缓存单元存满后,当有新的数据需要存储时,从一级缓存单元和二级缓存单元中删除访问量低于预设值的数据,并将所述的新的数据写入一级缓存单元和二级缓存单元中。
14.如权利要求8-12中任一项所述的装置,其中,
所述写处理单元,进一步适于当对数据库单元中的数据进行修改时,对一级缓存单元和二级缓存单元中的相同数据也做同样的修改。
CN201510604139.1A 2015-09-21 2015-09-21 一种数据存储处理方法和装置 Active CN105183394B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510604139.1A CN105183394B (zh) 2015-09-21 2015-09-21 一种数据存储处理方法和装置
PCT/CN2016/092414 WO2017050014A1 (zh) 2015-09-21 2016-07-29 一种数据存储处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510604139.1A CN105183394B (zh) 2015-09-21 2015-09-21 一种数据存储处理方法和装置

Publications (2)

Publication Number Publication Date
CN105183394A CN105183394A (zh) 2015-12-23
CN105183394B true CN105183394B (zh) 2018-09-04

Family

ID=54905503

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510604139.1A Active CN105183394B (zh) 2015-09-21 2015-09-21 一种数据存储处理方法和装置

Country Status (2)

Country Link
CN (1) CN105183394B (zh)
WO (1) WO2017050014A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183394B (zh) * 2015-09-21 2018-09-04 北京奇虎科技有限公司 一种数据存储处理方法和装置
CN107231395A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 数据存储方法、装置和系统
CN106777085A (zh) * 2016-12-13 2017-05-31 东软集团股份有限公司 一种数据处理方法、装置及数据查询系统
CN106934044B (zh) * 2017-03-16 2020-02-14 北京深思数盾科技股份有限公司 一种数据处理方法及装置
CN107562829B (zh) * 2017-08-22 2020-09-29 上海幻电信息科技有限公司 数据访问方法及设备
CN108021674A (zh) * 2017-12-06 2018-05-11 浙江远算云计算有限公司 一种同步云端仿真数据的多级缓存传输加速系统
CN108196795B (zh) * 2017-12-30 2020-09-04 惠龙易通国际物流股份有限公司 一种数据存储方法、设备及计算机存储介质
CN108446356B (zh) * 2018-03-12 2023-08-29 上海哔哩哔哩科技有限公司 数据缓存方法、服务器及数据缓存系统
CN109446222A (zh) * 2018-08-28 2019-03-08 厦门快商通信息技术有限公司 一种双缓存的数据存储方法、装置及存储介质
CN110909025A (zh) * 2018-09-17 2020-03-24 深圳市优必选科技有限公司 数据库的查询方法、查询装置及终端
CN109376175A (zh) * 2018-10-24 2019-02-22 上海中商网络股份有限公司 一种数据管理方法、装置、设备及存储介质
CN109710639A (zh) * 2018-11-26 2019-05-03 厦门市美亚柏科信息股份有限公司 一种基于双缓存机制的检索方法、装置及存储介质
CN111372277B (zh) * 2018-12-26 2023-07-14 南京中兴新软件有限责任公司 数据分发方法、装置及存储介质
CN110837521A (zh) * 2019-11-15 2020-02-25 北京金山云网络技术有限公司 数据查询方法、装置和服务器
CN110941619B (zh) * 2019-12-02 2023-05-16 浪潮软件股份有限公司 针对多种使用场景的图数据存储模型和结构的定义方法
CN113360528A (zh) * 2020-03-06 2021-09-07 北京沃东天骏信息技术有限公司 基于多级缓存的数据查询方法和装置
CN111694865A (zh) * 2020-06-02 2020-09-22 中国工商银行股份有限公司 基于分布式系统的四层结构数据获取方法和装置
CN112597354A (zh) * 2020-12-22 2021-04-02 贝壳技术有限公司 一种提供配置参数的方法、装置、系统及存储介质
CN113114642B (zh) * 2021-03-30 2022-12-06 广州宸祺出行科技有限公司 一种接口整合的驾驶员身份认证方法及装置
CN113596177B (zh) * 2021-08-13 2023-06-27 四川虹美智能科技有限公司 智能家居设备的ip地址的解析方法和装置
CN113946591A (zh) * 2021-12-20 2022-01-18 北京力控元通科技有限公司 一种热点数据缓存方法、系统及电子设备
CN114817341B (zh) * 2022-06-30 2022-09-06 北京奥星贝斯科技有限公司 访问数据库的方法和装置
CN115185860B (zh) * 2022-09-14 2022-12-02 沐曦集成电路(上海)有限公司 一种缓存访问系统
CN115934583A (zh) * 2022-11-16 2023-04-07 智慧星光(安徽)科技有限公司 分级缓存方法、装置及系统
CN115905323B (zh) * 2023-01-09 2023-08-18 北京创新乐知网络技术有限公司 适用于多种搜索策略的搜索方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404649A (zh) * 2008-11-11 2009-04-08 阿里巴巴集团控股有限公司 一种基于cache的数据处理系统及其方法
CN103701957A (zh) * 2014-01-14 2014-04-02 互联网域名系统北京市工程研究中心有限公司 Dns递归方法及其系统
CN104683329A (zh) * 2015-02-06 2015-06-03 成都品果科技有限公司 一种移动设备客户端的数据缓存方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692229B (zh) * 2009-07-28 2012-06-20 武汉大学 基于数据内容的三维空间数据自适应多级缓存系统
KR101516245B1 (ko) * 2012-02-24 2015-05-04 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 제스처 기반 게임 시스템을 위한 안전 방안
CN103607312B (zh) * 2013-11-29 2017-02-15 广州华多网络科技有限公司 用于服务器系统的数据请求处理方法及系统
CN103858112A (zh) * 2013-12-31 2014-06-11 华为技术有限公司 一种数据缓存方法、装置及系统
CN104090934B (zh) * 2014-06-26 2017-09-12 山东金质信息技术有限公司 一种标准服务平台分布式并行计算数据库及其检索方法
CN107273522B (zh) * 2015-06-01 2020-01-14 明算科技(北京)股份有限公司 面向多应用的数据存储系统和数据调用方法
CN105183394B (zh) * 2015-09-21 2018-09-04 北京奇虎科技有限公司 一种数据存储处理方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404649A (zh) * 2008-11-11 2009-04-08 阿里巴巴集团控股有限公司 一种基于cache的数据处理系统及其方法
CN103701957A (zh) * 2014-01-14 2014-04-02 互联网域名系统北京市工程研究中心有限公司 Dns递归方法及其系统
CN104683329A (zh) * 2015-02-06 2015-06-03 成都品果科技有限公司 一种移动设备客户端的数据缓存方法及系统

Also Published As

Publication number Publication date
CN105183394A (zh) 2015-12-23
WO2017050014A1 (zh) 2017-03-30

Similar Documents

Publication Publication Date Title
CN105183394B (zh) 一种数据存储处理方法和装置
US10346435B2 (en) System and method for improved performance in a multidimensional database environment
US8176256B2 (en) Cache regions
US10275489B1 (en) Binary encoding-based optimizations at datastore accelerators
US9576012B2 (en) Hierarchical tablespace space management
US10929341B2 (en) Iterative object scanning for information lifecycle management
US8117159B2 (en) Accessing data entities
CN110377436A (zh) 持久性内存的数据存储访问方法、设备及装置
US8819074B2 (en) Replacement policy for resource container
US10579597B1 (en) Data-tiering service with multiple cold tier quality of service levels
CN105471989A (zh) 一种数据存储方法
US10404823B2 (en) Multitier cache framework
US11151081B1 (en) Data tiering service with cold tier indexing
US10817203B1 (en) Client-configurable data tiering service
CN104750757B (zh) 一种基于HBase的数据存储方法和设备
CN105701219A (zh) 一种分布式缓存的实现方法
CN109086462A (zh) 一种分布式文件系统中元数据的管理方法
CN110399096A (zh) 分布式文件系统元数据缓存重删的方法、装置以及设备
CN109684270A (zh) 数据库归档方法、装置、系统、设备及可读存储介质
CN106708636A (zh) 基于集群的数据缓存方法及装置
US10261949B2 (en) Packed row representation for efficient network serialization with direct column indexing in a network switch
US11429311B1 (en) Method and system for managing requests in a distributed system
CN111159140A (zh) 数据处理方法、装置、电子设备及存储介质
CN109716280B (zh) 灵活的内存列存储布置
US20230109530A1 (en) Synchronous object placement for information lifecycle management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220707

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right