一种移动终端的数据库处理方法及其移动终端与流程

文档序号:11133749阅读:692来源:国知局
一种移动终端的数据库处理方法及其移动终端与制造工艺

本发明涉及通信的技术领域,特别是涉及一种移动终端的数据库处理方法及其移动终端。



背景技术:

随着通信科技的发展,诸如手机、手表等智能终端在人们的工作、学习、日常交流等各方面的使用率也越来越高。

在智能终端上运行的许多应用会使用数据库(如SQLite)来存储用户操作的数据,尤其是社交应用,如即时通信工具、短信应用等等,需要在后台线程中写一个数据库,而同时需要在主线程在UI(User Interface,用户界面)显示数据,那么主线程会生成子线程,该子线程中读取同一数据库。

尽管读操作的对象和写操作的对象不是同一张表,但是,诸如SQLite等数据库所使用的锁为文件锁,对于同一数据库,在写操作的同时不允许执行其他读操作或者写操作。

在许多情况下,某个操作触发一线程进行写操作,同时,另一操作触发另一线程进行读操作。

若该线程较长时间处于写操作,则另一线程较长时间处于等待的状态,由于读取时间较长,容易影响其他操作的效率,可能造成界面长时间处于等待等问题。

例如,对于短信应用,当有未读短信时,每次进入短信列表界面,就会把数据库中关于未读短信是否已经被看到的字段标为已看(写操作),但是,用户还希望能够立即在列表中查看所有短信(读操作),如果字段的标记的时间过长,导致长时间未能读取短信,就会造成短信列表界面迟迟不能加载数据,影响用户体验。

目前有些方案将写操作与读操作并发,但是,这些方案往往会增加死锁概率以及对内存的消耗,死锁后会造成应用停止运行,为了解决死锁问题,往往还会增加更加复杂的逻辑控制,复杂度高,另外,对于一些本身内存比较小的智能终端,增大内存的消耗往往会拖慢整个操作系统的操作流畅程度,造成操作系统的操作卡顿。



技术实现要素:

鉴于上述问题,为了解决上述数据库的写操作时间过长导致读操作执行时间过长的问题,本发明实施例提出了一种移动终端的数据库处理方法及其移动终端。

为了解决上述问题,本发明实施例公开了一种移动终端的数据库处理方法,包括:

获取待写入数据库的文件;

判断所述文件的行数是否大于预设阈值;

若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

本发明实施例还公开了一种移动终端,包括:

文件获取模块,用于获取待写入数据库的文件;

写操作模块,用于判断所述文件的行数是否大于预设阈值;若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

本发明实施例包括以下优点:

本发明实施例将写操作看作是对于要进行写操作的文件,判断所述文件的行数是否大于预设阈值,若是,则选取所述文件的预设阈值行数部分进行第一次写操作,通过预设阈值将文件一部分一部分地写入数据库,每一部分的数据是相对独立的,将文件通过分部分地写操作写入数据库,以在写入部分数据之后,可以临时释放文件锁,以供其它线程对数据库进行读操作,及时地读取到数据并进行显示等处理,由于读操作的时间一般为毫秒级,很短暂,保证了整体写操作的正常执行,并不会明显增加整体写操作的时间,一方面,单次写操作的时间相对整体写操作的时间要少,减少了读操作等待的时间,提高操作的效率,减少界面长时间处于等待等问题;另一方面,由于写操作与读操作是串联执行,不会因写操作与读操作并发而引起的死锁概率以及对内存的消耗。

附图说明

图1是本发明的一种数据库的处理方法实施例的步骤流程图;

图2是本发明的另一种实施例的移动终端的数据库处理方法的步骤流程图;

图3A是本发明实施例的一种数据库操作流程图;

图3B是图3A的数据库操作流程图的等效流程图;

图4是本发明的一种移动终端装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种移动终端的数据库处理方法的实施例的步骤流程图,具体可以包括如下步骤:

步骤101,获取待写入数据库的文件。

步骤102,判断所述文件的行数是否大于预设阈值;

步骤103,若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

在具体实现中,本发明实施例可以应用于各种智能终端中,例如,电脑、手机、PDA(Personal Digital Assistant,个人数字助理)、膝上型计算机、掌上电脑等等,本发明实施例对此不加以限制。

该智能终端可以支持Windows、Android(安卓)、IOS、WindowsPhone等操作系统,通常可以在操作系统中配置数据库,如SQLite。

该数据库在进行写操作、读操作时,配置文件锁,禁止同时进行其他写操作、读操作。

参照图2,示出了本发明的另一实施例的步骤流程图,具体可以包括如下步骤:

步骤201,获取待写入数据库的文件。

步骤202,判断所述文件的行数是否大于预设阈值。

步骤203,若是,则把所述文件按照预设阈值的行数进行划分为N个文件片段,选取所述文件的预设阈值行数的一个文件片段部分,进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

步骤204,若否,则把所述文件全部进行写操作。

步骤205,当所述第一次写操作加写文件锁,行写操作时,读线程申请读操作;

步骤206,所述读线程获知有写文件锁,进行等待;

步骤207,所述第一次写线程完成所述行写操作,释放写文件锁;

步骤208,所述读线程获知写文件锁释放,进行读操作,具体包括加读文件锁,读操作,释放读文件锁。

步骤209,选取所述文件剩下部分的预设阈值行数部分,进行第二次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

在本发明实施例中,写进程在进行写操作之前,可以向SQLite数据库申请文件锁,对SQLite数据库进行加锁,在POSIX标准中提供接口fcntl()来实现。

SQLite数据库具有一个锁文件(lock file),当锁文件存在时,就认为该数据库已经被加锁,别的进程不应该访问。当锁不存在,写进程就可以创建一个锁文件,然后访问相应的数据。

可以保证某一时刻只有一个进程拥有该锁,保证某一时刻只有一个进程访问文件,对于同一部分内容,读操作的文件锁与写操作的文件锁互斥。

在本发明实施例中,如果写操作的文件锁申请成功,则可以判断是否将文件的全部数据写入数据库,如果已全部写入数据库,则结束写操作,如果没有全部写入数据库,则继续将未写入的数据写入数据库。

如果写操作的文件锁申请失败,则可能有其他进程进行写操作、读操作,此时可以等待,直至写操作的文件锁申请成功。

文件中的数据通常以行进行计量,可以将写操作看作是将文件中的数据一行行地写入数据库,每行数据的写入是相对独立的。

在本示例中,可以预先计算文件的总行数并实时统计已写入数据库的行数,也就是已写行数。

如果已写行数小于文件的总行数,则表示文件还有部分数据未写入数据库中,如果已写行数等于文件的总行数,则表示文件的全部数据已写入数据库中。

在本实施例的具体实现中,可以在指定的存储区域判断是否存储有用于记录已写行数的变量;若是,则提取变量的值,获得已写行数;若否,则在指定的存储区域设置变量,并设置初始值,初始值通常设置为0。

在具体实现中,每一次写操作可以将文件中未写入数据库的部分数据写入数据库中。

为了保证该文件的正常存储,通常是按照文件的数据顺序写入数据库的,即本次写操作写入数据库的数据通常与上一次写操作写入数据库的数据相连。

当然,如果可以保证写入数据库的数据的准确性,也可以通过标记位置等方式将文件写入数据库中,本发明实施例对此不加以限制。

在本发明实施例的一个示例中,可以按照数据的行顺序将数据写入数据库中,每一次写操作可以写入一定的预设行数的数据。

在写入每行数据时,从首行数据开始写,同时,记录当前行数,如记录在指定的存储区域的值,并判断本次写操作写入的数据是否到达预设行数的值,如果到达,则结束本次写操作,如果未到达,则继续写下一行。

其中,如果预设行数的值是预先设定的一个数值,则可以通过已写行数对预设行数的值取余数的方式判断本次写操作是否到达预设行数的值,即余数为0时,到达预设行数,否则,未到达预设行数。

当然,该预设行数的值也可以按照智能终端的资源使用率、文件的数据量、随机选取、概率选择等因素进行设置,比如资源使用率越高,读操作的概率越高,预设行数设置越低,这样可以保证读操作的执行。

如果本次写操作完成,即可以释放数据库的写操作的文件锁,然后休眠(sleep)一段时间,如1ms,使得读操作可以在此期间进行。

本发明实施例将写操作看作是对于要进行写操作的文件,一部分一部分地写入数据库,每一部分的数据是相对独立的,将文件通过至少两次写操作写入数据库,以在写入部分数据之后,可以临时释放文件锁,以供其它线程对数据库进行读操作,及时地读取到数据并进行显示等处理,实现了数据库资源的时分复用,由于读操作的时间一般为毫秒级,很短暂,保证了整体写操作的正常执行,并不会明显增加整体写操作的时间,一方面,单次写操作的时间相对整体写操作的时间要少,减少了读操作等待的时间,提高操作的效率,减少界面长时间处于等待等问题;另一方面,由于写操作与读操作是串联执行,减少了因写操作与读操作并发而引起的死锁概率以及对内存的消耗。

如图3A所示,在本发明实施例的数据库操作机制中,一方面,写线程在开始时,在一个总写操作中,分为至少两个分写操作,在每个分写操作中,向该数据库加写文件锁,此时的时间为开始写时间点,如果加写文件锁成功,则执行写操作,将部分数据写入数据库中,如果写操作完成,释放写文件锁,此时的时间为结束写时间点,如此重复执行分写操作,最后将全部数据写入数据。

另一方面,读进程在开始时,向数据库申请读操作,此时的时间为申请读时间点,如果申请读时间点晚于开始写时间点、早于结束写时间点,即数据库处于加写文件锁的情况下,进行等待,待写进程在某次分写操作执行完毕释放写文件锁之后,向数据库加读文件锁,此时的时间为开始读时间点,如果加读文件锁成功,则执行读操作,如果读操作完成,释放读文件锁,此时的时间为结束读时间点,并显示读取的数据,该开始读时间点与结束读时间点均晚于上一次分写操作结束写时间点,早于下一次分写操作的开始写时间点。

虽然写操作与读操作分别在两个线程中串联进行,但是,通过临时释放文件锁使得在写操作的过程中进行读操作,分时复用数据库,如图3B所示,数据库的读写流程可以等价于并行进行写操作、读操作,最后显示数据。

在本实施例中,对于短信应用,当有未读短信时,每次进入短信列表界面,就会把SQLite数据库中关于未读短信是否已经被看到的字段标为已看(写操作),但是,用户还希望能够立即在列表中查看所有短信(读操作),由于写操作对预设行数进行写,就保证了字段的标记的时间在一定的范围,当对预设行数的写操作完成后,读操作就开始从SQLite数据库中读取短信,保证了短信列表界面加载数据是在一定的时间范围内,读操作完成以后写操作再继续进行,对于海量短信,能够保证用户打开短信就可以很快显示出短信数据,在时间上保证了快速显示,提高用户体验。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图4,示出了本发明的一种移动终端的结构框图,具体可以包括如下模块:

文件获取模块401,用于获取待写入数据库的文件;

写操作模块402,用于判断所述文件的行数是否大于预设阈值;若是,则选取所述文件的预设阈值行数部分进行第一次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

读操作模块403,用于当所述第一次写操作加写文件锁,行写操作时,读线程申请读操作;所述读线程获知有写文件锁,进行等待;所述第一次写线程完成所述行写操作,释放写文件锁;所述读线程获知写文件锁释放,进行读操作。

写操作模块402,还用于选取所述文件剩下部分的预设阈值行数部分,进行第二次写操作,所述写操作包括加写文件锁,行写操作,释放写文件锁。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种移动终端的数据库处理方法及其移动终端,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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