持续化数据存储方法与装置、电子设备与流程

文档序号:21031361发布日期:2020-06-09 20:12阅读:134来源:国知局
本申请涉及计算机网络通信
技术领域
:,具体涉及一种持续化数据存储方法与装置、电子设备。
背景技术
::随着计算机网络通信的功能不断增强,越来越多的浏览器、用户应用程序和游戏平台等应用软件需要将大量的数据储存于用户本地终端,这样可以减少从服务器获取数据,以便直接从用户本地终端获取数据。相比于储存于用户本地终端上的数据cookie方案,索引数据库应用程序接口(indexeddbapplicationprogramminginterfaceapi)能够提供持续化数据存储服务,并允许储存大量数据,提供查找接口,以及建立索引。在不支持indexeddbapi的应用软件上,也可以通过网络结构化查询语言应用程序接口(webstructuredquerylanguageapplicationprogramminginterface,websqlapi)来实现indexeddb的持续化数据存储服务。然而,在应用软件既不支持indexeddb,也不支持websqlapi的情况下,如何向应用软件提供能够支持indexeddb这种持久化数据存储能力,成为亟需解决的问题。技术实现要素:本申请实施例提供了一种持续化数据存储方法与装置、电子设备,以期望通过本地存储方式或文件系统应用程序接口存储方式实现索引数据库的持久化数据存储服务。第一方面,本申请实施例提供一种持续化数据存储方法,包括:在需要存储第一数据的情况下,调用索引数据库应用程序以获取数据参数;根据所述数据参数确定所述第一数据的第一数据容量和所述第一数据的数据类型,所述数据类型用于指示所述第一数据是否为二进制数据或字符串数据;根据所述第一数据容量和所述数据类型确定所述第一数据的存储方式,所述第一数据的存储方式包括本地存储方式和文件系统应用程序接口存储方式。根据所述第一数据的存储方式完成所述第一数据的存储。第二方面,本本申请实施例提供一种持续化数据存储装置,包括:处理单元,用于在需要存储第一数据的情况下,调用索引数据库应用程序接口以获取数据参数;用于根据所述数据参数确定所述第一数据的第一数据容量和所述第一数据的数据类型,所述数据类型用于指示所述第一数据是否为二进制数据或字符串数据;用于根据所述第一数据容量和所述数据类型确定所述第一数据的存储方式,所述第一数据的存储方式包括本地存储方式和文件系统应用程序接口存储方式;用于根据所述第一数据的存储方式完成所述第一数据的存储。第三方面,本申请实施例提供一种电子设备,所述终端设备包括应用处理器和存储器,所述存储器存储有至少一条指令,所述至少一条指令用于被所述应用处理器执行以实现上述第一方面所述的方法。第四方面,本申请实施例提供一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,并且上述计算机程序被处理器执行以实现本申请实施例第一方面中所描述的部分或全部步骤。第五方面,本申请实施例提供一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。可以看出,本申请实施例所描绘的一种持续化数据存储方法与装置,在浏览器、用户应用程序和游戏平台等应用软件需要存储第一数据的情况下,通过调用indexeddbapi以获取数据参数,并根据数据参数确定第一数据的数据容量和数据类型,然后根据数据容量和数据类型从本地存储方式和文件系统应用程序接口存储方式中确定数据的存储方式以实现indexeddb的持久化数据存储服务。由于只采用数据容量和数据类型进行数据存储过程的智能决策,因此有利于提高数据存储过程的效率。此外,由于文件系统应用程序接口属于非数据库应用程序接口,因此本申请实施例通过非数据库应用程序接口来实现对数据库的增删改查操作。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的一种持续化数据存储的架构示意图;图2是本申请实施例提供的一种电子设备的结构示意图;图3是本申请实施例提供的一种持续化数据存储方法的流程示意图;图4是本申请实施例提供的另一种持续化数据存储方法的流程示意图;图5是本申请实施例提供的另一种电子设备的结构示意图;图6是本申请实施例提供的一种持续化数据存储装置的功能单元组成框图。具体实施方式为了使本
技术领域
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、软件、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。下面结合附图,对本申请实施例进行详细介绍。在对本申请实施例提供的持续化数据存储方法进行详细介绍之前,先对本申请实施例涉及的数据存储的架构进行介绍。请参阅图1,图1是本申请实施例提供的一种持续化数据存储的架构示意图。其中,最上层为接口层,提供indexeddbapi给浏览器、用户应用程序和游戏平台等应用软件进行调用。中间层为核心控制层,主要职责是对来自不同应用软件需要存储数据的数据量大小、数据类型、时间戳等参数,以判断和决策数据存储的最优存储模块。最底层为具体实现层,封装有调用存储模型的代码块。具体的,在最上层中,indexeddbapi的接口可以包括idbfactory(索引数据库的工厂)接口、idbrequest(索引数据库的请求)接口、idbopenrequest索引数据库的打开请求(索引数据库的打开请求)接口、idbdatabase(索引数据库的数据库)接口、idbobjectstore(索引数据库的对象存储)接口和idbindex(索引数据库的索引)接口等。其中,idbfactory接口让程序可以异步存取索引数据库(indexeddatabases);idbrequest接口使用事件处理程序属性提供对数据库和数据库对象的异步请求结果的访问,并通过请求完成数据库上的每个读写操作;idbopendbrequest接口使用特定的事件处理程序属性,提供对打开或删除数据库的请求结果的访问;idbdatabase接口提供了与数据库的连接,可以使用一个idbdatabase对象在数据库上打开事务(transaction),然后在该数据库中创建、操作和删除对象(或数据),并且该界面提供了获取和管理数据库版本的唯一方法;idbobjectstore接口表示数据库中的对象存储,该对象存储中的记录根据其键进行排序,该排序可以实现快速插入、查找和有序检索;idbindex接口提供对数据库中索引的异步访问,该索引是一种对象存储,用于在另一个对象存储(称为引用的对象存储)中查找记录,该接口可以用来检索数据。此外,idbfactory接口的open(打开)方法用于请求打开一个数据库的连接;idbfactory接口的deletedatabase(删除数据库)方法用于请求删除数据库,该方法立即返回idbopendbrequest对象,并异步执行删除操作。dbrequest接口的requet(结果)方法返回请求的结果,如果请求失败并且结果不可用,则返回invalidstateerror(无效状态错误)异常。idbopendbrequest接口的onupgradeneeded(需要进行升级)方法用于upgradeneeded(需要升级)事件的事件处理程序,当加载版本号大于现有存储数据库的版本号的数据库时触发。idbdatabase接口的createobjectstore(创建对象存储)方法用于创建并返回新的对象存储或索引。idbdatabase接口的transaction(事务)方法用于立即返回一个包含idbtransaction.objectstore方法的事务对象(idbtransaction),可用于访问对象存储。idbobjectstore接口的get(获取)方法用于返回一个idbrequest对象,并在一个单独的线程中返回由指定键选择的对象存储,可以用于从对象存储中检索特定记录。idbobjectstore接口的put(更新)方法用于更新数据库中的给定记录,或者如果该给定记录不存在则插入新记录。idbobjectstore接口的add(添加)方法用于返回一个idbrequest对象,并在一个单独的线程中创建该值的结构化克隆,并将克隆后的值存储在对象存储中,可以用于将新记录添加到对象存储中。idbindex接口的opencursor(打开游标)方法用于返回一个idbrequest对象,并在一个单独的线程中,在指定键范围内创建一个游标。具体的,在中间层中,应用软件中需要对数据(data)存储于数据表(table)中。因此,通过对需要存储的数据量大小、数据类型和时间戳等参数来决定是否通过localstorage还是filesystemapi进行存储。具体的,在最底层中,封装有调用localstorage和filesystem的代码块。其中,localstorage的getitem(获取数据)方法用于获取数据库中的数据;localstorage的setitem(存储数据)方法用于向数据库存储数据;localstorage的removeitem(删除数据)方法用于删除数据库中的数据。此外,filesystemapi接口的readfile(读取文件)方法用于读取用户本地文件系统中沙盒部分里的数据;filesystemapi接口的writefile(写入文件)方法用于向用户本地文件系统中沙盒部分里写入数据;filesystemapi接口的savefile(保存文件)方法用于将数据保存于用户本地文件系统中沙盒部分里。具体的,应用程序可以为运行于电子设备中的各种应用程序,可以包括系统应用程序、驱动应用程序、多媒体应用程序、网络(web)应用程序、智能终端应用程序和物联网应用程序等。具体的,本申请的电子设备可以是具备持续化数据存储能力的电子设备,也可以包括各种具有持续化数据存储功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的智能终端设备(intelligentterminaldevice)和物联网终端设备等。下面具体描述电子设备的结构,请参阅图2。图2是本申请实施例提供的一种电子设备的结构示意图。电子设备200可以包括处理器210、通信模块220、电源管理230、存储器240。其中,处理器210以对应的总线形式连接和控制通信模块220、电源管理230、存储器240。具体的,处理器210是电子设备200的控制中心,通过各种接口和线路连接电子设备200的各个部分。此外,处理器210通过运行或执行存储器240内的软体程序和/或模块,调用存储器内的存储数据,以执行电子设备200的各种功能和处理数据,并监控电子设备200的整体运行。可选的,处理器210可以包括中央处理器(centralprocessingunit,cpu)或者网络处理器(networkprocessingunit,npu)等等。具体的,通信模块220可以为具有实现第二代2g移动通信技术网络、第三代3g移动通信技术网络、第四代4g移动通信技术网络和第五代5g移动通信技术网络等功能以执行无线移动网络数据的接收与发送,可以为提供ieee802.11标准的无线局域网技术的通信模块,并且可以提供2.4ghz和5ghz的信道频谱资源以执行网络数据的接收与发送。具体的,电源管理230可以包括电源管理芯片,并并可以为电子设备200提供电能变换、分配、检测等管理功能。具体的,存储器240用于存储软体程序和/或模块,而处理器210通过运行存储于存储器240的软件程序和/或模块,以执行电子设备200的各种功能应用以及数据处理,以及执行持续化数据存储功能。存储器240可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统或者至少一个功能所需的软体程序等,并且该至少一个功能所需的软件程序可以用于执行持续化数据存储功能;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器240可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。下面将从方法示例的角度介绍持续化数据存储方法的执行步骤,请参阅图3。图3是本申请实施例提供的持续化数据存储方法的流程示意图,该方法包括:s310、在需要存储第一数据的情况下,调用索引数据库应用程序接口以获取数据参数。具体的,浏览器、用户应用程序和游戏平台等应用软件需要对数据进行存储时,调用indexeddbapi,并通过idbfactory接口的open方法打开一个数据库。然后,可以通过idbobjectstore接口的get/put/add方法来获取待存储第一数据的数据参数,该数据参数可以用于指示第一数据的存储路径、时间戳、数据容量、数据类型等信息。存储路径可以用于指示数据存储在数据库中的位置。数据容量可以反映需要存储的数据大小,而数据类型可以用于指示当前数据是否为二进制数据或字符串数据。举例中,一款游戏平台上需要加载由unity游戏开发引擎开发的游戏。该游戏平台可以为非浏览器环境,这导致该游戏平台既不支持indexeddb存储技术,也不支持websqlapi存储。由于unity游戏开发引擎采用了indexeddb的存储方式,因此在该游戏平台上加载unity开发的游戏,需要该游戏平台采用其他存储方式以支持indexeddb这种持续化存储技术。在该游戏平台能够支持indexeddb的情况下,加载成功的unity游戏每完成一个关卡,都会调用idbobjectstore接口的put方法来存储已完成关卡的数据,以保证在下次登录该unity游戏继续接着上次保存的游戏进度。此外,在调用idbobjectstore接口的put方法的过程中会传递参数,该参数包括时间戳、存储路径和待存储的数据。其中,可以通过该待存储的数据来确定数据类型和数据容量。s320、根据数据参数确定第一数据的第一数据容量和第一数据的数据类型。在一个可能的示例中,由于通过localstorage存储方式可以存储字符串格式的数据,而filesystemapi存储方式可以存储字符串或二进制格式的数据,因此,在通过idbobjectstore接口的get/put/add方法来获取待存储第一数据的数据参数后,需要通过该数据参数来确定第一数据的数据类型,以保证通过和文件系统api可以对该第一数据进行存储。具体的,在调用idbobjectstore接口的put方法的过程中会传递参数,该参数可以包括时间戳、数据容量、数据类型、存储路径和待存储的数据等。存储路径可以用于指示数据存储在数据库中的位置,数据容量可以反映需要存储的数据大小,数据类型可以用于指示当前数据是否为二进制数据或字符串数据。除了直接通过传递的参数来确定数据容量和数据类型,也可以通过该待存储的数据来确定数据类型和数据容量。例如,可以通过该待存储的数据内某个预设字段或新增字段来确定数据类型和数据容量。s330、根据第一数据容量和数据类型确定第一数据的存储方式。其中,存储方式可以包括localstorage存储方式和filesystemapi存储方式。在一个可能的示例中,根据第一数据容量和数据类型确定第一数据的存储方式可以包括以下操作:在第一数据容量小于第一预设阈值,并且第一数据为字符串数据的情况下,通过localstorage方式来存储第一数据;或者,在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,通过filesystemapi存储方式来存储第一数据。具体的,第一预设阈值的取值范围可以为4kb至1mb中。进一步的,第一预设阈值可以取4kb、256kb、512kb或1mb。举例中,在一个游戏平台加载的unity游戏完成一个关卡时,通过调用idbobjectstore接口的put方法来存储该关卡已完成的相关数据。在调用idbobjectstore接口的put方法的过程中通过传递的参数获取到数据为字符串形式的数据以及数据容量为400kb。因此,在预设阈值为512kb的情况下,该关卡已完成的相关数据存储在localstorage中,以保证在下次登录该unity游戏继续接着上次保存的游戏进度。可以看出,在数据容量小于预设阈值的情况下,由于localstorage方式只能存储字符串形式的数据,因此在决定数据的存储方式之前,通过判断数据是否为字符串形式的数据,以便在不为字符串形式的数据下,直接排除localstorage方式,提高数据存储时的处理效率。在一个可能示例中,根据第一数据容量和数据类型确定第一数据的存储方式可以包括以下操作:在第一数据容量小于第一预设阈值的情况下,获取localstorage中存储的所有数据的第二数据容量;在第二数据容量小于第二预设阈值,并且第一数据为字符串数据的情况下,通过本地存储方式来存储第一数据;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过filesystemapi存储方式来存储第一数据;或者,在第二数据容量大于第二预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过filesystemapi存储方式来存储第一数据。具体的,第二预设阈值的取值范围可以为2.5mb至10mb。优选的,第二预设阈值可以为2.5mb、5mb或10mb。进一步的,第二预设阈值可以用于指示localstorage的存储容量。可以看出,在向localstorage存入数据之前,通过判断当前localstorage内已经存储的数据容量和localstorage的存储容量的大小关系,以保证即将存储的数据不会超出localstorage的存储容量而溢出,以有利于减小发生数据存储失败的情况。举例中,在调用idbobjectstore接口的put方法的过程中通过传递的参数获取到数据为字符串形式的数据以及数据容量为400kb。设置预设阈值为512kb,而在将数据存储在localstorage中之前,先调用指令来获取当前localstorage中已经存储的数据容量为9.8mb。如果localstorage的存储容量为10mb,数据容量400kb存入localstorage会导致数据的溢出,因此,数据选择通过filesystemapi存储方式来存储。在上述的示例中,当第一数据为二进制数据的情况下,则直接排除localstorage方案,虽然这能有利于提高处理效率,但是也降低了数据存储时的灵活性。因此,可以通过对数据的数据类型进行处理。在一个可能的示例中,在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,可以通过预设数据处理将第一数据转化为字符串数据,并通过localstorage方式来存储转化后的第一数据;其中,预设数据处理包括json的字符串化处理或base64编码处理;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过localstorage来存储转化后的第一数据。具体的,json的字符串化处理可以为json.stringify方法,而json.stringify可以用于将javascript对象转换为json字符串。具体的,base64是一种基于64个可打印字符来表示二进制数据的方法。由于base64编码会把3字节的二进制数据编码为4字节的文本数据,整体长度会增加33%,从而带来了数据容量的增加。在数据容量较小的情况下,base64编码导致的数据容量的增加是可以接受的。可以看出,当第一数据为二进制数据的情况下,在选择存储方式之前将第一数据编码为字符串形式的数据,有利于提高数据存储过程的灵活性。在一个可能的示例中,为了将通过json的字符串化处理的第一数据从字符串数据再转换为二进制数据,可以通过json.parse方法将从localstorage读取到的转化后的第一数据从字符串数据转换为对象形式的数据,得到第二数据。然后,通过object.values方法取出第二数据中对象的所有属性值。最后,将得到的所有属性值构造第三数据,保证第三数据与第一数据具有相同的数据类型。举例中,在一款游戏平台上加载由unity游戏开发引擎开发的游戏。当需要在用户本地存储游戏数据时,由于unity通过uint8array类型来操作二进制数据,而uint8array类型的二进制数据经过json.stringify转化后为对象类型的字符串数据,再将转换后的游戏数据存储于localstorage中。当从localstorage读取该转换后的游戏数据时,该转换后的游戏数据通过json.parse转换后是以对象形式存在的,需要通过object.values取出对象的所有属性值,再去构造一个新的uint8array出来。在一个可能的示例中,上述实施例只考虑在第一数据容量小于第一预设阈值的情况,而第一数据容量大于第一预设阈值下,根据第一数据容量和数据类型确定第一数据的存储方式可以包括以下操作:在第一数据容量大于第一预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过filesystemapi来存储第一数据。可以看出,由于通过filesystemapi可以对字符串数据和二进制数据进行存储,因此只要第一数据容量大于第一预设阈值,就采用filesystemapi存储方式来存储数据,以有利于提高数据存储过程的效率。在一个可能的示例中,可以将localstorage中存储的所有数据通过filesystemapi存储方式进行拷贝,并清空localstorage中存储的所有数据。可以理解的是,相对于通过filesystemapi存储方式具有较大的存储容量,localstorage的存储容量可能只有2mb~20mb。因此,通过尽可能的将localstorage中存储的所有数据拷贝出去,并清空localstorage,以便在一段时间内需要多次存储小数据量的二进制数据情况下,该多次小数据量的二进制数据可以直接存储到已清空的localstorage,而无需考虑超出存储容量的情形。具体的,对于何时可以将localstorage中存储的所有数据通过filesystemapi存储方式进行拷贝,并清空localstorage中存储的所有数据的情况,可以通过判断预设定时器是否超时来确定,或者可以通过localstorage的存储容量是否大于一个预设阈值来确定,在此不做具体限制。可以理解的是,只要预设定时器超时或者localstorage的存储容量大于一个预设阈值,则将localstorage中存储的所有数据通过filesystemapi存储方式进行拷贝,并清空localstorage中存储的所有数。s340、根据所述第一数据的存储方式完成所述第一数据的存储。可以看出,本申请实施例所描绘的一种持续化数据存储方法,在浏览器、用户应用程序和游戏平台等应用软件需要存储第一数据的情况下,通过调用indexeddbapi以获取数据参数,并根据数据参数确定第一数据的数据容量和数据类型,然后根据数据容量和数据类型从本地存储方式和文件系统应用程序接口存储方式中确定数据的存储方式以实现indexeddb的持久化数据存储服务。由于只采用数据容量和数据类型进行数据存储过程的智能决策,因此有利于提高数据存储过程的效率。此外,由于文件系统应用程序接口属于非数据库应用程序接口,因此本申请实施例通过非数据库应用程序接口来实现对数据库的增删改查操作。与上述图3岁数的实施例一致,请参阅图4,图4是本申请实施例提供的另一种持续化数据存储方法的流程示意图,该方法包括:s410、在需要存储第一数据的情况下,调用索引数据库应用程序接口以获取数据参数。具体的,在浏览器、用户应用程序和游戏平台等应用软件需要对数据进行存储的情况下,调用indexeddbapi。具体indexeddbapi的接口的调用如上所述,这里不再赘述。s420、根据数据参数确定第一数据的第一数据容量和第一数据的数据类型。具体的,在调用idbobjectstore接口的put方法的过程中会传递参数,通过该参数来确定第一数据的第一数据容量和第一数据的数据类型。例如,该参数直接包含了相关数据容量和数据类型等信息,或者该参数包含待存储的数据等信息,而通过该待存储的数据内某个预设字段或新增字段来确定数据类型和数据容量。s430、在第一数据容量小于第一预设阈值的情况下,获取本地存储中存储的所有数据的第二数据容量。具体的,在第一数据容量小于第一预设阈值的情况下,可以通过调用指令来判断localstorage内已经存储的数据容量,以保证即将存储的数据不会超出localstorage的存储容量而溢出,以有利于减小发生数据存储失败的情况。s440、在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过本地存储方式来存储转化后的第一数据。具体的,在localstorage内已经存储的数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,可以通过将第一数据转化为字符串数据以存入localstorage中。进一步的,第二预设阈值可以用于指示localstorage的存储容量。可以理解的是,通过判断localstorage内已经存储的数据容量和localstorage的存储容量的大小关系,以保证即将存储的数据不会超出localstorage的存储容量而溢出,以进一步减小发生数据存储失败的情况。s450、将本地存储中存储的所有数据通过文件系统应用程序接口存储方式进行拷贝,并清空本地存储中存储的所有数据。具体的,由于localstorage的存储容量可能只有2mb~20mb,因此,可以通过尽可能的将localstorage中存储的所有数据拷贝出去,并清空localstorage,以避免因localstorage中已存数据导致即将存储的数据超出localstorage的存储容量而溢出,进一步减小发生数据存储失败的情况。在一个可能的示例中,对于何时可以将localstorage中存储的所有数据通过filesystemapi存储方式进行拷贝,并清空localstorage中存储的所有数据的情况,可以通过判断预设定时器是否超时来确定,或者可以通过localstorage的存储容量是否大于一个预设阈值来确定,在此不做具体限制。可以理解的是,只要预设定时器超时或者localstorage的存储容量大于一个预设阈值,则将localstorage中存储的所有数据通过filesystemapi存储方式进行拷贝,并清空localstorage中存储的所有数。s460、根据第一数据的存储方式完成第一数据的存储。其中,第一数据的存储方式包括localstorage方式和filesystemapi存储方式。可以看出,本申请实施例所描绘的一种持续化数据存储方法,在浏览器、用户应用程序和游戏平台等应用软件需要存储第一数据的情况下,通过调用indexeddbapi以获取数据参数,并根据数据参数确定第一数据的第一数据容量和数据类型。然后在第一数据的数据容量小于第一预设阈值的情况下,获取localstorage中存储的所有数据的第二数据容量,并根据第二数据容量和数据类型从localstorage和filesystemapi存储方式中确定数据的存储方式以实现indexeddb的持久化数据存储服务。由于在通过数据容量和数据类型进行数据存储过程的智能决策之前,判断localstorage内已经存储的数据容量,以保证即将存储的数据不会超出localstorage的存储容量而溢出,以有利于减小发生数据存储失败的情况。此外,由于文件系统应用程序接口属于非数据库应用程序接口,因此本申请实施例通过非数据库应用程序接口来实现对数据库的增删改查操作。与上述图3和图4所述的实施例一致,请参阅图5,图5是本申请实施例提供的另一种电子设备的结构示意图。其中,电子设备200包括应用处理器510、存储器520、通信接口530以及一个或多个程序521,其中,该一个或多个程序521被存储在上述存储器520中,并且被配置由上述应用处理器510执行,该一个或多个程序521包括用于执行以下步骤的指令:在需要存储第一数据的情况下,调用索引数据库应用程序接口以获取数据参数;根据数据参数确定第一数据的第一数据容量和第一数据的数据类型,数据类型用于指示第一数据是否为二进制数据或字符串数据;根据第一数据容量和数据类型确定第一数据的存储方式,存储方式包括本地存储方式和文件系统应用程序接口存储方式;根据第一数据的存储方式完成第一数据的存储。可以看出,在浏览器、用户应用程序和游戏平台等应用软件需要存储第一数据的情况下,电子设备通过调用indexeddbapi以获取数据参数,并根据数据参数确定第一数据的数据容量和数据类型,然后根据数据容量和数据类型从本地存储方式和文件系统应用程序接口存储方式中确定数据的存储方式以实现indexeddb的持久化数据存储服务。由于只采用数据容量和数据类型进行数据存储过程的智能决策,因此有利于提高数据存储过程的效率。此外,由于文件系统应用程序接口属于非数据库应用程序接口,因此本申请实施例通过非数据库应用程序接口来实现对数据库的增删改查操作。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该一个或多个程序521包括用于执行以下步骤的指令:在第一数据容量小于第一预设阈值,并且第一数据为字符串数据的情况下,通过本地存储方式来存储所述第一数据;或者,在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该一个或多个程序521包括用于执行以下步骤的指令:在第一数据容量小于第一预设阈值的情况下,获取本地存储中存储的所有数据的第二数据容量;在第二数据容量小于第二预设阈值,并且第一数据为字符串数据的情况下,通过本地存储方式来存储第一数据;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据;或者,在第二数据容量大于第二预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,该一个或多个程序521还包括用于执行以下步骤的指令:在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过本地存储方式来存储转化后的第一数据,预设数据处理包括json的字符串化处理或base64编码处理;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过本地存储方式来存储转化后的第一数据。在一个可能的示例中,预设数据处理包括json的字符串化处理;在通过本地存储方式来存储转化后的第一数据之后,该一个或多个程序521还包括用于执行以下步骤的指令:通过json的解析parse方法处理转化后的第一数据,得到第二数据;通过对象的取值方法确定第二数据中对象的所有属性值;根据对象的所有属性值确定第三数据,第三数据与第一数据具有相同的数据类型。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该一个或多个程序521包括用于执行以下步骤的指令:在第一数据容量大于第一预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,该一个或多个程序521还包括用于执行以下步骤的指令:将本地存储中存储的所有数据通过文件系统应用程序接口存储方式进行拷贝,并清空本地存储中存储的所有数据。上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备200为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本申请实施例可以根据上述方法示例对电子设备200进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。图6是本申请实施例提供的一种持续化数据存储装置的功能单元组成框图。持续化数据存储装置600应用于电子设备200,该装置包括处理单元610和通信单元620。其中,该处理单元610,用于执行如上述方法实施例中的任一步骤,且在执行诸如发送等数据传输时,可选择的调用所述通信单元620来完成相应操作,下面进行详细说明。该处理单元610具体用于:在需要存储第一数据的情况下,调用索引数据库应用程序接口以获取数据参数;根据数据参数确定第一数据的第一数据容量和第一数据的数据类型,数据类型用于指示第一数据是否为二进制数据或字符串数据;根据第一数据容量和数据类型确定第一数据的存储方式,存储方式包括本地存储方式和文件系统应用程序接口存储方式;根据第一数据的存储方式完成第一数据的存储。可以看出,本申请实施例所描绘的一种持续化数据存储装置,在浏览器、用户应用程序和游戏平台等应用软件需要存储第一数据的情况下,通过调用indexeddbapi以获取数据参数,并根据数据参数确定第一数据的数据容量和数据类型,然后根据数据容量和数据类型从本地存储方式和文件系统应用程序接口存储方式中确定数据的存储方式以实现indexeddb的持久化数据存储服务。由于只采用数据容量和数据类型进行数据存储过程的智能决策,因此有利于提高数据存储过程的效率。此外,由于文件系统应用程序接口属于非数据库应用程序接口,因此本申请实施例通过非数据库应用程序接口来实现对数据库的增删改查操作。其中,持续化数据存储装置600还可以包括存储单元630,用于存储服务器的程序代码和数据。该处理单元610可以是处理器,该通信单元620可以是触控显示屏或者收发器,该存储单元630可以是存储器。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该处理单元610具有用于:在第一数据容量小于第一预设阈值,并且第一数据为字符串数据的情况下,通过本地存储方式来存储所述第一数据;或者,在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该处理单元610具有用于:在第一数据容量小于第一预设阈值的情况下,获取本地存储中存储的所有数据的第二数据容量;在第二数据容量小于第二预设阈值,并且第一数据为字符串数据的情况下,通过本地存储方式来存储第一数据;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据;或者,在第二数据容量大于第二预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,该处理单元610还具体用于:在第一数据容量小于第一预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过本地存储方式来存储转化后的第一数据,预设数据处理包括json的字符串化处理或base64编码处理;或者,在第二数据容量小于第二预设阈值,并且第一数据为二进制数据的情况下,通过预设数据处理将第一数据转化为字符串数据,并通过本地存储方式来存储转化后的第一数据。在一个可能的示例中,预设数据处理包括json的字符串化处理;在通过本地存储方式来存储转化后的第一数据之后,该处理单元610还具体用于:通过json的解析parse方法处理转化后的第一数据,得到第二数据;通过对象的取值方法确定第二数据中对象的所有属性值;根据对象的所有属性值确定第三数据,第三数据与第一数据具有相同的数据类型。在一个可能的示例中,在根据第一数据容量和数据类型确定第一数据的存储方式方面,该处理单元610具体用于:在第一数据容量大于第一预设阈值,并且第一数据为字符串数据或二进制数据的情况下,通过文件系统应用程序接口存储方式来存储第一数据。在一个可能的示例中,该处理单元610还具体用于:将本地存储中存储的所有数据通过文件系统应用程序接口存储方式进行拷贝,并清空本地存储中存储的所有数据。本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括服务器。本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括服务器。需要说明的是,对于上述的各方法实施例,为了简单描述,将其都表述为一系列的动作组合。本领域技术人员应该知悉,本申请不受所描述的动作顺序的限制,因为本申请实施例中的某些步骤可以采用其他顺序或者同时进行。此外,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请实施例所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,本领域技术人员应该知悉,所描述的装置可以通过其它的方式实现。可以理解的是,上述描述的装置实施例仅仅是示意性的。例如,上述单元的划分只是一种逻辑功能划分,实际中可以有另外的划分方式。也就是说,多个单元或组件可以结合或集成到另一个软件,以及一些特征可以忽略或不执行。此外,所显示或讨论的相互之间的耦合、直接耦合或通信连接等方式可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电性或其它的形式。上述作为分离部件说明的单元可以是物理上分开的,也可以不是。此外,上述作为单元显示的部件可以是物理单元,也可以不是,即可以位于一个网络单元上,也可以分布到多个网络单元上。因此,上述各个实施例可以根据实际的需要选择其中的部分或者全部单元来实现。另外,上述各个实施例中的各个功能单元可以集成在一个处理单元中,也可以存在不同的物理单元中,也可以两个或两个以上的功能单元集成在一个物理单元中。上述单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。上述单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。可以理解的是,本申请的技术方案(该技术方案对现有技术做出贡献的部分或者该技术方案的全部或部分)可以通过计算机软件产品的形式体现。该计算机软件产品存储在一个存储器中,包括若干指令用以使得计算机设备(个人计算机、服务器或者网络设备等)执行本申请实施例的全部或部分步骤。此外,上述存储器包括u盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。本领域技术人员应该知悉,本申请实施例的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于存储器中,该存储器可以包括闪存盘、rom、ram、磁盘或光盘等。以上对本申请实施例进行了详细介绍,本申请实施例中的说明只是用于帮助理解本申请的方法及其核心思想。本领域技术人员应该知悉,本申请实施例在具体实施方式和应用范围上均会有改变之处,至此,本说明书内容不应理解为对本申请的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1