CN111241195B - 分布式系统的数据库处理方法、装置、设备及存储介质 - Google Patents
分布式系统的数据库处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111241195B CN111241195B CN202010003357.0A CN202010003357A CN111241195B CN 111241195 B CN111241195 B CN 111241195B CN 202010003357 A CN202010003357 A CN 202010003357A CN 111241195 B CN111241195 B CN 111241195B
- Authority
- CN
- China
- Prior art keywords
- sub
- database
- target
- databases
- 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
Links
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种分布式系统的数据库处理方法、装置、设备及存储介质。其中,所述方法包括:获取目标数据库,并检测所述目标数据库的数据量大小;当所述目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将所述目标数据库进行拆分,得到对应的多个子数据库;确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。通过本发明,能够提高整个服务器集群中各服务实例的资源利用率,实现各服务实例的内存分布均衡保持最大化。
Description
技术领域
本发明涉及人工智能(AI,Artificial Intelligence)领域中的大数据处理技术,尤其涉及一种分布式系统的数据库处理方法、装置、设备及存储介质。
背景技术
人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法和技术及应用系统。人工智能技术现如今已得到快速发展,并广泛应用于各种行业,例如无限大小的数据库的存储应用。
目前,相关技术中,对于数据量规模很大的数据库来说,无论将其路由至服务器集群中的哪个服务实例上,都会引起该服务实例内存的急剧增长,从而引起整个服务器集群中各服务实例的内存分布不均衡,导致服务器集群扩容的更早来临,降低其他服务实例的资源利用率,尤其当数据库的规模超大时,甚至单机无法容纳整个数据库。
发明内容
本发明实施例提供一种分布式系统的数据库处理方法、装置、设备及存储介质,能够提高整个服务器集群中各服务实例的资源利用率,实现各服务实例的内存分布均衡保持最大化。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种分布式系统的数据库处理方法,所述方法包括:
获取目标数据库,并检测所述目标数据库的数据量大小;
当所述目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将所述目标数据库进行拆分,得到对应的多个子数据库;
确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;
基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。
本发明实施例还提供一种分布式系统的数据库处理装置,所述装置包括:
获取单元,用于获取目标数据库;
检测单元,用于检测所述目标数据库的数据量大小;
拆分单元,用于当所述目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将所述目标数据库进行拆分,得到对应的多个子数据库;
第一确定单元,用于确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;
分配单元,用于基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。
上述方案中,所述拆分单元,还用于:
基于所述分裂系数,将所述目标数据库拆分为至少一层级的子数据库,各层级的所述子数据库的数量与所述分裂系数相匹配;
将所述至少一层级的子数据库构成所述目标数据库对应的多个子数据库。
上述方案中,所述拆分单元,还用于:
基于所述分裂系数,将所述目标数据库进行拆分,得到对应的第一层级的多个第一子数据库;
当所述多个第一子数据库中,存在数据量大小超过所述数据量阈值的第一子数据库时,将数据量大小超过所述数据量阈值的第一子数据库进行拆分,得到对应的第二层级的多个第二子数据库,直至各所述第二子数据库的数据量大小未超过所述数据量阈值时停止拆分。
上述方案中,所述第一确定单元,还用于:
获取待分配的各所述服务实例的当前使用状态信息;
基于各所述服务实例的当前使用状态信息,分别确定各所述服务实例所对应的可用存储空间的大小。
上述方案中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第二确定单元,用于当监听到请求执行的事件的类型为新增目标数据时,确定所述目标数据对应在所述第一层级的第一目标位置;
第三确定单元,用于确定处于所述第一目标位置的子数据库的存储状态;
第一路由单元,用于当所述存储状态表示处于所述第一目标位置的子数据库的存储空间未满时,将所述目标数据路由至所述第一目标位置的子数据库中;
第二路由单元,用于当所述存储状态表示处于所述第一目标位置的子数据库的存储空间已满时,遍历所述第二层级的子数据库,以确定第二目标位置的子数据库,将所述目标数据路由至所述第二目标位置的子数据库中。
上述方案中,所述第二确定单元,还用于:
将所述目标数据进行哈希处理,得到所述目标数据对应的哈希散列值;
基于所述哈希散列值以及所述分裂系数,确定对应所述第一层级的子数据库的标识;
将所述子数据库的标识所指示的子数据库,确定为所述目标数据对应在所述第一层级的第一目标位置。
上述方案中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第一查找单元,用于当监听到请求执行的事件的类型为删除目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
删除单元,用于当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行删除;
所述第一查找单元,还用于当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
所述删除单元,还用于当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行删除。
上述方案中,所述装置还包括:
返回单元,用于当所述第二层级的子数据库中未存在所述目标数据时,返回通知消息;
其中,所述通知消息用于指示请求删除的所述目标数据未存在于所述目标数据库中。
上述方案中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第二查找单元,用于当监听到请求执行的事件的类型为更新目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
更新单元,用于当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行更新;
所述第二查找单元,还用于当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
所述更新单元,还用于当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行更新。
上述方案中,所述装置还包括:
接收单元,用于接收针对目标数据的检索请求;
请求单元,用于响应于所述检索请求,并行请求各所述服务实例;
所述获取单元,还用于基于各所述服务实例与所述多个子数据库的对应关系,获取各所述服务实例所分配的子数据库;
检索单元,用于从各所述服务实例所分配的子数据库中,检索出与所述目标数据的相似度最高的目标数量的数据作为检索结果。
上述方案中,所述装置还包括:
发送单元,用于将所述多个子数据库分别发送至区块链网络中,以使所述区块链网络的节点将所述多个子数据库填充至新区块,且当对所述新区块取得共识一致时,将所述新区块追加至区块链的尾部。
本发明实施例还提供一种分布式系统的数据库处理设备,所述设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的分布式系统的数据库处理方法。
本发明实施例还提供一种存储介质,存储有可执行指令,所述可执行指令被处理器执行时,用于实现本发明实施例提供的分布式系统的数据库处理方法。
应用本发明上述实施例具有以下有益效果:
应用本发明实施例提供的分布式系统的数据库处理方法,当获取到的目标数据库的数据量大小超过数据量阈值时,基于分裂系数将目标数据库进行拆分,得到对应的多个子数据库,以及确定待分配的各服务实例所对应的可用存储空间的大小,进而基于各服务实例所对应的可用存储空间的大小,以及各子数据库的数据量大小,为各服务实例分配适配数量的子数据库;如此,通过将目标数据库拆分成多个子数据库,从而结合各服务实例所对应的可用存储空间的大小,将该多个子数据库进行分布式存储,使得各服务实例的内存分布均衡保持最大化,提高整个服务器集群中各服务实例的资源利用率,能够实现无限大小的目标数据库的快速存储。
附图说明
图1为相关技术中提供的数据库存储的示意图;
图2为本发明实施例提供的分布式系统的数据库处理系统10的一个可选的架构示意图;
图3A为本发明实施例提供的分布式系统的数据库处理设备40的一个可选的硬件结构示意图;
图3B为本发明实施例提供的分布式系统的数据库处理装置455的一个可选的组成结构示意图;
图4A至图4C为本发明实施例提供的分布式系统的数据库处理方法的一个可选的流程示意图;
图5为本发明实施例提供的将目标数据库进行拆分的一个可选的示意图;
图6为本发明实施例提供的新增目标数据的一个可选的示意图;
图7为本发明实施例提供的删除或更新目标数据的一个可选的示意图;
图8为本发明实施例提供的为各服务实例分配适配数量的子数据库的示意图;
图9为本发明实施例提供的检索目标数据的一个可选的示意图;
图10为本发明实施例提供的合并子数据库的一个可选的示意图;
图11为本发明实施例提供的分布式系统的数据库处理装置455的架构示意图;
图12为本发明实施例提供的区块链网络81中区块链的一个可选的结构示意图;
图13为本发明实施例提供的区块链网络81的功能架构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一”、“第二”等仅仅是用于区别类似的对象,不代表针对对象的特定的顺序或先后次序,可以理解地,“第一”、“第二”等在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本发明实施例所使用的所有的技术和科学术语与属于本发明实施例的技术领域的技术人员通常理解的含义相同。本发明中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。
在对本发明实施例进行进一步详细说明之前,先对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)特征距离,是指任意两个特征数据的向量之间的距离,比如可以是欧式距离,也可以是余弦距离,在此不做限定。特征距离的大小,可以用来表示这两个特征所表征的两个数据,比如两个图像数据之间的相似程度。
2)检索,是一种根据给定的特征数据,从数据库中查找与给定的特征数据最相似,即特征距离最近的特征数据的过程,例如,当数据库为图片数据库时,则检索的过程实际上是根据给定的一个图片,从图片数据库中寻找与该给定图片最相似的图片。通常图片数据库是规模超大的检索库,对应的数据量非常大,比如10亿、100亿的量级,甚至更大的量级。
3)哈希(Hash),用于表示将任意长度的输入值通过散列算法转化为固定长度的输出值的过程,该固定长度的输出值就是散列值,这种转换实际上是一种压缩映射;也就是说,散列值的空间通常远小于输入值的空间,不同的输入值可能会散列成相同的输出值,因此不可能从散列值来确定唯一的输入值。
4)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
5)交易(Transaction),等同于计算机术语“事务”,交易包括了需要提交到区块链网络执行的操作,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
例如,部署(Deploy)交易用于向区块链网络中的节点安装指定的智能合约并准备好被调用;调用(Invoke)交易用于通过调用智能合约在区块链中追加交易的记录,并对区块链的状态数据库进行操作,包括更新操作(包括增加、删除和修改状态数据库中的键值(Key-Value)对)和查询操作(即查询状态数据库中的键值对)。
6)区块链(Block Chain),是由区块(Block)形成的加密的、链式的交易的存储结构。
例如,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。
7)区块链网络(Block Chain Network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
8)账本(Ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。
其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。
9)智能合约(Smart Contracts),也称为链码(Chain Code)或应用代码,部署在区块链网络的节点中的程序,该程序是根据条件而触发执行的,节点执行接收的交易中所调用的智能合约,来对状态数据库的键值对数据进行更新或查询的操作。
10)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
本发明实施例提供的分布式系统的数据库处理方法涉及人工智能领域中的大数据处理技术,大数据处理技术可通过机器学习技术实现,下面对机器学习技术进行说明。机器学习(ML,Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习和归纳学习等技术。本发明实施例通过机器学习技术可将数据量大小超过数据量阈值的目标数据库进行拆分,得到对应的多个子数据库,进而基于各服务实例所对应的可用存储空间的大小,为各服务实例分配适配数量的子数据库,在无限大小的目标数据库的存储应用中具有非常高的应用价值。
在相关技术中,例如公有云场景中,通常创建的数据库大小千差万别,有些数据库的大小只有几十、几百或者几千的量级,而有些数据库的大小则有几十万、几百万,甚至几千万等超大规模的量级,那么,如何实现这些数据量规模很大甚至超大的数据库的存储,是人工智能领域的一个研究方向。
参见图1,图1为相关技术中提供的数据库存储的示意图,假设新创建的两个数据库为数据库A和数据库B,现预将这两个数据库存储至服务器集群中,通常遇到如下两个问题:对于数据量规模很大的数据库A来说,无论将数据库A路由至服务器集群中的哪个服务实例上,都会引起该服务实例内存的急剧增长,从而引起整个服务器集群中各服务实例的内存分布不均衡,导致服务器集群扩容的更早来临。这是因为分布式系统的扩缩容是取决于服务器集群中资源最紧张的服务实例的,如果将数据库A路由至服务实例4,可见,服务实例4的资源是最紧张的,各服务实例的内存分布不均衡将导致扩容的更早到来,然而此时的服务实例1至服务实例3还远没达到瓶颈,这样将会大大降低服务实例1至服务实例3的资源利用率;对于数据量规模超大的数据库B来说,从图1可见,在整个服务器集群中根本找不到一个合适的服务实例能够容纳该数据库B,从而无法实现对数据库B的存储,可见,相关技术能支持的数据库大小存在上限。
为至少解决相关技术的上述技术问题,本发明实施例提供了一种分布式系统的数据库处理方法、装置、设备及存储介质,通过将目标数据库拆分成多个子数据库,从而结合各服务实例所对应的可用存储空间的大小,将该多个子数据库进行分布式存储,使得各服务实例的内存分布均衡保持最大化,提高整个服务器集群中各服务实例的资源利用率,能够实现无限大小的目标数据库的快速存储。
下面说明实施本发明实施例的分布式系统的数据库处理方法的分布式系统的数据库处理设备的示例性应用,本发明实施例提供的分布式系统的数据库处理设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的终端设备,也可以实施为服务器,当然也可以为终端设备和服务器协同实施,其中,服务器可以为云端服务器,但本发明实施例中并不仅限于云端服务器。
下面以终端设备和服务器协同实施为例,将参考附图对本发明实施例的分布式系统的数据库处理系统的示例性应用进行说明。参见图2,图2为本发明实施例提供的分布式系统的数据库处理系统10的一个可选的架构示意图,为实现支撑的一个示例性应用,在一些实施例中,终端100(示例性示出了终端100-1和终端100-2)通过网络200向服务器300发送针对目标数据库的操作请求,操作请求中携带待操作的目标数据库,该操作请求可由终端100上的应用客户端基于目标数据库的操作指令触发生成;服务器300用于接收操作请求,并解析该操作请求以获取目标数据库,检测目标数据库的数据量大小;当目标数据库的数据量大小超过数据量阈值时,基于分裂系数将目标数据库进行拆分,得到对应的多个子数据库;确定待分配的各服务实例所对应的可用存储空间的大小,进而基于各服务实例所对应的可用存储空间的大小,以及各子数据库的数据量大小,为各服务实例分配适配数量的子数据库,并将相应的分配结果,例如各服务实例分别对应分配有哪些子数据库的结果返回至终端100。
这里,终端100通过网络200连接服务器300,其中,网络200可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
这里,在实际应用中,服务器300可以配置为支持各种业务的一个服务器集群,服务器集群中分布式设置有多个服务节点,各服务节点可以单独配置有一个服务实例,亦可以为每个服务节点分别配置有多个服务实例,也可以是某些服务节点配置有一个服务实例,而另外一些服务节点配置有多个服务实例。
终端100可以在图形界面110(例如终端100-1的图形界面110-1和终端100-2的图形界面110-2)中显示分布式系统的数据库处理过程中的各种中间结果和最终结果,例如,将服务器为各服务实例分配适配数量的子数据库的分配结果进行呈现。
接下来继续对实施本发明实施例的分布式系统的数据库处理方法的分布式系统的数据库处理设备的硬件结构进行说明。分布式系统的数据库处理设备可以实施为终端设备,也可以实施为服务器,还可以为上述图2示出的终端设备和服务器的协同实施。
参见图3A,图3A为本发明实施例提供的分布式系统的数据库处理设备40的一个可选的硬件结构示意图,可以理解,图3A仅仅示出了分布式系统的数据库处理设备的示例性结构而非全部结构,根据需要可以实施图3A示出的部分结构或全部结构。本发明实施例提供的分布式系统的数据库处理设备40可以包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。分布式系统的数据库处理设备40中的各个组件通过总线系统440耦合在一起。可以理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3A中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的分布式系统的数据库处理装置可以采用软件方式实现,图3A示出了存储在存储器450中的分布式系统的数据库处理装置455,其可以是程序和插件等形式的软件,包括一系列的软件模块,参见图3B,图3B为本发明实施例提供的分布式系统的数据库处理装置455的一个可选的组成结构示意图,例如,分布式系统的数据库处理装置455可以包括获取单元4551、检测单元4552、拆分单元4553、第一确定单元4554和分配单元4555,这些单元的功能是逻辑上的,因此,根据各软件模块所实现的功能可以进行任意的组合或进一步的拆分。这里,需要说明的是,对于图3B所示的本发明实施例提供的分布式系统的数据库处理装置455中的各个单元的具体功能,将在下文进行说明。
在另一些实施例中,本发明实施例提供的分布式系统的数据库处理装置455可以采用硬件方式实现,作为示例,本发明实施例提供的分布式系统的数据库处理装置455可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的分布式系统的数据库处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面将结合本发明实施例提供的分布式系统的数据库处理设备的示例性应用和实施,对本发明实施例提供的分布式系统的数据库处理方法的实现进行说明。
参见图4A,图4A为本发明实施例提供的分布式系统的数据库处理方法的一个可选的流程示意图,该分布式系统的数据库处理方法可由终端实施,也可由服务器(比如云端服务器)实施,或由服务器及终端协同实施,下面以服务器实施为例,如通过图2中的服务器300实施,结合图4A示出的步骤进行说明。
在步骤401中,服务器获取目标数据库。
在步骤402中,检测目标数据库的数据量大小。
这里,目标数据库可以是各种类型的数据库,比如可包括图像数据库、图片数据库、视频数据库等,本发明实施例在此不做限定。
在实际应用中,服务器获取的目标数据库的数据量大小千差万别,在实现针对目标数据库的存储时,当目标数据库的数据量大小很小时,较容易将目标数据库存储至服务器集群中,然而当目标数据库的数据量大小很大甚至超大时,就会面临存储的难题,即无论将该目标数据库路由至服务器集群中的哪个服务实例上,都会引起该服务实例内存的急剧增长,从而引起整个服务器集群中各服务实例的内存分布不均衡,导致服务器集群扩容的更早来临,降低其他服务实例的资源利用率,且单个服务实例无法支持无限大小的目标数据库的存储,因此,在存储目标数据库之前,需要先检测目标数据库的数据量大小,当出现数据量规模很大甚至超大的目标数据库时,采用本发明实施例的分布式系统的数据库处理方法实现目标数据库的存储。
在步骤403中,当目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将目标数据库进行拆分,得到对应的多个子数据库。
这里,数据量阈值为对目标数据库进行拆分的拆分上限,也就是说,只有当目标数据库的数据量大小达到拆分上限时,才对该目标数据库进行拆分处理,在实际应用中,数据量阈值的取值可根据实际的工程场景进行设置,这里并不设限。
在本发明实施例中,分裂系数为决定服务器对目标数据库进行拆分的拆分程度,在实际应用中,分裂系数的取值为2至N之间的任意整数,具体可根据实际的工程场景进行设置,这里并不设限。
在一些实施例中,参见图4B,图4B为本发明实施例提供的分布式系统的数据库处理方法的一个可选的流程示意图,基于图4A,上述步骤403中当目标数据库的数据量大小超过数据量阈值时,服务器基于分裂系数,将目标数据库进行拆分,得到对应的多个子数据库,可以通过如下步骤4031和步骤4032来实现,下面将结合各步骤进行说明。
在步骤4031中,当目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将目标数据库拆分为至少一层级的子数据库。
在一些实施例中,服务器可通过如下方式将目标数据库拆分为至少一层级的子数据库:基于分裂系数,将目标数据库进行拆分,得到对应的第一层级的多个第一子数据库;当多个第一子数据库中,存在数据量大小超过数据量阈值的第一子数据库时,将数据量大小超过数据量阈值的第一子数据库进行拆分,得到对应的第二层级的多个第二子数据库,直至各第二子数据库的数据量大小未超过数据量阈值时停止拆分。
在本发明实施例中,各层级的子数据库的数量与分裂系数相匹配。作为示例,参见图5,图5为本发明实施例提供的将目标数据库进行拆分的一个可选的示意图,假设分裂系数为10,目标数据库为数据量规模超大的数据库A,则可将数据库A进行拆分,得到对应的第一层级的多个第一子数据库,如图5所示的子数据库A0至A9,共10个第一子数据库;继续对这多个第一子数据库的数据量大小进行检测,当检测到A1和A9的数据量大小都超过数据量阈值时,则对子数据库A1和A9继续进行拆分,得到对应的第二层级的多个第二子数据库,如图5所示的将A1拆分为多个第二子数据库A10至A19,将A9拆分为多个第二子数据库A90至A99;如果检测到上述的各第二子数据库的数据量大小均未超过数据量阈值时则停止拆分,如果检测到上述的多个第二子数据库中的A91的数据量大小超过数据量阈值时,则对第二子数据库A91继续进行拆分,得到对应的第三层级的多个第三子数据库,如图5所示的将A91拆分为多个第三子数据库A910至A919,当检测到A910至A919的数据量大小均未超过数据量阈值时则停止拆分。
在步骤4032中,将至少一层级的子数据库构成目标数据库对应的多个子数据库。
在本发明实施例中,对于每个层级的子数据库而言,只要检测到某个子数据库的数据量大小超过数据量阈值,就将该子数据库分裂出下一层级的子数据库,以得到多个层级的子数据库,从而将这多个层级的子数据库构成目标数据库对应的多个子数据库。
在一些实施例中,在将目标数据库拆分为多个子数据库,该多个子数据库位于至少两个层级,两个层级包括第一层级和第二层级时,服务器可通过如下方式向目标数据库中新增目标数据:
当监听到请求执行的事件的类型为新增目标数据时,确定目标数据对应在第一层级的第一目标位置;确定处于第一目标位置的子数据库的存储状态;当存储状态表示处于第一目标位置的子数据库的存储空间未满时,将目标数据路由至第一目标位置的子数据库中;当存储状态表示处于第一目标位置的子数据库的存储空间已满时,遍历第二层级的子数据库,以确定第二目标位置的子数据库,将目标数据路由至第二目标位置的子数据库中。
在实际实施时,当向目标数据库中新增目标数据时,优先考虑层级低的子数据库进行增加,也就是说,在本发明实施例中,层级越低的子数据库,则其优先级越高;层级越高的子数据库,则其优先级越低。
在一些实施例中,服务器可通过如下方式确定目标数据对应在第一层级的第一目标位置:将目标数据进行哈希处理,得到目标数据对应的哈希散列值;基于哈希散列值以及分裂系数,确定对应第一层级的子数据库的标识;将子数据库的标识所指示的子数据库,确定为目标数据对应在第一层级的第一目标位置。
在本发明实施例中,服务器可采用哈希算法,例如除留余数法、直接寻址法等将目标数据进行哈希处理,以得到目标数据对应的哈希散列值。这里,可根据目标数据对应的哈希散列值与分裂系数的模值,确定对应第一层级的子数据库的标识,进而就可以确定目标数据对应在第一层级的第一目标位置。作为示例,假设目标数据为X,分裂系数为10,那么目标数据X对应路由至第一层级的第一目标位置可通过如下方式确定:通过计算hash(X)%10,可以得到0~9之间的数字n,则目标数据X对应在第一层级的第一目标位置为An。
参见图6,图6为本发明实施例提供的新增目标数据的一个可选的示意图,优先考虑第一层级的子数据库,假设确定目标数据X对应在第一层级的第一目标位置的子数据库为A9,且检测到A9的存储空间还有空余(可能之前发生过数据删除的操作),那么,优先将目标数据X路由至A9中;如果检测到A9的存储空间已满,则继续路由至第二层级的子数据库,检测第二层级的多个子数据库中的哪个子数据库的存储空间有空余,例如,可通过计算hash(X9)%10得出数字m,则可确定第二层级中第二目标位置的子数据库为A9m,比如为A91,且A91的存储空间还有空余,那么,服务器就可将目标数据X路由至A91中。需要说明的是,如果A91的存储空间已满,则继续路由至第三层级的子数据库,采用上述方法确定第三层级中的第三目标位置的子数据库为A912,则服务器就可将目标数据X路由至A912中。
在一些实施例中,在将目标数据库拆分为多个子数据库,该多个子数据库位于至少两个层级,两个层级包括第一层级和第二层级时,服务器可通过如下方式查找并删除目标数据库中的目标数据:
当监听到请求执行的事件的类型为删除目标数据时,从第一层级的子数据库中查找是否存在目标数据;当第一层级的子数据库中存在目标数据时,将在第一层级中查找到的目标数据进行删除;当第一层级的子数据库中未存在目标数据时,从第二层级的子数据库中查找是否存在目标数据;当第二层级的子数据库中存在目标数据时,将在第二层级中查找到的目标数据进行删除。
需要说明的是,多个子数据库仅位于两个层级,且当第二层级的子数据库中未存在目标数据时,返回通知消息;其中,通知消息用于指示请求删除的目标数据未存在于目标数据库中。
在一些实施例中,在将目标数据库拆分为多个子数据库,该多个子数据库位于至少两个层级,两个层级包括第一层级和第二层级时,服务器可通过如下方式查找并更新目标数据库中的目标数据:
当监听到请求执行的事件的类型为更新目标数据时,从第一层级的子数据库中查找是否存在目标数据;当第一层级的子数据库中存在目标数据时,将在第一层级中查找到的目标数据进行更新;当第一层级的子数据库中未存在目标数据时,从第二层级的子数据库中查找是否存在目标数据;当第二层级的子数据库中存在目标数据时,将在第二层级中查找到的目标数据进行更新。
这里,在实际实施时,多个子数据库仅位于两个层级,且当第二层级的子数据库中未存在目标数据时,返回通知消息;其中,通知消息用于指示请求更新的目标数据未存在于目标数据库中。
参见图7,图7为本发明实施例提供的删除或更新目标数据的一个可选的示意图,仍然优先考虑第一层级的子数据库,分别从第一层级的子数据库A0至A9中查找是否存在目标数据X,当确定第一层级的子数据库A9中存在目标数据X时,则将在第一层级的子数据库A9中查找到的目标数据X进行删除或更新;如果在第一层级的子数据库A0至A9中未找到目标数据X,则继续路由至第二层级的子数据库A90至A99,若确定A91中存在目标数据X,则将存在于子数据库A91中的目标数据X进行删除或更新,以此类推,如果路由至最后一个层级仍未查找到目标数据X,则表明请求删除或更新的目标数据X在目标数据库A中不存在,则相应的返回目标数据库A中不存在请求删除或更新的目标数据X的通知消息。
需要说明的是,在本发明实施例中,实际查找目标数据X的次数与目标数据库A拆分的最大层数相关。
在步骤404中,确定待分配的各服务实例所对应的可用存储空间的大小。
在本发明实施例中,服务实例用于供分布式系统中的服务节点实现数据存储。
在一些实施例中,参见图4C,图4C为本发明实施例提供的分布式系统的数据库处理方法的一个可选的流程示意图,基于图4A,上述步骤404中服务器确定待分配的各服务实例所对应的可用存储空间的大小,可以通过如下步骤4041和步骤4042来实现,下面将结合各步骤进行说明。
在步骤4041中,获取待分配的各服务实例的当前使用状态信息。
在步骤4042中,基于各服务实例的当前使用状态信息,分别确定各服务实例所对应的可用存储空间的大小。
这里,各服务实例的当前使用状态信息,例如可以是各服务实例的当前负载,各服务实例的内存剩余量等,在此不做限定。
在步骤405中,基于各服务实例所对应的可用存储空间的大小,以及各子数据库的数据量大小,为各服务实例分配适配数量的子数据库。
参见图8,图8为本发明实施例提供的为各服务实例分配适配数量的子数据库的示意图,服务器在基于分裂系数将目标数据库进行拆分,得到对应的多个子数据库,比如A0至A9、A10至A19、A90至A99、A910至A919后,基于各服务实例所对应的可用存储空间的大小,以及各子数据库的数据量大小,可以确定各服务实例所能承载的子数据库的数量,从而为各服务实例分配适配数量的子数据库,使得各服务实例的内存分布均衡保持最大化。
在一些实施例中,分布式系统的数据库处理方法还包括:接收针对目标数据的检索请求;响应于检索请求,并行请求各服务实例;基于各服务实例与多个子数据库的对应关系,获取各服务实例所分配的子数据库;从各服务实例所分配的子数据库中,检索出与目标数据的相似度最高的目标数量的数据作为检索结果。
这里,可通过先计算目标数据与子数据库中的数据之间的特征距离,然后根据特征距离与相似度之间的负相关关系,确定目标数据与子数据库中的数据之间的相似度。其中,特征距离可以用欧式距离来表示,也可以用余弦距离来表示,在此也不做限定。
参见图9,图9为本发明实施例提供的检索目标数据的一个可选的示意图,采用本发明实施例提供的分布式系统的数据库处理方法,将目标数据库A拆分成多个子数据库,包括A0至A9、A10至A19、A90至A99、A910至A919,并根据路由算法可获取各服务实例与多个子数据库的对应关系,即获知各服务实例分别分配了哪些子数据库,比如图9中的四个服务实例分别分配了哪些子数据库,然后并行请求这四个服务实例,从各服务实例所分配的子数据库中分别检索与目标数据的相似度最高的目标数量的数据。在实际实施时,检索请求的并行数可以小于等于服务实例的个数,这与子数据库的分散程度相关。
在实际应用中,当分布式系统运行时间较长后,可能发生了很多增删查更的事件,导致有些层级的子数据库的数量已经寥寥无几,即将目标数据库拆分成了很多层级的子数据库,但是子数据库分布非常分散,将会影响检索和删、查、更的效率,这是因为对于检索的操作来说,目标数据库拆分的层级越多,则会相应增加检索的并行度,对于删、查、更的操作来说,目标数据库拆分的层级越多,则会相应增加查询的次数。为解决该技术问题,在一些实施例中,服务器可检测各层级的子数据库的活跃状态,将未处于活跃状态的子数据库进行合并,以减少相应层级的子数据库的数量,以及减少层级数。
参见图10,图10为本发明实施例提供的合并子数据库的一个可选的示意图,在图10中,第三层级的子数据库A910至A919在某一时间段内未处于活跃状态,则可将子数据库A910至A919进行收缩合并的操作,以合并到子数据库A91中,减少目标数据库拆分的层级数。
本发明实施例提供的上述分布式系统的数据库处理方法可以应用但不仅限于以下场景:在公有云人脸识别的场景中,由于人脸数据库是个超大规模的图像库,占用显存近1.4TB,采用本发明实施例的方法将人脸数据库进行拆分,针对多个子数据库进行人脸的识别,提高人脸识别的效率;另外,互联网流量有典型的长尾特征,即90%的数据库都是数据量较小的库,只有10%的数据库是大规模的数据库,这种突兀的大库会给整个服务器集群带来数据分布不均衡的问题,采用本发明实施例的方法可以使整个服务器集群中各服务实例的内存分布均衡保持最大化。
采用本发明实施例提供的技术方案,当获取到的目标数据库的数据量大小超过数据量阈值时,基于分裂系数将目标数据库进行拆分,得到对应的多个子数据库,以及确定待分配的各服务实例所对应的可用存储空间的大小,进而基于各服务实例所对应的可用存储空间的大小,以及各子数据库的数据量大小,为各服务实例分配适配数量的子数据库;如此,通过将目标数据库拆分成多个子数据库,从而结合各服务实例所对应的可用存储空间的大小,将该多个子数据库进行分布式存储,使得各服务实例的内存分布均衡保持最大化,提高整个服务器集群中各服务实例的资源利用率,能够实现无限大小的目标数据库的快速存储。
为了便于对多个子数据库的数据进行安全存储和不被篡改,在一些实施例中,分布式系统的数据库处理方法还包括:将多个子数据库分别发送至区块链网络中,以使区块链网络的节点将多个子数据库填充至新区块,且当对新区块取得共识一致时,将新区块追加至区块链的尾部。具体来说,在将目标数据库拆分成多个子数据库后,还可结合区块链技术,生成用于存储多个子数据库的数据的交易,提交生成的交易至区块链网络的节点,以使节点对交易共识后存储多个子数据库的数据至区块链网络。如此,将多个子数据库的数据进行上链存储,实现记录的备份,保证多个子数据库的数据的安全性。
参见图11,图11为本发明实施例提供的分布式系统的数据库处理装置455的架构示意图,包括区块链网络81(示例性示出了共识节点810-1至共识节点810-3)、认证中心82、业务主体83和业务主体84,下面分别进行说明。
区块链网络81的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备例如用户终端和服务器(比如云端服务器),都可以在不需要授权的情况下接入区块链网络81;以联盟链为例,业务主体在获得授权后其下辖的电子设备(例如终端/服务器)可以接入区块链网络81,此时,成为区块链网络81中的客户端节点。
在一些实施例中,客户端节点可以只作为区块链网络81的观察者,即提供支持业务主体发起交易(例如,用于上链存储数据或查询链上数据)的功能,对于区块链网络81中的共识节点810的功能,例如排序功能、共识服务和账本功能等,客户端节点可以缺省或者有选择性(例如,取决于业务主体的具体业务需求)地实施。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块链网络81中,通过区块链网络81实现数据和业务处理过程的可信和可追溯。
区块链网络81中的共识节点接收来自不同业务主体(例如图11中示出的业务主体83和业务主体84)的客户端节点(例如,图11中示出的归属于业务主体83的客户端节点410、以及归属于业务主体84的客户端节点510)提交的交易,执行交易以更新账本或者查询账本,执行交易的各种中间结果或最终结果可以返回业务主体的客户端节点中进行显示。
例如,客户端节点410/510可以订阅区块链网络81中感兴趣的事件,例如区块链网络81中特定的组织/通道中发生的交易,由共识节点810推送相应的交易通知至客户端节点410/510,从而触发客户端节点410/510中相应的业务逻辑。
下面以多个业务主体接入区块链网络以实现多个子数据库的数据的管理为例,说明区块链网络的示例性应用。参见图11,管理环节涉及的多个业务主体,如业务主体83可以是分布式系统的数据库处理装置对应的客户端,业务主体84可以是带有播放显示功能的显示系统,从认证中心82进行登记注册获得各自的数字证书,数字证书中包括业务主体的公钥、以及认证中心82对业务主体的公钥和身份信息签署的数字签名,用来与业务主体针对交易的数字签名一起附加到交易中,并被发送到区块链网络,以供区块链网络从交易中取出数字证书和签名,验证消息的可靠性(即是否未经篡改)和发送消息的业务主体的身份信息,区块链网络81会根据身份进行验证,例如是否具有发起交易的权限。业务主体下辖的电子设备(例如终端或者服务器)运行的客户端都可以向区块链网络81请求接入而成为客户端节点。
业务主体83的客户端节点410用于获取目标数据库,并检测目标数据库的数据量大小;当目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将目标数据库进行拆分,得到对应的多个子数据库,将多个子数据库的数据发送至区块链网络81。
其中,将多个子数据库的数据发送至区块链网络81,可以预先在客户端节点410设置业务逻辑,当查找到多个子数据库的数据时,客户端节点410将多个子数据库的数据自动发送至区块链网络81,也可以由业务主体83的业务人员在客户端节点410中登录,手动打包多个子数据库的数据,并将其发送至区块链网络81。在发送时,客户端节点410根据多个子数据库的数据生成对应更新操作的交易,在交易中指定了实现更新操作需要调用的智能合约、以及向智能合约传递的参数,交易中还携带了客户端节点410的数字证书、签署的数字签名(例如,使用客户端节点410的数字证书中的私钥,对交易的摘要进行加密得到),并将交易广播到区块链网络81中的共识节点810。
区块链网络81中的共识节点810接收到交易时,对交易携带的数字证书和数字签名进行验证,验证成功后,根据交易中携带的业务主体83的身份,确认业务主体83是否是具有交易权限,数字签名和权限验证中的任何一个验证判断都将导致交易失败。验证成功后签署节点810自己的数字签名(例如,使用节点810-1的私钥对交易的摘要进行加密得到),并继续在区块链网络81中广播。
区块链网络81中的共识节点810接收到验证成功的交易后,将交易填充到新的区块中并进行广播。区块链网络81中的共识节点810广播新区块时,会对新区块进行共识过程,如果共识成功,则将新区块追加到自身所存储的区块链的尾部,并根据交易的结果更新状态数据库,执行新区块中的交易:对于提交更新多个子数据库的数据的交易,在状态数据库中添加包括多个子数据库的数据的键值对。
值得说明的是,在图11中示例性地示出了将多个子数据库的数据直接上链的过程,但在另一些实施例中,对于子数据库的数据量较大的情况,客户端节点410可将子数据库的数据的哈希上链,将多个子数据库的数据的哈希存储于分布式文件系统或数据库。客户端节点510从分布式文件系统或数据库获取到多个子数据库的数据后,可结合区块链网络81中对应的哈希进行校验,从而减少上链操作的工作量。
作为区块链的示例,参见图12,图12为本发明实施例提供的区块链网络81中区块链的一个可选的结构示意图,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,新产生的交易的记录被填充到区块并经过区块链网络中节点的共识后,将被追加到区块链的尾部从而形成链式的增长,各区块之间基于哈希值的链式结构,保证了区块中交易的防篡改和防伪造。
下面说明本发明实施例提供的区块链网络的示例性功能架构,参见图13,图13为本发明实施例提供的区块链网络81的功能架构示意图,包括应用层201、共识层202、网络层203、数据层204和资源层205,下面分别进行说明。
资源层205封装了实现区块链网络81中的各个节点810的计算资源、存储资源和通信资源。
数据层204封装了实现账本的各种数据结构,包括以文件系统中的文件实现的区块链,键值型的状态数据库和存在性证明(例如区块中交易的哈希树)。
网络层203封装了点对点(P2P,Point to Point)网络协议、数据传播机制和数据验证机制、接入认证机制和业务主体身份管理的功能。
其中,P2P网络协议实现区块链网络81中节点810之间的通信,数据传播机制保证了交易在区块链网络81中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点810之间传输数据的可靠性;接入认证机制用于根据实际的业务场景对加入区块链网络81的业务主体的身份进行认证,并在认证通过时赋予业务主体接入区块链网络81的权限;业务主体身份管理用于存储允许接入区块链网络81的业务主体的身份、以及权限(例如能够发起的交易的类型)。
共识层202封装了区块链网络81中的节点810对区块达成一致性的机制(即共识机制)、交易管理和账本管理的功能。共识机制包括POS、POW和DPOS等共识算法,支持共识算法的可插拔。
交易管理用于验证节点810接收到的交易中携带的数字签名,验证业务主体的身份信息,并根据身份信息判断确认其是否具有权限进行交易(从业务主体身份管理读取相关信息);对于获得接入区块链网络81的授权的业务主体而言,均拥有认证中心颁发的数字证书,业务主体利用自己的数字证书中的私钥对提交的交易进行签名,从而声明自己的合法身份。
账本管理用于维护区块链和状态数据库。对于取得共识的区块,追加到区块链的尾部;执行取得共识的区块中的交易,当交易包括更新操作时更新状态数据库中的键值对,当交易包括查询操作时查询状态数据库中的键值对并向业务主体的客户端节点返回查询结果。支持对状态数据库的多种维度的查询操作,包括:根据区块向量号(例如交易的哈希值)查询区块;根据区块哈希值查询区块;根据交易向量号查询区块;根据交易向量号查询交易;根据业务主体的账号(向量号)查询业务主体的账号数据;根据通道名称查询通道中的区块链。
应用层201封装了区块链网络能够实现的各种业务,包括交易的溯源、存证和验证等。
接下来继续对本发明实施例提供的分布式系统的数据库处理装置455的软件实现进行说明。以上述实施本发明实施例的分布式系统的数据库处理方法的分布式系统的数据库处理设备40中的存储器450所包括的软件模块为例进行说明,对于下文关于模块的功能说明中未尽的细节,可以参考上文本发明方法实施例的描述而理解。如图4所示,本发明实施例提供的分布式系统的数据库处理装置455可以包括:
获取单元4551,用于获取目标数据库;检测单元4552,用于检测所述目标数据库的数据量大小;拆分单元4553,用于当所述目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将所述目标数据库进行拆分,得到对应的多个子数据库;第一确定单元4554,用于确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;分配单元4555,用于基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。
在一些实施例中,就拆分单元基于分裂系数,将所述目标数据库进行拆分,得到对应的多个子数据库来说,可以采用以下方式实现:
基于所述分裂系数,将所述目标数据库拆分为至少一层级的子数据库,各层级的所述子数据库的数量与所述分裂系数相匹配;将所述至少一层级的子数据库构成所述目标数据库对应的多个子数据库。
在一些实施例中,就拆分单元基于所述分裂系数,将所述目标数据库拆分为至少一层级的子数据库来说,可以采用以下方式实现:
基于所述分裂系数,将所述目标数据库进行拆分,得到对应的第一层级的多个第一子数据库;当所述多个第一子数据库中,存在数据量大小超过所述数据量阈值的第一子数据库时,将数据量大小超过所述数据量阈值的第一子数据库进行拆分,得到对应的第二层级的多个第二子数据库,直至各所述第二子数据库的数据量大小未超过所述数据量阈值时停止拆分。
在一些实施例中,就第一确定单元确定待分配的各服务实例所对应的可用存储空间的大小来说,可以采用以下方式实现:
获取待分配的各所述服务实例的当前使用状态信息;基于各所述服务实例的当前使用状态信息,分别确定各所述服务实例所对应的可用存储空间的大小。
在一些实施例中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第二确定单元,用于当监听到请求执行的事件的类型为新增目标数据时,确定所述目标数据对应在所述第一层级的第一目标位置;
第三确定单元,用于确定处于所述第一目标位置的子数据库的存储状态;
第一路由单元,用于当所述存储状态表示处于所述第一目标位置的子数据库的存储空间未满时,将所述目标数据路由至所述第一目标位置的子数据库中;
第二路由单元,用于当所述存储状态表示处于所述第一目标位置的子数据库的存储空间已满时,遍历所述第二层级的子数据库,以确定第二目标位置的子数据库,将所述目标数据路由至所述第二目标位置的子数据库中。
这里,就第二确定单元确定所述目标数据对应在所述第一层级的第一目标位置来说,可以采用以下方式实现:
将所述目标数据进行哈希处理,得到所述目标数据对应的哈希散列值;基于所述哈希散列值以及所述分裂系数,确定对应所述第一层级的子数据库的标识;将所述子数据库的标识所指示的子数据库,确定为所述目标数据对应在所述第一层级的第一目标位置。
在一些实施例中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第一查找单元,用于当监听到请求执行的事件的类型为删除目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
删除单元,用于当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行删除;
所述第一查找单元,还用于当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
所述删除单元,还用于当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行删除。
在一些实施例中,所述装置还包括:
返回单元,用于当所述第二层级的子数据库中未存在所述目标数据时,返回通知消息;其中,所述通知消息用于指示请求删除的所述目标数据未存在于所述目标数据库中。
在一些实施例中,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述装置还包括:
第二查找单元,用于当监听到请求执行的事件的类型为更新目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
更新单元,用于当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行更新;
所述第二查找单元,还用于当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
所述更新单元,还用于当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行更新。
在一些实施例中,所述装置还包括:
接收单元,用于接收针对目标数据的检索请求;
请求单元,用于响应于所述检索请求,并行请求各所述服务实例;
所述获取单元,还用于基于各所述服务实例与所述多个子数据库的对应关系,获取各所述服务实例所分配的子数据库;
检索单元,用于从各所述服务实例所分配的子数据库中,检索出与所述目标数据的相似度最高的目标数量的数据作为检索结果。
在一些实施例中,所述装置还包括:
发送单元,用于将所述多个子数据库分别发送至区块链网络中,以使所述区块链网络的节点将所述多个子数据库填充至新区块,且当对所述新区块取得共识一致时,将所述新区块追加至区块链的尾部。
本发明实施例还提供了一种存储介质,存储有可执行指令,可执行指令被处理器执行时,用于实现本发明实施例提供的上述分布式系统的数据库处理方法。
在一些实施例中,存储介质具体可为计算机可读存储介质,例如可以是铁电随机存取存储器(FRAM,Ferromagnetic Random Access Memory)、ROM、PROM、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,本发明实施例的技术方案具有以下有益效果:
本发明实施例提供的分布式系统的数据库处理方法,通过将目标数据库拆分成多个子数据库,从而结合各服务实例所对应的可用存储空间的大小,将该多个子数据库进行分布式存储,使得各服务实例的内存分布均衡保持最大化,提高整个服务器集群中各服务实例的资源利用率,能够实现无限大小的目标数据库的快速存储;且本发明实施例对于数据量规模很大甚至超大的目标数据库来说,采取一定的拆分策略,能够实现增删查改目标数据的便利,以及检索目标数据的高效实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种分布式系统的数据库处理方法,其特征在于,所述方法包括:
获取目标数据库,并检测所述目标数据库的数据量大小;
当所述目标数据库的数据量大小超过数据量阈值时,
基于分裂系数,将所述目标数据库进行拆分,得到对应的第一层级的多个第一子数据库,其中,所述分裂系数表征所述多个第一子数据库的数量;
当所述多个第一子数据库中,存在数据量大小超过所述数据量阈值的第一子数据库时,将数据量大小超过所述数据量阈值的第一子数据库进行拆分,得到对应的第二层级的多个第二子数据库,直至各所述第二子数据库的数据量大小未超过所述数据量阈值时停止拆分,其中,各层级的所述子数据库的数量与所述分裂系数相匹配;
将至少一层级的子数据库构成所述目标数据库对应的多个子数据库;
确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;
基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。
2.如权利要求1所述的方法,其特征在于,所述确定待分配的各服务实例所对应的可用存储空间的大小,包括:
获取待分配的各所述服务实例的当前使用状态信息;
基于各所述服务实例的当前使用状态信息,分别确定各所述服务实例所对应的可用存储空间的大小。
3.如权利要求1所述的方法,其特征在于,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述方法还包括:
当监听到请求执行的事件的类型为新增目标数据时,确定所述目标数据对应在所述第一层级的第一目标位置;
确定处于所述第一目标位置的子数据库的存储状态;
当所述存储状态表示处于所述第一目标位置的子数据库的存储空间未满时,将所述目标数据路由至所述第一目标位置的子数据库中;
当所述存储状态表示处于所述第一目标位置的子数据库的存储空间已满时,遍历所述第二层级的子数据库,以确定第二目标位置的子数据库,将所述目标数据路由至所述第二目标位置的子数据库中。
4.如权利要求3所述的方法,其特征在于,所述确定所述目标数据对应在所述第一层级的第一目标位置,包括:
将所述目标数据进行哈希处理,得到所述目标数据对应的哈希散列值;
基于所述哈希散列值以及所述分裂系数,确定对应所述第一层级的子数据库的标识;
将所述子数据库的标识所指示的子数据库,确定为所述目标数据对应在所述第一层级的第一目标位置。
5.如权利要求1所述的方法,其特征在于,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述方法还包括:
当监听到请求执行的事件的类型为删除目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行删除;
当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行删除。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当所述第二层级的子数据库中未存在所述目标数据时,返回通知消息;
其中,所述通知消息用于指示请求删除的所述目标数据未存在于所述目标数据库中。
7.如权利要求1所述的方法,其特征在于,所述多个子数据库位于至少两个层级,所述两个层级包括第一层级和第二层级;所述方法还包括:
当监听到请求执行的事件的类型为更新目标数据时,从所述第一层级的子数据库中查找是否存在所述目标数据;
当所述第一层级的子数据库中存在所述目标数据时,将在所述第一层级中查找到的所述目标数据进行更新;
当所述第一层级的子数据库中未存在所述目标数据时,从所述第二层级的子数据库中查找是否存在所述目标数据;
当所述第二层级的子数据库中存在所述目标数据时,将在所述第二层级中查找到的所述目标数据进行更新。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收针对目标数据的检索请求;
响应于所述检索请求,并行请求各所述服务实例;
基于各所述服务实例与所述多个子数据库的对应关系,获取各所述服务实例所分配的子数据库;
从各所述服务实例所分配的子数据库中,检索出与所述目标数据的相似度最高的目标数量的数据作为检索结果。
9.如权利要求1至8任一项所述的方法,其特征在于,所述方法还包括:
将所述多个子数据库分别发送至区块链网络中,以使所述区块链网络的节点将所述多个子数据库填充至新区块,且当对所述新区块取得共识一致时,将所述新区块追加至区块链的尾部。
10.一种分布式系统的数据库处理装置,其特征在于,所述装置包括:
获取单元,用于获取目标数据库;
检测单元,用于检测所述目标数据库的数据量大小;
拆分单元,用于当所述目标数据库的数据量大小超过数据量阈值时,基于分裂系数,将所述目标数据库进行拆分,得到对应的第一层级的多个第一子数据库,其中,所述分裂系数表征所述多个第一子数据库的数量;当所述多个第一子数据库中,存在数据量大小超过所述数据量阈值的第一子数据库时,将数据量大小超过所述数据量阈值的第一子数据库进行拆分,得到对应的第二层级的多个第二子数据库,直至各所述第二子数据库的数据量大小未超过所述数据量阈值时停止拆分,其中,各层级的所述子数据库的数量与所述分裂系数相匹配;将至少一层级的子数据库构成所述目标数据库对应的多个子数据库;
第一确定单元,用于确定待分配的各服务实例所对应的可用存储空间的大小,所述服务实例用于供所述分布式系统中的服务节点实现数据存储;
分配单元,用于基于各所述服务实例所对应的可用存储空间的大小,以及各所述子数据库的数据量大小,为各所述服务实例分配适配数量的子数据库。
11.一种分布式系统的数据库处理设备,其特征在于,所述设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现如权利要求1至9任一项所述的分布式系统的数据库处理方法。
12.一种计算机可读存储介质,其特征在于,存储有可执行指令,所述可执行指令被处理器执行时,用于实现如权利要求1至9任一项所述的分布式系统的数据库处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010003357.0A CN111241195B (zh) | 2020-01-02 | 2020-01-02 | 分布式系统的数据库处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010003357.0A CN111241195B (zh) | 2020-01-02 | 2020-01-02 | 分布式系统的数据库处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111241195A CN111241195A (zh) | 2020-06-05 |
CN111241195B true CN111241195B (zh) | 2023-03-21 |
Family
ID=70870739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010003357.0A Active CN111241195B (zh) | 2020-01-02 | 2020-01-02 | 分布式系统的数据库处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241195B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114519125A (zh) * | 2020-11-19 | 2022-05-20 | 北京达佳互联信息技术有限公司 | 数据写入方法、装置及服务器 |
CN112667568B (zh) * | 2020-12-21 | 2022-11-22 | 广州携旅信息科技有限公司 | 一种在酒店内网环境下实现分布式存储的方法 |
CN112948440A (zh) * | 2021-03-09 | 2021-06-11 | 北京小米移动软件有限公司 | 页面数据的处理方法及装置、终端、存储介质 |
CN113626458A (zh) * | 2021-08-19 | 2021-11-09 | 咪咕数字传媒有限公司 | 高并发数据更新方法、装置、设备以及计算机存储介质 |
CN114419717A (zh) * | 2022-01-27 | 2022-04-29 | 睿云联(厦门)网络通讯技术有限公司 | 一种终端设备的人脸检测、识别加速方法及系统 |
CN114282073B (zh) * | 2022-03-02 | 2022-07-15 | 支付宝(杭州)信息技术有限公司 | 数据存储方法及装置、数据读取方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897593A (zh) * | 2005-07-12 | 2007-01-17 | 国际商业机器公司 | 数据存储方法和系统 |
CN103873504A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 数据分块存储至分布式服务器的系统及方法 |
CN104376109A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于数据分布库的多维度数据分布方法 |
CN104731951A (zh) * | 2015-03-31 | 2015-06-24 | 北京奇艺世纪科技有限公司 | 一种数据查询方法及装置 |
CN108959385A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 数据库部署方法、装置、计算机设备和存储介质 |
US10409648B1 (en) * | 2017-03-01 | 2019-09-10 | Amazon Technologies, Inc. | Splitting processing responsibility for separately stored data partitions |
CN110597832A (zh) * | 2019-09-12 | 2019-12-20 | 腾讯云计算(北京)有限责任公司 | 基于区块链网络的政务信息处理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811524B2 (en) * | 2015-07-27 | 2017-11-07 | Sas Institute Inc. | Distributed data set storage and retrieval |
-
2020
- 2020-01-02 CN CN202010003357.0A patent/CN111241195B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897593A (zh) * | 2005-07-12 | 2007-01-17 | 国际商业机器公司 | 数据存储方法和系统 |
CN103873504A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 数据分块存储至分布式服务器的系统及方法 |
CN104376109A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于数据分布库的多维度数据分布方法 |
CN104731951A (zh) * | 2015-03-31 | 2015-06-24 | 北京奇艺世纪科技有限公司 | 一种数据查询方法及装置 |
US10409648B1 (en) * | 2017-03-01 | 2019-09-10 | Amazon Technologies, Inc. | Splitting processing responsibility for separately stored data partitions |
CN108959385A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 数据库部署方法、装置、计算机设备和存储介质 |
CN110597832A (zh) * | 2019-09-12 | 2019-12-20 | 腾讯云计算(北京)有限责任公司 | 基于区块链网络的政务信息处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Narayanan Venkateswaran et al..Simplified Data Partitioning in a Consistent Hashing Based Sharding Implementation.2017,895-900. * |
南菊松.分布式数据库系统中数据分配算法研究.2014,(第6期),I138-564. * |
Also Published As
Publication number | Publication date |
---|---|
CN111241195A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111241195B (zh) | 分布式系统的数据库处理方法、装置、设备及存储介质 | |
CN107465656B (zh) | 一种基于云计算的安防监控大数据处理方法及系统 | |
US20210326483A1 (en) | Secure decentralized system utilizing smart contracts, a blockchain, and/or a distributed file system | |
US20220407725A1 (en) | File storage method, terminal, and storage medium | |
US20190068690A1 (en) | Automated management of resource attributes across network-based services | |
KR20210133289A (ko) | 블록체인 네트워크에서 데이터 추출 | |
Grolinger et al. | Data management in cloud environments: NoSQL and NewSQL data stores | |
CN111274268B (zh) | 物联网数据传输方法、装置、介质及电子设备 | |
US20070061542A1 (en) | System for a distributed column chunk data store | |
CN110543545A (zh) | 基于区块链的档案管理方法、装置及存储介质 | |
Sicari et al. | Security&privacy issues and challenges in NoSQL databases | |
CN112416960A (zh) | 多场景下的数据处理方法、装置、设备及存储介质 | |
CN113094334B (zh) | 基于分布式存储的数字服务方法、装置、设备及储存介质 | |
CN111651525A (zh) | 区块链数据存储方法和装置 | |
US10182104B1 (en) | Automatic propagation of resource attributes in a provider network according to propagation criteria | |
CN110795432A (zh) | 一种特征数据的检索方法、装置及存储介质 | |
CN110544042A (zh) | 基于区块链网络的图书管理方法及装置 | |
CN113505260A (zh) | 人脸识别方法、装置、计算机可读介质及电子设备 | |
CN112487061A (zh) | 一种基于区块链的大数据溯源方法、系统及计算机设备 | |
WO2022057525A1 (zh) | 一种数据找回方法、装置、电子设备及存储介质 | |
CN112800066B (zh) | 索引管理的方法、相关设备及存储介质 | |
Weintraub et al. | Data integrity verification in column-oriented NoSQL databases | |
WO2022011946A1 (zh) | 一种数据预测方法、装置、计算机设备及存储介质 | |
CN113011960A (zh) | 基于区块链的数据访问方法、装置、介质及电子设备 | |
US20230344781A1 (en) | Grouping resource metadata tags |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024370 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |