本申请属于数据存储,具体涉及一种数据存储方法、装置及电子设备。
背景技术:
1、数据库保存的用户数据可以包括数据和元数据,所述元数据称为数据的数据,用于对数据进行解释。若所述用户数据的数据类型为结构化数据,例如可以以表结构形式记录数据,则所述元数据可以包括用于解释该表结构的基本信息的元数据。在定义一个表结构之后,可以通过预先定义修改语句对表结构进行调整,导致对应的元数据发生变更。当元数据发生变化后,不同版本的元数据需要和不同版本的数据配合使用:新版本的元数据可能无法准确解释老版本的数据;老版本的元数据也无法解释新版本的数据。
2、针对元数据的变更,相关技术可以在原表结构的基础上进行元数据变更,但是需要暂时停止写入新的数据,等待元数据变更完成后再继续写入,从而影响对数据库的写入操作,进而影响业务。
技术实现思路
1、有鉴于此,本申请提供一种数据存储方法、装置及电子设备,用于解决在进行元数据变更时,需要暂时停止写入新的数据,从而影响对数据库的写入操作的问题。
2、具体地,本申请是通过如下技术方案实现的:
3、第一方面,提供了一种数据存储方法,应用于服务端,所述服务端上部署了数据库;所述数据库包括存储在所述服务端上的持久化存储空间中的若干第一数据表;以及,存储在所述服务端上的缓存空间中的第二数据表;所述第二数据表用于存储待写入所述第一数据表中的增量数据;所述方法包括:
4、响应于所述服务端独立维护的与所述数据库中的数据表对应的元数据发生变更,将所述第二数据表设置为不可修改的状态,并将所述第二数据表中的增量数据写入所述服务端上的持久化存储空间中的第一数据表;
5、创建与变更后的元数据对应的新的第二数据表,将新获取的增量数据记录到所述第二数据表中。
6、可选的,所述服务端包括元数据管理器,所述元数据管理器用于维护与所述数据库中的数据表对应的元数据和所述元数据的标识符;所述第一数据表存储有与所述第一数据表对应的元数据的标识符;所述第二数据表存储有与所述第二数据表对应的元数据的标识符。
7、可选的,所述元数据管理器采用键值对的形式维护元数据;其中,所述键值对中的键为所述元数据的标识符,所述键值对中的值为所述元数据。
8、可选的,所述数据库为采用lsm-tree存储引擎的数据库。
9、可选的,在响应于所述服务端独立维护的与所述数据库中的数据表对应的元数据发生变更,将所述第二数据表设置为不可修改的状态,并将所述第二数据表中的增量数据写入所述服务端上的持久化存储空间中的第一数据表之前,所述方法还包括:
10、确定是否满足预设的变更条件中的任一条件;如果是,则确定与所述数据库中的数据表对应的元数据发生变更;
11、其中,所述变更条件包括以下至少之一:
12、所述元数据管理器中维护的与所述数据库中的数据表对应的元数据发生变更;
13、获取到的新的增量数据对应的元数据与所述第二数据表对应的元数据不同。
14、可选的,所述元数据用于对写入所述数据表的数据条目进行解释;所述方法还包括:
15、响应于获取到数据查询请求,从所述若干第一数据表中查询目标数据条目,并根据与所述目标数据条目所在的第一数据表对应的元数据的标识符从所述元数据管理器中查询到与所述目标数据条目对应的元数据,以对所述目标数据条目进行解释。
16、可选的,所述方法还包括:
17、响应于针对所述若干第一数据表进行的数据表合并请求,将所述若干第一数据表合并为目标第一数据表。
18、可选的,所述将所述若干第一数据表合并为目标第一数据表,包括:
19、根据所述若干第一数据表中各第一数据表中保存的元数据的标识符,从所述元数据管理器获取到最新的元数据,作为目标元数据;
20、按照所述目标元数据,将所述若干第一数据表中的各数据条目存储到目标第一数据表中对应的位置。
21、第二方面,提供了一种数据存储装置,所述装置包括:
22、第一执行模块,用于响应于所述服务端独立维护的与所述数据库中的数据表对应的元数据发生变更,将所述第二数据表设置为不可修改的状态,并将所述第二数据表中的增量数据写入所述服务端上的持久化存储空间中的第一数据表;
23、第二执行模块,用于创建与变更后的元数据对应的新的第二数据表,将新获取的增量数据记录到所述第二数据表中。
24、第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面所述方法的步骤。
25、第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述方法的步骤。
26、通过服务端独立维护与所述数据库中的数据表对应的元数据,而不再将元数据保存到数据表中,在元数据发生变更时,不需要对数据表中的元数据进行更新,通过创建与变更后的元数据对应的新的第二数据表,来存储在元数据发生变更后获取到的增量数据,从而在大大减少元数据的存储空间的情况下,使变更后的元数据能够实时生效,不影响数据的写入操作。
1.一种数据存储方法,其特征在于,应用于服务端,所述服务端上部署了数据库;所述数据库包括存储在所述服务端上的持久化存储空间中的若干第一数据表;以及,存储在所述服务端上的缓存空间中的第二数据表;所述第二数据表用于存储待写入所述第一数据表中的增量数据;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述服务端包括元数据管理器,所述元数据管理器用于维护与所述数据库中的数据表对应的元数据和所述元数据的标识符;所述第一数据表存储有与所述第一数据表对应的元数据的标识符;所述第二数据表存储有与所述第二数据表对应的元数据的标识符。
3.根据权利要求2所述的方法,其特征在于,所述元数据管理器采用键值对的形式维护元数据;其中,所述键值对中的键为所述元数据的标识符,所述键值对中的值为所述元数据。
4.根据权利要求1所述的方法,其特征在于,所述数据库为采用lsm-tree存储引擎的数据库。
5.根据权利要求2所述的方法,其特征在于,在响应于所述服务端独立维护的与所述数据库中的数据表对应的元数据发生变更,将所述第二数据表设置为不可修改的状态,并将所述第二数据表中的增量数据写入所述服务端上的持久化存储空间中的第一数据表之前,所述方法还包括:
6.根据权利要求2所述的方法,其特征在于,所述元数据用于对写入所述数据表的数据条目进行解释;所述方法还包括:
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述将所述若干第一数据表合并为目标第一数据表,包括:
9.一种数据存储装置,其特征在于,所述装置包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1-8任一所述方法的步骤。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-8任一所述方法的步骤。