本发明涉及数据库,特别涉及一种分层kv数据库系统。
背景技术:
1、在多片段组合运行的区块链平台(如图1所示)中,账本的各个片段对应的区块链网络各自有一个世界状态数据库,而这些世界状态数据库中的数据按时间关系叠加后,才是最终的世界状态数据库完全体。
2、为实现最终的世界状态数据库完全体,常规的方式包括:
3、(1)通过程序调度,依次访问各片段的世界状态数据库中的数据,这种方式需要额外的开发任务,整合性较低;
4、(2)新开辟一个时间状态数据库,按时间先后顺序依次写入各片段的世界状态数据库中的数据,这种方式需要额外的数据库,并需要复杂的时序控制要求,各片段的数据无法并发写入,会存在时序混乱的问题,并且容易产生脏数据。
技术实现思路
1、为解决上述问题,本发明提供的一种分层kv数据库系统,该数据库系统在多片段组合运行的区块链平台中使用时,大幅降低了业务开展复杂度,业务适用的灵活性更高,该数据库中的还可以通过扩展外部引用功能,对外部的分层kv数据库进行数据操作,更加适合海量数据的分布式场景。
2、为实现上述目的,本发明采用如下技术方案:
3、本发明提供一种分层kv数据库系统,包括:
4、数据库模块,用于根据配置文件中分层kv数据库的描述信息,确定分层kv数据库的结构;
5、api模块,用于提供分层kv数据库的操作api,并接收分层kv数据库的操作api相对应的api请求,分层kv数据库的操作api,包括:数据库操作api、key操作api;
6、分发模块,用于基于分层kv数据库的操作api相对应的api请求的参数,将api请求分发到逻辑交互模块中相对应的交互单元;
7、逻辑交互模块,用于基于分层kv数据库的操作api相对应的api请求的参数,对分层kv数据库执行api请求相对应的逻辑交互。
8、进一步地,配置文件中分层kv数据库的描述信息,包括:数据库名称、数据库引用层级、kv数据库层信息。
9、进一步地,数据库模块,还用于包括:
10、获取分层kv数据库的描述信息中的分层kv数据库的数据库名称,在本地服务器的工作目录下创建数据库名称相对应的目录;
11、获取分层kv数据库的描述信息中的kv数据库层信息,kv数据库层信息中包括一个或多个kv数据库层,kv数据库层中包括:层序号和层路径;
12、kv数据库层中的层路径为本地路径,则根据kv数据库层中的层序号和层路径,在数据库名称相对应的目录下创建kv数据库层目录,kv数据库层目录由一个kv数据库接管,kv数据库对kv数据库层目录进行调度操作。
13、进一步地,kv数据库为嵌入式数据库。
14、进一步地,kv数据库层中的层路径为远程路径,则根据kv数据库层中的层序号和层路径,对远程服务器的分层kv数据库进行调度操作。
15、进一步地,数据库操作api,包括:
16、getdb:获取分层kv数据库的描述信息;
17、putdb:创建分层kv数据库或创建分层kv数据库中的kv数据库层;
18、deletedb:删除分层kv数据库或创建分层kv数据库中的kv数据库层;
19、getdb、putdb、deletedb为数据库操作api的名称。
20、进一步地,key操作api,包括:
21、getkey:查询分层kv数据库的键值对;
22、putkey:向分层kv数据库中写入键值对;
23、deletekey:删除分层kv数据库中的键值对;
24、getkey、putkey、deletekey为key操作api的名称。
25、进一步地,分发模块,还用于,
26、对分层kv数据库的操作api相对应的api请求的参数进行判断,
27、若参数为config信息,则该api请求为数据库操作api相对应的请求,将该api请求分发到逻辑交互模块中的分层kv数据库交互单元;
28、若参数为request信息,则改api请求为key操作api相对应的请求,将该api请求分发到逻辑交互模块中的kv数据库层交互单元。
29、进一步地,逻辑交互模块,还用于:
30、对分层kv数据库的操作api相对应的api请求的参数进行判断,
31、若参数为config信息时,对分层kv数据库执行api请求相对应的逻辑交互;
32、若参数为request信息时,对分层kv数据库中分层数据库层执行api请求相对应的逻辑交互。
33、进一步地,若参数为request信息时,对于reques信息中层序号信息的逻辑交互,包括:
34、对于api请求getkey,获取request信息中的数据库名称、层序号信息和键key,若层序号信息为层序号集合表达式时,遍历集合,首先从集合表达式中第一层序号相对应的kv数据库层进行查找,若找到键key对应的值value,则返回,若没有找到,则进入下一层,直到找到键key对应的值value或遍历完层序号集合表达式中的层序号相对应的kv数据库层;
35、对于api请求putkey,获取request信息中的数据库名称、层序号信息、键值对,若层序号信息为层序号集合表达式时,遍历集合,首先从集合表达式中第一层序号相对应的kv数据库层进行写入键值对,无论写入成功还是失败都返回,并中止遍历;
36、对于api请求deletekey,获取request信息中的数据库名称、层序号信息和键key,若层序号信息为集合表达式时,遍历集合,对集合表达式中所有层序号相对应的kv数据库层进行删除键key对应的键值对。
37、本发明提供的技术方案,至少具有如下技术效果或优点:
38、本发明的提供的分层kv数据库系统扩展了分层支持,通过将一个或多个kv数据库层与配置文件进行逻辑关联,kv数据库层相对应的文件目录由独立的kv数据库托管,进行调度操作,并提供统一的访问接口及层访问逻辑控制,满足了各区间数据在物理上独立存放,又同时满足独立和整体访问的需求。在多片段组合运行的区块链平台中,解决了现有技术实现最终世界状态数据库时存在的问题,大幅降低了业务开展复杂度,业务适用的灵活性更高,该数据库中的还可以通过扩展外部引用功能,对外部的分层kv数据库进行数据操作,更加适合海量数据的分布式场景。
39、本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
1.一种分层kv数据库系统,其特征在于,包括:
2.根据权利要求1所述的分层kv数据库系统,其特征在于,所述配置文件中分层kv数据库的描述信息,包括:数据库名称、数据库引用层级、kv数据库层信息。
3.根据权利要求1所述的分层kv数据库系统,其特征在于,所述数据库模块,还用于包括:
4.根据权利要求3所述的分层kv数据库系统,其特征在于,所述kv数据库为嵌入式数据库。
5.根据权利要求3所述的分层kv数据库系统,其特征在于,所述kv数据库层中的层路径为远程路径,则根据kv数据库层中的层序号和层路径,对远程服务器的分层kv数据库进行调度操作。
6.根据权利要求1所述的分层kv数据库系统,其特征在于,所述数据库操作api,包括:
7.根据权利要求1所述的分层kv数据库系统,其特征在于,所述key操作api,包括:
8.根据权利要求1所述的分层kv数据库系统,其特征在于,所述分发模块,还用于,
9.根据权利要求1所述的分层kv数据库系统,其特征在于,所述逻辑交互模块,还用于:
10.根据权利要求9所述的分层kv数据库系统,其特征在于,所述若参数为request信息时,对于reques信息中层序号信息的逻辑交互,包括: