数据写入方法、装置及计算机可读存储介质与流程

文档序号:13446459阅读:202来源:国知局
数据写入方法、装置及计算机可读存储介质与流程

本公开涉及数据库技术领域,尤其涉及一种数据写入方法、装置及计算机可读存储介质。



背景技术:

目前,终端上通常都配置有数据库,比如基于sql(structuredquerylanguage,结构化查询语言)的sqlite数据库,且数据库中的数据是存储在诸如磁盘等外部存储器中。因此,将数据写入数据库,也即将数据写入外部存储器中。

相关技术中,为了保证写入数据库的数据及时存储至外部存储器中,当当前需向数据库写入数据时,针对该数据执行fsync函数,该fsync函数可以保证该数据及时同步至外部存储器中。其中,fsync函数的具体执行过程为:在写入该数据的过程中,将正在写入的数据同步缓存至预先在外部存储器中设置的日志空间,在确定该数据写入完成之后,将缓存至日志空间的数据存储至外部存储器中的真实存储空间,以实现将数据写入数据库。



技术实现要素:

为克服相关技术中存在的问题,本公开提供一种数据写入方法、装置及计算机可读存储介质。

根据本公开实施例的第一方面,提供一种数据写入方法,该方法包括:

在向数据库写入数据的过程中,获取终端当前的状态参数,所述状态参数用于描述所述终端当前的状态;

当所述状态参数满足预设条件时,将所述数据同步缓存至设置于内存中的第一日志空间,其中,将所述数据同步缓存至内存的速率大于同步缓存至外部存储器的速率;

当确定所述数据写入完成时,将缓存于所述第一日志空间中的所述数据存储至所述外部存储器中的目标存储空间,所述目标存储空间用于存储所述数据库中的数据。

可选地,所述获取终端当前的状态参数之后,还包括:

当所述状态参数没有满足所述预设条件时,将所述数据同步缓存至设置于所述外部存储器中的第二日志空间;

当确定所述数据写入完成时,将缓存于所述第二日志空间中的所述数据存储至所述目标存储空间。

可选地,所述状态参数包括所述终端的剩余电量;

相应地,所述预设条件为所述剩余电量大于预设电量的条件。

可选地,所述将缓存于所述第一日志空间中的所述数据存储至所述外部存储器中的目标存储空间之后,还包括:

清除缓存于所述第一日志空间中的数据。

根据本公开实施例的第二方面,提供一种数据写入装置,所述装置包括:

获取模块,用于在向数据库写入数据的过程中,获取终端当前的状态参数,所述状态参数用于描述所述终端当前的状态;

第一缓存模块,用于当所述状态参数满足预设条件时,将所述数据同步缓存至设置于内存中的第一日志空间,其中,将所述数据同步缓存至内存的速率大于同步缓存至外部存储器的速率;

第一存储模块,用于当确定所述数据写入完成时,将缓存于所述第一日志空间中的所述数据存储至所述外部存储器中的目标存储空间,所述目标存储空间用于存储所述数据库中的数据。

可选地,所述装置还包括:

第二缓存模块,用于当所述状态参数没有满足所述预设条件时,将所述数据同步缓存至设置于所述外部存储器中的第二日志空间;

第二存储模块,用于当确定所述数据写入完成时,将缓存于所述第二日志空间中的所述数据存储至所述目标存储空间。

可选地,所述状态参数包括所述终端的剩余电量;

相应地,所述预设条件为所述剩余电量大于预设电量的条件。

可选地,所述装置还包括:

清除模块,用于清除缓存于所述第一日志空间中的数据。

根据本公开实施例的第三方面,提供一种数据写入装置,所述装置包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述第一方面所述的任一项方法的步骤。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述的任一项方法的步骤。

本公开的实施例提供的技术方案可以包括以下有益效果:

在本公开实施例中,在向数据库写入数据的过程中,当终端当前的状态参数满足预设条件时,将数据同步缓存至设置于内存中的第一日志空间,由于将数据同步缓存至内存的速率大于同步缓存至外部存储器的速率,因此当将数据同步缓存至内存中的第一日志空间时,可以提高缓存数据的速率,从而提升将数据写入数据库的速率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是本公开实施例提供的一种数据写入方法流程图;

图2是本公开实施例提供的另一种数据写入方法流程图;

图3a是本公开实施例提供的一种数据写入装置框图;

图3b是本公开实施例提供的另一种数据写入装置框图;

图4是本公开实施例提供的另一种数据写入装置框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在对本公开实施例进行详细的解释说明之前,先对本公开实施例的应用场景予以介绍。

随着终端上安装的应用程序的数量的增多,为了便于不同的应用程序可以快速对终端上的数据进行读写,终端上通常配置有数据库,该数据库用于存储不同数据之间的对应关系,以便于应用程序可以快速通过该数据库查询数据。比如,对于安卓(android)系统或ios(iphoneoperatingsystem,苹果操作系统)系统的终端,配置的数据库通常为开源式、资源占用率较低的sqlite数据库。另外,为了避免由于系统崩溃而导致数据库中的数据丢失,数据库中的数据是存储在外部存储器中的,比如存储在终端的磁盘中。因此,通过应用程序向数据库写入数据,也即数据写入外部存储器中。

由于相关技术中,在将数据写入数据库时,需先将该正在写入的数据同步缓存至外部存储器中的日志空间,而将该正在写入的数据同步缓存至外部存储器时耗费时间较长,从而影响将数据写入数据库的速率。

因此,本公开实施例提供了一种数据写入方法,在向数据库写入数据的过程中,当终端当前的状态参数满足预设条件时,将数据同步缓存至设置于内存中的第一日志空间,由于将数据同步缓存至内存的速率大于同步缓存至外部存储器的速率,因此当将数据同步缓存至内存中的第一日志空间时,可以提高缓存数据的速率,从而提升将数据写入数据库的速率。

接下来对本公开实施例提供的数据写入的方法进行详细说明。

图1是本公开实施例提供的一种数据写入方法流程图,如图1所示,该方法包括以下步骤。

在步骤101中,在向数据库写入数据的过程中,获取终端当前的状态参数,该状态参数用于描述该终端当前的状态。

在步骤102中,当该状态参数满足预设条件时,将该数据同步缓存至设置于内存中的第一日志空间,其中,将该数据同步缓存至内存的速率大于同步缓存至外部存储器的速率。

在步骤103中,当确定该数据写入完成时,将缓存于该第一日志空间中的数据存储至外部存储器中的目标存储空间,目标存储空间用于存储数据库中的数据。

在本公开实施例中,在向数据库写入数据的过程中,当终端当前的状态参数满足预设条件时,将数据同步缓存至设置于内存中的第一日志空间,由于将数据同步缓存至内存的速率大于同步缓存至外部存储器的速率,因此当将数据同步缓存至内存中的第一日志空间时,可以提高缓存数据的速率,从而提升将数据写入数据库的速率。

可选地,获取终端当前的状态参数之后,还包括:

当该状态参数没有满足预设条件时,将该数据同步缓存至设置于外部存储器中的第二日志空间;

当确定该数据写入完成时,将缓存于第二日志空间中的数据存储至目标存储空间。

可选地,该状态参数包括该终端的剩余电量;

相应地,该预设条件为该剩余电量大于预设电量的条件。

可选地,将缓存于第一日志空间中的数据存储至外部存储器中的目标存储空间之后,还包括:

清除缓存于第一日志空间中的数据。

上述所有可选技术方案,均可按照任意结合形成本公开的可选实施例,本公开实施例对此不再一一赘述。

图2是本公开实施例提供的另一种数据写入方法流程图,如图2所示,该方法包括以下步骤。

在步骤201中,在向数据库写入数据的过程中,获取终端当前的状态参数,该状态参数用于描述该终端当前的状态。

在本公开实施例中,为了提高将数据写入数据库的效率,在将数据写入数据库的过程中,可以根据终端当前的状态,分别采取不同的写入方式,以避免每条数据在写入数据库的过程中,都必须先将该正在写入的数据同步缓存至外部存储器中的日志空间。因此,在向数据库写入数据的过程中,需先获取终端当前的状态参数。

其中,状态参数可以包括终端的剩余电量,此时获取终端当前的状态参数,也即,获取终端当前的剩余电量。当然,该状态参数也可以为其他用于描述该终端当前状态的参数,本公开实施例在此不做具体限定。

在获取终端当前的状态参数之后,可以根据该状态参数是否满足预设条件采取不同的写入方式将该数据写入数据库。

其中,预设条件为预先设置的条件。当该状态参数满足该预设条件时,表明终端当前状态良好,此时无需先将该正在写入的数据同步缓存至外部存储器中的日志空间,也即可以通过下述步骤202至步骤203将该数据写入数据库。

相应地,当该状态参数没有满足预设条件时,表明终端当前状态不是很好,此时为了避免由于终端崩溃而导致写入数据库的数据丢失,需先将该正在写入的数据同步缓存至外部存储器中的日志空间,也即,可以通过下述步骤204至步骤205将该数据写入数据库。

为了后续便于说明,在此对终端中的存储器进行介绍。

通常终端上的存储器包括两大类存储器,一类为内部存储器,也即内存;另一类为外部存储器。其中,内存用于存放计算机运行期间的大量数据,数据读写速度快,但是存储容量不大,且在系统崩溃时,内存中的数据将丢失。而外部存储器用于存放大型数据文件,比如数据库文件,存储量大,成本低,且存储的数据为永久性数据,也即在系统崩溃时,外部存储器中的数据不会丢失,但是数据读写速度较慢。

其中,内存可以为ram(randomaccessmemory,随机存储器)、rom(read-onlymemory,只读存储器)或cache(高速缓存存储器)等半导体存储单元,外部存储器可以为磁性介质或光盘,比如硬盘,软盘,磁带,cd等。

因此,当终端当前状态良好时,可以通过下述步骤202和步骤203将数据暂时写入到内存中,之后再存储至外部存储器中,仅在终端当前状态不是很好时,通过下述步骤204和步骤205将数据直接写入外部存储器。

在步骤202中,当该状态参数满足预设条件时,将该数据同步缓存至设置于内存中的第一日志空间,其中,将该数据同步缓存至内存的速率大于同步缓存至外部存储器的速率。

由步骤201可知,当该状态参数满足预设条件时,表明该终端当前状态良好,此时可以先将该数据同步缓存至内存中的第一日志空间。相对于cpu(centralprocessingunit,中央处理器)将数据写入外部存储器,cpu将数据写入内存的速率将快很多,因此,通过步骤202可以在终端状态良好时,提高将数据写入数据库的速率。

其中,当该状态参数为终端的剩余电量时,该预设条件为剩余电量大于预设电量的条件。该剩余电量为预先设置的电量。

此时,步骤202可以为:当该剩余电量大于预设电量时,将该数据同步缓存至设置于内存中的第一日志空间。

比如,预设电量为15%,当当前终端的剩余电量为50%,在向数据库写入数据的过程中,可以将该数据同步缓存至设置于内存中的第一日志空间。

在步骤203中,当确定该数据写入完成时,将缓存于该第一日志空间中的数据存储至外部存储器中的目标存储空间,目标存储空间用于存储数据库中的数据。

在写入数据的过程中,若当前该条数据结束,将在该条数据结束的位置插入结束标识符,因此,当检测到针对该数据的结束标识符时,确定该数据写入完成,此时可以将缓存在第一日志空间中的数据存储到目标存储空间。

可选地,在确定该数据写入完成时,为了避免当前写入的数据有误,可以先对该数据进行检查,在确定该数据无误后,再执行将缓存于该第一日志空间中的数据存储至外部存储器中的目标存储空间的操作。

另外,在将缓存于该第一日志空间中的数据存储至外部存储器中的目标存储空间之后,为了避免内存中缓存的数据过多,此时可以清除缓存于第一日志空间中的该数据。

在步骤204中,当该状态参数没有满足预设条件时,将该数据同步缓存至设置于外部存储器中的第二日志空间。

由步骤201可知,当该状态参数没有满足预设条件时,表明该终端当前状态不是很好,此时为了避免由于系统崩溃而导致向数据库中写入的数据丢失,需先将该数据同步缓存至设置于外部存储器中的第二日志空间。

其中,当该状态参数为终端的剩余电量时,步骤204可以为:当该剩余电量不大于预设电量时,将该数据同步缓存至设置于外部存储器中的第二日志空间。

比如,预设电量为15%,当当前终端的剩余电量为10%,在向数据库写入数据的过程中,可以将该数据同步缓存至设置于外部存储器中的第二日志空间。

在步骤205中,当确定该数据写入完成时,将缓存于第二日志空间中的数据存储至目标存储空间。

其中,步骤205的实现方式和步骤203的实现方式基本相同,不同之处在于,在确定该数据写入完成时,是将缓存于第二日志空间中的数据存储至目标存储空间,而不是将缓存于第一日志空间中的数据存储至目标存储空间。因此,对于步骤205的详细实现方式,在此不再解释说明。

和步骤203一样,在将缓存于该第二日志空间中的数据存储至外部存储器中的目标存储空间之后,为了避免第二日志空间中缓存的数据过多,此时可以清除缓存于第二日志空间中的该数据。

在本公开实施例中,在向数据库写入数据的过程中,当终端当前的状态参数满足预设条件时,将数据同步缓存至设置于内存中的第一日志空间,由于将数据同步缓存至内存的速率大于同步缓存至外部存储器的速率,因此当将数据同步缓存至内存中的第一日志空间时,可以提高缓存数据的速率,从而提升将数据写入数据库的速率。

图3a是本公开实施例提供的一种数据写入装置框图。参见图3a,该装置300包括获取模块301,第一缓存模块302和第一存储模块303。

获取模块301,用于在向数据库写入数据的过程中,获取终端当前的状态参数,该状态参数用于描述终端当前的状态;

第一缓存模块302,用于当该状态参数满足预设条件时,将该数据同步缓存至设置于内存中的第一日志空间,其中,将该数据同步缓存至内存的速率大于同步缓存至外部存储器的速率;

第一存储模块303,用于当确定该数据写入完成时,将缓存于第一日志空间中的数据存储至外部存储器中的目标存储空间,目标存储空间用于存储数据库中的数据。

可选地,参见图3b,该装置300还包括第二缓存模块304和第二存储模块305:

第二缓存模块304,用于当该状态参数没有满足预设条件时,将该数据同步缓存至设置于外部存储器中的第二日志空间;

第二存储模块305,用于当确定该数据写入完成时,将缓存于第二日志空间中的数据存储至目标存储空间。

可选地,该状态参数包括该终端的剩余电量;

相应地,该预设条件为剩余电量大于预设电量的条件。

可选地,该装置300还包括清除模块:

清除模块,用于清除缓存于第一日志空间中的数据。

在本公开实施例中,在向数据库写入数据的过程中,当终端当前的状态参数满足预设条件时,将数据同步缓存至设置于内存中的第一日志空间,由于将数据同步缓存至内存的速率大于同步缓存至外部存储器的速率,因此当将数据同步缓存至内存中的第一日志空间时,可以提高缓存数据的速率,从而提升将数据写入数据库的速率。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图4是根据一示例性实施例示出的一种数据写入装置400的框图。例如,装置400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图4,装置400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(i/o)的接口412,传感器组件414,以及通信组件416。

处理组件402通常控制装置400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理组件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。

存储器404被配置为存储各种类型的数据以支持在装置400的操作。这些数据的示例包括用于在装置400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电源组件406为装置400的各种组件提供电源。电源组件406可以包括电源管理系统,一个或多个电源,及其他与为装置400生成、管理和分配电源相关联的组件。

多媒体组件408包括在所述装置400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当装置400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(mic),当装置400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。

i/o接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件414包括一个或多个传感器,用于为装置400提供各个方面的状态评估。例如,传感器组件414可以检测到装置400的打开/关闭状态,组件的相对定位,例如所述组件为装置400的显示器和小键盘,传感器组件414还可以检测装置400或装置400一个组件的位置改变,用户与装置400接触的存在或不存在,装置400方位或加速/减速和装置400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件416被配置为便于装置400和其他设备之间有线或无线方式的通信。装置400可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,装置400可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例提供的数据写入方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由装置400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种上述实施例提供的数据写入方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1