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

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

Info

Publication number
CN113641670B
CN113641670B CN202110777372.5A CN202110777372A CN113641670B CN 113641670 B CN113641670 B CN 113641670B CN 202110777372 A CN202110777372 A CN 202110777372A CN 113641670 B CN113641670 B CN 113641670B
Authority
CN
China
Prior art keywords
sub
user
library
data
database
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
CN202110777372.5A
Other languages
English (en)
Other versions
CN113641670A (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110777372.5A priority Critical patent/CN113641670B/zh
Publication of CN113641670A publication Critical patent/CN113641670A/zh
Application granted granted Critical
Publication of CN113641670B publication Critical patent/CN113641670B/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
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本公开提供了数据存储及数据检索方法、装置、电子设备及存储介质,涉及计算机视觉、深度学习和分布式存储等人工智能领域,其中的数据存储方法可包括:获取针对任一用户的数据存储请求;若确定需要为用户新建分库,则根据请求存储的数据量确定出新建的分库数量N,并创建N个分库,利用已创建的分库对用户的数据进行存储;其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;若确定不需要为用户新建分库,则利用已创建的分库对用户的数据进行存储。应用本公开所述方案,可节省人力和时间成本,并可减少资源浪费等。

Description

数据存储及数据检索方法、装置、电子设备及存储介质
技术领域
本公开涉及人工智能技术领域,特别涉及计算机视觉、深度学习和分布式存储等领域的数据存储及数据检索方法、装置、电子设备及存储介质。
背景技术
图片实时检索系统中,同一用户的数据(如检索数据)通常会存储在同一个分片中,另外,同一个分片中可存储不同用户的数据。分片是指将集群中的服务器人为划分为多组,每组即为一个分片,每个分片中通常包括多个服务器,同一分片中的各服务器上存储的数据相同。
如果某一用户的数据量较大,可能会达到单个分片上存储的数据量上限,那么该分片就不能再容纳其他用户的数据,需要将其他用户迁出,即迁移至其它分片,另外,如果某一用户的调用量较大,可能会占满所在分片的计算资源,这样也需要将该分片中的其它用户迁出,以避免对其它用户造成影响。所述迁出通常采用人工方式,从而需要耗费大量的人力和时间成本等。
发明内容
本公开提供了数据存储及数据检索方法、装置、电子设备及存储介质。
一种数据存储方法,包括:
获取针对任一用户的数据存储请求;
若确定需要为所述用户新建分库,则根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对所述用户的数据进行存储;其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;
若确定不需要为所述用户新建分库,则利用已创建的分库对所述用户的数据进行存储。
一种数据检索方法,包括:
获取针对任一用户的数据检索请求;
确定出所述用户的所有分库,所述分库中存储有所述用户的数据,其中,每个分库中存储的数据量均小于或等于第一阈值,每个分库均位于一个实例上,每个实例分别对应于集群中的一个服务器;
分别获取确定出的各分库对应的检索结果;
将获取到的检索结果进行合并,将合并结果作为本次请求对应的检索结果。
一种数据存储装置,包括:第一获取模块以及管理模块;
所述第一获取模块,用于获取针对任一用户的数据存储请求;
所述管理模块,用于当确定需要为所述用户新建分库时,根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对所述用户的数据进行存储,其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;当确定不需要为所述用户新建分库时,利用已创建的分库对所述用户的数据进行存储。
一种数据检索装置,包括:第二获取模块以及检索模块;
所述第二获取模块,用于获取针对任一用户的数据检索请求;
所述检索模块,用于确定出所述用户的所有分库,所述分库中存储有所述用户的数据,其中,每个分库中存储的数据量均小于或等于第一阈值,每个分库均位于一个实例上,每个实例分别对应于集群中的一个服务器,分别获取确定出的各分库对应的检索结果,将获取到的检索结果进行合并,将合并结果作为本次请求对应的检索结果。
一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上所述的方法。
一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行如以上所述的方法。
一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如以上所述的方法。
上述公开中的一个实施例具有如下优点或有益效果:不再采用分片的方式,而是采用分库的方式,即可认为只有一个分片,可将同一用户的数据分库存储,并可根据数据量的增加随时新建分库,另外,每次均选取满足资源需求的服务器来创建分库,避免了各分库间相互影响,无需人工的进行迁移等,从而节省了人力和时间成本,并可通过合理的选取服务器,避免了资源浪费等。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开所述数据存储方法实施例的流程图;
图2为本公开所述数据检索方法实施例的流程图;
图3为本公开所述数据存储装置实施例300的组成结构示意图;
图4为本公开所述数据检索装置实施例400的组成结构示意图;
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
另外,应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本公开所述数据存储方法实施例的流程图。如图1所示,包括以下具体实现方式。
在步骤101中,获取针对任一用户的数据存储请求。
在步骤102中,若确定需要为用户新建分库,则根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对用户的数据进行存储;其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库。
在步骤103中,若确定不需要为用户新建分库,则利用已创建的分库对用户的数据进行存储。
现有技术中,采用垂直分片的方式,人为划分分片,如表一所示:
表一 现有的分片方式
如表一所示,分片0中包括3个服务器,每个服务器分别对应一个实例,分片1中包括6个服务器,分片2中包括2个服务器,分片0中存储了用户1和用户2的数据,分片1中存储了用户3的数据,分片2中存储了用户4和用户5的数据。
而上述方法实施例所述方案中,不再采用分片的方式,即不再人为对集群中的服务器进行分片,而是采用分库的方式,即可认为只有一个分片(所有的服务器均在同一个分片),可将同一用户的数据分库存储,并可根据数据量的增加随时新建分库,另外,每次均选取满足资源需求的服务器来创建分库,避免了各分库间相互影响,无需人工的进行迁移等,从而节省了人力和时间成本,并可通过合理的选取服务器,避免了资源浪费等。
其中,用户的数据可为索引数据,集群可为检索服务端集群(BS,Basic Search)。
对于需要进行数据存储的用户,若确定该用户为之前未创建过分库的新用户,则可确定需要为用户新建分库,或者,若确定该用户为之前已创建过分库的老用户,但利用已创建的分库无法存储本次请求存储的全部数据,也可确定需要为用户新建分库。每个分库中存储的数据量均需要小于或等于第一阈值,第一阈值的具体取值可根据实际需要而定。
另外,还可根据用户的每秒查询率(QPS,Queries Per Second)确定出单一分库的水平部署数量P,P为大于一的正整数。相应地,针对用户的每个分库,可分别按照水平部署数量进行水平部署,所述水平部署包括:分别在P个不同的实例上创建同一分库,不同实例上的同一分库中存储的数据相同。
也就是说,确定出单一分库的水平部署数量即指确定出需要将同一分库部署在几个实例上,通过水平部署,可达到类似于数据备份的效果,同一分库的水平部署不会部署在同一实例上,以防止该实例异常,影响服务整体可用性以及用户返回结果的完整性等。
基于上述介绍,假设某一用户为之前未创建过分库的新用户,那么在获取到针对该用户的数据存储请求后,可根据请求存储的数据量确定出需要新建的分库数量N,由于每个分库中存储的数据量均需要小于或等于第一阈值,因此可根据请求存储的数据量,快速方便地确定出需要新建的分库数量N,N的取值可能为一,也可能大于一,另外,还可根据用户的QPS确定出单一分库的水平部署数量P,QPS可反映用户的数据的调用量,QPS越大,水平部署数量越多,通常来说,水平部署数量需要大于一,即为2个或更多个,如何根据用户的QPS确定出单一分库的水平部署数量P为现有技术。假设N的取值为1,即需要新建一个分库,如分库0,并假设P的取值为2,即分库0的水平部署数量为2,那么即相当于要创建两个分库0,两个分库0中存储的数据相同。其中,在创建每个分库0时,可采用同样的处理方式,即:从集群中的各服务器中选出一个满足资源需求的服务器,优选地,可按照使得集群中的各服务器的资源使用率趋于平均的原则,从集群中的各服务器中选出一个满足资源需求的服务器,进而可在选出的服务器对应的实例上创建分库0。比如,针对任一分库0,可首先从集群中的各服务器中剩余计算资源满足分库0的计算资源需求的服务器中选出剩余计算资源最多的服务器,进而可确定该服务器的剩余内存资源是否满足分库0的内存资源需求,若是,则可将该服务器作为最终选出的服务器。需要说明的是,此处选出满足资源需求的服务器的方式仅为举例说明,并不用于限制本公开的技术方案。
假设后续上述用户又有数据需要存储,那么可确定是否需要为用户新建分库,若不需要,则可利用已创建的分库对用户的数据进行存储,若需要,即确定利用已创建的分库无法存储本次请求存储的全部数据,假设需要新建一个分库,为分库1,那么可按照上述分库0的处理方式创建分库1并进行分库1的水平部署。另外,在创建分库1后,还可对分库0中的部分数据进行迁移,以使得分库0和分库1中存储的数据量尽可能地均等。本公开中所述的数据通常为索引数据,相应地,索引分布算法可采用一致性哈希,以保证索引重分布时,无需全量加载或删除用户数据等。
在实际应用中,若由于某种原因无法成功创建所需的分库,比如,可能是由于不存在满足资源需求的服务器等,那么可进行告警,并可提示告警原因等。
现有方式中,当某一用户独占某一分片时,很可能会造成资源的浪费。比如,用户a的数据量较大,独占了分片b,但如果用户a的调用量较小,则会造成分片b的计算资源的浪费,计算资源可以是指中央处理单元(CPU,Central Processing Unit)资源等,再比如,用户b的调用量较大,独占了分片b,但如果用户a的数据量较小,则会造成内存资源的浪费。而本公开所述方案中,在每次选择服务器时,可按照使得集群中的各服务器的资源使用率趋于平均的原则,从集群中的各服务器中选出一个满足资源需求的服务器,从而尽可能地避免了资源浪费,并提升了内存资源和计算资源的利用率等。
上述方法实施例的执行主体可为本公开中增设的管理装置,管理装置可与集群中的各服务器进行周期性交互,如通过心跳消息来与集群中的各服务器进行周期性交互,获取各服务器返回的对应的实例上的数据信息,所述数据信息可包括:实例上包括的分库以及各分库分别对应的用户,即实例上包括哪些用户的哪些分库,另外,还可获取各服务器返回的资源信息,如剩余内存资源、剩余计算资源等。具体返回哪些信息可根据实际需要而定。
除执行上述操作外,管理装置还可进一步执行以下之一或任意组合。
1)提升QPS
当用户请求提升QPS时,可确定出提升后的QPS对应的水平部署数量,并可针对用户的每个分库,分别按照提升后的QPS对应的水平部署数量进行水平部署。
如何确定出提升后的QPS对应的水平部署数量为现有技术。假设用户的分库包括分库0和分库1,原来的水平部署数量为2,提升后的水平部署数量为4,那么针对分库0和分库1,可分别新增2个水平部署,具体部署方式和前述创建分库的方式相同,不再赘述。
2)降低QPS
当用户请求降低QPS时,可确定出降低后的QPS对应的水平部署数量,并可针对用户的每个分库,分别按照降低后的QPS对应的水平部署数量进行水平部署。
如何确定出降低后的QPS对应的水平部署数量为现有技术。假设用户的分库包括分库0和分库1,原来的水平部署数量为3,降低后的水平部署数量为2,那么针对分库0和分库1,可分别减少1个水平部署,如可分别随机地删除一个分库0和一个分库1。
通过1)和2)中的处理,可根据用户的QPS变化,灵活方便地对用户的水平部署数量进行调整,从而更为合理地进行资源的使用或释放等。
3)删除用户
当需要删除用户时,可确定出包括用户的分库的实例,并可从确定出的实例上删除用户的分库。
比如,实例1和实例2上包括了用户的分库,那么可分别从实例1和实例2上删除用户的分库。
即可将用户的所有分库分别从对应的实例上删除,从而可及时释放用户占用的资源,以便所述资源被其它用户使用等。
4)分库合并
当确定用户的分库符合合并条件时,可将需要删除的分库中的数据迁移到不需要删除的分库中,并删除需要删除的分库。
在实际应用中,用户可能会对分库中的数据执行删除等操作,从而导致某一或某些分库中的数据量减少。
比如,用户的分库包括分库0、分库1和分库2,通过用户的删除操作,使得分库2中的数据量减少,低于第二阈值,第二阈值的具体取值可根据实际需要而定,第二阈值小于第一阈值,那么可将分库2作为需要删除的分库,并可将分库2中的数据迁移到分库0和/或分库1中,迁移后的分库0和分库1均需要符合存储的数据量小于或等于第一阈值的要求,另外,还可删除分库2。
通过上述处理,可及时释放用户占用的多余资源,以便所述资源被其它用户使用等。
5)实例异常
当确定任一实例异常时,可将该实例上的分库迁移到其它实例上。
实例异常可以是指超过预定时间未上报心跳消息,或者单位时间内检索超时率高于第三阈值等,如何判断实例异常不作限制。
假设实例1异常,实例1上包括两个分库,分别为用户a的分库0和用户b的分库1,那么针对分库0和分库1,可分别按照创建分库的方式,选择各自对应的服务器,并分别迁移到对应的服务器对应的实例上。完成迁移后,如何对实例1进行处理不作限制,比如,可从集群中删除实例1。
通过上述处理,可及时发现存在问题的实例,并可对问题实例上的分库进行及时迁移,以确保问题实例上的数据可被正常使用等。
6)指定迁移
可根据获取到的迁移指令,将迁移指令中指定的分库迁移到迁移指令中指定的实例上。
比如,用户a的分库0原来位于实例1上,可人工指定将其迁移到实例3上,迁移完成后,可从实例1上删除分库0。
即可根据实际需求,根据人工指令灵活方便地对实例上的分库进行调整。
7)新增实例
当集群中新增服务器时,可从集群中原有的服务器中选出资源使用率最高的服务器,并可将选出的服务器对应的实例上的部分分库迁移到新增的服务器对应的实例上。
即可对集群进行直接扩容,假设新增的服务器为服务器a,从集群中选出的资源使用率最高的服务器为服务器b,那么可将服务器b对应的实例上的1/2分库迁移到服务器a对应的实例上。
其中,资源使用率最高的服务器可以是指计算资源使用率和内存资源使用率的总和最高的服务器。
通过上述处理,可将繁忙的实例上的分库迁移到空闲的实例上,从而使得各实例(服务器)的资源使用率趋于平均等。
通过上述介绍可以看出,基于所述管理装置,可对存储的用户数据进行动态调度,从而节省了人力和时间成本,并实现了资源的合理利用等。
另外,管理装置还可生成并维护一个最新版本的分库表,分库表中可记录有集群中的各实例上的数据信息,其中,对于任一实例,所述数据信息至少包括:该实例上包括的分库以及各分库分别对应的用户。进一步地,管理装置还可将分库表提供给客户端,以便客户端利用分库表完成数据检索。
分库表的格式可如表二所示:
表二 分库表
如表二所示,以服务器1为例,其对应的实例上包括用户1的分库0和用户2的分库0,即一个实例上可以包括不同用户的分库,另外,以用户1为例,其分库包括分库0和分库1,单一分库的水平部署数量为2,2个分库0分别位于2个不同的实例上,2个分库1也分别位于2个不同的实例上。
基于上述数据存储方法,本公开中同时提供了一种数据检索方法。图2为本公开所述数据检索方法实施例的流程图。如图2所示,包括以下具体实现方式。
在步骤201中,获取针对任一用户的数据检索请求。
在步骤202中,确定出用户的所有分库,所述分库中存储有用户的数据,其中,每个分库中存储的数据量均小于或等于第一阈值,每个分库均位于一个实例上,每个实例分别对应于集群中的一个服务器。
在步骤203中,分别获取确定出的各分库对应的检索结果。
在步骤204中,将获取到的检索结果进行合并,将合并结果作为本次请求对应的检索结果。
上述方法实施例所述方案的执行主体可为客户端,所述客户端可为检索客户端(AS,Advanced Search)。
客户端可从管理装置获取最新版本的分库表,分库表中可记录有集群中的各实例上的数据信息,对于任一实例,所述数据信息至少包括:该实例上包括的分库以及各分库分别对应的用户,相应地,可根据获取到的分库表确定出用户的所有分库。
进一步地,可分别根据各分库中的数据进行查询,从而分别获取到各分库对应的检索结果,进而可将获取到的检索结果进行合并,将合并结果作为本次请求对应的检索结果,即最为最终所需的检索结果。
比如,用户的分库包括分库0和分库1,每个分库的水平部署数量分别为2,如表三所示:
表三 用户的分库
如表三所示,不同的ip分别表示不同的服务器/实例。
针对分库0,可根据一个实例上的分库0中的数据进行查询,从而得到分库0对应的检索结果,针对分库1,可根据一个实例上的分库1中的数据进行查询,从而得到分库1对应的检索结果,进而可将获取到的检索结果进行合并。
可以看出,基于上述数据检索方法,可准确高效地获取到所需的检索结果。
需要说明的是,对于前述的各方法实施例,为了简单描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本公开所必须的。另外,某个实施例中没有详述的部分,可以参见其它实施例中的相关说明。
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
图3为本公开所述数据存储装置实施例300的组成结构示意图。如图3所示,包括:第一获取模块301以及管理模块302。
第一获取模块310,用于获取针对任一用户的数据存储请求。
管理模块302,用于当确定需要为用户新建分库时,根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对用户的数据进行存储,其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;当确定不需要为用户新建分库时,利用已创建的分库对用户的数据进行存储。
其中,管理模块302若确定用户为之前未创建过分库的新用户,则可确定需要为用户新建分库,或者,若确定用户为之前已创建过分库的老用户,但利用已创建的分库无法存储本次请求存储的全部数据,则可确定需要为用户新建分库。
另外,管理模块302还可根据用户的QPS确定出单一分库的水平部署数量P,P为大于一的正整数,相应地,针对用户的每个分库,可分别按照水平部署数量进行水平部署,所述水平部署包括:分别在P个不同的实例上创建同一分库,不同实例上的同一分库中存储的数据相同。
在创建每个分库时,管理模块302还可按照使得集群中的各服务器的资源使用率趋于平均的原则,从集群中的各服务器中选出一个满足资源需求的服务器,进而可在选出的服务器对应的实例上创建分库。
另外,管理模块302还可进一步执行以下之一或全部:
当用户请求提升QPS时,确定出提升后的QPS对应的水平部署数量,针对用户的每个分库,分别按照提升后的QPS对应的水平部署数量进行水平部署;
当用户请求降低QPS时,确定出降低后的QPS对应的水平部署数量,针对用户的每个分库,分别按照降低后的QPS对应的水平部署数量进行水平部署。
再有,管理模块302还可进一步执行以下之一或任意组合:
当需要删除用户时,确定出包括用户的分库的实例,从确定出的实例上删除用户的分库;
当确定用户的分库符合合并条件时,将需要删除的分库中的数据迁移到不需要删除的分库中,并删除需要删除的分库;
当确定任一实例异常时,将该实例上的分库迁移到其它实例上;
根据获取到的迁移指令,将迁移指令中指定的分库迁移到迁移指令中指定的实例上;
当集群中新增服务器时,从集群中原有的服务器中选出资源使用率最高的服务器,将选出的服务器对应的实例上的部分分库迁移到新增的服务器对应的实例上。
相应地,管理模块302还可生成并维护一张最新版本的分库表,分库表中可记录有集群中的各实例上的数据信息,其中,对于任一实例,所述数据信息至少包括:该实例上包括的分库以及各分库分别对应的用户,进一步地,可将分库表提供给客户端,以便客户端利用分库表完成数据检索。
图4为本公开所述数据检索装置实施例400的组成结构示意图。如图4所示,包括:第二获取模块401以及检索模块402。
第二获取模块401,用于获取针对任一用户的数据检索请求。
检索模块402,用于确定出用户的所有分库,所述分库中存储有用户的数据,其中,每个分库中存储的数据量均小于或等于第一阈值,每个分库均位于一个实例上,每个实例分别对应于集群中的一个服务器,分别获取确定出的各分库对应的检索结果,将获取到的检索结果进行合并,将合并结果作为本次请求对应的检索结果。
其中,检索模块402可获取最新版本的分库表,分库表中可记录有集群中的各实例上的数据信息,对于任一实例,所述数据信息至少包括:该实例上包括的分库以及各分库分别对应的用户,相应地,可根据分库表确定出用户的所有分库。
图3和图4所示装置实施例的具体工作流程请参照前述方法实施例中的相关说明,不再赘述。
总之,采用本公开所述装置实施例所述方案,可节省人力和时间成本,并可减少资源浪费以及可准确高效地获取到所需的检索结果等。
本公开所述方案可应用于人工智能领域,特别涉及计算机视觉、深度学习和分布式存储等领域。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术,人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术,人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如本公开所述的方法。例如,在一些实施例中,本公开所述的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行本公开所述的方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开所述的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (12)

1.一种数据存储方法,包括:
获取针对任一用户的数据存储请求;
若确定需要为所述用户新建分库,则根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对所述用户的数据进行存储;其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;
若确定不需要为所述用户新建分库,则利用已创建的分库对所述用户的数据进行存储;
还包括:根据所述用户的每秒查询率QPS确定出单一分库的水平部署数量P,P为大于一的正整数,针对所述用户的每个分库,分别按照所述水平部署数量进行水平部署,所述水平部署包括:分别在P个不同的实例上创建同一分库,不同实例上的同一分库中存储的数据相同;
还包括以下之一或全部:当所述用户请求提升QPS时,确定出提升后的QPS对应的水平部署数量,针对所述用户的每个分库,分别按照所述提升后的QPS对应的水平部署数量进行水平部署;当所述用户请求降低QPS时,确定出降低后的QPS对应的水平部署数量,针对所述用户的每个分库,分别按照所述降低后的QPS对应的水平部署数量进行水平部署。
2.根据权利要求1所述的方法,其中,所述确定需要为所述用户新建分库包括:
若确定所述用户为之前未创建过分库的新用户,则确定需要为所述用户新建分库;
或者,若确定所述用户为之前已创建过分库的老用户,但利用已创建的分库无法存储本次请求存储的全部数据,则确定需要为所述用户新建分库。
3.根据权利要求1所述的方法,其中,所述从集群中的各服务器中选出一个满足资源需求的服务器包括:
按照使得所述集群中的各服务器的资源使用率趋于平均的原则,从所述集群中的各服务器中选出一个满足资源需求的服务器。
4.根据权利要求1~3中任一项所述的方法,还包括以下之一或任意组合:
当需要删除所述用户时,确定出包括所述用户的分库的实例,从确定出的实例上删除所述用户的分库;
当确定所述用户的分库符合合并条件时,将需要删除的分库中的数据迁移到不需要删除的分库中,并删除所述需要删除的分库;
当确定任一实例异常时,将所述实例上的分库迁移到其它实例上;
根据获取到的迁移指令,将所述迁移指令中指定的分库迁移到所述迁移指令中指定的实例上;
当所述集群中新增服务器时,从所述集群中原有的服务器中选出资源使用率最高的服务器,将选出的服务器对应的实例上的部分分库迁移到新增的服务器对应的实例上。
5.根据权利要求4所述的方法,还包括:
生成并维护最新版本的分库表,所述分库表中记录有所述集群中的各实例上的数据信息,其中,对于任一实例,所述数据信息至少包括:所述实例上包括的分库以及各分库分别对应的用户;
将所述分库表提供给客户端,以便所述客户端利用所述分库表完成数据检索。
6.一种数据存储装置,包括:第一获取模块以及管理模块;
所述第一获取模块,用于获取针对任一用户的数据存储请求;
所述管理模块,用于当确定需要为所述用户新建分库时,根据请求存储的数据量确定出新建的分库数量N,N为正整数,并创建N个分库,利用已创建的分库对所述用户的数据进行存储,其中,每个分库中存储的数据量均需要小于或等于第一阈值,在创建每个分库时,分别从集群中的各服务器中选出一个满足资源需求的服务器,并在选出的服务器对应的实例上创建分库;当确定不需要为所述用户新建分库时,利用已创建的分库对所述用户的数据进行存储;
其中,所述管理模块进一步用于,根据所述用户的每秒查询率QPS确定出单一分库的水平部署数量P,P为大于一的正整数,针对所述用户的每个分库,分别按照所述水平部署数量进行水平部署,所述水平部署包括:分别在P个不同的实例上创建同一分库,不同实例上的同一分库中存储的数据相同;
所述管理模块进一步用于,执行以下之一或全部:当所述用户请求提升QPS时,确定出提升后的QPS对应的水平部署数量,针对所述用户的每个分库,分别按照所述提升后的QPS对应的水平部署数量进行水平部署;当所述用户请求降低QPS时,确定出降低后的QPS对应的水平部署数量,针对所述用户的每个分库,分别按照所述降低后的QPS对应的水平部署数量进行水平部署。
7.根据权利要求6所述的装置,其中,
所述管理模块若确定所述用户为之前未创建过分库的新用户,则确定需要为所述用户新建分库;
或者,所述管理模块若确定所述用户为之前已创建过分库的老用户,但利用已创建的分库无法存储本次请求存储的全部数据,则确定需要为所述用户新建分库。
8.根据权利要求6所述的装置,其中,
所述管理模块按照使得所述集群中的各服务器的资源使用率趋于平均的原则,从所述集群中的各服务器中选出一个满足资源需求的服务器。
9.根据权利要求6~8中任一项所述的装置,其中,
所述管理模块进一步用于,执行以下之一或任意组合:
当需要删除所述用户时,确定出包括所述用户的分库的实例,从确定出的实例上删除所述用户的分库;
当确定所述用户的分库符合合并条件时,将需要删除的分库中的数据迁移到不需要删除的分库中,并删除所述需要删除的分库;
当确定任一实例异常时,将所述实例上的分库迁移到其它实例上;
根据获取到的迁移指令,将所述迁移指令中指定的分库迁移到所述迁移指令中指定的实例上;
当所述集群中新增服务器时,从所述集群中原有的服务器中选出资源使用率最高的服务器,将选出的服务器对应的实例上的部分分库迁移到新增的服务器对应的实例上。
10.根据权利要求9所述的装置,其中,
所述管理模块进一步用于,生成并维护最新版本的分库表,所述分库表中记录有所述集群中的各实例上的数据信息,其中,对于任一实例,所述数据信息至少包括:所述实例上包括的分库以及各分库分别对应的用户,将所述分库表提供给客户端,以便所述客户端利用所述分库表完成数据检索。
11.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-5中任一项所述的方法。
CN202110777372.5A 2021-07-09 2021-07-09 数据存储及数据检索方法、装置、电子设备及存储介质 Active CN113641670B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110777372.5A CN113641670B (zh) 2021-07-09 2021-07-09 数据存储及数据检索方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110777372.5A CN113641670B (zh) 2021-07-09 2021-07-09 数据存储及数据检索方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113641670A CN113641670A (zh) 2021-11-12
CN113641670B true CN113641670B (zh) 2023-08-11

Family

ID=78417010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110777372.5A Active CN113641670B (zh) 2021-07-09 2021-07-09 数据存储及数据检索方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113641670B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729570A (zh) * 2017-11-20 2018-02-23 北京百度网讯科技有限公司 用于服务器的数据迁移方法和装置
CN107818115A (zh) * 2016-09-14 2018-03-20 苏宁云商集团股份有限公司 一种处理数据表的方法及装置
CN108628986A (zh) * 2018-04-27 2018-10-09 深圳市牛鼎丰科技有限公司 数据查询方法、装置、计算机设备和存储介质
CN109471861A (zh) * 2018-11-01 2019-03-15 南京天辰礼达电子科技有限公司 一种基于MySql的数据分布式储存系统
CN110717074A (zh) * 2019-09-26 2020-01-21 上海依图网络科技有限公司 对象持久化方法、装置、介质和系统
CN110737676A (zh) * 2018-07-18 2020-01-31 北京京东金融科技控股有限公司 数据查询方法和装置
CN110851427A (zh) * 2019-11-19 2020-02-28 泰康保险集团股份有限公司 数据库容量变更方法和装置
CN111240836A (zh) * 2020-01-06 2020-06-05 北京百度网讯科技有限公司 算力资源管理方法、装置、电子设备及存储介质
CN111831752A (zh) * 2020-07-20 2020-10-27 北京百度网讯科技有限公司 分布式数据库的空间整理方法、装置、设备以及存储介质
CN112115114A (zh) * 2020-09-25 2020-12-22 北京百度网讯科技有限公司 日志处理的方法、装置、设备及存储介质
CN112395293A (zh) * 2020-11-27 2021-02-23 浙江诺诺网络科技有限公司 分库分表方法、分库分表装置、分库分表设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160034521A1 (en) * 2014-07-29 2016-02-04 Bluecat Networks, Inc. Method, device and system for retrieving data from a very large data store
US20210149865A1 (en) * 2019-11-18 2021-05-20 International Business Machines Corporation SEAMLESSLY MIGRATING DATA AND INDEX IN DISTRIBUTED NoSQL DATABASE SYSTEMS

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818115A (zh) * 2016-09-14 2018-03-20 苏宁云商集团股份有限公司 一种处理数据表的方法及装置
CN107729570A (zh) * 2017-11-20 2018-02-23 北京百度网讯科技有限公司 用于服务器的数据迁移方法和装置
CN108628986A (zh) * 2018-04-27 2018-10-09 深圳市牛鼎丰科技有限公司 数据查询方法、装置、计算机设备和存储介质
CN110737676A (zh) * 2018-07-18 2020-01-31 北京京东金融科技控股有限公司 数据查询方法和装置
CN109471861A (zh) * 2018-11-01 2019-03-15 南京天辰礼达电子科技有限公司 一种基于MySql的数据分布式储存系统
CN110717074A (zh) * 2019-09-26 2020-01-21 上海依图网络科技有限公司 对象持久化方法、装置、介质和系统
CN110851427A (zh) * 2019-11-19 2020-02-28 泰康保险集团股份有限公司 数据库容量变更方法和装置
CN111240836A (zh) * 2020-01-06 2020-06-05 北京百度网讯科技有限公司 算力资源管理方法、装置、电子设备及存储介质
CN111831752A (zh) * 2020-07-20 2020-10-27 北京百度网讯科技有限公司 分布式数据库的空间整理方法、装置、设备以及存储介质
CN112115114A (zh) * 2020-09-25 2020-12-22 北京百度网讯科技有限公司 日志处理的方法、装置、设备及存储介质
CN112395293A (zh) * 2020-11-27 2021-02-23 浙江诺诺网络科技有限公司 分库分表方法、分库分表装置、分库分表设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Enable data dynamics for algebraic signatures based remote data possession checking in the cloud storage;Luo Yuchuan 等;China Communications;全文 *

Also Published As

Publication number Publication date
CN113641670A (zh) 2021-11-12

Similar Documents

Publication Publication Date Title
US20200034196A1 (en) Optimizing simultaneous startup or modification of inter-dependent machines with specified priorities
KR20210156243A (ko) 딥러닝 프레임워크의 훈련 방법, 장치 및 저장 매체
CN113656179A (zh) 云计算资源的调度方法及装置、电子设备和存储介质
CN115150471B (zh) 数据处理方法、装置、设备、存储介质及程序产品
CN115202847A (zh) 任务的调度方法和装置
CN113704058B (zh) 一种业务模型的监控方法、装置及电子设备
CN114489997A (zh) 定时任务调度方法、装置、设备和介质
CN113849581A (zh) 告警信息的处理方法、装置、设备和存储介质
CN113641670B (zh) 数据存储及数据检索方法、装置、电子设备及存储介质
CN115905322A (zh) 业务处理方法、装置、电子设备及存储介质
CN115016735A (zh) 一种分布式缓存系统的控制方法、装置及介质
CN114897666A (zh) 图数据存储、访问、处理方法、训练方法、设备及介质
CN113626175B (zh) 数据处理的方法和装置
CN113656239A (zh) 针对中间件的监控方法、装置及计算机程序产品
CN114374703A (zh) 云手机信息的获取方法、装置、设备以及存储介质
CN114035906A (zh) 虚拟机迁移方法、装置、电子设备及存储介质
CN114185641A (zh) 虚拟机冷迁移方法、装置、电子设备及存储介质
CN113239054A (zh) 信息生成方法、相关装置及计算机程序产品
CN112115123A (zh) 用于分布式数据库的性能优化的方法和装置
CN113360689B (zh) 图像检索系统、方法、相关装置及计算机程序产品
CN111191089A (zh) 基于医养照护场景的数据可视化方法、系统、设备及介质
CN113220230B (zh) 数据导出方法及其装置、电子设备以及存储介质
CN113946702A (zh) 图像特征的存储方法、装置、存储介质及电子设备
CN117251284A (zh) 一种资源管理系统、方法、电子设备及存储介质
CN111930718A (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