CN113220713A - 一种数据查询方法、装置、电子设备及存储介质 - Google Patents
一种数据查询方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113220713A CN113220713A CN202110480204.XA CN202110480204A CN113220713A CN 113220713 A CN113220713 A CN 113220713A CN 202110480204 A CN202110480204 A CN 202110480204A CN 113220713 A CN113220713 A CN 113220713A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- database
- key
- local cache
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000006870 function Effects 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000006399 behavior Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 12
- 238000010276 construction Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- RYYVLZVUVIJVGH-UHFFFAOYSA-N caffeine Chemical compound CN1C(=O)N(C)C(=O)C2=C1N=CN2C RYYVLZVUVIJVGH-UHFFFAOYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- LPHGQDQBBGAPDZ-UHFFFAOYSA-N Isocaffeine Natural products CN1C(=O)N(C)C(=O)C2=C1N(C)C=N2 LPHGQDQBBGAPDZ-UHFFFAOYSA-N 0.000 description 1
- 241000508269 Psidium Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229960001948 caffeine Drugs 0.000 description 1
- VJEONQKOZGKCAK-UHFFFAOYSA-N caffeine Natural products CN1C(=O)N(C)C(=O)C2=C1C=CN2C VJEONQKOZGKCAK-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据查询方法、装置、电子设备及存储介质。方法包括:获取来自客户端的第一数据查询请求,第一数据查询请求包括第一键值对查询信息,根据第一键值对查询信息查询本地缓存单元,若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库,若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。如此,通过本地缓存单元和只读数据库的结合,在提供数据查询这个基本功能的时候,还能从全局上提高数据查询效率,同时可以在提升读操作的性能并降低内存占用。
Description
技术领域
本公开涉及互联网技术领域,尤其涉及一种数据查询方法、装置、电子设备及存储介质。
背景技术
随着信息技术的不断发展,数据增长呈爆炸式趋势,并产生了大量需要存储和查询的数据。现有技术中一般通过关系型数据库来进行数据的存储和查询,而关系型数据库中一般通过无法动态扩展存储容量的单个库来进行数据的存储与查询,因而,当数据量庞大时,势必会使得关系型数据库的存储压力过大而无法满足海量数据的存储需求。另外,从单个数据库中存储的大量数据中进行数据的查询时,也势必会耗费更多的查询时间,从而造成查询效率较低,无法满足用户的查询需求。因而,如何提高数据查询效率、扩展数据存储容量成为本领域技术人员亟待解决的问题。
发明内容
本公开提供一种数据查询方法、装置、电子设备及存储介质,以至少解决相关技术中查询效率低的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据查询方法,包括:
获取来自客户端的第一数据查询请求;第一数据查询请求包括第一键值对查询信息;
根据第一键值对查询信息查询本地缓存单元;
若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库;
若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。
在一些可能的实施例中,本地缓存单元包括第一本地缓存单元和第二本地缓存单元;
第一本地缓存单元用于存储非只读数据库来源的数据,第二本地缓存单元用于存储只读数据库来源的数据。
在一些可能的实施例中,根据查询信息查询本地缓存单元包括:
根据第一键值对查询信息查询第一本地缓存单元;
若第一本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询第二本地缓存单元。
在一些可能的实施例中,上述方法还包括:
从具有读写功能的原始数据库中获取数据;
对数据进行压缩处理,得到压缩后的数据;
基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述方法还包括:
对具有读写功能的原始数据库对应的数据访问请求的数量进行监测;
若数量大于等于预设阈值,从原始数据库中确定与数据访问请求对应的数据;
对数据进行压缩处理,得到压缩后的数据;
基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述方法还包括:
获取来自后台的第二数据查询请求,第二数据查询请求包括第二键值对查询信息;
根据第二键值对查询信息查询原始数据库;
若原始数据库中存在第二键值对查询信息对应的第二目标数据,向后台反馈第二目标数据。
在一些可能的实施例中,上述方法还包括:
若检测到来自后台的数据更新行为,将数据更新行为对应的数据存储在第一本地缓存单元中;数据更新行为包括对第二目标数据的更新或者删除,增加第三目标数据;
将数据更新行为对应的数据同步至原始数据库中。
根据本公开实施例的第二方面,提供一种数据查询装置,包括:
请求获取模块,被配置为执行获取来自客户端的第一数据查询请求;第一数据查询请求包括第一键值对查询信息;
第一查询模块,被配置为执行根据第一键值对查询信息查询本地缓存单元;
第二查询模块,被配置为执行若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库;
第一处理模块,被配置为执行若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。
在一些可能的实施例中,本地缓存单元包括第一本地缓存单元和第二本地缓存单元;
第一本地缓存单元用于存储非只读数据库来源的数据,第二本地缓存单元用于存储只读数据库来源的数据。
在一些可能的实施例中,上述第一查询模块包括:
第一查询子模块,被配置为执行根据第一键值对查询信息查询第一本地缓存单元;
第二查询子模块,被配置为执行若第一本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询第二本地缓存单元。
在一些可能的实施例中,上述装置还包括:
数据获取模块,被配置为执行从具有读写功能的原始数据库中获取数据;
数据压缩模块,被配置为执行对数据进行压缩处理,得到压缩后的数据;
数据库构建模块,被配置为执行基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述装置还包括:
监测模块,被配置为执行对具有读写功能的原始数据库对应的数据访问请求的数量进行监测;
数据获取模块,被配置为执行若数量大于等于预设阈值,从原始数据库中确定与数据访问请求对应的数据;
数据压缩模块,被配置为执行对数据进行压缩处理,得到压缩后的数据;
数据库构建模块,被配置为执行基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述装置还包括:
请求获取模块,被配置为执行获取来自后台的第二数据查询请求,第二数据查询请求包括第二键值对查询信息;
第三查询模块,被配置为执行根据第二键值对查询信息查询原始数据库;
第二处理模块,被配置为执行若原始数据库中存在第二键值对查询信息对应的第二目标数据,向后台反馈第二目标数据。
在一些可能的实施例中,上述装置还包括:
数据存储模块,被配置为执行若检测到来自后台的数据更新行为,将数据更新行为对应的数据存储在第一本地缓存单元中;数据更新行为包括对第二目标数据的更新或者删除,增加第三目标数据;
数据同步模块,被配置为执行将数据更新行为对应的数据同步至原始数据库中。
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现如上述第一方面中任一项的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例的第一方面中任一项的方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从可读存储介质读取并执行计算机程序,使得计算机设备执行本公开实施例的第一方面中任一项的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
获取来自客户端的第一数据查询请求,第一数据查询请求包括第一键值对查询信息,根据第一键值对查询信息查询本地缓存单元,若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库,若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。如此,通过本地缓存单元和只读数据库的结合,在提供数据查询这个基本功能的时候,还能从全局上提高数据查询效率,同时可以在提升读操作的性能并降低内存占用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种应用环境的示意图;
图2是根据一示例性实施例示出的一种数据查询方法的流程图;
图3是根据一示例性实施例示出的一种数据查询方法的流程图;
图4是根据一示例性实施例示出的一种构建数据库方法的流程图;
图5是根据一示例性实施例示出的一种数据查询方法的流程图;
图6是根据一示例性实施例示出的一种更新数据库方法的流程图;
图7是根据一示例性实施例示出的一种数据查询装置的框图;
图8是根据一示例性实施例示出的一种用于数据查询的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的第一对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
请参阅图1,图1是根据一示例性实施例示出的一种数据查询方法的应用环境的示意图,如图1所示,该应用环境可以包括客户端01和服务器02。
在一个可选的实施例中,上述的客户端01可以是向服务器02发送第一数据查询请求的客户端,且最后会接收到服务器02反馈的目标数据。其中,上述的客户端01可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的电子设备。也可以为运行于上述电子设备的软体,例如应用程序、小程序等。可选的,电子设备上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows、Unix等。
在一个可选的实施例中,服务器02可以是基于客户端01发送的第一数据查询请求对本地缓存单元和只读数据库进行查询的服务器。可选的,服务器02可以包括是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
此外,需要说明的是,图1所示的仅仅是本公开提供的数据查询方法的一种应用环境,在实际应用中,还可以包括其他应用环境,比如说,一台服务器可以同时提供一定数量的客户端的数据查询。
可选的,客户端和服务器之间可以通过有限链路提进行连接,也可以通过无线链路进行连接,具体连接方式可基于实际的应用场景确定。
图2是根据一示例性实施例示出的一种数据查询方法的流程图,如图2所示,数据查询方法可以应用于服务器,也可以应用于其他节点,包括以下步骤:
在步骤S201中,获取来自客户端的第一数据查询请求;第一数据查询请求包括第一键值对查询信息。
在一些可能的实施例中,服务器可以获取来自客户端的第一数据查询请求,由于该第一数据查询请求中必然带着要查询的数据的信息,因此,服务器可以从该第一数据查询请求中解析得到查询信息。上述的查询信息为第一键值对key-value查询信息。
在一些可能的实施例中,第一数据查询请求中除了包括第一键值对查询信息,还可以包括标识请求来源的标识信息,若该第一数据查询请求来自客户端,则在第一数据查询请求中可以携带客户端的标识。可选的,该客户端的标识可以包括客户端的唯一标识符,客户端所属用户的用户标识等等。
本公开实施例中,该第一键值对查询信息可以是某个待查的目标数据的标识信息,比如ID,该标识信息可以以字段、字符串的形式来表示;查询信息还可以是某个待查的目标数据中的关键字。
举个例子,若客户端想要查询某个视频模板的具体信息,则可以向服务器发送第一数据查询请求,该第一数据查询请求中包括的第一键值对查询信息可以是该视频模板的具体信息的关键字Key。
在步骤S203中,根据第一键值对查询信息查询本地缓存单元。
在步骤S205中,若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库。
在一些可能的实施例中,服务器可以包括本地缓存单元和数据库,该本地缓存单元可以存储来自该数据库的数据。也就是说,如果之前其他的客户端查询到数据库中的某个数据,在服务器将查询到的该数据进行反馈的时候,可以将该数据存储在本地缓存单元,以便后续其他客户端再次查询该数据时,可以先查询该本地缓存单元,从而提高访问效率。
在该实施例中,服务器可以根据第一键值对查询信息查询本地缓存单元,若本地缓存单元中存在第一键值对查询信息对应的目标数据,则直接将该目标数据进行反馈,若本地缓存中不存在第一键值对查询信息对应的目标数据,也就是说,之前没有其他的客户端进行查询,则根据第一键值对查询信息查询只读数据库。其中,该只读数据库为配置为一次写入之后,只具有只读功能的数据库。
在另一些可能的实施例中,由于本公开实施例中,数据库可以只包括上文的只读数据库,而为了提高对数据库中数据的访问效率,上文中已经阐述了可以将之前从数据库中查询得到的数据存储在一个本地缓存单元中。这种情况下,该本地缓存单元也只是向用户提供读的能力,并不能保存下服务器运行过程中其他进程或者线程产生的数据,因此,本公开实施例还可以提供其他的存储单元,用于存储非数据库来源的数据,也就是运行过程中其他进程或者线程产生的数据,该本地缓存单元不仅可以向用户提供读功能,还提供写功能。
基于此,可以将上述第一本地缓存单元和第二本地缓存单元根据存储数据来源的不同进行区分,该本地缓存单元可以包括第一本地缓存单元和第二本地缓存单元。其中,第一本地缓存单元用于存储非只读数据库来源的数据,第二本地缓存单元用于存储只读数据库来源的数据。也就是说,第一本地缓存单元中的数据并不是基于只读数据库得到的,而第二本地缓存单元中的数据可以是根据服务器来自客户端的第一数据查询请求从只读数据库中得到的。
基于上述的实施例,本公开实施例示出的一种数据查询方法的流程图,如图3所示,包括:
在步骤S2031中,根据第一键值对查询信息查询第一本地缓存单元。
在步骤S2033中,若第一本地缓存单元不存在第一键值对查询信息对应的目标数据,根据第一键值对查询信息查询第二本地缓存单元。
如此情况下,步骤S205中的实施内容可以对应改成若第二本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库。
如此,不同来源的数据可以分开保存在不同的本地缓存单元中,且由于访问本地缓存单元的速度远远大于访问数据库的速度,通过上述的访问不仅能够顺利地从全局上提高数据查询效率,且可以避免因为先查询数据库导致的在第二本地缓存单元上的数据重复存储的问题,节省内存。
在一些可能的实施例中,上述只读数据库可以是palDB数据库,只具有只读功能的原因是因为服务于数据查询的,因此,当数据库只具有只读功能时,可以提升读操作的性能并降低内存占用。
在步骤S207中,若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。
基于上述的第一键值对查询信息是该视频模板的具体信息的关键字Key继续阐述,若依次查询过第一本地缓存单元和第二本地缓存单元之后,都没有该视频模板的具体信息的关键字Key的第一目标数据,则可以查询只读数据库,若只读数据库存在视频模板的具体信息的关键字Key的第一目标数据,则反馈第一目标数据至客户端,同时,将第一目标数据存储于第二本地缓存单元。可选的,上述视频模板的具体信息的关键字Key的第一目标数据可以是视频模版信息的id。
如此,通过本地缓存单元和只读数据库的结合,在提供数据查询这个基本功能的时候,还能从全局上提高数据查询效率,同时可以提升读操作的性能并降低内存占用。
本公开还包括如何构建只读功能数据库的实施方式,图4是根据一示例性实施例示出的一种构建数据库方法的流程图,如图4所示,包括:
在步骤S401中,从具有读写功能的原始数据库中获取数据。
在一个可选的实施例中,该原始数据库可以是任何可能的数据库,比如关系型数据库,包括Oracle,SQLServer,DB2,Mysql,还可以包括非关系型数据库,包括TokyoCabinet/Tyrant,Redis,Voldemort,Oracle BDB。
在步骤S403中,对数据进行压缩处理,得到压缩后的数据。
本公开实施例中,若只读数据库为palDB数据库时,其在存储数据之前,可以对数据进行压缩处理,使得最终得到只读数据库占用的内存比直接将数据存在内存中占用的内存少很多。例如,一个含有100兆的哈希集合需要超过500MB的内存,而palDB数据库只需要大约80MB。或者,35兆个用户ID使用哈希集合存储需要1.8GB的内存而palDB数据库只需要290MB。若在palDB数据库中使用Snappy来压缩数据的话将会使用更少的内存。
在步骤S405中,基于压缩后的数据构建只读数据库。
在一个可能的实施例中,该只读数据库可以看作是一个palDB文件,服务器构建只读数据库可以看作是在进行palDB文件的构建,但在PalDB文件构建完成前,此服务器(节点)是不能进行提供相应的查询服务,所以在palDB文件构建完成前,此服务器是不会有流量访问,用户访问的流量被均匀分布到已经完全启动的分布式服务器中的其他服务器上。
其中,构建palDB文件的数据可以来源于MySQL数据库,在进行文件构建时,首先从MySQL数据库中查询出所有的数据,然后将数据存储到palDB数据库指定的文件中,PalDB数据库生成的文件进行了压缩处理,得到最终的palDB文件。
上述S401-S405中的实施内容,是将原始数据库中的所有数据直接压缩后存储在只读数据库中,这当然方便了后续客户端发送的第一键值对查询请求可以都基于该只读数据库中查询到第一目标数据。然而,若客户端整体查询量不大的情况下,直接基于原始数据库构建只读数据库,也会带来对内存资源不合理利用的后果。基于此,本申请实施例可以根据数据访问请求的数量来确定什么时候可以构建只读数据库。
在一些可能的实施例中,服务器可以对来自客户端的,对具有读写功能的原始数据库对应的数据访问请求的数量进行监测,若数量大于等于预设阈值,从原始数据库中确定与数据访问请求对应的数据,对数据进行压缩处理,得到压缩后的数据,基于压缩后的数据构建只读数据库。
可选的,针对数据访问请求的预设阈值可以是根据实际访问情况中可能对原始数据库造成负担的访问量设置的,还可以是技术人员根据经验值确定的。
上文已经提到,本申请实施例可以通过本地缓存单元和只读数据库的结合,在提供数据查询这个基本功能的时候,不仅能从全局上提高数据查询效率,还可以减轻原始数据库的访问压力,将其访问转移到只读数据库中。然而,在实际访问过程中,除了存在来自客户端大量的第一数据查询请求时,还存在来自服务器后台的第二数据查询请求。
图5是根据一示例性实施例示出的一种数据查询方法的流程图,如图5所示,包括:
在步骤S501中,获取来自后台的第二数据查询请求,第二数据查询请求包括第二键值对查询信息。
本申请实施例中,上述来自后台的第二数据查询请求可能是运维人员想要查询数据而发送的。
在一些可能的实施例中,第二数据查询请求中除了包括第二键值对查询信息,还可以包括标识请求来源的标识信息,若该第二数据查询请求来自后台,则在第二数据查询请求中可以携带后腰的标识。可选的,该客户端的标识可以包括后台的唯一标识符,所属运维人员的用户标识等等。
在步骤S503中,根据第二键值对查询信息查询原始数据库。
本申请实施例中,由于来自后台的第二数据查询请求的数量是远远小于来自客户端的第一数据查询请求的数量,因此,当服务器接收到来自后台的第二数据查询请求,可以直接基于第二键值对查询信息查询原始数据库。
在步骤S505中,若原始数据库中存在第二键值对查询信息对应的第二目标数据,向后台反馈第二目标数据。
如此,服务器可以根据不同来源的数据查询请求将数据查询请求包含的键值对查询信息以不同的查询逻辑分配到不同的查询链路上,从而实现了数据查询的分流,在降低原始数据库查询负担的同时,从全局上提高了数据查询效率。
在一些可能的实施例中,若服务器检测到来自后台的数据更新行为,可以将数据更新行为对应的数据存储在第一本地缓存中,其中,数据更新行为包括对第二目标数据的更新或者删除,增加第三目标数据。将数据更新行为对应的数据同步至原始数据库中。
可选的,上述的数据更新行为可以是包括运维人员对于得到的第二目标数据的更新或者删除行为,还可以包括运维人员对于新的第三目标数据的增加行为。以上这些数据更新行为得到的新的数据都可以通过gRPC服务更新到第一本地缓存单元中。
可选的,还可以将以上这些数据更新行为得到的新的数据同步至原始数据中。并且,若上述数据更新行为为对第二目标数据的更新或者删除行为,则可以将得到的新的数据替换原始数据库中对应的旧数据。若上述数据更新行为为新的第三目标数据的增加行为,则直接增加至原始数据库。如此,可以保证原始数据库中的数据是最新且最全面的,为后续的对于只读数据库的数据更新做好保障。
本公开实施例中,上文已经提及,只读数据库只具有读功能,因此,用户不能通过服务器修改,增加,删除或者更新数据库中的数据,而原始数据库中的数据不可能是始终不变的,因此,当原始数据库中的数据存在变化时,只读数据库如果不进行更新,则可能导致用户查询得到的数据是错误的,不完整的的情况出现,为此,本公开还提供一种更新只读数据库的方法,图6是根据一示例性实施例示出的一种更新数据库方法的流程图,如图6所示,包括:
在步骤601中,监测原始数据库。
在步骤603中,若原始数据库存在数据更新行为,则从原始数据库中获取与数据更新行为对应的数据。
在一些可选的实施例中,数据更新行为可以是更新、添加、删除和修改等行为。
可选的,若原始数据库存在数据更新行为,服务器可以从原始数据库中获取与数据更新行为对应的数据。也就是说,先确定哪些数据发生变化,找到变化的数据。可选的,确定变化的数据之后,服务器可以获取变化的数据的标识。
在步骤605中,对数据更新行为对应的数据进行压缩处理,得到处理后的数据。
在步骤607中,基于处理后的数据更新只读数据库。
可选的,若数据更新行为为增加、修改时,服务器可以确定变化后的数据以及该数据的标识,并对该变化后的数据进行压缩数据,得到压缩后的变化的数据。随后,服务器可以基于数据的标识在数据库中找到未变化前的压缩的数据,使用压缩后的变化的数据替换变化前的压缩的数据。
可选的,若数据更新行为为删除行为,则服务器可以直接确定删除的数据的标识,根据该标识将数据库中,该标识对应的数据进行删除。
上述实施例只是更新只读数据库的其中的一个实施例,在另一个实施例中,若检测到原始数据库存在数据更新行为,服务器可以删除之前构建好的palDB文件,重新获取该原始数据库中的所有数据,并对数据进行压缩处理,得到压缩后的数据,随后,基于压缩后的数据构建只读数据库(palDB数据库)。
上述步骤S601-S607是一种更新只读数据库的可选的实施例,总结而言,就是基于监测机制,实时监测原始数据库中的数据是否发生变化,如果发生变化(比如由于运维人员对第二目标数据的修改),则基于变化的数据来重新构建只读数据库或者更新只读数据库中对应的数据。然而,如若一监测到原始数据库中的数据发生变化,就于变化的数据来重新构建只读数据库或者更新只读数据库中对应的数据,势必会因为不间断的数据库迭代对服务器造成不小的负担,因此,在一些可能的实施例中,当重启服务的时候,可以利用原始数据库重新构建只读数据库,以使得只读数据库尽可能保证最新的数据的情况下,减轻服务器数据库迭代的负担。
在一个可选的实施例中,上述的服务器可以是分布式服务器集群中的一个服务器,当原始数据库进行数据修改,更新,增加,删除等预设行为时,分布式服务器集群中所有服务器都需要进行palDB数据库的更新或者重新构建。
可选的,可以在分布式服务器集群中的任一一台服务器上进行第一本地缓存单元中数据的修改,当对其中的一台服务器上的第一本地缓存单元中的数据进行修改后,可以利用gRPC服务,将相应的修改信息发送给其他的服务器(服务节点),其他的服务器收到消息后,可以在自己的第一本地缓存单元中写入相应的数据,相当于新增、更新、删除的数据都保存到各自的第一本地缓存单元中。
其中,gRPC服务是指:在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得能够更容易地创建分布式应用和服务。与许多RPC系统类似,gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,运行一个gRPC服务器来处理客户端调用,使得在客户端拥有一个存根能够像服务端一样的方法。
在一些可选的实施方式中,存在以下数据查询方法:
第一种:在MySQL/Oracle数据库中根据指定的字段进行查询,然后把查询的结果返回给客户端,查询的伪代码如下:
Select*from table where id=‘id’
此方法在内部查询系统中比较常用,实现起来比较的简单,但此方法一般只能内部使用,因为当用户查询的每秒查询率较高时,MySQL/Oracle数据库将面临宕机的风险。
第二种:基于本地缓存的查询方法,我们常用的本地缓存有:Guava cache、Caffeine、Encache。因本地缓存中的数据都存储在内存中,因此,当数据量比较多的时候,此缓存会暂用大量的运行内存,所以此本地缓存适合数据量较小的查询,存在数据量的限制。
第三种:基于Redis的查询方法,Redis是一个高性能的键值对的数据库;但是使用Redis进行数据的查询的缺点包括:首先,每次的查询都需要网络的开销,其次,虽说单机Redis可以达到几万到十几万的每秒查询率QPS,但是相比对PalDB数据率还是太小了,也存在宕机的风险。
第四种:基于Redis与本地缓存相结合的方法。此方法同样存在上面的问题,包括:首先,本地缓存中能存放的数据是固定的,不能太多,存在数据量的限制问题,其次,请求Redis会有相应的网络耗时。
因此,从上述例子可以看出,上述任一一种方式都存在各种各样的问题,不能很好的支撑高QPS的数据查询,又或者占用内存太大,又或者必须提供网络开销,不能在没有网络的情况下使用。
而本申请实施方案中,通过palDB数据库拷贝来自原始数据库的数据,并存储在服务器中,从根本上杜绝了因为网络问题引起的数据查询不顺利的问题,并且支撑更高的QPS。其次,通过本地缓存单元和只读数据库的结合,在提供数据查询这个基本功能的时候,还能从全局上提高数据查询效率,减少内存的占用,同时可以提升读操作的性能并降低内存占用。
图7是根据一示例性实施例示出的一种数据查询装置框图。参照图7,该装置包括请求获取模块701、第一查询模块702、第二查询模块703和第一处理模块704。
请求获取模块701,被配置为执行获取来自客户端的第一数据查询请求;第一数据查询请求包括第一键值对查询信息;
第一查询模块702,被配置为执行根据第一键值对查询信息查询本地缓存单元;
第二查询模块703,被配置为执行若本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询只读数据库;
第一处理模块704,被配置为执行若只读数据库存在第一键值对查询信息对应的第一目标数据,将第一目标数据存储于本地缓存单元,并向客户端反馈第一目标数据。
在一些可能的实施例中,本地缓存单元包括第一本地缓存单元和第二本地缓存单元;
第一本地缓存单元用于存储非只读数据库来源的数据,第二本地缓存单元用于存储只读数据库来源的数据。
在一些可能的实施例中,上述第一查询模块包括:
第一查询子模块,被配置为执行根据第一键值对查询信息查询第一本地缓存单元;
第二查询子模块,被配置为执行若第一本地缓存单元不存在第一键值对查询信息对应的第一目标数据,根据第一键值对查询信息查询第二本地缓存单元。
在一些可能的实施例中,上述装置还包括:
数据获取模块,被配置为执行从具有读写功能的原始数据库中获取数据;
数据压缩模块,被配置为执行对数据进行压缩处理,得到压缩后的数据;
数据库构建模块,被配置为执行基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述装置还包括:
监测模块,被配置为执行对具有读写功能的原始数据库对应的数据访问请求的数量进行监测;
数据获取模块,被配置为执行若数量大于等于预设阈值,从原始数据库中确定与数据访问请求对应的数据;
数据压缩模块,被配置为执行对数据进行压缩处理,得到压缩后的数据;
数据库构建模块,被配置为执行基于压缩后的数据构建只读数据库。
在一些可能的实施例中,上述装置还包括:
请求获取模块,被配置为执行获取来自后台的第二数据查询请求,第二数据查询请求包括第二键值对查询信息;
第三查询模块,被配置为执行根据第二键值对查询信息查询原始数据库;
第二处理模块,被配置为执行若原始数据库中存在第二键值对查询信息对应的第二目标数据,向后台反馈第二目标数据。
在一些可能的实施例中,上述装置还包括:
数据存储模块,被配置为执行若检测到来自后台的数据更新行为,将数据更新行为对应的数据存储在第一本地缓存单元中;数据更新行为包括对第二目标数据的更新或者删除,增加第三目标数据;
数据同步模块,被配置为执行将数据更新行为对应的数据同步至原始数据库中。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8是根据一示例性实施例示出的一种用于数据查询的电子设备800的框图。
该电子设备可以是服务器,还可以是终端设备,其内部结构图可以如图8所示。该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在示例性实施例中,还提供了一种电子设备,包括:处理器;用于存储该处理器可执行指令的存储器;其中,该处理器被配置为执行该指令,以实现如本公开实施例中的数据查询方法。
在示例性实施例中,还提供了一种计算机可读存储介质,当该计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例中的数据查询方法。
在示例性实施例中,还提供了一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从可读存储介质读取并执行计算机程序,使得计算机设备执行本公开实施例的数据查询方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
获取来自客户端的第一数据查询请求;所述第一数据查询请求包括第一键值对查询信息;
根据所述第一键值对查询信息查询本地缓存单元;
若所述本地缓存单元不存在所述第一键值对查询信息对应的第一目标数据,根据所述第一键值对查询信息查询只读数据库;
若所述只读数据库存在所述第一键值对查询信息对应的第一目标数据,将所述第一目标数据存储于所述本地缓存单元,并向所述客户端反馈所述第一目标数据。
2.根据权利要求1所述的数据查询方法,其特征在于,所述本地缓存单元包括第一本地缓存单元和第二本地缓存单元;
所述第一本地缓存单元用于存储非所述只读数据库来源的数据,所述第二本地缓存单元用于存储所述只读数据库来源的数据。
3.根据权利要求2所述的数据查询方法,其特征在于,所述根据所述查询信息查询本地缓存单元包括:
根据所述第一键值对查询信息查询所述第一本地缓存单元;
若所述第一本地缓存单元不存在所述第一键值对查询信息对应的第一目标数据,根据所述第一键值对查询信息查询所述第二本地缓存单元。
4.根据权利要求1-3任一所述的数据查询方法,其特征在于,所述方法还包括:
从具有读写功能的原始数据库中获取数据;
对所述数据进行压缩处理,得到压缩后的数据;
基于所述压缩后的数据构建所述只读数据库。
5.根据权利要求1-3任一所述的数据查询方法,其特征在于,所述方法还包括:
对具有读写功能的原始数据库对应的数据访问请求的数量进行监测;
若所述数量大于等于预设阈值,从所述原始数据库中确定与所述数据访问请求对应的数据;
对所述数据进行压缩处理,得到压缩后的数据;
基于所述压缩后的数据构建所述只读数据库。
6.根据权利要求4-5任一所述的数据查询方法,其特征在于,所述方法还包括:
获取来自后台的第二数据查询请求,所述第二数据查询请求包括第二键值对查询信息;
根据所述第二键值对查询信息查询所述原始数据库;
若所述原始数据库中存在所述第二键值对查询信息对应的第二目标数据,向所述后台反馈所述第二目标数据。
7.一种数据查询装置,其特征在于,包括:
请求获取模块,被配置为执行获取来自客户端的第一数据查询请求;所述第一数据查询请求包括第一键值对查询信息;
第一查询模块,被配置为执行根据所述第一键值对查询信息查询本地缓存单元;
第二查询模块,被配置为执行若所述本地缓存单元不存在所述第一键值对查询信息对应的第一目标数据,根据所述第一键值对查询信息查询只读数据库;
第一处理模块,被配置为执行若所述只读数据库存在所述第一键值对查询信息对应的第一目标数据,将所述第一目标数据存储于所述本地缓存单元,并向所述客户端反馈所述第一目标数据。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的数据查询方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的数据查询方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得所述计算机设备执行如权利要求1至6中任一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480204.XA CN113220713B (zh) | 2021-04-30 | 2021-04-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480204.XA CN113220713B (zh) | 2021-04-30 | 2021-04-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220713A true CN113220713A (zh) | 2021-08-06 |
CN113220713B CN113220713B (zh) | 2024-01-09 |
Family
ID=77090458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110480204.XA Active CN113220713B (zh) | 2021-04-30 | 2021-04-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220713B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779091A (zh) * | 2021-09-15 | 2021-12-10 | 贵阳货车帮科技有限公司 | 信息查询方法、装置、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170017692A1 (en) * | 2015-07-13 | 2017-01-19 | Paypal, Inc. | Read/write split database query routing |
CN106815218A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 数据库访问方法、装置和数据库系统 |
CN109145020A (zh) * | 2018-07-23 | 2019-01-04 | 程之琴 | 信息查询方法、从服务器、客户端及计算机可读存储介质 |
CN111125169A (zh) * | 2019-11-28 | 2020-05-08 | 江苏苏宁物流有限公司 | 数据查询方法及其控制方法、装置、介质及计算机设备 |
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
-
2021
- 2021-04-30 CN CN202110480204.XA patent/CN113220713B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170017692A1 (en) * | 2015-07-13 | 2017-01-19 | Paypal, Inc. | Read/write split database query routing |
CN106815218A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 数据库访问方法、装置和数据库系统 |
CN109145020A (zh) * | 2018-07-23 | 2019-01-04 | 程之琴 | 信息查询方法、从服务器、客户端及计算机可读存储介质 |
CN111125169A (zh) * | 2019-11-28 | 2020-05-08 | 江苏苏宁物流有限公司 | 数据查询方法及其控制方法、装置、介质及计算机设备 |
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779091A (zh) * | 2021-09-15 | 2021-12-10 | 贵阳货车帮科技有限公司 | 信息查询方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113220713B (zh) | 2024-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111464615B (zh) | 请求处理方法、装置、服务器及存储介质 | |
US11468015B2 (en) | Storage and synchronization of metadata in a distributed storage system | |
US8788458B2 (en) | Data caching for mobile applications | |
CN107528872B (zh) | 一种数据恢复方法、装置及云存储系统 | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
CN102904887A (zh) | 一种Web客户端与服务器的数据同步方法和系统 | |
WO2021073510A1 (zh) | 一种数据库的统计方法及装置 | |
CN114756577A (zh) | 多源异构数据的处理方法、计算机设备及存储介质 | |
US11734229B2 (en) | Reducing database fragmentation | |
US11836132B2 (en) | Managing persistent database result sets | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
WO2023280053A1 (zh) | 数据处理方法、系统、电子设备及存储介质 | |
US9928174B1 (en) | Consistent caching | |
CN114064073A (zh) | 软件版本升级方法、装置、计算机设备和存储介质 | |
CN113220659A (zh) | 一种数据迁移的方法、系统、电子装置和存储介质 | |
CN113220713B (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN108595616B (zh) | 一种面向分布式文件系统的统一命名空间管理的方法 | |
CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
CN116795872A (zh) | 数据查询方法、装置、计算机设备及存储介质 | |
CN110389966B (zh) | 一种信息处理方法及装置 | |
CN114528260A (zh) | 文件访问请求的处理方法、电子设备及计算机程序产品 | |
Parthasarathy et al. | InterAct: Virtual sharing for interactive client-server applications | |
CN112631769B (zh) | 用于app的本地缓存管理方法、装置、设备及介质 | |
US20240193141A1 (en) | Parameter-Based Versioning For Log-Based Block Devices | |
US20230376451A1 (en) | Client support of multiple fingerprint formats for data file segments |
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 |