发明内容
本申请提供了一种DB文件的备份方法、装置和电子设备,能够优化DB文件的备份性能。
第一方面,本申请实施例提供一种DB文件的备份方法,包括:
电子设备分割DB文件得到DB文件的本地端子文件,其中,DB文件包括多个文件块,每个本地端子文件包括至少一个文件块,文件块是DB文件的存储单位;
电子设备从本地端子文件中获取第一本地端子文件,将第一本地端子文件上传至服务器,第一本地端子文件是在服务器中不存在对应的服务器端子文件的本地端子文件;和/或,
电子设备从本地端子文件中获取第二本地端子文件,将第二本地端子文件上传至服务器,第二本地端子文件是在服务器中存在对应的服务器端子文件、且与对应的服务器端子文件的内容比对结果为不一致的本地端子文件;
其中,本地端子文件与对应的服务器端子文件占用相同文件块。
上述电子设备可以包括移动终端(手机)、电脑、PAD、可穿戴设备、智慧屏、无人机、智能网联车(ICV,Intelligent Connected Vehicle)、智能(汽)车(smart/intelligentcar)或车载设备等设备。
该方法中,每次仅上传服务器中不存在对应的服务器端子文件的第一本地端子文件,和/或内容发生了变化的第二本地端子文件,不上传内容未发生变化的本地端子文件,相对于现有技术中上传整个DB文件,减少了DB文件上传的数据量,优化了DB文件的备份性能。
其中,电子设备从本地端子文件中获取第一本地端子文件和/或第二本地端子文件之前,还包括:
电子设备根据本地端子文件生成本地端文件列表,并且,获取DB文件的服务器端文件列表;
则电子设备从本地端子文件中获取第一本地端子文件和/或第二本地端子文件,包括:
电子设备根据本地端文件列表与服务器端文件列表从本地端子文件中获取第一本地端子文件和/或第二本地端子文件。
该方法中,根据本地端文件列表和服务器端文件列表获取第一本地端子文件和第二本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID;服务器端文件列表中包括:服务器端子文件的文件ID;
电子设备根据本地端文件列表与服务器端文件列表从本地端子文件中获取第一本地端子文件,包括:
电子设备从本地端子文件中获取文件ID只存在于本地端文件列表的本地端子文件,作为第一本地端子文件。
从而从本地端子文件中获取到第一本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID和文件指纹;服务器端文件列表中包括:服务器端子文件的文件ID和文件指纹;
电子设备根据本地端文件列表与服务器端文件列表从本地端子文件中获取第二本地端子文件,包括:
电子设备获取文件ID同时存在于本地端文件列表和服务器端文件列表、且文件ID对应的文件指纹不一致的本地端子文件,作为第二本地端子文件。
从而从本地端子文件中获取到第二本地端子文件。
其中,服务器端文件列表存储于电子设备中;电子设备将第一本地端子文件和/或第二本地端子文件上传至服务器之后,还包括:
电子设备根据本地端文件列表更新电子设备中存储的服务器端文件列表。
将服务器端文件列表存储于电子设备中,从而减少电子设备与服务器之间的数据交互,提高DB文件的备份效率。
其中,电子设备分割DB文件得到DB文件的本地端子文件之前,还包括:
电子设备获取DB文件的服务器端文件列表,服务器端文件列表中包括:DB文件的服务器端子文件占用文件块的文件块ID;
电子设备分割DB文件得到DB文件的本地端子文件,包括:
电子设备确定DB文件中是否存在第一文件块之外的文件块,第一文件块是服务器端文件列表中包括的文件块ID对应的文件块;
如果存在第一文件块之外的文件块,电子设备根据预设规则分割第一文件块之外的文件块,根据服务器端文件列表分割第一文件块;
如果不存在第一文件块之外的文件块,电子设备根据服务器端文件列表分割DB文件。
从而,根据服务器端文件列表实现了DB文件中服务端文件列表记录有文件块ID的文件块的分割。
第二方面,本申请实施例提供一种电子设备,包括:
一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序被存储在存储器中,一个或多个计算机程序包括指令,当指令被设备执行时,使得设备执行以下步骤:
分割DB文件得到DB文件的本地端子文件,其中,DB文件包括多个文件块,每个本地端子文件包括至少一个文件块,文件块是DB文件的存储单位;
从本地端子文件中获取第一本地端子文件,将第一本地端子文件上传至服务器,第一本地端子文件是在服务器中不存在对应的服务器端子文件的本地端子文件;和/或,
从本地端子文件中获取第二本地端子文件,将第二本地端子文件上传至服务器,第二本地端子文件是在服务器中存在对应的服务器端子文件、且与对应的服务器端子文件的内容比对结果为不一致的本地端子文件;
其中,本地端子文件与对应的服务器端子文件占用相同文件块。
其中,指令被设备执行时,使得设备执行从本地端子文件中获取第一本地端子文件和/或第二本地端子文件之前,还执行以下步骤:
根据本地端子文件生成本地端文件列表,并且,获取DB文件的服务器端文件列表;
则使得设备执行从本地端子文件中获取第一本地端子文件和/或第二本地端子文件的步骤包括:
根据本地端文件列表与服务器端文件列表从本地端子文件中获取第一本地端子文件和/或第二本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID;服务器端文件列表中包括:服务器端子文件的文件ID;
指令被设备执行时,使得设备执行根据本地端文件列表与服务器端文件列表从本地端子文件中获取第一本地端子文件的步骤包括:
从本地端子文件中获取文件ID只存在于本地端文件列表的本地端子文件,作为第一本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID和文件指纹;服务器端文件列表中包括:服务器端子文件的文件ID和文件指纹;
指令被设备执行时,使得设备执行根据本地端文件列表与服务器端文件列表从本地端子文件中获取第二本地端子文件的步骤包括:
获取文件ID同时存在于本地端文件列表和服务器端文件列表、且文件ID对应的文件指纹不一致的本地端子文件,作为第二本地端子文件。
其中,服务器端文件列表存储于电子设备中;指令被设备执行时,使得设备执行将第一本地端子文件和/或第二本地端子文件上传至服务器的步骤之后,还执行以下步骤:
根据本地端文件列表更新电子设备中存储的服务器端文件列表。
其中,指令被设备执行时,使得设备执行分割DB文件得到DB文件的本地端子文件的步骤之前,还执行以下步骤:
获取DB文件的服务器端文件列表,服务器端文件列表中包括:DB文件的服务器端子文件占用文件块的文件块ID;
相应的,使得设备执行分割DB文件得到DB文件的本地端子文件的步骤包括:
确定DB文件中是否存在第一文件块之外的文件块,第一文件块是服务器端文件列表中包括的文件块ID对应的文件块;
如果存在第一文件块之外的文件块,根据预设规则分割第一文件块之外的文件块,根据服务器端文件列表分割第一文件块;
如果不存在第一文件块之外的文件块,根据服务器端文件列表分割DB文件。
第三方面,本申请实施例提供一种数据库DB文件的备份系统,包括:电子设备、以及服务器;
其中,电子设备用于执行第一方面的方法;
服务器用于存储DB文件的服务器端子文件。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行第一方面的方法。
第五方面,本申请提供一种计算机程序,当计算机程序被计算机执行时,用于执行第一方面的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
现有技术中,应用数据中的文件类型包括txt文件、照片文件、音乐文件、视频文件、DB文件等等。其中的DB文件是比较特殊的一类文件,其特殊性主要体现在以下几点:
第一、使用率较高;几乎所有应用都需要存储数据,DB文件往往是结构化数据存储的首选,也就是说,在备份时几乎每个应用都需要备份DB文件;
第二、DB文件变化频繁;不同于照片、视频等一旦产生便不会修改的文件,只要应用发生数据的增删改,应用的DB文件就会发生变化;以微信应用为例,微信使用DB文件存储聊天记录以及朋友圈动态,只要有新的消息收发或者新的朋友圈动态,DB文件就会发生变化;也就是说,在应用数据备份时DB文件经常需要重新上传;
第三、部分超级应用的DB文件体积很大;以微信应用为例,DB文件往往达到好几G,导致DB文件在上传时需要较长的耗时。
现有技术中,是以文件为单位上传的,由于照片、视频这类不经常变化的文件在第一次上传成功后,后续备份时不需要重新上传,因此,现有技术的备份方法对于照片、视频这类不经常变化的文件是有效的;但是,经常变化的DB文件在第一次上传成功后,后续备份时DB文件发生变化,还是需要重新上传DB文件,因此,现有技术对于经常变化的DB文件的备份几乎没有性能收益。以微信应用为例,在对应用数据进行备份时,微信的聊天记录等信息都存储在DB文件中,DB文件经常会发生变化,而且随着用户使用时间越来越长,DB文件还会越来越大,每次重新备份都需要备份DB文件,且都需要较长的备份时间。
所以,经常变化的DB文件往往成了限制备份性能的一个关键问题。
为此,本申请实施例提供一种DB文件的备份方法、装置和电子设备,能够优化DB文件的备份性能。
需要说明的是,本申请实施例DB文件的备份方法可以适用于DB文件的备份,例如DB文件的云备份,或者整机云备份中DB文件的云备份。
为了更好地理解本申请实施例技术方案,首先对本申请实施例中出现的名词进行说明性而非限定性的解释。
DB文件:是电子设备中的应用用于存储数据库数据的文件,一般用于存储结构化数据,可以实现高效的数据管理、检索等;
SQLite是一款轻型的数据库系统,目前在很多嵌入式产品中使用,在安卓(Android)平台上也得到了广泛的应用,是电子设备中的应用使用的主流数据库;
云备份(Cloud backup):云备份即利用云端存储能力来保存用户的电子设备的备份数据,避免了电子设备本地端备份可能出现的由于磁盘损坏或者设备丢失而造成的备份数据损坏或丢失;
文件指纹:基于某种算法为文件生成的与文件内容强相关的特征值。文件内容发生变化时,文件指纹对应变化。根据文件指纹可以区分该文件与其他文件。上述算法可以包括但不限于:Hmac、MD5、哈希算法等。例如,基于哈希算法为一个文件计算得到的该文件的文件指纹可以称为文件的哈希值,根据该哈希值可以区分该文件与其他文件。
以下,对DB文件的存储原理进行说明。
从上层视角来看,数据库是以表、记录(record)等维度来管理数据的,对于使用数据库的应用来说,通过数据库操作语言例如sql可以方便快捷的查找、操作指定的记录。
然而,从数据库底层实现角度来看,数据库中的数据还是用文件存储的,存放数据库数据的文件称为DB文件。DB文件由文件块构成,数据库中的记录都是存储在文件块中的,文件块是数据库存储中的基本单元。一般的,一个文件块可以存储很多记录。具体的,DB文件可以包括若干个文件块,在DB文件包括的文件块的存储容量不足时,可以在DB文件包括的文件块的最后为DB文件新增文件块;数据库中记录的删除、修改等操作,是对文件块中记录的操作,并不会造成文件块的删除。
数据库系统一般通过便于快速查询的B+树的形式对文件块建立索引,从而实现按具体的条件快速定位到某记录所在文件块,接着对文件块中的数据进行具体的读写操作。B+树例如图1所示,针对于文件名称为yy.db的DB文件,在每个文件块的ID下,记录该文件块存储的数据库的记录或者表。
以数据库系统SQLite为例,SQLite是电子设备中的应用使用的主流数据库,存储SQLite的数据也使用DB文件存储。例如微信、微博等超级应用也都是使用SQLite来存储应用的结构化数据。通过分析SQLite的底层存储结构发现:SQLite与绝大多数关系型数据库一样,底层通过文件块进行记录的存储,并使用B+树的形式进行管理。以下,以存储SQLite的数据的DB文件为例,对DB文件的存储原理进行示例性说明。
SQLite中的文件块称为page,SQLite用从DB文件头偏移位置16开始的2个字节来标记当前DB文件的page大小,SQLite官网的DB文件格式说明见下表1所示,数据库在初始化成功后按照page大小组织记录进行存储。Page大小可以由使用SQLite的应用自己设定,page的大小是介于512到65536的2的n次幂。
表1
图2是存储SQLite的DB文件的存储示意图,DB文件被分配n个page,n为自然数,一个格子代表一个page,其中斜纹填充的page表示填了值,也即存储有数据,未斜纹填充的page表示尚未填值,也即未存储数据,SQLite中将未填值的page叫做free page,free page可能是被分配给DB文件后从未填过值,也可能是原先填了值后来在DB文件的变化过程中填的值被删除了。
图3是SQLite的DB文件的存储变化过程的示意图。
初始状态下,电子设备为DB文件分配若干个page,并通过free page链表管理所有没有填值的page。电子设备初始为每个DB文件分配的page数是不固定的,也即初始具体为DB文件分配多少个page可以根据实际应用情况设置,本申请实施例不作限定;如图3所示,以初始为DB文件分配8个page为例,一开始为DB文件分配的page都没有填值,free page链表为1-2-3-4-5-6-7-8。
开始使用DB文件后,DB文件包括的page数与初始分配的page数可以相同也可以增加,也即一开始创建数据库时电子设备为DB文件分配了一定数量的page,例如图3所示的8个page,数据库开始使用后,如果DB文件的存储容量满足数据库存储需求,电子设备可以不为DB文件分配新的page,DB文件仅使用初始分配的page,这时,DB文件包括的page数与初始分配的page数相同;或者,随着数据库的使用,需要在DB文件中存储的数据越来越多,初始分配的page无法满足DB文件的存储需求,电子设备也可以继续为DB文件分配新的page,从而使得DB文件包括的page数增加,例如图3中所示DB文件包括的page从8个逐渐增加为32个。电子设备为DB文件分配新的page时,一般从DB文件包括的page的最后增加新的page,例如图3所示,DB文件初始包括8个page,分别为page1~page8,之后,如果为DB文件分配新的page,例如分配4个新的page,则从最后一个page也即page8之后开始增加4个新的page,即图3中所示的page9~12,之后,如果为DB文件再分配新的page,例如分配10个新的page,则从最后一个page也即page12之后开始增加10个新的page,即图3中所示的page13~page22,以此类推,不再赘述。
在数据库使用过程中,当需要往DB文件中填写数据时,从free page链表中选取一个page,将记录填入其中,后续有记录被删除释放出某个page时,该page再次加入到freepage链表中。例如图3所示,使用一段时间后,free page链表可能变成3-7-8-9-10-25-26-27-31-32。
总之,在DB文件存储容量足够、电子设备无需为DB文件分配新的page的情况下,每当对数据库进行记录的增删改等操作,使得DB文件中有内容发生变化时,实际上只是DB文件包括的一个或多个page中存储的内容发生了变化,DB文件中包括的page的数量不发生变化。
以上是DB文件存储原理。
以下,对本申请实施例进行具体说明。
参见图4所示为本申请实施例提供的一种DB文件的备份方法适用的系统架构的一种示例图,包括:电子设备41、以及服务器42;其中,
电子设备41可以包括移动终端(手机)、电脑、PAD、可穿戴设备、智慧屏、无人机、智能网联车(ICV,Intelligent Connected Vehicle)、智能(汽)车(smart/intelligent car)或车载设备等设备;
服务器42可以是一个服务器、或包括多个服务器的服务器集群,本申请并不限制;优选的,服务器42可以是云服务器。
电子设备41与服务器42可以通过网络连接,所述网络可以为有线网络、或者无线网络。
以下,将以电子设备的云备份为例,对本申请实施例DB文件的备份方法进行示例性说明,此时,以下描述中的服务器可以是云服务器。
其中,一般由电子设备41启动DB文件的云备份;具体的,电子设备启动DB文件的云备份的时机可以包括但不限于以下两种情况:
情况一:电子设备41启动整机云备份,相应的,电子设备41启动DB文件的云备份;
情况二、电子设备41接收到针对DB文件的云备份指令,相应的,电子设备41启动DB文件的云备份;其中,可以由用户通过操作发出所述指令,所述操作可以包括但不限于点击启动DB文件云备份的按钮、或者设定启动DB文件云备份的定时等;也可以由DB文件所属应用根据应用中的预设规则发送针对DB文件的云备份的指令等,本申请不限制。
本申请实施例中,电子设备41对DB文件进行首次云备份时,将DB文件分割成子文件,本申请实施例中称为本地端子文件,将本地端子文件上传至服务器42,服务器42存储接收到的本地端子文件,这些被存储在服务器42中的本地端子文件就成为了DB文件的云端子文件;之后,电子设备41再次对DB文件进行云备份时,仍然将DB文件分割成本地端子文件;对于不具有对应的云端子文件的本地端子文件,电子设备41直接上传至服务器42;对于具有对应的云端子文件的本地端子文件,电子设备41对本地端子文件与服务器42中对应的云端子文件进行内容比对,如果比对结果为一致,说明该本地端子文件的内容没有发生变化,电子设备41不上传该本地端子文件,如果比对结果为不一致,说明该本地端子文件的内容发生了变化,电子设备41将该本地端子文件上传至服务器42,更新服务器42中对应的云端子文件。
通过上述处理,电子设备41实现了DB文件的云备份。而且,电子设备41只上传了不具有对应的云端子文件的本地端子文件和/或内容发生变化的本地端子文件,无需上传内容未发生变化的本地端子文件,相对于现有技术中上传整个DB文件,减少了DB文件进行云备份时上传的数据量,进而减少了DB文件的云备份时间,提高了DB文件的云备份性能。
其中,电子设备41在对DB文件进行分割时,是依照上述DB文件存储原理中DB文件占用的文件块来分割的,文件块是DB文件存储中的基本单元。
其中,每个本地端子文件包括至少一个文件块,每个本地端子文件包括的文件块的数量本申请不限制。
以下,对电子设备分割DB文件的可能实现方式进行说明。
其中,不同本地端子文件的大小可以相同或不同,这与DB文件的分割规则有关,具体的:
在一种可能的实现方式中,可以将DB文件按照文件块的某一整数倍数等分成若干个本地端子文件;例如,假设电子设备41预先设置每个本地端子文件包括n个文件块,n为自然数,相应的,可以将DB文件分割成大小为n个文件块的若干个本地端子文件。参见图5a所示,n取值为4,DB文件包括16个文件块,则可以将DB文件划分为4个等大的本地端子文件。需要说明的是,本申请实施例中的上述等分可以为近似等分,例如如果DB文件包括的文件块的总数无法被n整除,则最后一个本地端子文件包括的文件块的数量可能小于n。例如,参见图5b所示,n取值为3,也即将DB文件分割成大小为3个文件块的本地端子文件,而DB文件包括8个文件块,那么最终DB文件将被分割成3个本地端子文件,第1个和第2个本地端子文件包括3个文件块,而第3个本地端子文件包括2个文件块。
在另一种可能的实现方式中,可以将DB文件分割成大小不相同或者不完全相同的若干个本地端子文件。这种分割规则可能具有某种明确的规律,也可能是无序的。例如,假设DB文件包括16个文件块,参见图5c所示,可以将DB文件划分成4个本地端子文件,第1个本地端子文件包括:3个文件块,第2个本地端子文件包括5个文件块,第3个本地端子文件包括3个文件块,第4个本地端子文件包括5个文件块;可见,这种分割规则是以3和5的依次循环出现作为规律的,这是一种有明确规律的分割规则;参见图5d所示,可以将DB文件划分成5个本地端子文件,第1个本地端子文件包括:1个文件块,第2个本地端子文件包括2个文件块,第3个本地端子文件包括5个文件块,第4个本地端子文件包括4个文件块,第5个本地端子文件包括4个文件块;这是一种没有规律的分割规则。
需要说明的是,将DB文件等分更易于实现,但是,不按照等分的原则来分割DB文件,同样满足本申请实施例的要求,达到本申请实施例优化文件备份性能的目的。在实际应用中具体按照怎样的分割规则进行DB文件分割,本申请并不限制,只要在针对同一DB文件的每次云备份时,对于相同的文件块按照相同的分割规则分割DB文件,保证相同的文件块仍然归属于同一子文件,例如首次分割DB文件的文件块1~16按照图5d所示的方式分割,那么,之后每次分割DB文件的文件块1~16仍然按照图5d所示的方式分割,保证文件块1始终在1个本地端子文件中,文件块2~3始终在一个本地端子文件中…以此类推,从而能够进行本地端子文件与对应的云端子文件的内容比对即可。
需要说明的是,对于DB文件新增的文件块的分割,可以采用与DB文件原有文件块相同的分割规则分割,也可以采用与DB文件原有文件块不同的分割规则分割,但是对于新增的文件块,每次云备份时也需要按照相同的分割规则进行分割。举例来说,假设DB文件初始包括文件块1~文件块8共8个文件块,按照每个子文件包括4个文件块分割成2个子文件;之后,DB文件新增24个文件块,即文件块9~32,文件块9~32可以采用与文件块1~8相同的每个子文件包括4个文件块的分割规则,分割为6个子文件,也可以采用其他的分割规则进行分割,例如按照每个子文件包括6个文件块的分割规则,分割为4个子文件;但是,对于文件块9~32,每次云备份时,最好采用相同的分割规则,保证相同的文件块在每次云备份时归属于同一子文件,例如,假设首次分割文件块9~32时,按照每个子文件包括6个文件块的分割规则分割,那么后续进行云备份,再分割文件块9~32时,最好仍然按照每个子文件包括6个文件块的分割规则分割。
本申请实施例中,电子设备41在对DB文件进行分割时,是依照上述DB文件存储原理中DB文件包括的文件块来分割的,具体的,DB文件分割成的每个本地端子文件包括整数个文件块。通过这种分割,每个本地端子文件包括的是完整的整数倍个文件块,并没有破坏DB文件中文件块的数据结构和连贯性。
由于DB文件按照文件块来存储数据库中的记录和表的特性,对DB文件中的记录进行增删改等操作,是针对存储该记录的文件块内数据的操作,不会因为对一个文件块进行修改,而导致DB文件中其他文件块的数据发生改变,也即一个文件块的修改不会波及到其他文件块发生适应性修改,因此,数据库中记录的变化,在DB文件中一般表现为存储该记录的文件块的内容发生改变,其他文件块的内容不变。基于以上原理,将DB文件分割成子文件,按照子文件进行云备份时,仅对具有新增文件块的子文件和/或文件块的内容发生变化的子文件进行备份,相对于现有技术中上传整个DB文件,可以有效的减少DB文件进行云备份时上传的数据量,进而减少DB文件的云备份时间,提高DB文件的云备份性能。
而且,由于DB文件按照文件块来存储数据库中的记录和表的特性,在将DB文件分割成子文件,只按照子文件进行云备份时,并不会因为备份某一个子文件,而造成该子文件与相邻的前后两个子文件数据不连续的问题。当电子设备重新从服务器获取到DB文件的云端子文件,可以直接按照顺序拼接云端子文件,得到完整的DB文件。
图6为本申请实施例电子设备的一种可能的结构图,电子设备600包括:处理器610,内部存储器621,天线1,天线2,移动通信模块650,无线通信模块660;可选地,电子设备600还可以包括外部存储器接口620,通用串行总线(universal serial bus,USB)接口630,充电管理模块640,电源管理模块641,电池642,音频模块670,扬声器670A,受话器670B,麦克风670C,耳机接口670D,传感器模块680,按键690,马达691,指示器692,摄像头693,显示屏694,以及用户标识模块(subscriber identification module,SIM)卡接口695等。其中传感器模块680可以包括压力传感器680A,陀螺仪传感器680B,气压传感器680C,磁传感器680D,加速度传感器680E,距离传感器680F,接近光传感器680G,指纹传感器680H,温度传感器680J,触摸传感器680K,环境光传感器680L,骨传导传感器680M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备600的具体限定。在本申请另一些实施例中,电子设备600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器610可以包括一个或多个处理单元,例如:处理器610可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器610中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器610中的存储器为高速缓冲存储器。该存储器可以保存处理器610刚用过或循环使用的指令或数据。如果处理器610需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器610的等待时间,因而提高了系统的效率。
在一些实施例中,处理器610可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器610可以包含多组I2C总线。处理器610可以通过不同的I2C总线接口分别耦合触摸传感器680K,充电器,闪光灯,摄像头693等。例如:处理器610可以通过I2C接口耦合触摸传感器680K,使处理器610与触摸传感器680K通过I2C总线接口通信,实现电子设备600的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器610可以包含多组I2S总线。处理器610可以通过I2S总线与音频模块670耦合,实现处理器610与音频模块670之间的通信。在一些实施例中,音频模块670可以通过I2S接口向无线通信模块660传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块670与无线通信模块660可以通过PCM总线接口耦合。在一些实施例中,音频模块670也可以通过PCM接口向无线通信模块660传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器610与无线通信模块660。例如:处理器610通过UART接口与无线通信模块660中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块670可以通过UART接口向无线通信模块660传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器610与显示屏694,摄像头693等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器610和摄像头693通过CSI接口通信,实现电子设备600的拍摄功能。处理器610和显示屏694通过DSI接口通信,实现电子设备600的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器610与摄像头693,显示屏694,无线通信模块660,音频模块670,传感器模块680等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口630是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口630可以用于连接充电器为电子设备600充电,也可以用于电子设备600与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备600的结构限定。在本申请另一些实施例中,电子设备600也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备600的无线通信功能可以通过天线1,天线2,移动通信模块650,无线通信模块660,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备600中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块650可以提供应用在电子设备600上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块650可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块650可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块650还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块650的至少部分功能模块可以被设置于处理器610中。在一些实施例中,移动通信模块650的至少部分功能模块可以与处理器610的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器670A,受话器670B等)输出声音信号,或通过显示屏694显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器610,与移动通信模块650或其他功能模块设置在同一个器件中。
无线通信模块660可以提供应用在电子设备600上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块660可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块660经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器610。无线通信模块660还可以从处理器610接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备600的天线1和移动通信模块650耦合,天线2和无线通信模块660耦合,使得电子设备600可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
内部存储器621可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器621可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备600使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器621可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器610通过运行存储在内部存储器621的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备600的各种功能应用以及数据处理。
内部存储器621的存储数据区可以存储本申请实施例中的DB文件。
在一种可能的实现方式中,实现本申请实施例DB文件的备份方法的计算机程序可以存储于内部存储器621的存储程序区,处理器610从内部存储器621中调用并运行该计算机程序,在运行过程中,从内部存储器621中调用并处理DB文件,通过通信模块例如移动通信模块650或者无线通信模块660与服务器端通信,实现DB文件的云备份。
应理解,图6所示的电子设备600能够实现本申请实施例提供的DB文件的备份方法的各个过程。具体可参见本申请图7~图9a所示方法实施例中的描述,为避免重复,此处适当省略详细描述。
基于以上的系统架构和电子设备的结构,本申请DB文件的备份方法一个实施例的流程图如图7所示,该方法可以包括:
步骤701:电子设备分割DB文件得到DB文件的本地端子文件,其中,DB文件包括多个文件块,每个本地端子文件包括至少一个文件块。
本步骤的实现可以参考前述对DB文件分割的相关说明,这里不赘述。
步骤702:电子设备从本地端子文件中获取第一本地端子文件,将第一本地端子文件上传至服务器,第一本地端子文件是在服务器中不存在对应的云端子文件的本地端子文件;和/或,电子设备从本地端子文件中获取第二本地端子文件,将第二本地端子文件上传至服务器,第二本地端子文件是在服务器中存在对应的云端子文件、且与对应的云端子文件的内容比对结果为不一致的本地端子文件;其中,本地端子文件与对应的云端子文件占用相同文件块。
其中,上述占用用于表示文件块的归属关系,与文件块中是否存储有数据无关,例如,本地端子文件占用文件块1,是指文件块1归属于本地端子文件,也即本地端子文件包括文件块1,与文件块1中是否存储有数据无关。
上述本地端子文件与对应的云端子文件占用相同文件块是指:本地端子文件包括的文件块与对应的云端子文件包括的文件块是相同的文件块,这里的相同与文件块中是否存储有数据、以及存储的数据是否相同无关,仅与文件块本身有关。例如,假设本地端子文件1仅包括DB文件中的文件块1,云端子文件1也仅包括DB文件中的文件块1,那么,本地端子文件1和云端子文件1占用相同文件块,这与本地端子文件1的文件块1中是否存储有数据无关,与云端子文件1的文件块1中是否存储有数据无关,与本地端子文件1的文件块1与云端子文件1的文件块1是否存储有相同数据无关。
其中,电子设备对该本地端子文件与对应的云端子文件进行内容比对可以通过比对两个子文件的文件指纹实现,具体的,文件指纹相同,两个子文件的内容相同,文件指纹不相同,两个子文件的内容不相同。
图7所示的方法,将DB文件分割成子文件,每次仅上传服务器中不存在对应的云端子文件的本地端子文件,和/或内容发生了变化的本地端子文件,不上传内容未发生变化的本地端子文件,相对于现有技术中上传整个DB文件,减少了DB文件上传的数据量,优化了DB文件的云备份性能。
基于前述对DB文件的分割规则的描述可知,分割规则可以是具有规律的,包括前述的等分分割规则、以及具有某种明确规律的非等分分割规则。以下,通过图8a所示的实施例,对分割规则具有规律这种实现方式下本申请实施例的可能实现进行说明。参见图8a所示实施例的流程图,该方法可以包括:
步骤801:电子设备启动DB文件的云备份,判断是否是DB文件的首次云备份,如果是,执行步骤802;如果否,执行步骤804。
在一种可能的实现方式中,电子设备在判断是否是DB文件的首次云备份时,可以通过查询服务器端是否存在DB文件的云端文件列表实现。DB文件的云端文件列表可以单独存储在服务器中,也可以作为电子设备的云端文件列表的一部分。如果电子设备每次启动DB文件的云备份的时机一般是接收到针对DB文件的云备份指令,DB文件的云端文件列表一般单独存储在服务器中;如果电子设备每次启动DB文件的云备份的时机一般是整机云备份,DB文件的云端文件列表可能存储在电子设备的云端文件列表中,是电子设备的云端文件列表的一部分;
在另一种可能的实现方式中,可以在电子设备中记录最近一次DB文件云备份上传至云端的文件列表,电子设备在判断是否是DB文件的首次云备份时,可以通过查询电子设备中是否存储有最近一次DB文件云备份的文件列表的方式实现。同样的,该文件列表可以单独存储,或者作为最近一次整机云备份上传至云端的文件列表的一部分,具体可以与电子设备启动DB文件的云备份的时机相关;
在又一种可能的实现方式中,可以在电子设备中记录是否进行过DB文件云备份的信息,电子设备在判断是否是DB文件的首次云备份时,可以通过查询该信息实现。同样的,该信息可以单独存储,或者间接通过电子设备中记录是否进行过整机云备份的信息实现,具体可以与电子设备启动DB文件的云备份的时机相关。
步骤802:电子设备分割DB文件得到DB文件的本地端子文件,为每一本地端子文件分配文件标识(ID,Identity),计算每一本地端子文件的文件指纹,根据文件ID以及文件指纹生成DB文件的本地端文件列表,将本地端子文件(也即电子设备获取的第一本地端子文件)、以及本地端文件列表发送至服务器。
其中,电子设备分割DB文件得到DB文件的本地端子文件的实现可以参考前述实施例中的对应说明,这里不赘述。
其中,电子设备为本地端子文件分配文件ID时,可以按照本地端子文件占用的文件块的顺序来为本地端子文件分配文件ID。举例来说,以图5a为例,假设DB文件为f4,则可以为占用文件块1~4的本地端子文件分配文件ID:f41,为占用文件块5~8的本地端子文件分配文件ID:f42,以此类推,通过本地端子文件的文件ID可以获知本地端子文件之间的排列顺序,进而获知本地端子文件中文件块的排列顺序。以上仅为示例,在实际应用中具体遵循怎样的规则为本地端子文件分配文件ID本申请并不限制。
需要说明的是,针对同一DB文件的相同文件块,在每次备份时,一般需要遵循同样的分割规则、同样的文件ID分配规则,以达到每次分割DB文件,占用相同文件块的本地端子文件被分配为相同的文件ID,从而使得后续步骤中为本地端子文件匹配到的文件ID相同的云端子文件,就是和本地端子文件对应的占用相同文件块的云端子文件,从而使得后续的内容比对,是针对相同文件块存储的数据是否仍然相同的比对,这种内容比对才更有实现意义。举实例来说,参见图5a所示,假设DB文件为f4,包括16个文件块,首次云备份时,将每4个文件块分割为一个本地端子文件,占用文件块1~4的本地端子文件f41,占用文件块5~8的本地端子文件f42,占用文件块9~12的本地端子文件f43,占用文件块13~16的本地端子文件f44,进而将本地端子文件f41~f44上传至云端,那么后续每次云备份进行DB文件分割时,最好遵循相同的划分规则和相同的文件ID分配规则,从而划分得到的本地端子文件f41~f44,在后续步骤中有分别与之对应的占用相同文件块且文件ID相同的云端子文件,进而进行内容比对。
其中,DB文件的本地端文件列表可以包括:本地端子文件的文件ID和文件指纹,在一种可能的实现方式中,本地端文件列表可以通过B+树的形式实现。参见图8b所示,DB文件名称为f4,被分割成4个本地端子文件,分别为f41、f42、f43、f44,且每个本地端子文件对应有自身的文件指纹。
在实际应用中,DB文件的云备份可能是整机云备份的一部分,因此,DB文件的本地端文件列表可能存储在一个电子设备的B+树中,作为电子设备的B+树的一部分,例如图8c所示。
步骤803:服务器接收并存储本地端子文件、以及本地端文件列表;本分支流程结束。
步骤804:电子设备从服务器获取DB文件的云端文件列表。
其中,DB文件的云端文件列表可能是电子设备的云端文件列表中的一部分,如果步骤801中启动针对DB文件的云备份的时机是整机云备份,,那么,本步骤中电子设备可以从云端获取到电子设备的云端文件列表,进而从电子设备的云端文件列表中获取DB文件的云端文件列表;或者,如果步骤701中启动针对DB文件的云备份的时机是接收到针对DB文件的云备份指令,单独针对DB文件进行云备份,那么,本步骤中电子设备可以从云端直接获取DB文件的云端文件列表。
步骤805:对DB文件的本地端文件列表与云端文件列表进行比对,对于只存在于本地端文件列表、不存在于云端文件列表的文件ID,将该文件ID标识的本地端子文件(也即电子设备获取的第一本地端子文件)上传至服务器;对于本地端文件列表和云端文件列表中均包括的文件ID,比对该文件ID在两个文件列表中的文件指纹是否相同,如果不相同,将该文件ID标识的本地端子文件(也即电子设备获取的第二本地端子文件)上传至服务器;将本地端文件列表上传至服务器;执行步骤806。
如果文件ID只存在于本地端文件列表、不存在于云端文件列表,说明该文件ID对应的本地端子文件占用的文件块是在前一次云备份后电子设备为DB文件新分配的文件块,因此,直接上传该本地端子文件;否则,如果文件ID同时存在于本地端文件列表以及云端文件列表,说明该文件ID对应的本地端子文件与云端子文件占用相同的文件块,因此,根据文件指纹进行内容比对,根据比对结果确定是否上传本地端子文件。
步骤806:服务器接收本地端子文件以及本地端文件列表,更新云端子文件以及云端文件列表。
图8a所示的方法中,每次云备份时对DB文件中相同文件块的分割遵循相同的分割规则、以及相同的文件ID分配规则,对具有相同文件ID的本地端子文件以及云端子文件进行内容比对,如果内容相同,说明内容没有变化,不上传本地端子文件,如果内容不相同,说明内容发生变化,上传本地端子文件,从而有选择地上传本地端子文件,而无需整体上传DB文件,降低了DB文件云备份的数据量,提升了DB文件的云备份性能。
基于前述对DB文件的分割规则的描述可知,分割规则可以是无序的。以下,通过图9a所示的实施例,对分割规则无序的这种实现方式下本申请实施例的可能实现进行说明。参见图9a所示实施例的流程图,该方法可以包括:
步骤901~步骤903的实现请参考步骤801~步骤803,区别主要在于步骤902中电子设备分割DB文件时可以是任意无序分割的,例如对于每一本地端子文件包括的文件块数从1~n中随机选择一个数值等等,只要将DB文件分割成本地端子文件即可。仍以图5d为例,可以按照类似图5d这种分割规则完全无序的方式将DB文件分割成本地端子文件。
相应的,步骤902中生成的本地端文件列表还可以包括:本地端子文件占用文件块的文件块ID。仍以图5d为例,假设DB文件的本地端文件列表仍以B+树的形式实现,则DB文件的本地端文件列表可以参见图9b所示。
以下对步骤901中判断结果为否,也即不是DB文件的首次云备份时执行的步骤904~步骤908进行说明。
步骤904:电子设备从服务器获取DB文件的云端文件列表,判断DB文件占用文件块的文件块ID中是否存在云端文件列表中未记录的文件块ID,如果存在,执行步骤905,如果不存在,执行步骤906;
步骤905:对于DB文件中云端文件列表记录有文件块ID的文件块,电子设备根据云端文件列表分割DB文件,得到本地端子文件、以及每一本地端子文件的文件ID,计算每一本地端子文件的文件指纹;对于DB文件中云端文件列表未记录文件块ID的文件块,电子设备分割DB文件得到本地端子文件,为得到的本地端子文件分配文件ID,计算每一本地端子文件的文件指纹;生成DB文件的本地端文件列表;执行步骤907;
举实例说明该步骤:假设DB文件的云端文件列表如图9b所示,而DB文件中除了包括文件块1~16外,还包括文件块17~32,那么,DB文件中的文件块1~16将分割成图9c所示结构的本地端子文件,而文件块17~32可以被分割成本地端子文件,具体的分割方式可以与文件块1~16相同或不同,例如仍然可以是类似步骤902的无序分割,如图9c所示,假设DB文件最终被分割成图9c所示的8个本地端子文件;那么建立的本地端文件列表如图9d所示。
步骤906:电子设备根据云端文件列表记录的文件ID、以及文件ID对应的文件块ID分割DB文件,得到本地端子文件、以及每一本地端子文件的文件ID,生成DB文件的本地端文件列表,执行步骤907。
延续步骤902~905中的举例,本步骤中生成的本地端文件列表仍为图9b所示结构,区别在于本地端子文件的文件指纹可能不同。
步骤907:电子设备将DB文件的本地端文件列表与云端文件列表进行比对,对于只存在于本地端文件列表、不存在于云端文件列表的文件ID,将该文件ID标识的本地端子文件(也即电子设备获取的第一本地端子文件)上传至服务器;对于本地端文件列表和云端文件列表中均包括的文件ID,比对该文件ID在两个文件列表中的文件指纹是否相同,如果不相同,将该文件ID标识的本地端子文件(也即电子设备获取的第二本地端子文件)上传至服务器;将本地端文件列表上传至服务器;执行步骤908。
步骤908:服务器接收本地端子文件以及本地端文件列表,更新云端子文件以及云端文件列表。
需要说明的是,虽然图9a所示的方法在上述描述中说明其适用于分割规则无序的情况下,但是,图9a所示的方法也可以适用于分割规则具有规律这种实现方式下,只是相对于图9a所示的方法流程,图8a所示的方法流程更为简单且易于实施。
需要说明的是,图8a和图9a所示的本申请实施例中DB文件的云端文件列表存储于服务器,在另一种可能的实现方式中,DB文件的云端文件列表可以存储于电子设备中,此时,例如步骤802、步骤804、步骤902、步骤907中,电子设备无需将本地端文件列表上传至服务器,直接根据本地端文件列表更新电子设备中该DB文件的云端文件列表即可;相应的,例如步骤804和步骤904中,电子设备可以直接从本地获取DB文件的云端文件列表,无需从服务器获取,从而减少电子设备与服务器之间的数据交互,且进一步优化DB文件的云备份性能。
需要说明的是,以上实施例中以DB文件的云备份为例对本申请实施例DB文件的备份方法进行了说明,但是,本申请实施例DB文件的备份方法可以扩展至云备份之外的DB文件备份,此时,上述实施例中的服务器可以从云服务器扩展至云服务器之外的其他服务器,云端子文件可以扩展至服务器端子文件,云端文件列表可以扩展至服务器端文件列表,具体的实现方法可以参考上述实施例,这里不再赘述。
需要说明的是,本申请实施例DB文件的备份方法还可以进一步扩展至非DB文件的备份,也即,非DB文件在进行备份时,也可以使用本申请实施例的备份方法实现。
可以理解的是,上述实施例中的部分或全部步骤骤或操作仅是示例,本申请实施例还可以执行其它操作或者各种操作的变形。此外,各个步骤可以按照上述实施例呈现的不同的顺序来执行,并且有可能并非要执行上述实施例中的全部操作。
图10为本申请DB文件的备份装置一个实施例的结构示意图,如图10所示,该装置100可以包括:
分割单元101,用于电子设备分割DB文件得到DB文件的本地端子文件,其中,DB文件包括多个文件块,每个本地端子文件包括至少一个文件块,文件块是DB文件的存储单位;
上传单元102,用于从本地端子文件中获取第一本地端子文件,将第一本地端子文件上传至服务器,第一本地端子文件是在服务器中不存在对应的服务器端子文件的本地端子文件;和/或,从本地端子文件中获取第二本地端子文件,将第二本地端子文件上传至服务器,第二本地端子文件是在服务器中存在对应的服务器端子文件、且与对应的服务器端子文件的内容比对结果为不一致的本地端子文件;
其中,本地端子文件与对应的服务器端子文件占用相同文件块。
其中,上传单元102还可以用于:根据本地端子文件生成本地端文件列表,并且,获取DB文件的服务器端文件列表;根据本地端文件列表与服务器端文件列表从本地端子文件中获取第一本地端子文件和/或第二本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID;服务器端文件列表中包括:服务器端子文件的文件ID;上传单元102具体可以用于:从本地端子文件中获取文件ID只存在于本地端文件列表的本地端子文件,作为第一本地端子文件。
其中,本地端文件列表中包括:本地端子文件的文件ID和文件指纹;服务器端文件列表中包括:服务器端子文件的文件ID和文件指纹;
上传单元102具体可以用于:获取文件ID同时存在于本地端文件列表和服务器端文件列表、且文件ID对应的文件指纹不一致的本地端子文件,作为第二本地端子文件。
其中,服务器端文件列表存储于装置中;该装置还可以包括:
更新单元,用于根据本地端文件列表更新装置中存储的服务器端文件列表。
其中,分割单元101具体可以用于:获取DB文件的服务器端文件列表,服务器端文件列表中包括:DB文件的服务器端子文件占用文件块的文件块ID;确定DB文件中是否存在第一文件块,第一文件块是服务器端文件列表中未记录文件块ID的文件块;如果存在第一文件块根据预设规则分割第一文件块,根据服务器端文件列表分割DB文件中除第一文件块之外的文件块;如果不存在第一文件块,根据服务器端文件列表分割DB文件。
图10所示实施例提供的装置可用于执行本申请图7~图9a所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
应理解以上图10所示装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元通过硬件的形式实现。例如,分割单元可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它单元的实现与之类似。此外这些单元全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些单元可以集成在一起,以片上系统(System-On-a-Chip;以下简称:SOC)的形式实现。
本申请实施例中的电子设备可以为手机,手机可以包括:一个或多个处理器;存储器;以及一个或多个计算机程序。其中上述一个或多个计算机程序被存储在上述存储器中,上述一个或多个计算机程序包括指令,当上述指令被手机执行时,使得手机执行上述图7~图9a所示方法中的步骤。
本申请还提供一种电子设备,所述设备包括存储介质和中央处理器,所述存储介质可以是非易失性存储介质,所述存储介质中存储有计算机可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述计算机可执行程序以实现本申图7~图9a所示实施例提供的方法。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本申请图7~图9a所示实施例提供的方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行本申请图7~图9a所示实施例提供的方法。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory;以下简称:ROM)、随机存取存储器(Random Access Memory;以下简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以所述权利要求的保护范围为准。