用于管理数据库的电子设备和方法与流程

文档序号:21973931发布日期:2020-08-25 19:05阅读:156来源:国知局
用于管理数据库的电子设备和方法与流程

本公开涉及用于管理存储与应用有关的数据的数据库的电子设备及其操作方法。



背景技术:

随着数字技术的最新发展,诸如移动通信终端、智能电话、平板个人计算机(pc)、电子管理器、个人数字助理(pda)、可穿戴设备等的各种类型的电子设备被广泛使用。电子设备可以使用数据库来管理一个或更多个应用、服务和/或操作系统的数据。例如,电子设备可以基于正在运行的应用、服务和/或操作系统来处理数据库中的数据。

以上信息仅作为背景信息呈现,以帮助理解本公开。关于以上内容中的任何内容是否可以用作关于本公开的现有技术,没有做出确定,也没有做出断言。



技术实现要素:

本公开的各方面将至少解决上述问题和/或缺点,并至少提供下述优点。因此,本公开的一方面在于提供一种用于管理存储与应用有关的数据的数据库的电子设备及其操作方法。

在无法正常打开数据库的情况下,一个或更多个应用、服务和/或操作系统可能无法正常运行。例如,如果电子设备响应于应用和/或服务的请求未能正常打开数据库,则该应用和/或服务将无法正常执行。由于不能正常执行应用和/或服务,因此可能存在与应用和/或服务有关的错误,这可能会中断用于应用和/或服务的装置的操作。

本公开的各种实施例要解决的技术问题不限于上述技术问题,并且本公开所属领域的技术人员可以从以下描述中清楚地理解以上未提及的其他技术问题。

另外的方面将在下面的描述中部分地阐述,并且部分地将从描述中变得显而易见,或者可以通过实践所呈现的实施例而获知。

根据本公开的一个方面,提供了一种电子设备。所述电子设备包括:存储装置,所述存储装置被配置为存储数据库;存储器;以及至少一个处理器,所述至少一个处理器可操作地连接至所述存储装置和所述存储器,其中所述存储器存储多个指令,所述多个指令在被执行时使所述至少一个处理器:识别第一文件的状态,所述第一文件至少是与所述数据库中存储的数据相对应的临时存储数据,所述第一文件与所述数据库的第一操作模式有关;响应于识别出所述第一文件处于允许读取文件中包括的数据的第一状态,识别第二文件的状态,所述第二文件存储指示所述数据库的一部分存储所述第一文件中的信息的信息;至少部分地基于识别出的所述第二文件的状态,使用所述第一文件执行与所述数据库中存储的所述数据有关的事务;以及响应于识别出所述第一文件处于与所述第一状态不同的第二状态,基于与所述第一操作模式不同的第二操作模式执行所述事务。

根据本公开的另一方面,提供了一种操作电子设备的方法。所述方法包括:识别使用存储在所述电子设备的存储装置中的数据库的应用;响应于识别出所述应用,识别与处理所述数据库中的数据的结果有关的至少一个文件的状态;响应于识别出所述至少一个文件的状态对应于不允许产生或修改所述至少一个文件的第一状态,基于所述电子设备的存储器中的信息,执行针对与所述应用有关的数据的读取操作;以及响应于识别出所述至少一个文件的状态对应于与所述第一状态不同的第二状态,基于所述应用,使用所述至少一个文件来执行处理所述数据的操作。

根据本公开的另一方面,提供了一种电子设备。所述电子设备可以包括:存储装置;存储器;以及至少一个处理器,所述至少一个处理器可操作地连接至所述存储装置和所述存储器,其中所述至少一个处理器被配置为:从所述存储装置中识别至少一个文件的用于访问存储在所述存储装置中的数据库的状态;响应于识别出所述第一文件未被存储在所述存储装置中,识别所述数据库的操作模式;

响应于基于所述至少一个文件识别出所述操作模式与所述数据库在其中操作的所述第一操作模式相对应,将所述数据库的所述操作模式从所述第一操作模式切换到与所述第一操作模式不同的所述第二操作模式。

根据本公开的另一方面,提供了一种电子设备及其方法。所述方法包括可以在无法正常打开数据库的情况下执行与所述数据库中的数据有关的读取操作,从而防止与所述数据库有关的应用和/或服务中的错误。

可以通过本公开获得的效果不限于上述效果,并且本领域技术人员从以下描述中可以清楚地理解未提及的其他效果。

根据下面的详细描述,本公开的其他方面、优点和显着特征对于本领域技术人员将变得显而易见,下面的详细描述结合附图公开了本公开的各种实施例。

附图说明

通过以下结合附图的描述,本公开的某些实施例的上述和其他方面、特征和优点将变得更加明显,其中:

图1是根据本公开的实施例的在网络环境中的电子设备的框图;

图2是示出了根据本公开的实施例的程序140的框图200;

图3a是示出了根据本公开的实施例的电子设备的配置和与电子设备中存储的数据库有关的至少一个文件的视图;

图3b是示出了根据本公开的实施例的电子设备的配置和与电子设备中存储的数据库有关的至少一个文件的视图;

图4是示出了根据本公开的实施例的电子设备的操作的流程图;

图5是示出了根据本公开的实施例的电子设备的存储装置中存储的数据库以及与该数据库有关的至少一个文件的视图;

图6是示出了根据本公开的实施例的电子设备识别与数据库有关的至少一个文件的状态的操作的流程图;

图7是示出了根据本公开的实施例的电子设备在存储器中产生第二文件的操作的流程图;

图8a是示出了根据本公开的实施例的电子设备将存储映射信息的文件存储在存储器中的操作的视图;

图8b是示出了根据本公开的实施例的电子设备将存储映射信息的文件存储在存储器中的操作的视图;

图9是示出了根据本公开的实施例的电子设备处理从应用和/或服务识别的事务的操作的流程图;

图10a是示出了根据本公开的实施例的电子设备中的数据库的结构的示例的视图;

图10b是示出了根据各种实施例的第一文件的结构的示例的视图;

图10c是示出了根据本公开的实施例的第二文件的结构的示例的视图;

图11是示出了根据本公开的实施例的在没有任何用于访问数据库的文件的状态下由电子设备执行的操作的流程图;

图12是示出了根据本公开的实施例的由电子设备执行的操作的流程图;

图13是示出了根据本公开的实施例的由电子设备执行的操作的流程图;以及

图14是示出了根据本公开的实施例的由电子设备执行的操作的流程图。

贯穿附图,相似的附图标记将被理解为指代相似的部件、组件和结构。

具体实施方式

提供以下参考附图的描述,以帮助全面理解由权利要求及其等同物限定的本公开的各种实施例。它包括各种具体细节以帮助理解,但是这些具体细节仅被认为是示例性的。因此,本领域普通技术人员将认识到,在不脱离本公开的范围和精神的情况下,可以对本文所述的各种实施例进行各种改变和修改。另外,为了清楚和简洁,可以省略对公知功能和构造的描述。

在以下描述和权利要求中使用的术语和词语不限于书目含义,而是仅由发明人用来使本公开内容能够被清楚和一致地理解。因此,对于本领域技术人员而言显而易见的是,提供对本公开的各种实施例的以下描述仅是出于说明的目的,而不是出于限制由所附权利要求及其等同物所限定的本公开的目的。

应当理解,单数形式的“一”、“一个”、以及“该”包括复数对象,除非上下文另外明确指出。因此,例如,提及“组件表面”包括提及这些表面中的一个或更多个。

在本文公开的本公开中,本文中使用的表述“具有”、“可以具有”、“包括”和“包含”、或“可以包括”和“可以包含”表示存在相应的特征(例如,诸如数值、功能、操作、或组件的元件),并且不排除存在其他特征。

在本公开中,表述“a或b”、“a或/和b中的至少一个”或“a或/和b中的一个或更多个”等可以包括一起列举的项目的所有可能的组合。例如,“a或b”、“a和b中的至少一个”、或“a或b中的至少一个”可以指包括下面全部情况:至少一个a的情况(1)、包括至少一个b的情况(2)、或包括至少一个a和至少一个b的情况(3)。

如在本文中所使用的,诸如“第一”和“第二”、或“所述第一”和“所述第二”之类的术语可以被用来简单地将对应的组件与另一组件区分开,并且在其他方面(例如,重要性和/或顺序)不限制该组件。例如,“第一用户设备“和“第二用户设备”指示不同的用户设备,而与顺序或优先级无关。例如,在不脱离本公开的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。

将理解的是,当元件(例如,第一元件)被称为“(操作地或通信地)与另一元件(例如,第二元件)耦接/耦接”或“连接至”另一元件(例如,第二元件)时,它可以与另一元件直接耦接/直接耦接到该另一元件或直接连接到该另一元件,或经由中间元件(例如第三元件)与另一元件耦接/或耦接到该另一元件或连接到另一元件。与之相反,当元件(例如,第一元件)被称为与另一元件(例如,第二元件)“直接耦接或直接耦接到”该另一元件或“直接连接至”该另一元件(例如,第二元件),则应理解为在该元件和另一元件之间不存在中间元件(例如,第三元件)。

根据情况,本公开中使用的术语“被配置为(或被设置为)”可以与术语“适合于”、“具有…的能力”、“设计为”、“适应于”、“制为”或“有能力…”互换使用。术语“被配置为(或被设置为)”不能仅表示为硬件中的“专门设计为…”。相反,表述“被配置为…”的设备可以表示该设备“能够”与另一设备或其他组件一起操作。例如,“被配置为(被设置为)执行a、b和c的处理器”可以例如但不限于指代用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储设备中的一个或更多个软件程序来执行相应操作的通用处理器(例如,中央处理单元(cpu)或应用处理器(ap))。

在本公开中使用的术语用于描述指定的实施例,而不意图限制其他实施例的范围。除非另有说明,否则单数形式的术语可以包括复数形式。除非本文另有定义,否则本文使用的所有术语(包括技术术语或科学术语)可以具有与本领域技术人员通常理解的含义相同的含义。将进一步理解的是,除非在本公开的各种实施例中明确地如此定义,否则在词典中定义并且通常使用的术语也应该被解释为相关的相关技术中的惯例,而不是以理想化或过于形式化的方式解释。在某些情况下,即使术语是在本公开中定义的术语,也不能将其解释为排除本公开的实施例。

根据本公开的各种实施例的电子设备可以包括例如智能电话、平板个人计算机(pc)、移动电话、视频电话、电子书阅读器、台式pc、膝上型pc、上网本计算机、工作站、服务器、个人数字助理(pda)、便携式多媒体播放器(pmp)、运动图像专家组(mpeg-1或mpeg-2)音频第3层(mp3)播放器、移动医疗设备、相机、或可穿戴设备。根据各种实施例,可穿戴设备可以包括附件(例如,手表、戒指、手链、脚链、项链、眼镜、隐形眼镜、头戴式设备(hmd)、织物或衣物安装设备(例如,电子服装)、身体安装式设备(例如,皮肤垫、文身等)、或生物可植入式设备中的至少一个。

根据一些实施例,电子设备可以是家用电器。家用电器包括以下至少之一:电视(tv)、数字视频磁盘(dvd)播放器、音频、冰箱、空调、清洁器、烤箱、微波炉、洗衣机、空气清洁器、机顶盒、家庭自动化控制面板、安全控制面板、电视盒(例如samsunghomesynctm、appletvtm或googletvtm)、游戏机(例如xboxtm和playstationtm)、电子词典、电子钥匙、便携式摄像机、或电子相框。

根据另一实施例,电子设备可以包括医疗设备(例如,各种便携式医疗测量设备(例如,血糖监测设备、心跳测量设备、血压测量设备、体温测量设备等)、磁共振血管造影(mra)、磁共振成像(mri)、计算机断层扫描(ct)、扫描仪和超声设备)、导航设备、全球定位卫星系统(gnss)接收器、事件数据记录仪(edr)、飞行数据记录仪(fdr)、车辆信息娱乐设备、船舶电子设备(例如,导航系统和陀螺罗经)、航空电子设备,安全设备、车辆主机、工业或家用机器人、金融机构的自动柜员机(atm)、商店的销售点(pos)、或物联网(例如,灯泡、各种传感器、电表或煤气表、洒水装置、火警、恒温器、路灯、烤面包机、健身器材、热水箱、加热器、锅炉等)。

根据实施例,电子设备可以包括家具、建筑物/结构的一部分、电子板、电子签名接收设备、投影仪、或各种测量仪器(例如,水表、电表、煤气表、或波长计)。在各种实施例中,电子设备可以是上述设备中的一个、或两个或更多个设备的组合。根据某个实施例,电子设备可以是柔性电子设备或可折叠电子设备。另外,根据本公开的各种实施例的电子设备不限于上述设备,并且可以包括根据技术发展的新的电子设备。

在本公开中,术语“用户”可以指使用电子设备的人或使用电子设备的装置(例如,人工智能电子设备)。

在下文中,将参考附图详细描述各种实施例。然而,为了便于说明,附图中的元件的尺寸可能被放大或缩小。例如,为了便于说明,任意地示出了附图中所示的各个元件的尺寸和厚度,因此本公开不应限于附图的图示。

图1是示出了本公开的实施例的网络环境100中的电子设备101的框图。

参考图1,网络环境100中的电子设备101可经由第一网络98(例如,短距离无线通信网络)与电子设备102进行通信,或者经由第二网络99(例如,长距离无线通信网络)与电子设备104或服务器108进行通信。根据实施例,电子设备101可经由服务器108与电子设备104进行通信。根据实施例,电子设备101可包括处理器120、存储器130、输入设备150、声音输出设备155、显示设备160、音频模块170、传感器模块176、接口177、触觉模块179、相机模块180、电源管理模块188、电池189、通信模块190、用户识别模块(sim)196或天线模块197。在一些实施例中,可从电子设备101中省略所述部件中的至少一个(例如,显示设备160或相机模块180),或者可将一个或更多个其他部件添加到电子设备101中。在一些实施例中,可将所述部件中的一些部件实现为单个集成电路。例如,可将传感器模块176(例如,指纹传感器、虹膜传感器、或照度传感器)实现为嵌入在显示设备160(例如,显示器)中。

处理器120可运行例如软件(例如,程序140)来控制电子设备101的与处理器120连接的至少一个其他部件(例如,硬件部件或软件部件),并可执行各种数据处理或计算。根据实施例,作为所述数据处理或计算的至少部分,处理器120可将从另一部件(例如,传感器模块176或通信模块190)接收到的命令或数据加载到易失性存储器132中,对存储在易失性存储器132中的命令或数据进行处理,并将结果数据存储在非易失性存储器134中。根据实施例,处理器120可包括主处理器121(例如,中央处理器(cpu)或应用处理器(ap))以及与主处理器121在操作上独立的或者相结合的辅助处理器123(例如,图形处理单元(gpu)、图像信号处理器(isp)、传感器中枢处理器或通信处理器(cp))。另外地或者可选择地,辅助处理器123可被适配为比主处理器121耗电更少,或者被适配为具体用于指定的功能。可将辅助处理器123实现为与主处理器121分离,或者实现为主处理器121的部分。

在主处理器121处于未激活(例如,睡眠)状态时,辅助处理器123可控制与电子设备101(而非主处理器121)的部件之中的至少一个部件(例如,显示设备160、传感器模块176或通信模块190)相关的功能或状态中的至少一些,或者在主处理器121处于激活状态(例如,运行应用)时,辅助处理器123可与主处理器121一起来控制与电子设备101的部件之中的至少一个部件(例如,显示设备160、传感器模块176或通信模块190)相关的功能或状态中的至少一些。根据实施例,可将辅助处理器123(例如,图像信号处理器或通信处理器)实现为在功能上与辅助处理器123相关的另一部件(例如,相机模块180或通信模块190)的部分。

存储器130可存储由电子设备101的至少一个部件(例如,处理器120或传感器模块176)使用的各种数据。所述各种数据可包括例如软件(例如,程序140)以及针对与其相关的命令的输入数据或输出数据。存储器130可包括易失性存储器132或非易失性存储器134。

可将程序140作为软件存储在存储器130中,并且程序140可包括例如操作系统(os)142、中间件144或应用146。

输入设备150可从电子设备101的外部(例如,用户)接收将由电子设备101的另一部件(例如,处理器120)使用的命令或数据。输入设备150可包括例如麦克风、鼠标、键盘或数字笔(例如,手写笔)。

声音输出设备155可将声音信号输出到电子设备101的外部。声音输出设备155可包括例如扬声器或接收器。扬声器可用于诸如播放多媒体或播放唱片的通用目的,接收器可用于呼入呼叫。根据实施例,可将接收器实现为与扬声器分离,或实现为扬声器的部分。

显示设备160可向电子设备101的外部(例如,用户)视觉地提供信息。显示设备160可包括例如显示器、全息装置或投影仪以及用于控制显示器、全息装置和投影仪中的相应一个的控制电路。根据实施例,显示设备160可包括被适配为检测触摸的触摸电路或被适配为测量由触摸引起的力的强度的传感器电路(例如,压力传感器)。

音频模块170可将声音转换为电信号,反之亦可。根据实施例,音频模块170可经由输入设备150获得声音,或者经由声音输出设备155或与电子设备101直接(例如,有线地)连接或无线连接的外部电子设备(例如,电子设备102)的耳机输出声音。

传感器模块176可检测电子设备101的操作状态(例如,功率或温度)或电子设备101外部的环境状态(例如,用户的状态),然后产生与检测到的状态相应的电信号或数据值。根据实施例,传感器模块176可包括例如手势传感器、陀螺仪传感器、大气压力传感器、磁性传感器、加速度传感器、握持传感器、接近传感器、颜色传感器、红外(ir)传感器、生物特征传感器、温度传感器、湿度传感器或照度传感器。

接口177可支持将用来使电子设备101与外部电子设备(例如,电子设备102)直接(例如,有线地)或无线连接的一个或更多个特定协议。根据实施例,接口177可包括例如高清晰度多媒体接口(hdmi)、通用串行总线(usb)接口、安全数字(sd)卡接口或音频接口。

连接端178可包括连接器,其中,电子设备101可经由所述连接器与外部电子设备(例如,电子设备102)物理连接。根据实施例,连接端178可包括例如hdmi连接器、usb连接器、sd卡连接器或音频连接器(例如,耳机连接器)。

触觉模块179可将电信号转换为可被用户经由他的触觉或动觉识别的机械刺激(例如,振动或运动)或电刺激。根据实施例,触觉模块179可包括例如电机、压电元件或电刺激器。

相机模块180可捕获静止图像或运动图像。根据实施例,相机模块180可包括一个或更多个透镜、图像传感器、图像信号处理器或闪光灯。

电源管理模块188可管理对电子设备101的供电。根据实施例,可将电源管理模块188实现为例如电力管理集成电路(pmic)的至少部分。

电池189可对电子设备101的至少一个部件供电。根据实施例,电池189可包括例如不可再充电的原电池、可再充电的蓄电池、或燃料电池。

通信模块190可支持在电子设备101与外部电子设备(例如,电子设备102、电子设备104或服务器108)之间建立直接(例如,有线)通信信道或无线通信信道,并经由建立的通信信道执行通信。通信模块190可包括能够与处理器120(例如,应用处理器(ap))独立操作的一个或更多个通信处理器,并支持直接(例如,有线)通信或无线通信。根据实施例,通信模块190可包括无线通信模块192(例如,蜂窝通信模块、短距离无线通信模块或全球导航卫星系统(gnss)通信模块)或有线通信模块194(例如,局域网(lan)通信模块或电力线通信(plc)模块)。这些通信模块中的相应一个可经由第一网络198(例如,短距离通信网络,诸如蓝牙、无线保真(wi-fi)直连或红外数据协会(irda))或第二网络199(例如,长距离通信网络,诸如蜂窝网络、互联网、或计算机网络(例如,lan或广域网(wan)))与外部电子设备进行通信。可将这些各种类型的通信模块实现为单个部件(例如,单个芯片),或可将这些各种类型的通信模块实现为彼此分离的多个部件(例如,多个芯片)。无线通信模块192可使用存储在用户识别模块196中的用户信息(例如,国际移动用户识别码(imsi))识别并验证通信网络(诸如第一网络198或第二网络199)中的电子设备101。

天线模块197可将信号或电力发送到电子设备101的外部(例如,外部电子设备)或者从电子设备101的外部(例如,外部电子设备)接收信号或电力。根据实施例,天线模块197可包括天线,所述天线包括辐射元件,所述辐射元件由形成在基底(例如,pcb)中或形成在基底上的导电材料或导电图案构成。根据实施例,天线模块197可包括多个天线。在这种情况下,可由例如通信模块190(例如,无线通信模块192)从所述多个天线中选择适合于在通信网络(诸如第一网络198或第二网络199)中使用的通信方案的至少一个天线。随后可经由所选择的至少一个天线在通信模块190和外部电子设备之间发送或接收信号或电力。根据实施例,除了辐射元件之外的另外的组件(例如,射频集成电路(rfic))可附加地形成为天线模块197的一部分。

上述部件中的至少一些可经由外设间通信方案(例如,总线、通用输入输出(gpio)、串行外设接口(spi)或移动工业处理器接口(mipi))相互连接并在它们之间通信地传送信号(例如,命令或数据)。

根据实施例,可经由与第二网络199连接的服务器108在电子设备101和外部电子设备104之间发送或接收命令或数据。电子设备102和电子设备104中的每一个可以是与电子设备101相同类型的装置,或者是与电子设备101不同类型的装置。根据实施例,将在电子设备101运行的全部操作或一些操作可在外部电子设备102、外部电子设备104或服务器108中的一个或更多个运行。例如,如果电子设备101应该自动执行功能或服务或者应该响应于来自用户或另一装置的请求执行功能或服务,则电子设备101可请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分,而不是运行所述功能或服务,或者电子设备101除了运行所述功能或服务以外,还可请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分。接收到所述请求的所述一个或更多个外部电子设备可执行所述功能或服务中的所请求的所述至少部分,或者执行与所述请求相关的另外功能或另外服务,并将执行的结果传送到电子设备101。电子设备101可在对所述结果进行进一步处理的情况下或者在不对所述结果进行进一步处理的情况下将所述结果提供作为对所述请求的至少部分答复。为此,可使用例如云计算技术、分布式计算技术或客户机-服务器计算技术。

图2是示出了根据本公开的实施例的程序140的框图200。

参考图2,程序140可包括用于控制电子设备101的一个或更多个资源的操作系统(os)142、中间件144或可在os142中运行的应用146。os142可包括例如androidtm、iostm、windowstm、symbiantm、tizentm或badatm。例如,可在制造期间将程序140中的至少一部分预载入到电子设备101上,或者可在用户使用期间从外部电子设备(例如,电子设备102或电子设备104,或者服务器108)下载或由外部电子设备更新程序140中的至少一部分。

os142可控制电子设备101的一个或更多个系统资源(例如,进程、存储器或电源)的管理(例如,分配或解除分配)。另外或可选地,os142可包括用于驱动电子设备101的其他硬件装置(例如,输入设备150、声音输出设备155、显示设备160、音频模块170、传感器模块176、接口177、触觉模块179、相机模块180、电源管理模块188、电池189、通信模块190、用户识别模块196或天线模块197)的一个或更多个驱动程序。

中间件144可向应用146提供各种功能,使得应用146可使用从电子设备101的一个或更多个资源提供的功能或信息。中间件144可包括例如应用管理器201、窗口管理器203、多媒体管理器205、资源管理器207、电力管理器209、数据库管理器211、包管理器213、连接管理器215、通知管理器217、位置管理器219、图形管理器221、安全管理器223、电话管理器225或语音识别管理器227。

应用管理器201例如可管理应用146的生命周期。窗口管理器203例如可管理在屏幕上使用的一个或更多个图形用户界面(gui)资源。多媒体管理器205例如可识别将用于播放媒体文件的一个或更多个格式,并可使用适合于从所述一个或更多个格式中选择的相应格式的编解码器对媒体文件之中的相应媒体文件进行编码或解码。资源管理器207例如可管理应用146的源代码或存储器130的存储空间。电力管理器209例如可管理电池189的容量、温度或电力,并可至少部分基于电池189的容量、温度或电力的相应信息来确定或提供将用于电子设备101的操作的相关信息。根据实施例,电力管理器209可与电子设备101的基本输入/输出系统(bios)(未示出)协同工作。

数据库管理器211例如可产生、搜索或改变将由应用146使用的数据库。包管理器213例如可管理以包文件的形式分布的应用的安装或更新。连接管理器215例如可管理电子设备101与外部电子设备之间的无线连接或直接连接。通知管理器217例如可提供用于向用户通知发生特定事件(例如,呼入呼叫、消息或警报)的功能。位置管理器219例如可管理关于电子设备101的位置信息。图形管理器221例如可管理将向用户提供的一个或更多个图形效果或与所述一个或更多个图形效果有关的用户界面。

安全管理器223例如可提供系统安全或用户认证。电话管理器225例如可管理由电子设备101提供的语音呼叫功能或视频呼叫功能。语音识别管理器227例如可向服务器108发送用户的语音数据,并从服务器108接收与将至少部分基于语音数据或至少部分基于语音数据而转换的文本数据在电子设备101上运行的功能相应的命令。根据实施例,中间件144可动态地删除一些现有组件或添加新的组件。根据实施例,可包括中间件144中的至少一部分作为os142的一部分,或者可将中间件144中的至少一部分实现为与os142分离的另一软件。

应用146可包括例如主页251、拨号器253、短消息服务(sms)/多媒体消息服务(mms)255、即时消息(im)257、浏览器259、相机261、闹铃263、联系人265、语音识别267、电子邮件269、日历271、媒体播放器273、相册275、手表277、健康279(例如,用于测量锻炼程度或生物信息(诸如血糖))或环境信息281(例如,用于测量气压、湿度或温度信息)应用。根据实施例,应用146还可包括能够支持电子设备101与外部电子设备之间的信息交换的信息交换应用(未示出)。信息交换应用例如可包括适用于向外部电子设备传送指定信息(例如,呼叫、消息或警报)的通知转发应用或适用于管理外部电子设备的装置管理应用。通知转发应用可向外部电子设备传送与在电子设备101的另一应用(例如,电子邮件应用269)发生特定事件(例如,接收到电子邮件)相应的通知信息。另外或可选地,通知转发应用可从外部电子设备接收通知信息并向电子设备101的用户提供通知信息。

装置管理应用可控制外部电子设备或外部电子设备的一些组件(例如,外部电子设备的显示设备或相机模块)的电力(例如,开启或关闭)或功能(例如,亮度、分辨率或焦点的调整)。另外或可选地,装置管理应用可支持在外部电子设备上运行的应用的安装、删除或更新。

根据各种实施例的电子设备可以是各种类型的电子设备之一。电子设备可包括例如便携式通信装置(例如,智能电话)、计算机装置、便携式多媒体装置、便携式医疗装置、相机、可穿戴装置或家用电器。根据本公开的实施例,电子设备不限于以上所述的那些电子设备。

应该理解的是,本公开的各种实施例以及其中使用的术语并不意图将在此阐述的技术特征限制于具体实施例,而是包括针对相应实施例的各种改变、等同形式或替换形式。对于附图的描述,相似的参考标号可用来指代相似或相关的元件。将理解的是,与术语相应的单数形式的名词可包括一个或更多个事物,除非相关上下文另有明确指示。如这里所使用的,诸如“a或b”、“a和b中的至少一个”、“a或b中的至少一个”、“a、b或c”、“a、b和c中的至少一个”以及“a、b或c中的至少一个”的短语中的每一个短语可包括在与所述多个短语中的相应一个短语中一起列举出的项的任意一项或所有可能组合。如这里所使用的,诸如“第1”和“第2”或者“第一”和“第二”的术语可用于将相应部件与另一部件进行简单区分,并且不在其他方面(例如,重要性或顺序)限制所述部件。将理解的是,在使用了术语“可操作地”或“通信地”的情况下或者在不使用术语“可操作地”或“通信地”的情况下,如果一元件(例如,第一元件)被称为“与另一元件(例如,第二元件)结合”、“结合到另一元件(例如,第二元件)”、“与另一元件(例如,第二元件)连接”或“连接到另一元件(例如,第二元件)”,则意味着所述一元件可与所述另一元件直接(例如,有线地)连接、与所述另一元件无线连接、或经由第三元件与所述另一元件连接。

如这里所使用的,术语“模块”可包括以硬件、软件或固件实现的单元,并可与其他术语(例如,“逻辑”、“逻辑块”、“部分”或“电路”)可互换地使用。模块可以是被适配为执行一个或更多个功能的单个集成部件或者是该单个集成部件的最小单元或部分。例如,根据实施例,可以以专用集成电路(asic)的形式来实现模块。

可将在此阐述的各种实施例实现为包括存储在存储介质(例如,内部存储器136或外部存储器138)中的可由机器(例如,电子设备101)读取的一个或更多个指令的软件(例如,程序140)。例如,在处理器的控制下,所述机器(例如,电子设备101)的处理器(例如,处理器120)可在使用或无需使用一个或更多个其他部件的情况下调用存储在存储介质中的所述一个或更多个指令中的至少一个指令并运行所述至少一个指令。这使得所述机器能够操作用于根据所调用的至少一个指令执行至少一个功能。所述一个或更多个指令可包括由编译器产生的代码或能够由解释器运行的代码。可以以非暂时性存储介质的形式来提供机器可读存储介质。其中,术语“非暂时性”仅意味着所述存储介质是有形装置,并且不包括信号(例如,电磁波),但是该术语并不在数据被半永久性地存储在存储介质中与数据被临时存储在存储介质中之间进行区分。

根据实施例,可在计算机程序产品中包括和提供根据本公开的各种实施例的方法。计算机程序产品可作为产品在销售者和购买者之间进行事务。可以以机器可读存储介质(例如,紧凑盘只读存储器(cd-rom))的形式来发布计算机程序产品,或者可经由应用商店(例如,playstoretm)在线发布(例如,下载或上传)计算机程序产品,或者可直接在两个用户装置(例如,智能电话)之间分发(例如,下载或上传)计算机程序产品。如果是在线发布的,则计算机程序产品中的至少部分可以是临时产生的,或者可将计算机程序产品中的至少部分至少临时存储在机器可读存储介质(诸如制造商的服务器、应用商店的服务器或转发服务器的存储器)中。

根据各种实施例,上述部件中的每个部件(例如,模块或程序)可包括单个实体或多个实体。根据各种实施例,可省略上述部件中的一个或更多个部件,或者可添加一个或更多个其他部件。可选择地或者另外地,可将多个部件(例如,模块或程序)集成为单个部件。在这种情况下,根据各种实施例,该集成部件可仍旧按照与所述多个部件中的相应一个部件在集成之前执行一个或更多个功能相同或相似的方式,执行所述多个部件中的每一个部件的所述一个或更多个功能。根据各种实施例,由模块、程序或另一部件所执行的操作可顺序地、并行地、重复地或以启发式方式来执行,或者所述操作中的一个或更多个操作可按照不同的顺序来运行或被省略,或者可添加一个或更多个其他操作。

图3a是示出了根据本公开的实施例的电子设备101的配置和与存储在电子设备101中的数据库330有关的至少一个文件的视图,并且图3b是示出了根据本公开的实施例的电子设备101的配置和与存储在电子设备101中的数据库330有关的至少一个文件的视图。电子设备101可以对应于智能电话、智能平板、平板pc、个人数字助理(pda)、膝上型pc或台式pc中的至少一个。电子设备101可以对应于包括附件类型的可穿戴设备{例如,手表、戒指、手链、脚链、项链、眼镜、隐形眼镜或头戴式设备设备(hmd}、纺织或服装类可穿戴设备(例如,电子服装)、身体附着类可穿戴设备(例如,皮肤垫或纹身)、或移植类可穿戴设备(例如,可植入电路)中的至少一种。电子设备101可以是家用电器,诸如冰箱、电视、清洁器、空调、清洁器和照明设备。电子设备101可以包括处理器120、存储器130和显示设备160。电子设备101可以至少部分地与图1所示的电子设备101相同。

根据各种实施例,处理器120可以执行存储在存储器130中的一个或更多个指令。处理器120可以包括用于处理数据的电路,例如,集成电路(ic)、算术逻辑单元(alu)、现场可编程门阵列(fpga)、和大规模集成(lsi)。存储器130可以存储与电子设备101有关的数据。存储器130可以包括易失性存储器132,诸如包括静态随机存取存储器(sram)、动态ram(dram)等的随机存取存储器(ram),或者可以包括非易失性存储器134,诸如闪存、嵌入式多媒体卡(emmc)、固态驱动器(ssd)等,以及只读存储器(rom),磁阻ram(mram)、自旋转移矩mram(stt-mram)、相变ram(pram)、电阻ram(rram)和铁电ram(feram)。非易失性存储器134可以是电子设备101中包括的内部存储器136的形式和/或可以是可从电子设备101拆卸的外部存储器138的形式。

根据各种实施例,存储器130可以存储与应用有关的指令和与操作系统(os)(例如,图1中的操作系统142)有关的指令。操作系统可以是由处理器120执行的系统软件。处理器120可以通过执行操作系统来管理包括在电子设备101中的硬件组件(例如,图1中的存储器130至图1中的天线模块197)。操作系统可以向除系统软件之外的应用提供应用程序编程接口(api)。

根据各种实施例,可以将一组多个指令的一个或更多个应用146安装在存储器130中。应用146的安装意味着应用146以由连接至存储器130的处理器120可执行的格式存储。

根据各种实施例,显示设备160可以使用有机发光二极管(oled)、液晶显示器(lcd)和发光二极管(led)中的至少一种在视觉上向用户输出信息。为了更直观地控制通过显示设备160输出的用户界面(ui),电子设备101可以包括设置在显示设备160上的触摸屏面板(tsp)(未示出)。触摸传感器面板可以使用电阻膜、电容部件、表面声波和红外线中的至少一种来检测触摸显示设备160或将其悬停在显示设备160上的物体(例如,用户的手指、手写笔)的位置。

参考图3a,示出了根据各种实施例的程序140的框图。程序140可以包括用于控制电子设备101的一个或更多个资源的操作系统或中间件,或者可在该操作系统下执行的应用146。操作系统可以包括例如androidtm、iostm、windowstm、symbiantm、tizentm、或badatm。例如,程序140中的至少一些可以在制造时被预加载到电子设备101,或者当与用户使用程序140时可以在制造时从外部电子设备(例如,外部电子设备和/或服务器)下载或更新。

根据各种实施例,程序140可以包括数据库(db)管理器211和/或db库310,其提供在应用146和数据库330之间处理数据的功能。db库310可以被包括在中间件中(例如,图1和图2中的中间件144)。中间件可以向应用146提供各种功能,使得应用146可以使用从电子设备101的一个或更多个资源(例如数据库330)提供的功能或信息。电子设备101可以基于db管理器211和/或db库310通过应用146产生、检索、或修改数据库330。

根据各种实施例,db库310可以包括数据日志和恢复管理器315,该数据日志和恢复管理器315用于基于应用146来管理数据库330的修改后的数据并且检测与该数据的修改有关的错误,从而恢复该数据。例如,在基于在电子设备101中运行的应用146执行处理或修改db库310中包括的数据库330的数据的功能的情况下,电子设备101可以通过文件系统320访问包括在数据库330中的数据。当数据从文件系统320传输到应用146时,电子设备101可以基于数据日志和恢复管理器315确保数据的一致性和/或完整性。

根据各种实施例的电子设备101可以基于文件系统320,使用例如非易失性存储器134来管理存储在存储器中的数据。例如,电子设备101可以使用文件系统320管理将数据(例如文件)存储在数据库330中的位置。文件系统320可以包括在操作系统142中。电子设备101可以配置存储器130的易失性存储器132和/或非易失性存储器134的至少一部分作为存储装置。存储装置可以对应于其中存储了与电子设备101有关的数据的存储区域。在下文中,存储器可以指易失性存储器132和/或非易失性存储器134的与存储区域不同的部分。例如,存储器可以对应于用于处理与电子设备101有关的数据的工作区域。根据各种实施例的电子设备101可以基于数据库330来管理与应用146有关的数据。基于指定的列表或数据结构,数据库330是一组系统化的数据,并且可以指的是存储在存储装置中的一组数据。几乎所有安装在电子设备101中的应用和服务都可以基于数据库330进行操作。在这种情况下,当电子设备101进行操作时,多个不同的应用和服务可以频繁地访问数据库330。存储在电子设备101的存储器中的数据库330的数量不限于图3所示的实施例,并且可以提供多个数据库。

根据各种实施例,为了使电子设备101无错误地执行应用146,电子设备101可以确保数据完整性,以用于维持存储在数据库330中的数据处于正常状态以及与数据库有关的事务的原子性。原子性可能指的是,基于一项事务中包括的所有操作,数据库330中数据的计算结果全部反映到数据库330中,或者根本不反映到数据库330中。

根据各种实施例,事务可以指示被执行以修改数据库330的状态的操作的单元。在实施例中,事务是用于与数据库330中的数据有关的操作的工作的逻辑单元(luw),其可以是应用146和数据库330之间的交互的单元。与数据库330中的数据有关的操作例如可以表示基于例如的“open”、“select”、“insert”、“delete”、“update”和“close”的结构化查询语言(sql)的访问数据库330的操作。在实施例中,一个事务可以是与数据库330中的数据有关的一个或更多个操作和/或sql的集合。在实施例中,事务中包括的并且与数据库330中的数据有关的操作可以包括以下操作:读取数据的操作、添加数据的操作、删除数据的操作以及修改数据的操作。事务承诺可能指的是事务中包含的与数据相关的所有操作均已成功执行。

根据各种实施例的电子设备101可以基于db管理器211和/或数据日志和恢复管理器315来确保数据库330中数据的完整性和原子性。例如,电子设备101可以基于日志方案来管理数据库330的修改后的数据,从而可以确保数据库330中数据的完整性和原子性。日志方案可以包括预写日志(wal)方案和/或回滚(roll-back)方案。在实施例中,电子设备101基于与数据库330有关的日志方案,可以产生与数据库330的修改后的数据有关的至少一个文件(图3a或图3b中的第一文件340和/或第二文件350)。

wal方案可以是如下方法:根据事务,处理数据库330的数据的结果存储在与数据库330中包括的至少一个文件不同的文件(例如,第一文件340)中。基于文件中存储的结果,根据指定的时间和/或指定的条件来修改数据库330。即使在根据事务来处理数据库330中的数据时发生错误,该错误也可能不会影响数据库330中的数据。回滚方案是wal方案不同的数据库的日志方案,并且可以表示基于从应用识别出的事务直接处理数据库的数据的方法。在回滚方案中,响应于事务的错误,电子设备可以基于事务将数据库中的数据恢复和/或回滚到处理数据之前的状态。

在实施例中,在根据事务将数据存储在数据库330中之前和/或在根据事务删除和/或修改存储在数据库330中的数据之前,电子设备101可以基于wal方案产生至少一个用于根据事务来存储数据库330的添加后、删除后和/或修改后的数据的文件。电子设备101可以将基于事务修改的数据库330的数据存储在至少一个产生的文件中。电子设备101可以在满足与至少一个文件有关的指定条件的状态下,基于根据事务修改并存储在至少一个文件中的数据,来修改数据库330。

第一文件340是基于wal方案由电子设备101产生的文件,并且可以指示用于存储基于事务而修改的数据库330的数据的文件(例如,wal文件)。即使在基于事务修改的数据库330的数据存储在第一文件340中的同时第一文件340中发生错误,该错误也不会影响数据库330中的数据。因为该错误不会影响数据在数据库330中,所以电子设备101可以将数据库330中的数据保持在正常状态。由于数据库330中的数据保持在正常状态,因此电子设备101可以确保数据库330中的数据的完整性。

第二文件350可以是存储在第一文件340中存储的结果与数据库330的一部分之间的映射信息的文件(例如,wal索引文件)。在实施例中,映射信息可以指示在其中要包括在第一文件340中存储的结果的数据库330的一部分。例如,映射信息可以旨在将第一文件340中存储的修改后的数据与数据库330的与该数据有关的一部分的位置进行匹配。可以基于例如具有指定大小(例如,512字节至64mb的大小)的页面单元来管理数据库330中存储的数据。第一文件340可以基于具有页面的大小(例如,通过将页面的大小和帧报头的大小相结合而获得的大小)的帧单元,存储根据事务而修改的数据库330的数据。第二文件350中存储的映射信息可以指示存储数据的第一文件340的帧以及与该数据相对应的数据库330的页面。

在实施例中,电子设备101可以基于数据库330的页面的标识符(例如,页面号)来搜索第二文件350的映射信息中包括的哈希表,从而识别第一文件340(例如,帧)的与具有标识符的页面相对应的部分。例如,电子设备101可以识别第一文件340的与特定页面号相对应的帧号。第二文件350可以包括与用于防止多个事务同时访问数据库330和/或用于控制其的信息(例如,诸如文件锁定之类的锁定信息)有关的部分。上面的参数可用于防止多个事务同时访问数据库330时可能发生的错误。

在实施例中,电子设备101可以包括基于sqlite的数据库330。电子设备101可以通过根据wal方案访问基于sqlite的数据库330来确保事务的原子性。在实施例中,在用于访问数据库330的至少一个文件(例如,第一文件340和/或第二文件350)不可用的状态下,电子设备101可以基于应用146来确保对数据库330中的数据的处理。

图3b是示出了用于描述图3a所示的数据库330、第一文件340和第二文件350的结构的示例的视图。例如,数据库330、第一文件340和第二文件350可以是基于图3a中的文件系统330,并且可以被存储在至少部分对应于非易失性存储器134的存储装置中。数据库330、第一文件340和第二文件350在与存储装置有关的文件系统(例如,图3a中的文件系统320)中,基于不同的扩展名,可以彼此不同。例如,与数据库330有关的至少一个文件可以具有扩展名“.db”,基于从应用识别的操作,存储了处理数据库330中的数据的结果的第一文件340的扩展名可以为“.db-wal”,并且存储了第一文件中存储的结果和数据库330的至少一部分之间的映射信息的第二文件350的扩展名可以为“.db-shm”。

在实施例中,与数据库330有关的至少一个文件可以包括至少一个页面。例如,与数据库330有关的多个文件中的各个文件的大小可以是例如4kb或更大,这是页面的大小。可以通过文件系统330和/或db管理器211将多个文件中的每个文件的大小改变为与页面的大小不同的另一个值。

数据库330的第一页面332-1可以包括数据库模式。在实施例中,数据库330的第一页面332-1可以包括数据库330的报头331。报头331可以包括代表数据库330的属性的多个参数。在实施例中,除了数据库的第一页面332-1之外的页面(例如,第二页面332-2至第四页面332-4)可以具有用于从数据库330更快地检索数据的数据结构。

在实施例中,第一文件340可以在wal模式下存储基于事务修改的数据。可以以帧为单位区分第一文件340中包括的数据。帧的大小可以对应于页面的大小和帧报头的大小的组合,其用于区分数据库330中包括的数据和/或信息。

参考图3b,第一文件340可以包括报头341和多个帧(第一帧342-1至第四帧342-4)。根据实施例,电子设备101可以根据第一文件340的大小和/或第一文件340中包括的帧数,基于存储在第一文件340中的结果来确定是否修改数据库330中的数据。

在实施例中,第二文件350可以用于识别数据库330的其中第一文件340中存储的数据库330的修改后的数据所位于的部分、文件或位置。第二文件350可以包括参数(例如,锁定信息)以防止同时访问数据库330中的数据。存储在第二文件350中的用于匹配第一元件340中存储的数据库330的修改后的数据与数据库330的一部分的信息可以被称为“映射信息”。例如,电子设备101可以使用映射信息来识别数据库330的第一页面332-1与第一文件340的第二帧342-2匹配。电子设备101可以基于第二文件350来识别第四页面332-4与第三帧342-3匹配以及第三页面332-3与第一帧342-1匹配。

当电子设备101基于第一文件340修改数据库330中的数据时,可以使用映射信息。例如,电子设备101可以基于第一文件340的第二帧342-2中存储的数据来修改数据库330的第一页面332-1,可以基于第三帧342-3中存储的数据来修改数据库330的第四页面332-4,并且可以基于第一帧342-1中存储的数据来修改数据库330的第三页面332-3。电子设备101基于第一文件340修改数据库330的数据的操作可以被称为“数据库330的合并”。

在由于各种错误而无法使用第一文件340和第二文件350访问数据库330中的数据的状态下,由于应用146无法基于数据库330处理数据,因此应用146的执行可能被打断(例如,被强制终止)。根据各种实施例的电子设备101可以在由于各种错误而无法使用第一文件340和第二文件350访问数据的状态下确保执行与数据库330的数据有关的读取操作(例如,通过打开数据库330来确保读取操作的执行),从而确保了应用146的最小操作(minimaloperation)和/或对数据库330的访问。由于电子设备101确保了应用146的最小操作/或对数据库330的访问,因此可以不中断应用146的执行,并且可以防止强制终止。

在由于在启动过程中发生各种错误而无法使用第一文件340和第二文件350访问数据库330中的数据的情况下,电子设备101的启动可能无法正常完成。电子设备101可以通过确保执行与数据库330中的数据有关的读取操作来防止在完成启动所需的操作中的错误。例如,电子设备101可以基于只读模式和/或回滚操作模式打开数据库330以确保执行读取操作。在错误被解决之后,根据各种实施例的电子设备101可以恢复执行包括与数据库330中的数据有关的读取操作的各种操作。

使用第一文件340和第二文件350破坏对数据库330中的数据的访问的错误可以包括使得在打开数据库330的同时不能产生第一文件340和/或第二文件350的错误。该错误可以包括不允许对与数据库330有关的至少一个文件执行读取操作的错误。如果不允许对与数据库330有关的至少一个文件执行读取操作,则执行读取操作的应用146的运行可能被停止(例如,应用崩溃)。

该错误可以包括例如enospc错误(在数据库330中的存储容量低的情况下)、erofs错误(在存储数据库330的存储装置的分区以只读模式安装的情况下)、enomem错误(在内存容量不足的情况下)、eacces错误(与数据库330有关的权限错误)和磁盘输入/输出(i/o)错误。在下文中,将参考图4描述根据各种实施例的电子设备101响应于错误而执行的操作。

图4是示出了根据本公开的实施例的电子设备的操作的流程图400。

图4中的电子设备可以对应于图1、2、3a和3b中所示的电子设备101。图4中的操作可以由图1、2、3a和3b中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图4中的操作。在图4的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、2、3a和3b所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。

根据各种实施例的电子设备可以识别在打开在wal模式下操作的数据库的过程中发生或检测到的错误。响应于识别到错误,电子设备可以基于wal模式保证对数据库中数据的访问。例如,响应于识别到错误,电子设备可以基于除wal模式之外的模式(例如,回滚模式)来打开数据库。替代地,响应于识别到错误,电子设备可以打开数据库,以确保执行读取操作。替代地,在识别出错误之后,电子设备可以将数据库的操作状态从确保仅执行读取操作的状态切换为能够执行所有操作的状态。响应于识别到错误,电子设备可以获得用于产生和/或修改用于访问数据库中的数据的至少一个文件(例如,图3a和3b中的第一文件340和第二文件350)所需的存储器的容量。

参考图4,在操作410中,根据各种实施例的电子设备可以识别用于打开存储装置中存储的数据库的请求。数据库可以以文件的形式存储在电子设备的存储装置中。可以从在电子设备中执行的应用中识别出该请求。例如,该请求可以包括用于打开和/或激活与该应用有关的数据库的指令和/或结构化查询语言(sql)。

在操作415中,根据各种实施例的电子设备可以识别用于访问数据库的第一文件(例如,wal文件,诸如图3a和3b中的第一文件340)的状态。第一文件可以被存储在电子设备的存储装置的分区中,在其中存储有数据库。该分区是与存储装置有关的非易失性存储器中的多个单元不同的逻辑单元,并且可以由安装在电子设备中的操作系统和/或电子设备的用户指定或改变。在数据库的操作模式对应于wal模式的情况下,电子设备可以基于wal模式识别至少临时存储数据库的修改后的数据的第一文件(例如,图3a和3b中的第一文件340)的状态。

在操作415中由电子设备识别第一文件的状态可以包括如下中的至少一者:识别是否存在第一文件,识别是否可以修改第一文件和/或识别是否可以读取第一文件。在实施例中,电子设备可以响应于在操作410中识别到用于打开数据库的请求来识别第一文件的状态。如下所述,根据各种实施例的电子设备可以基于根据用于访问数据库的第一文件的状态而进行的不同的操作来打开数据库。

参考图4,在操作420中,根据各种实施例的电子设备可以确定第一文件是否被存储在存储装置中。在实施例中,电子设备可以在存储有数据库的存储装置的分区中搜索用于访问数据库的第一文件。在实施例中,电子设备可以基于在操作415中识别出的状态来确定用于访问数据库的至少一个文件是否被存储在存储装置中。

在至少一个文件被存储在存储装置中的情况下(操作420中的“是”),根据各种实施例的电子设备可以在操作425中确定第一文件是否处于能够读取第一文件的信息的状态。在实施例中,电子设备可以基于第一文件确定是否可以处理数据库中的数据。在实施例中,电子设备可以考虑到在操作415中识别出的状态,基于第一文件来确定是否可以处理数据库中的数据。根据实施例,为了确定是否可以读取第一文件上的信息,电子设备可以确定是否可以打开、读取和/或修改第一文件。

在实施例中,电子设备可以基于操作420和425来确定用于访问数据库的第一文件是否处于允许修改文件的状态。例如,电子设备可以确定第一文件是否处于允许读取存储在文件中的数据的状态。

如果第一文件处于能够读取文件上的信息的状态(操作425中为“是”),则根据各种实施例的电子设备可以在操作430中确定第二文件是否处于能够读取关于第二文件上的信息的状态。在实施例中,电子设备可以确定第二文件是否被存储在存储装置中,并且如果第二文件被存储,则可以确定第二文件是否处于允许读取存储在文件中的数据的状态。在实施例中,电子设备可以基于第一文件和第二文件来确定是否可以处理数据库中的数据。例如,如果第一文件和第二文件都处于能够读取文件上的信息的状态和/或处于允许读取存储在文件中的数据的状态,则电子设备可以基于第一文件和第二文件确定可以对数据库中的数据进行处理。

如果第二文件处于不能读取第二文件上的信息的状态(操作430中为“否”),则根据各种实施例的电子设备可以打开数据库,使得仅允许执行与针对数据库中的数据的读取操作有关的事务。由电子设备打开数据库以使得仅允许执行与读取操作有关的事务可以指电子设备在打开数据库之后响应于识别到用于处理数据库中的数据的各种操作不执行除各种操作中的读取操作之外的其余操作。例如,电子设备可以仅执行各种操作中的读取操作。将参考图7描述与操作435有关的各种实施例。

在即使第一文件处于能够读取第一文件上的信息的状态而第二文件处于不能读取第二文件上的信息的状态的情况下,电子设备也可以在操作435中打开数据库以允许在例如不能打开、读取和/或修改第二文件的情况下,仅允许与数据库中的数据有关的读取操作。在打开数据库之后,电子设备可以确保执行读取操作。如果在操作435中打开数据库,则电子设备可以基于已经在操作410中产生请求的应用从数据库读取和/或检索数据。在实施例中,由于电子设备打开数据库以便仅允许与数据库中的数据有关的读取操作,则即使不能基于至少一个文件来处理数据库中的数据,电子设备也可以基于该应用从数据库读取和/或检索数据。

如果第二文件处于能够读取第二文件上的信息的状态(操作430中为“是”),则根据各种实施例的电子设备可以在操作440中打开数据库,以允许执行与数据库中的数据有关的所有事务,如果在操作440中打开了数据库,则电子设备可以基于已经在操作410中产生请求的应用来读取、检索、修改和/或删除数据库的数据。如果在操作440中打开电子设备,则电子设备可以基于在操作415中识别出的第一文件和与操作430有关的第二文件来访问数据库中的数据。

如果第一文件未存储在存储装置中(操作420中的“否”),则根据各种实施例的电子设备可以在操作445确定数据库的操作模式是否是与wal方案有关的第一操作模式。电子设备可以从与存储装置中的数据库有关的指定区域(例如,数据库的报头区域)中识别数据库的操作模式。

如果数据库的操作模式是与wal方案有关的第一操作模式(操作445中为“是”),则根据各种实施例的电子设备可以在操作450中基于第一操作模式在存储有数据库的存储装置中产生第一文件。第一文件可以对应于诸如图3a和3b中的第一文件340。电子设备可以在存储装置的多个分区中的存储有数据库的分区中产生至少一个文件。在实施例中,如果数据库的操作模式是与wal方案有关的第一操作模式,并且如果用于根据wal方案访问数据库中的数据的第一文件未被存储在存储器中,则电子设备可能会尝试产生第一文件。

在操作455中,根据各种实施例的电子设备可以基于操作430来确定是否已经在存储装置中产生了第一文件。在实施例中,电子设备可以基于操作450来识别产生第一文件的结果。在实施例中,电子设备可以确定是否已经成功产生了第一文件。

如果在存储器中未产生基于第一模式的第一文件(操作455中为“否”),则根据各种实施例的电子设备可以基于与第一操作不同并且与操作460中的回滚方案有关的第二操作模式来打开数据库。在实施例中,响应于识别到未能产生第一文件,电子设备可以将数据库的操作模式从第一操作模式切换到第二操作模式。在实施例中,如果数据库的操作模式不是第一操作模式(操作445中为“否”),则电子设备可以基于与第一操作模式不同的第二操作模式来打开数据库。在实施例中,如果第一文件被存储在存储装置中(操作420中为“是”),并且如果第一文件处于不能读取第一文件上的信息的状态(操作425中为“否”),则电子设备可以基于不同于第一操作模式的第二操作模式来打开数据库。

在实施例中,如果在操作450中不能产生第一文件,则电子设备可以基于与第一操作模式不同的第二操作模式来打开和/或激活数据库。在基于第二操作模式打开数据库的状态下,电子设备可以在没有任何一个与wal方案中的第一操作模式有关的文件的情况下访问数据库(例如,图3a和3b中的第一文件340和第二文件350)。

在打开数据库之后,根据各种实施例的电子设备可以在操作460处理数据库中的数据。可以基于在操作410中已经产生请求的应用来执行数据的处理。在实施例中,电子设备可以从应用中识别一个或更多个事务。响应于识别到该事务,电子设备可以处理数据库中的数据。

如果电子设备在操作435中打开数据库,则电子设备可以执行事务中包括的处理数据库中的数据的操作中的与读取操作相对应的处理操作,并且可以不执行除读取操作以外的其他类型的处理操作。例如,如果用于访问数据库的第二文件未处于允许修改文件的状态,则电子设备可以仅对数据库中的数据执行读取操作,并且可以限制除读取操作之外的其他处理操作(例如,修改数据的操作、删除数据的操作、以及添加数据的操作)的执行。将参考图9来描述在操作435中打开数据库时,电子设备处理与数据库中的数据有关的事务的各种实施例。

如果电子设备在操作440中打开数据库,则电子设备可以基于第一文件和第二文件执行事务中包括的处理操作。例如,如果用于访问数据库的第一文件和第二文件都处于允许修改文件的状态,则电子设备可以基于第一文件和第二文件执行事务。如果电子设备在操作460中打开数据库,则电子设备可以在不访问第一文件和第二文件的情况下执行事务。将参考图11描述与操作460有关的各种实施例。

如上所述,响应于操作410中的请求,根据各种实施例的电子设备可以打开和/或激活数据库,而与用于访问数据库并且与wal方案有关的第一文件和第二文件的状态无关。电子设备可以不管第一文件和第二文件的状态,确保与用于从数据库中检索或获取数据的读取操作有关的事务的执行。由于确保了与读取操作有关的事务的执行,因此可以防止在使用数据库执行应用的过程中电子设备无法访问数据库时引起的错误。

图5是示出了根据本公开的实施例的电子设备的存储装置510中存储的数据库330和与数据库330有关的至少一个文件的视图。

图5中的电子设备可以对应于图1和图3a中所示的电子设备101。图5中的存储装置510可以对应于图1和图3b中的非易失性存储器134的至少一部分。

可以通过一个或更多个分区520来区分存储装置510。可以通过安装在电子设备中的操作系统和/或电子设备的用户来指定分区520。参考图5,示出了用于在电子设备中存储数据库330的分区520。在数据库330基于wal方案进行操作的情况下,电子设备可以在用于根据wal方案来处理数据库330的分区520中产生一个或更多个文件。

在实施例中,至少一个文件可以包括第一文件340和第二文件350。第一文件340和第二文件350可以对应于图3a和3b中的第一文件340和第二文件350。在实施例中,电子设备可以将基于从应用识别出的事务而被修改的数据库330的数据存储在第一文件340中。该数据可以随着具有与数据库330和/或存储装置510的页面的大小相对应的帧而存储在第一文件340中。基于页面和/或帧,第二文件350可以包括将第一文件340中存储的数据与数据库330的一部分匹配的信息。

当电子设备在操作时,由于意外错误,可能无法访问存储装置510和/或分区520中存储的文件。例如,如果分区520的空间不足,或者如果在分区520中存储了大于指定数量的文件,则电子设备可以至少暂时不产生新文件,或者可以不向文件添加或记录数据。例如,如果分区520以只读模式安装,则电子设备可以至少暂时不在分区520中产生新文件,或者可以不向存储在分区520中的文件添加或记录数据。如果安装了分区520,这指的是分区520中包括的至少一个文件可以被电子设备的应用和/或服务读取。在上述示例中,电子设备可以识别出第一文件340和第二文件350不能被修改,或者可以识别出不存在第一文件340和/或第二文件350。

如果不能修改或产生第一文件340和第二文件350,则电子设备不能基于应用和/或服务来处理数据库330中的数据。由于无法处理数据库330中的数据,因此电子设备不能确保应用和/或服务的正常运行。在这种情况下,应用和/或服务无法获取操作所需的数据,因此可能由于软件错误(诸如异常)而异常操作或被迫终止。

即使不能修改或产生第一文件340和/或第二文件350,根据各种实施例的电子设备也可以基于参考图4描述的至少一个操作来确保执行与数据库330的数据有关的读取操作。如果在分区520中不存在第一文件340和/或第二文件350,如果不能在分区520中产生第一文件340和/或第二文件350,或者如果不能修改第一文件340和/或第二文件350上的信息,则电子设备可以基于图4中的操作435、440和460中的至少一个来打开和/或激活数据库330。

在实施例中,如果在图4中的操作435中电子设备打开和/或激活数据库330,则电子设备可以在不存在第一文件340和/或第二文件350和/或不能修改第一文件340和/或第二文件350的状态下确保执行与数据库330中的数据有关的读取操作。在下文中,将参考图6描述根据各种实施例的电子设备检查第一文件340和/或第二文件350的状态的操作。

图6是示出了根据本公开的实施例的其中电子设备识别与数据库有关的至少一个文件的状态的操作的流程图600。

图6中的电子设备可以对应于图1和图3a中所示的电子设备101。图6中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图6中的操作。在图6的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b中所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。图6中的操作可以与参考图4描述的操作(例如,操作425、430、435、440和460)中的至少一项操作有关。

参考图6,在操作610中,根据各种实施例的电子设备可以基于wal模式来识别存储修改后的数据的第一文件的状态。电子设备可以基于wal模式来操作或处理数据库。第一文件可以对应于图3a和3b中的第一文件340。第一文件可以被存储在例如存储数据库的存储装置的分区中。在实施例中,电子设备可以识别第一文件是否被存储在存储装置中。在实施例中,电子设备可以识别是否能从第一文件中提取数据(例如,基于wal模式修改后的数据库的数据)。在实施例中,电子设备可以识别是否可以修改第一文件,例如,识别附加信息是否可以被记录在第一文件中。

参考图6,在操作620中,根据各种实施例的电子设备可以基于其识别出的状态来确定第一文件是否处于能够修改关于第一文件上的信息的状态。如果第一文件处于能够修改第一文件上的信息的状态(操作620中为“是”),则根据各种实施例的电子设备可以在操作630中识别存储第一文件中存储的数据和数据库的一部分之间的映射信息的第二文件的状态。第二文件可以基于第一文件重新配置数据库中包括的至少一个文件。例如,第二文件可以对应于图3a和3b中的第二文件350。第二文件可以被存储在例如存储数据库和/或第一文件的存储装置的分区中。在实施例中,电子设备可以识别出第二文件是否被存储在存储装置中。在实施例中,电子设备可以识别出是否能从第二文件中提取映射信息。根据实施例,电子设备可以识别出是否可以修改第二文件,例如,附加映射信息是否可以被记录在第二文件中。

参考图6中的操作610、620和630,根据实施例的电子设备可以检查是否可以正常地执行对第一文件(例如,wal文件)的读取操作,然后可以检查第二文件(例如,wal索引文件)。参考图6,在操作640中,根据各种实施例的电子设备可以基于其识别出的状态来确定第二文件是否处于能够修改第二文件上的信息的状态。响应于识别出存储装置中存储的第二文件,根据实施例的电子设备可以基于第一文件来保留存储装置的与第二文件有关的空间。保留存储装置的与第二文件有关的空间可以包括基于第一文件的大小和/或要被产生的映射信息的大小来扩展或预分配与第二文件相对应的存储装置的区域的操作。

在实施例中,第二文件的大小可以增加指定大小(例如32kb)的倍数。例如,第二文件的大小的最小值可以是32kb,并且可以根据第一文件的大小增加32kb。例如,每当第一个文件的大小超过16mb时,第二文件的大小就会增加32kb。在这种情况下,如果第二文件的大小为32kb,则第一文件的大小可以为16mb或更小。如果第二文件的大小是64kb,则第一文件的大小可以被包括在16mb到32mb的范围内。如果第二文件的大小为96kb,则第一文件的大小可以被包括在32mb到48mb的范围内。

根据实施例,在不能基于第一文件的大小来扩展第二文件的大小的情况下,电子设备可以确定第二文件处于不能修改第二文件上的信息的状态。例如,如果在第一文件的大小超过48mb的状态下,小于96kb的第二文件的大小不能被增加,则电子设备可以确定无法向第二文件添加映射信息,或者修改第二文件。例如,在其中存储数据库、第一文件和/或第二文件的分区的容量不足以确保与第一文件的大小相对应的第二文件的大小的情况下,电子设备可以确定无法修改第二文件。

根据实施例,如果可以基于第一文件的大小来增加第二文件的大小,则电子设备可以确定第二文件处于能够修改第二文件上的信息的状态。根据实施例,即使可以基于第一文件的大小来增加第二文件的大小,在第二文件和/或存储第二文件的分区被设置为只读模式的情况下,电子设备可以确定第二文件处于不能修改第二文件上的信息的状态。

如果第二文件处于能够修改第二文件上的信息的状态(操作640中为“是”),则电子设备可以在操作650中打开数据库以便允许执行与数据库中的数据有关的所有事务。电子设备可以以类似于图4中的操作435的方式执行图6中的操作650。在操作650中打开或激活数据库之后,电子设备可以响应于从应用中识别出事务,基于第一文件、第二文件和/或事务来处理数据库中的数据。在这种情况下,电子设备可以将基于事务而修改的数据库的数据存储在第一文件中,然后可以基于第二文件,根据指定条件将存储在第一文件中的数据应用于数据库。指定条件可以包括第一文件的大小超过指定值的条件和/或用于接收关闭数据库的请求的条件。

在实施例中,如果第一文件和/或第二文件处于不能正常打开数据库的状态,则电子设备可以基于与回滚方案有关的只读模式和/或操作模式来打开数据库。参考图6,如果第二文件处于不能修改第二文件(操作640中为“否”)上的信息的状态,则电子设备可以在操作660中打开数据库以便仅允许执行与针对数据库中的数据的读取操作有关的事务。在实施例中,电子设备可以以类似于图3中的操作435的方式执行图6中的操作660。在操作660中打开或激活数据库之后,响应于应用识别出事务,电子设备可以基于事务中包括的读取操作来处理数据库中的数据,并且可以丢弃事务中的读取操作以外的其余处理操作。在实施例中,电子设备可以确保事务中包括的读取操作的执行。

参考图6,如果第一文件处于不能修改关于第一文件上的信息的状态(操作620中为“否”),则电子设备可以在操作670中基于与第一操作模式不同并且与回滚方案有关的第二操作模式来打开数据库。在实施例中,电子设备可以以类似于图4中的操作460的方式执行图6中的操作670。在操作670中打开或激活数据库之后,响应于从应用中识别出事务,电子设备可以执行事务中包括的所有操作,而无需访问第一文件和第二文件。在另一个实施例中,如果第一文件处于不能修改第一文件上的信息的状态(操作620中为“否”),则电子设备可以在不打开数据库的情况下处理错误。

在下文中,将参考图7描述由电子设备执行的操作的各种实施例,以确保读取操作的执行。

图7是示出了根据本公开中的实施例的电子设备在存储器中产生第二文件的操作的流程图700。

图7中的电子设备可以对应于图1和图3a中所示的电子设备101。图7中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图7中的操作。在图7的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。

图7中的操作可以与图4中的操作中的至少一项(例如,操作435)和/或图6中的操作中的至少一项(例如,操作660)有关。在实施例中,电子设备可以在电子设备打开或激活数据库以便仅允许执行与针对数据库中的数据的读取操作有关的事务的状态下基于图4中的操作435和/或图6中的操作660执行图7中的操作中的至少一个。

如果被存储在存储装置中的并且存储有与第一文件有关的映射信息的第二文件(例如,图3a和3b中的第二文件350)不可用,则电子设备可以执行图7中的至少一个操作。例如,电子设备可以在第二文件不存在于存储装置中的状态下或者在不能修改存储装置中存储的第二文件的状态下执行图7中的至少一个操作。

参考图7,在操作710中,根据各种实施例的电子设备可以识别与用于打开数据库的请求有关的应用。电子设备可以识别与用于打开或激活数据库的请求相对应的应用。该请求可以对应于图4中的操作410中的请求。当电子设备执行操作710时,该应用可以由电子设备执行。

参考图7,在操作720中,根据各种实施例的电子设备可以识别存储器的与识别出的应用相对应的部分。存储器可以对应于例如图1和2中的易失性存储器132。在实施例中,基于操作系统,存储器的与应用相对应的部分可以是由电子设备分配给应用的部分。例如,存储器的与应用相对应的部分可以包括分配给应用的堆区域和/或堆存储器。堆区域和/或堆存储器可用于例如至少临时存储在应用运行时所产生的数据。

参考图7,在操作730中,根据各种实施例的电子设备可以在存储器的识别出的部分中产生文件,该文件存储在处理数据的结果与数据库的一部分之间的映射信息。该文件可以对应于图3a和3b中的第二文件350。在实施例中,电子设备可以产生用于在分配给应用的堆区域和/或堆存储器中存储映射信息的文件。可以基于用于至少临时地将处理数据的结果存储在数据库中的文件(例如,图3a和3b中的第一文件340)的大小来确定文件的大小。

即使存储映射信息的文件没有存储在存储装置中(例如,存储装置中其中存储数据库的分区),根据各种实施例的电子设备也可以基于图7中的至少一个操作来在存储器中产生文件。基于在存储器中产生的文件,电子设备可以确保执行与数据库中的数据有关的读取操作。

在实施例中,如果电子设备同时执行多个应用,则基于多任务处理,多个应用中的所有应用可以访问数据库中的数据。在这种情况下,电子设备可以产生存储在与多个应用中的各个应用相对应的多个部分(例如,分配给多个应用中的各个应用的堆区域)中的映射信息的文件。在下文中,将参考图8a和图8b描述其中在多个应用的全部应用都访问数据库中的数据的情况下,电子设备产生用于存储映射信息的文件的操作的各种实施例。

图8a是示出了根据本公开的实施例的其中电子设备将存储了映射信息的文件存储在存储器830中的操作的视图,并且图8b是示出了根据本公开的实施例的电子设备将存储了映射信息的文件存储在存储器830中的操作的视图。图8a和8b中的电子设备可以对应于图1和图3a中的电子设备101。图8a和8b中的存储装置510可以对应于图5中的存储装置510。

根据各种实施例的电子设备可以安装在存储装置510中配置的多个分区中的至少一个分区中。多个分区可以包括其中存储与数据库330有关的至少一个文件的分区。当安装了分区520时,电子设备可以确定是否允许与分区520中包括的至少一个文件有关的读取操作、写入操作和删除操作中的每一个操作。安装只读模式的分区520可以指电子设备仅允许针对操作中的针对分区520中存储的至少一个文件的读取操作,但不允许其余操作。

在安装分区520的状态下,根据各种实施例的电子设备可以识别基于应用和/或服务产生的请求。该请求可以包括用于打开或激活数据库330的请求。在基于wal方案操作数据库330的情况下,在响应于识别出该请求而打开或激活数据库330时,根据各种实施例的电子设备根据图4、6和7中的操作中的至少一个操作,可以基于wal方案来识别运行数据库330所需的至少一个文件的状态。

基于第一文件340中存储的数据,至少一个文件可以包括第一文件340和第二文件350,第一文件340用于至少临时存储基于wal方案修改的数据库330的数据,第二文件350用于存储用于修改数据库330中的数据的映射信息。第一文件340和第二文件350可以对应于图3a和3b中的第一文件340和第二文件350。在实施例中,电子设备检查至少一个文件的状态可以包括识别至少一个文件是否存储在分区510中和/或是否可以修改至少一个文件的操作。

参考图8,假定第二文件350未被存储在分区510中或不能被修改。在这种情况下,例如,基于图7中的操作,电子设备可以产生用于将映射信息存储在存储器830中的文件。电子设备可以在存储器830的与已经产生了用于打开或激活数据库330的请求的应用和/或服务相对应的一部分中产生文件。

例如,假设电子设备识别来自第一应用和第二应用的用于打开或激活数据库的请求。响应于识别出请求,电子设备可以在存储器830中识别分别分配给第一应用和第二应用的第一部分810和第二部分820。第一部分810和第二部分820中的每一个可以对应于第一应用和第二应用中的每一个的堆区域和/或堆存储器。

电子设备可以产生与第一应用相对应并将映射信息存储在第一部分810中的第二文件815。电子设备可以产生与第二应用相对应并将映射信息存储在第二部分820中的第二文件825。将参考图10c描述第二文件815和825中的每一个的结构的各种实施例。当电子设备执行第一应用和第二应用时,第二文件815和825可以分别保留在存储器830的第一部分810和第二部分820中。

根据实施例,电子设备可以针对在电子设备中执行的每个应用,在存储器830中产生多个第二文件。参考图8b,其中存储有数据库的数据的多个数据文件“a.db”和“b.db”以及与多个数据文件中的各个数据文件相对应的多个第一文件“a.db-wal”和“b.db-wal”可以存储在电子设备的分区520中。

例如,如果电子设备识别出来自用于打开或激活多个数据文件(例如“a.db”)中任何一个文件的第一应用的请求,则电子设备可以识别与分区520中的数据文件相对应的第一文件和第二文件的状态。在图8b的示例中,假定电子设备已经识别出与数据文件“a.db”相对应的第一文件“a.db-wal”,但是未能识别到第二文件。在这种情况下,电子设备可以在存储器830的与第一应用相对应的第一部分810中产生与第一文件“a.db-wal”有关的第二文件“a.db-shm”。

电子设备可以独立于第一应用从第二应用识别用于打开或激活多个数据文件(例如,“a.db”和“b.db”)的请求。在这种情况下,电子设备可以识别与分区520中的数据文件相对应的第一文件和第二文件的状态。在图8b的示例中,假定电子设备已经识别出了对应于各自的数据文件“a.db”和“b.db”的第一文件“a.db-wal”和“b.db-wal”,但未能识别到第二文件。在这种情况下,电子设备可以在存储器830的与第二应用相对应第二部分820中产生与各个第一文件“a.db-wal”和“b.db-wal”相对应的第二文件“a.db-shm”和“b.db-shm”。

参考图8a,在分别在存储器830的第一部分810和第二部分820中产生第二文件815和825的状态下,根据实施例的电子设备可以基于数据库330中包括的信息,防止第一应用和第二应用同时访问数据库330和/或第一文件340。该信息可以包括锁定信息(例如,文件锁定),来防止和/或控制第一应用和第二应用对数据库330和/或第一文件340的访问。在下文中,将参考图9描述根据实施例的电子设备控制多个应用(例如,第一应用、第二应用、和/或多个服务)同时访问数据库330的操作的各种实施例。

图9是示出了根据本公开的实施例的电子设备处理从应用和/或服务识别出的事务的操作的流程图900。例如,电子设备可以在其中基于用于访问数据库的至少一个文件不能处理数据库中的数据的状态下执行图9中的操作。图9中的电子设备可以对应于图1和图3a中所示的电子设备101。图9中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和/或数据日志和恢复管理器315来执行图9中的操作。在图9的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。

图9中的至少一个操作可以与图4、6和/或7中的至少一个操作有关,或者可以以与其类似的方式执行。在实施例中,电子设备可以在图4的操作435中在电子设备打开或激活数据库的状态下执行图9中的操作中的至少一个操作,从而仅允许执行与针对数据库中的数据的读取操作有关的事务。在实施例中,在产生用于存储映射信息的文件的状态下,基于图7中的操作中的至少一个操作,电子设备可以执行图9中的至少一个操作。在实施例中,如果未能产生用于存储映射信息的文件(例如,图3a和3b中的第二文件350),则电子设备可以执行图9中的操作中的至少一个操作。可以在电子设备不能在文件中记录用于防止针对数据库的数据的写入操作被同时执行的参数的状态下执行图9中的操作。

参考图9,在操作910中,根据各种实施例的电子设备可以识别与数据库中的数据有关的事务。可以从电子设备中运行的应用和/或服务中识别事务。在实施例中,电子设备可以从应用和/或服务识别包括一个或更多个处理操作的事务。该事务可以包括与用于将数据添加到数据库的添加操作、用于从数据库检索或获取数据的读取操作、用于从数据库移除数据的移除操作和/或用于修改数据库中的数据的修改操作中的至少一个操作。

在操作920中,根据各种实施例的电子设备可以产生用于存储映射信息的文件。该文件可以对应于例如图3a和3b中的第二文件350。在实施例中,电子设备可以尝试在存储装置的与数据库有关的分区中产生文件。可以响应于在操作910中识别出处理操作而执行操作920。在打开或激活数据库以便仅允许读取操作的状态下,只要识别出了事务和/或处理操作,根据实施例的电子设备就可以在操作920中尝试产生文件。

在实施例中,尝试产生文件可能与是否可能识别用于存储文件的部分,该文件用于在存储装置中存储映射信息。可以至少部分地基于至少临时地将处理数据的结果存储在数据库中的文件(例如,图3a和3b中的第一文件340)的大小来确定用于存储映射信息的文件的大小。可以以类似于参考图5描述的方式来确定用于存储映射信息的文件的大小。如果不能识别与该大小相对应的存储装置的部分,则电子设备可以确定不能产生该文件。

在实施例中,每次打开或激活数据库时,都可以新产生用于存储映射信息的文件。在实施例中,电子设备可以通过初始化用于存储在存储器中存储的映射信息的文件来产生文件。例如,电子设备可以将文件的比特值改变为指定值(例如,0)。如果文件的初始化完成,则电子设备可以基于初始化的文件执行与数据库中的数据有关的所有处理操作。

在操作930,根据各种实施例的电子设备可以确定在存储装置中是否产生了用于存储映射信息的文件。在实施例中,电子设备可以基于操作920确定是否在存储装置产生了用于存储映射信息的文件。如果被配置为存储映射信息并且其大小基于文件的大小的文件(在文件中存储了处理数据库中的数据的结果),则电子设备可以确定在存储装置中已经产生了用于存储映射信息的文件。如果用于存储在存储器装置中存储的映射信息的文件被初始化,则电子设备可以确定初始化的文件是在操作920中产生的文件。

参考图9中的操作910、920以及930,在其中数据库被打开或激活以便仅允许执行与读取操作有关的事务的状态下,每次识别到事务时,电子设备都可能会尝试产生用于存储映射信息的文件。在已经在存储装置中成功产生了用于存储映射信息的文件的情况下(操作930中为“是”),根据各种实施例的电子设备可以进入允许与数据库中的数据有关的所有类型的事务的状态以及与读取操作有关的事务。例如,在操作970中,电子设备可以基于产生的文件来执行与数据库中的数据有关的所有事务。

在未在存储装置中产生用于存储映射信息的文件的情况下(操作930中为“否”),在操作940中,根据各种实施例的电子设备可以配置用于读取存储器的指定部分中的数据的锁定信息。在实施例中,锁定信息可以指示除了与数据库的数据有关的读取操作之外的其余操作的执行受到限制。在实施例中,锁定信息可以指示数据库已经被打开和/或激活,从而仅允许执行与读取操作有关的事务。可以在其中添加了锁定信息的存储器中的指定部分的位置从与数据库有关的存储器的地址分开指定的偏移量。将参考图10a详细描述存储器中的锁定信息的构造。

在实施例中,锁定信息可以指示基于只读模式使用数据库中包括的至少一个文件。在实施例中,可以将锁定信息添加到存储有数据库中的数据的文件和/或至少临时存储有数据库中的数据的文件(例如,图3a和3b中的第一文件340)中。将参考图10a来描述根据实施例的电子设备将锁定信息添加到存储数据库的数据的文件的操作的各种实施例。

在操作950中,根据各种实施例的电子设备可以基于所配置的锁定消息来执行用于读取数据的事务。电子设备可以响应于配置锁定信息来执行操作950。在实施例中,电子设备可以限制除用于读取数据的事务之外的其余事务的执行。由于电子设备基于锁定信息来执行操作950,因此可以防止执行与数据库有关的写入操作被执行,该数据库被打开以便仅允许读取操作。

在执行用于读取数据的事务之后,根据各种实施例的电子设备可以在操作960中修改和/或移除在存储器中配置的锁定信息。在实施例中,电子设备可以从存储器的指定区域移除锁定信息。在实施例中,电子设备可以返还所获得的锁定信息。根据实施例,电子设备可以将在存储器中配置的锁定信息改变为指示在操作950中用于读取数据的事务的执行已经完成的值。

参考操作940、950以及960,每当识别出处理操作和/或事务时,电子设备都可以配置锁定信息。响应于配置锁定信息,电子设备可以执行包括与数据库中的数据有关的读取操作的处理操作和/或事务。当处理操作和/或事务结束时,电子设备可以释放锁定信息。

如果在存储器中产生了用于存储映射信息的文件(在操作930中为“是”),则在操作970中,基于所产生的文件,根据各种实施例的电子设备可以执行与数据库中的数据有关的所有事务。在实施例中,如果用于存储映射信息的文件被正常地初始化或产生,即使仅允许执行与针对数据库中的数据的读取操作有关的事务,电子设备可以进入允许执行与数据库中的数据有关的所有事务的状态。

例如,即使在电子设备打开或激活数据库以便仅允许执行与针对图4中的操作435中的数据库中的数据的读取操作有关的事务之后,电子设备也可以在操作970中执行所有与数据库中的数据有关的事务。在这种情况下,如果数据库在图4中的操作460中被打开或激活,则电子设备可以操作。

在仅允许与数据库中的数据有关的读取操作的状态下,电子设备可以确定是否可以切换到允许与数据库中的数据有关的所有类型的处理操作的状态。例如,电子设备可以确定每当从应用和/或服务中识别出用于处理数据库中的数据的处理操作和/或事务时,是否可以切换到允许与数据库中的数据有关的所有类型的处理操作的状态。在实施例中,在仅允许与数据库中的数据有关的读取操作的状态下,可以产生和/或初始化用于存储映射信息的文件时,电子设备可以切换到允许与数据库中的数据有关的所有类型的处理操作的状态。

在下文中,将参考图10a至图10c来描述由根据各种实施例的电子设备管理的数据库、用于在数据库中存储处理数据的结果的第一文件以及用于存储映射信息的第二文件的各种实施例。

图10a是示出了根据本公开的实施例的电子设备中的数据库330的结构的示例的视图。图10b是示出了根据本公开的实施例的第一文件340的结构的示例的视图。图10c是示出了根据本公开的实施例的第二文件350的结构的示例的视图。图10a至10c中的电子设备可以对应于图1和图3a中的电子设备101。图10a到10c中的数据库330、第一文件340和第二文件350可以分别对应于图3a和3b中的数据库330、第一文件340和第二文件350。

参考图10a,示出了根据实施例的电子设备中的存储器830的一部分。在实施例中,电子设备可以在存储器的指定部分中包括与数据库330的状态有关的一条或更多条信息(例如,未决字节、预留字节、以及用于配置锁定消息的共享字节,例如共享锁定)。可以将部分1010定位为与存储器830中的数据库330的起始位置和/或起始点1030相距指定的大小(例如,1gb)和/或偏移(0x40000000)。设备添加到数据库330以便读取数据库330中的数据的参数(例如,在图9的操作940中配置的锁定信息)可以被包括在与部分1010相邻的另一部分1020中。该部分1020的大小可以对应于指定的大小(例如,1个字节)。锁定信息可以指示数据库被打开或激活,以便仅允许执行与只读模式有关的事务。

在实施例中,如果用于访问数据库中的数据的至少一个文件处于不允许修改文件的状态,则电子设备可以添加锁定信息,该锁定信息指示除了与针对数据库的数据的读取操作有关的其他操作被限制。在实施例中,如果不可能正常地产生、初始化和/或修改第二文件(例如,图3a中的第二文件350),则电子设备可以将锁定信息添加到数据库330和/或第一文件(例如,图3a中的第一文件340)的部分1020,而不是用于存储映射信息的第二文件。例如,锁定信息可以被添加到基于电子设备的操作系统来管理的存储器830中的指定区域和/或数据结构中。指定区域和/或数据结构可以与数据库330和/或第一文件有关。通过将锁定信息添加到存储器830的指定部分1020,即使在不能产生、初始化和/或正常修改第二文件350的状态下,电子设备也可以允许执行与数据库330中的数据有关的读取操作。根据实施例,电子设备可以将锁定信息添加到与第二文件350不同的另一文件和/或存储器的另一区域中。

参考图10b,根据实施例示出了第一文件340的一部分的结构。第一文件340可以是其中至少临时存储基于wal方案修改的数据库330的数据的文件。第一文件340可以包括报头341(例如,wal报头)和一个或更多个帧(例如,wal帧,诸如第一帧342-1、第二帧342-2和第三帧342-3)。

第一文件340的报头341可以包括与第一文件340有关的基本信息。参考图10b,报头341中的字段“幻数”可以包括用于电子设备识别第一文件340的信息。报头341中的字段“页面大小”可以包括指示用于管理数据库330中的数据的单位(例如,块和/或页面)的信息。报头341中的多个字段“盐值(salt)”可以包括在产生第一文件340时识别出的某个值。电子设备可以将包括在多个字段“盐值”中的多个值相互进行比较。如果多个值相互匹配,则电子设备可以确定第一文件340和/或第一文件340中包括的一个或更多个帧是正常的。报头341中的字段“校验和(checksum)”可以用于确定第一文件340的报头341中是否存在错误。

第一文件340的一个或更多个帧可以包括数据库330的修改。参考图10b,示出了第一文件340中包括的多个帧中的第一帧342-1的结构。参考第一帧342-1的结构,多个帧中的每个可以包括wal帧报头和页面。第一文件340的多个帧可以分别与数据库330的多个页面匹配。电子设备可以在wal帧报头(例如,在字段“页面号(pageno)”中)中记录与相应的帧匹配的数据库330的页面的标识符(例如,页面编号)。

在实施例中,如果存储器中不存在第一文件340,则如果第一文件340的大小为零,或如果第一文件340的报头341无效(例如,在仅有“0”包括在报头341中的情况下),或如果在第一文件340中不存在有效帧(例如,在包括第一帧342-1至第三帧342-3的所有帧均无效的情况下),则电子设备可以确定第一文件340是无效的。

参考图10c,根据实施例示出了第二文件350的一部分及其结构。第二文件350可以包括索引报头和一个或更多个块。这些块可以包括第一文件340的帧和数据库330的页面之间的映射信息。索引报头可以包括关于第二文件350的信息(例如,大小为48字节的多个字段“walindexhdr”和大小为24个字节的字段“walckptinfo”)。索引报头可以包括区域(即,“wal索引锁定区域”)1040,在该区域中记录分配给与第二文件350相对应的应用和/或服务的锁定信息。区域1040的大小可以是例如16个字节。锁定信息可以指示应用和/或服务专门执行与数据库330有关的特定类型的处理操作。例如,锁定信息可以用于防止由除该应用和/或服务以外的其他应用和/或服务执行处理数据库330中的数据的操作。

参考图10c,区域1040中的字段“wal_write_lock”可以具有索引“0”并且大小为1字节。如果从应用识别出写入操作和/或用于写入数据的事务,则电子设备可以获取与写入操作相对应的锁定信息(例如“write_lock”)。响应于获得锁定信息,电子设备可以修改字段“wal_write_lock”的值,并且可以执行写入操作和/或事务。

区域1040的字段“wal_ckpt_lock”可以具有索引“1”并且大小为1字节。字段“wal_ckpt_lock”可以指示获取用于执行与数据库330有关的检查点操作的锁定信息(例如,“ckpt_lock”)。检查点操作可以表示将存储在第一文件340中的所有结果反映为数据库330。

区域1040的字段“wal_recover_lock”可以具有索引“2”并且大小为1字节。字段“wal_recover_lock”可以指示获取用于改变和/或记录第二文件的锁定信息(例如“recover_lock”),例如数据库330的wal索引文件。例如,电子设备可以基于“wal_recover_lock”字段中配置的锁定信息来记录和/或配置第二文件中的映射信息。

区域1040的字段“wal_read_lock”可以具有从“3”到“7”的索引并且大小为5字节。字段“wal_read_lock”可以指示获取用于执行针对数据库330的读取操作的锁定信息(例如,“read_lock”)。

区域1040的字段“unix_shm_dms”可以具有索引“8”并且大小为1字节。字段“unix_shm_dms”可以指示获取用于当数据库330最初被打开或激活时执行减小第二文件350的长度的操作(例如,将第二文件350的大小减小到零的截断操作)的锁定信息(例如,“dmslock”)。

如果不能基于存储数据库330的分区来产生、初始化和修改第二文件350,则可能无法使用第二文件350中包括的区域1040来显示与处理操作有关的锁定信息(例如,表示与数据库中的数据的读取操作有关的事务的锁定信息)。在实施例中,电子设备可以基于存储器830的部分1020而不是第二文件350的区域1040来显示锁定信息。由于基于存储器830的部分1020显示了锁定信息,即使不能产生、初始化或修改第二个文件350,电子设备也可以确保执行针对从应用和/或服务中识别出的数据库330中的数据的事务的至少一部分(例如,与针对数据库330中的数据的读取操作有关的事务)。

在实施例中,电子设备可以将数据库330的操作模式从wal模式切换到回滚模式。在下文中,将参考图11详细描述电子设备切换数据库330的操作模式的操作。

图11是示出了根据本公开的实施例的,在没有任何用于访问数据库的文件的状态下由电子设备执行的操作的流程图1100。图11中的电子设备可以对应于图1和图3a中的电子设备101。图11中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图11中的操作。在图11的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b中所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。

图11中的至少一个操作可以与图4中的至少一个操作有关,例如,图4中的操作460。根据实施例,电子设备可以基于与wal方案不同的回滚方案执行图11中的操作中的至少一项操作,以打开或激活数据库。在实施例中,如果不能产生或初始化用于基于wal方案访问数据库中的数据的至少一个文件(例如,图3a和3b中的第一文件340和第二文件350),则电子设备可以尝试基于图11中的至少一项操作从wal方案切换到回滚方案。

参考图11,在操作1110中,根据各种实施例的电子设备可以配置与数据库有关的锁定消息(例如,排他锁定)。锁定信息可以旨在修改存储在存储装置中的数据库中记录的数据。例如,可以在不存在访问数据库的应用和服务的情况下获得锁定信息。

在操作1120中,根据各种实施例的电子设备可以基于在操作1110中配置的锁定信息来修改数据库的报头。由于锁定信息与排他锁定有关,而电子设备修改了存储装置中存储的数据库的报头,可以基于与特定应用和/或特定服务不同的另一应用和/或另一服务,限制对存储装置中的数据库的访问。

电子设备可以在数据库的报头(例如,图3a中的报头331)中改变指示数据库的日志模式的指定区域的值。例如,电子设备可以将该值从与wal方案有关的指定的第一值改变为与回滚方案有关的指定的第二值(第二值不同于第一值)。根据报头的修改,数据库的操作模式可以从基于wal方案的第一操作模式切换到基于回滚方案的第二操作模式。

在操作1130中,根据各种实施例的电子设备可以基于修改后的报头来同步数据库中的至少一个文件。在实施例中,电子设备可以将数据库文件的报头的值从指示数据库基于wal方案进行操作的第一值改变为指示数据库基于回滚方案进行操作的第二值。在改变数据库文件的报头的值之后,电子设备可以基于回滚方案来针对存储器(或电子设备中的磁盘)同步数据库文件。在实施例中,数据库的同步可以指存储器中存储的数据库的数据和存储装置中存储的数据库的数据之间的同步。在操作1110中,在电子设备执行存储器中存储的数据库的数据与存储装置中存储的数据库的数据之间的同步时,配置锁定信息(例如,排他锁定)。

在操作1140中,根据各种实施例的电子设备可以修改或移除在操作1110中配置的锁定信息。对锁定信息的修改或移除可以包括释放在操作1110中由电子设备获取的排他锁定的操作。在切换到回滚方案后,即使没有基于wal方案的文件(例如,图3a和3b中的wal索引文件(例如第一文件340)和wal索引文件(例如第二文件350)),电子设备也可以执行与数据库中的数据有关的事务。

图12是示出了根据本公开的实施例的由电子设备执行的操作的流程图1200。

图12中的电子设备可以对应于图1和图3a中的电子设备101。图12中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图12中的操作。在图12的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b中所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。图12中的至少一个操作可以与图4中的至少一个操作有关,或者可以以与其类似的方式执行。

参考图12,在操作1210中,根据各种实施例的电子设备可以识别在其中至少临时存储了数据库中存储的数据的第一文件的状态。根据实施例的电子设备可以在存储装置的存储有数据库的分区中识别第一文件的状态,诸如其中存储有数据库的修改后的数据的wal文件。电子设备可以响应于从运行的应用和/或服务接收到用于打开或激活数据库的请求而执行操作1210。例如,电子设备可以以与图4中的操作415、420和425和/或图6中的操作610类似的方式执行图12中的操作1210。

参考图12,在操作1220中,根据各种实施例的电子设备可以确定第一文件的识别出的状态是否对应于指定的第一状态。第一状态可以表示第一文件被存储在存储装置中并且第一文件可以被打开或者第一文件上的信息可以被读取的状态。例如,电子设备可以以类似于图4中的操作425和/或图6中的操作620的方式执行图12中的操作1210。

如果第一文件的状态对应于指定的第一状态(在操作1220中为“是”),则根据各种实施例的电子设备可以在操作1230中识别指示数据库中的存储在第一文件中存储的信息的部分的第二文件的状态。第二文件可以对应于存储映射信息的wal索引文件。电子设备可以在存储数据库和/或第一文件的存储装置的分区中识别第二文件和第二文件的状态。电子设备可以以类似于图4中的操作430和/或图6中的操作630的方式执行图12中的操作1230。

参考图12,在操作1240中,根据各种实施例的电子设备可以基于第二文件的状态,使用第一文件执行与在数据库中存储的数据有关的事务。例如,如果第二文件的状态对应于指定的第一状态,则电子设备可以使用第一文件和第二文件来执行从应用和/或服务接收到的事务。如果第二文件的状态对应于与指定的第一状态不同的第二状态,则电子设备可以仅执行从应用和/或服务接收到的事务中与读取操作有关的事务,并且可以限制执行与读取操作以外的其他操作有关的事务。在实施例中,第二状态可以表示第二文件未存储在存储装置中或第二文件上的信息不能被读取的状态。电子设备可以以类似于图4中的操作430、435、440和465和/或图6中的操作640、650和660的方式执行图12中的操作1240。

如果第一文件不对应于第一状态(操作1220中为“否”),则根据各种实施例的电子设备可以在操作1250中基于与第一操作模式不同的第二操作模式来执行事务。例如,如果第一文件的状态对应于第二状态,则电子设备可以切换到第二操作模式。第一操作模式和第二操作模式可以分别对应于基于wal方案的操作模式和基于回滚方案的操作模式。电子设备可以以类似于图4中的操作445、450、455和460的方式执行图12中的操作1250,图6中的操作670和/或图11中的操作。

图13是示出了根据本公开的实施例的由电子设备执行的操作的流程图1300。

图13中的电子设备可以对应于图1和图3a中的电子设备101。图13中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图13中的操作。在图13的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b中所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。图13中的至少一个操作可以与图4中的至少一个操作有关,或者可以以与其类似的方式执行。

参考图13,在操作1310中,根据各种实施例的电子设备可以识别使用数据库的应用。该数据库可以被存储在存储装置中。该应用可以安装在存储装置中。在实施例中,电子设备可以从正在运行的应用中识别用于打开或激活数据库以使用该数据库的请求。在实施例中,电子设备可以识别使用存储在存储装置中的数据库的应用。

在操作1320中,根据各种实施例的电子设备可以识别与处理数据库中的数据的结果有关的至少一个文件的状态。至少一个文件可以是基于wal方案的用于操作数据库的文件。至少一个文件可以存储在存储装置的存储有数据库的分区中。在实施例中,响应于使用数据库识别应用,电子设备可以识别与处理数据库中的数据的结果有关的至少一个文件的状态。

在实施例中,电子设备可以识别用于至少临时存储数据库的修改后的数据的第一文件(例如,图3a和3b中的第一文件340)的状态。第一文件可以对应于例如wal文件。在实施例中,电子设备可以识别第二文件(例如,图3a和3b中的第二文件350)的状态,该第二文件用于存储指示存储装置(在该存储装置中要存储第一文件的结果(例如,映射信息))中的数据库的一部分的信息。第二文件可以对应于例如wal索引文件。

在操作1330中,根据各种实施例的电子设备可以确定识别出的状态是否对应于指定的第一状态。第一状态可以表示不允许生产或修改至少一个文件的状态。第一状态可以表示其中至少一个文件未被存储在存储器中的状态。例如,如果包括至少一个文件的分区以只读模式安装,或者如果分区的容量不足,则至少一个文件的状态可以对应于第一状态。与第一状态不同的第二状态可以表示允许产生和修改至少一个文件的状态。

如果至少一个文件的状态对应于第一状态(操作1330中为“是”),则根据各种实施例的电子设备可以在操作1340中基于在存储器中配置的信息来执行与应用有关的数据的读取操作。在实施例中,响应于识别出与第一状态相对应的至少一个文件的状态,电子设备可以基于在存储器中配置的信息,针对与应用有关的数据执行读取操作。该信息可以至少部分地与文件锁定有关,该文件锁定指示数据库已经被打开或激活,以仅允许执行读取操作。

该信息可以指示要执行与在操作1310中识别出的应用有关的读取操作,并且该信息可以被添加到存储器的指定区域(例如,图10a中的部分1020)。在实施例中,响应于将信息添加到指定区域,电子设备可以执行读取操作。读取操作可以包括在基于应用获得的事务中。

在其中识别出与第一状态相对应的至少一个文件的状态的状态下,根据实施例的电子设备可以识别该至少一个文件的状态的改变。例如,响应于识别出从第一状态改变为第二状态的至少一个文件的状态,电子设备可以基于使用至少一个文件的应用来执行处理数据的操作。例如,响应于识别出与第一状态相对应的至少一个文件的状态,电子设备可以识别与存储器(例如,图1至图3a中的易失性存储器132)中的应用有关的部分,该存储器与存储装置不同。响应于识别存储器的该部分,电子设备可以在存储器的该部分中产生至少一个文件。存储器的该部分可以包括分配给应用的堆区域和/或堆存储器。

如果至少一个文件的状态不对应于第一状态(在操作1330中为“否”),则在操作1350中,根据各种实施例的电子设备可以执行基于应用处理数据的操作。响应于识别出与和第一状态不同的第二状态相对应的至少一个文件的状态,电子设备可以基于该应用使用至少一个文件来执行处理数据的操作。第二状态可以表示存在至少一个文件并且可以被读取或打开的状态。例如,响应于识别出与和第一状态不同的第二状态相对应的至少一个文件的状态,电子设备可以在该至少一个文件中存储执行处理数据库的数据的操作的结果。例如,电子设备可以将结果存储在用于至少临时地存储处理数据库中的数据的结果的第一文件中。基于第一文件的大小和指定的阈值,电子设备可以将存储在第一文件中的结果存储在存储装置的数据库中。

图14是示出了根据本公开的实施例的由电子设备执行的操作的流程图1400。

图14中的电子设备可以对应于图1和图3a中的电子设备101。图14中的操作可以由图1和图3a中所示的电子设备101和/或处理器120执行。可以基于图3a中的db管理器211和数据日志和恢复管理器315来执行图14中的操作。在图14的实施例中描述的硬件组件、数据库和至少一个文件可以对应于图1、3a和3b中所示的硬件组件、数据库330和至少一个文件(例如,第一文件340和第二文件350)。图14中的至少一个操作可以与图4和/或图13中的至少一个操作有关,或者可以以与其类似的方式来执行。

参考图14,在操作1410中,根据各种实施例的电子设备可以识别使用数据库的应用。电子设备可以以类似于图13中的操作1310的方式执行图14中的操作1410。在操作1420中,电子设备可以识别与处理在存储装置中的数据库的数据的结果有关的至少一个文件(例如,图3a中的第一文件340和第二文件350)的状态。电子设备可以以类似于图13中的操作1320的方式执行图14中的操作1420。在实施例中,数据库可以基于第一操作模式来操作。

第一操作模式可以对应于预写日志记录(wal)模式,在该模式下处理数据库中的数据的结果被存储在至少一个文件中并且基于特定情况根据存储的结果修改存储器中的数据库。与处理数据库中的数据的结果有关的至少一个文件可以包括:第一文件,其包括基于至少一个操作的处理数据库中的数据的结果;以及第二文件,该第二文件将存储器中的结果与与其相关的数据库的一部分的位置匹配。

在操作1430中,根据各种实施例的电子设备可以确定在存储装置中是否存储了至少一个文件。如果在存储器中没有存储至少一个文件(在操作1430中为“否”),则在操作1440中,根据各种实施例的电子设备可以将数据库的操作模式从第一操作模式切换到第二操作模式。第二操作模式可以对应于回滚模式,在该模式下基于在处理存储器中的数据库时发生的错误,将存储器中的数据库恢复到处理数据库之前的状态。

在实施例中,响应于识别出至少一个文件未存储在存储装置中,电子设备可以识别数据库的操作模式。响应于基于至少一个文件识别与数据库在其中进行操作的第一操作模式相对应的操作模式,电子设备可以将数据库的操作模式从第一操作模式切换到第二操作模式。例如,响应于识别与第一操作模式相对应的操作模式,电子设备可以获得用于访问数据库的信息。该信息可以与用于访问存储在存储装置中的数据库的文件锁定和/或排他锁定和/或数据库的报头有关。响应于获得信息,电子设备可以将数据库的操作模式从第一操作模式切换到第二操作模式。例如,电子设备可以基于第二操作模式将至少一个参数输入数据库的报头的指定区域。

响应于切换到第二操作模式的操作模式,电子设备可以基于第二操作模式来执行存储在存储器中的数据库的同步。在执行同步之后,电子设备可以基于获得的信息来停止访问存储器中的数据库。

参考图14,在操作1450中,根据各种实施例的电子设备可以基于第二操作模式来执行处理数据库中的数据的操作。由于基于第二操作模式执行处理数据库中的数据的操作,因此即使在存储装置中不存在与第一操作模式有关的至少一个文件,电子设备也可以确保执行处理数据库中的数据的操作。

如果至少一个文件被存储在存储器中(操作1430中为“是”),则根据各种实施例的电子设备可以在操作1460中基于第一操作模式来执行处理数据库中的数据的操作。电子设备执行的处理操作的执行情况可能与至少一个文件的状态有关。在实施例中,响应于识别出至少一个文件处于允许修改至少一个文件的第一状态,电子设备可以基于至少一个文件执行用于处理数据库中的数据的至少一个操作。响应于识别出至少一个文件处于不同于第一状态的第二状态,电子设备可以针对数据库中的数据限制不同于读取操作的处理操作,诸如修改数据的操作、删除数据的操作、以及添加数据的操作。

根据各种实施例,电子设备可以在打开或激活基于wal方案进行操作的数据库的同时,基于wal方案来识别至少一个文件的用于处理数据库中的数据的状态。如果至少一个文件不处于适合于处理数据库中的数据的状态,则电子设备可以确保与数据库中的数据有关的处理操作的有限执行。电子设备可以确保处理操作中的读取操作的执行,并且可以限制执行除读取操作之外的操作。

在确保有限地执行处理操作的状态下,电子设备可以在与至少一个文件不同的区域(例如,存储器的指定区域)中添加用于排他地执行读取操作的锁定信息。锁定信息可以用于防止多个应用和/或服务同时访问数据库中的数据。

在确保有限地执行处理操作的状态下,电子设备可以持续地监视至少一个文件的状态。例如,每当从电子设备中运行的应用和/或服务中识别出处理操作和/或事务时,电子设备都可以检查至少一个文件的状态。如果至少一个文件进入适合于处理数据库中的数据的状态,则电子设备可以确保执行所有处理操作,包括读取操作。

如果至少一个文件不处于适合于处理数据库中的数据的状态,则根据实施例的电子设备可以从基于wal方案的第一操作模式切换到基于回滚方案的第二操作模式。

根据各种实施例的电子设备可以包括:存储装置,所述存储装置被配置为存储数据库;存储器;以及至少一个处理器,所述至少一个处理器可操作地连接至所述存储装置和所述存储器,其中所述存储器存储多个指令,所述多个指令在被执行时使所述至少一个处理器:识别第一文件的状态,所述第一文件至少是与所述数据库中存储的数据相对应的临时存储数据,所述第一文件与所述数据库的第一操作模式有关;响应于识别出所述第一文件处于允许读取文件中包括的数据的第一状态,识别第二文件的状态,所述第二文件存储指示所述数据库的一部分存储所述第一文件中的信息的信息;至少部分地基于识别出的所述第二文件的状态,使用所述第一文件执行与所述数据库中存储的所述数据有关的事务;以及响应于识别出所述第一文件处于与所述第一状态不同的第二状态,基于与所述第一操作模式不同的第二操作模式执行所述事务。

根据实施例,所述多个指令在被执行时,使所述至少一个处理器响应于识别出所述第二文件处于不允许修改所述文件的所述第二状态,限制与修改所述数据的操作、删除所述数据的操作以及添加所述数据的操作有关的事务的执行。

根据实施例,所述多个指令在被执行时,使所述至少一个处理器响应于识别出所述第二文件处于所述第二状态,将指示限制执行与除针对所述数据的读取操作以外的操作有关的事务的信息添加到所述存储器的指定部分。

根据实施例,所述多个指令在被执行时使所述至少一个处理器:响应于将所述信息添加到所述指定部分,执行与针对所述数据库中的数据的所述读取操作有关的事务;以及在完成与所述读取操作有关的事务的执行之后,移除添加到所述指定部分的所述信息。

根据实施例,所述第一文件包括所述数据库中的由所述事务修改的数据;并且其中,所述第二文件包括指示所述第一文件中存储的数据将被存储在所述存储装置中的位置的信息。

根据实施例,所述多个指令在被执行时使所述至少一个处理器:响应于识别出所述第二文件处于所述第二状态而在所述存储器中产生所述第二文件,并且其中,所述第二文件是在由所述至少一个处理器执行用于处理所述数据库中的数据的应用时,在所述存储器的与所述应用有关的部分中产生。

根据实施例,所述多个指令在被执行时使所述至少一个处理器:响应于识别出所述第一文件未被存储在所述存储装置中,识别所述数据库的操作模式;响应于识别出所述操作模式与所述数据库在其中操作的所述第一操作模式相对应,基于所述第一文件和所述第二文件,在所述存储装置中产生所述第一文件;以及响应于识别出未能产生所述第一文件,将所述数据库的所述操作模式从所述第一操作模式切换到与所述第一操作模式不同的所述第二操作模式。

根据实施例,所述多个指令在被执行时使所述至少一个处理器:响应于识别出未能产生所述第一文件,获得用于修改存储在所述存储装置中的数据库的信息;响应于获得所述信息,将所述数据库的所述操作模式从所述第一操作模式切换到所述第二操作模式;以及基于所述第二操作模式,执行存储在所述存储装置中的所述数据库的同步。

根据各种实施例的一种操作电子设备的方法,所述方法可以包括:识别使用存储在所述电子设备的存储装置中的数据库的应用;响应于识别出所述应用,识别与处理所述数据库中的数据的结果有关的至少一个文件的状态;响应于识别出所述至少一个文件的状态对应于不允许产生或修改所述至少一个文件的第一状态,基于所述电子设备的存储器中的信息,执行针对与所述应用有关的数据的读取操作;以及响应于识别出所述至少一个文件的状态对应于与所述第一状态不同的第二状态,基于所述应用,使用所述至少一个文件来执行处理所述数据的操作。

根据实施例,所述识别出所述至少一个文件的状态包括:识别第一文件的用于至少临时存储所述数据库的修改后的数据的状态;以及识别第二文件的用于存储指示所述存储装置的所述数据库的要在其中存储所述第一文件的数据的部分的信息的状态。

根据实施例的操作电子设备的方法还可以包括基于所述第一文件的大小和指定阈值,将所述第一文件中存储的所述结果存储在所述存储装置中的所述数据库中。

根据实施例,基于所述信息来执行所述读取操作可以包括:将与指示执行所述读取操作的信息相对应的参数添加到所述存储器的指定区域;以及响应于添加所述参数,执行所述读取操作,并且其中,所添加的参数指示所述数据库已经被激活,以限制执行除所述读取操作以外的处理操作。

根据实施例,基于所述信息来执行所述读取操作可以包括:在识别出所述至少一个文件的状态与所述第一状态相对应的状态下,识别所述至少一个文件的状态的改变;以及响应于识别出所述至少一个文件的状态从所述第一状态变为所述第二状态,基于所述应用,使用所述至少一个文件执行处理所述数据的操作。

根据实施例的方法还可以包括响应于识别出所述至少一个文件的状态与所述第一状态相对应,在识别所述存储器中的与所述应用有关的部分;以及在所述存储器的所述部分中产生所述至少一个文件。

根据实施例的方法还可以包括还包括响应于识别出所述至少一个文件的状态与所述第二状态相对应,将执行处理所述数据库中的数据的所述操作的结果存储在所述至少一个文件中。

根据各种实施例的电子设备可以包括:存储装置;存储器;以及至少一个处理器,所述至少一个处理器可操作地连接至所述存储装置和所述存储器,所述至少一个处理器可以被配置为:从所述存储装置中识别至少一个文件的用于访问存储在所述存储装置中的数据库的状态;响应于识别出所述至少一个文件未存储在所述存储装置中,识别所述数据库的操作模式;以及响应于基于所述至少一个文件识别出所述操作模式与所述数据库在其中操作的第一操作模式相对应,将所述数据库的所述操作模式从所述第一操作模式切换到与所述第一操作模式不同的第二操作模式。

根据实施例,所述第一操作模式对应于预写日志记录(wal)模式,在所述预写日志记录模式中,将处理所述数据库中的数据的结果存储在所述至少一个文件中并且基于指定条件根据存储的结果修改所述存储装置中的所述数据,并且所述第二操作模式对应于回滚模式,在所述回滚模式中基于在处理所述存储装置中的数据库时发生的错误,将所述存储器中的所述数据库恢复到处理所述数据库之前的状态。

根据实施例,所述至少一个文件可以包括:第一文件,所述第一文件用于将数据存储在在所述数据库中,所述第一文件基于所述至少一个操作被修改;以及第二文件,所述第二文件指示所述数据库的与所述存储装置中的所述第一文件的数据有关的部分的位置。

根据实施例,所述至少一个处理器可以被配置为:响应于识别出操作模式与所述第一操作模式相对应,获得用于访问存储在所述存储装置中的所述数据库的信息;响应于获得所述信息,将所述数据库的所述操作模式从所述第一操作模式切换到所述第二操作模式;基于所述第二操作模式,对存储在所述存储装置中的所述数据库进行同步;以及在执行所述同步后,基于获得的信息,停止访问所述存储装置中的所述数据库。

根据实施例,所述至少一个处理器可以被配置为:响应于识别出所述至少一个文件处于允许修改所述至少一个文件的第一状态,基于所述至少一个文件执行用于处理所述数据库中的数据的至少一个操作;响应于识别出所述至少一个文件处于与所述第一状态不同的第二状态,限制与针对所述数据的读取操作不同的修改所述数据的操作、删除所述数据的操作、以及添加所述数据的操作。

根据本公开的权利要求或说明书中描述的实施例的方法可以通过硬件、软件、或硬件和软件的组合来实现。

当通过软件实现所述方法时,可以提供用于存储一个或更多个程序(软件模块)的计算机可读存储介质。可以将存储在计算机可读存储介质中的一个或更多个程序配置为由电子设备内的一个或更多个处理器执行。至少一个程序可以包括使得电子设备执行根据由所附权利要求限定和/或本文公开的本公开的各种实施例的方法的指令。

程序(软件模块或软件)可以存储在非易失性存储器,该非易失性存储器包括随机存取存储器、闪存、只读存储器(rom)、电可擦可编程只读存储器(eeprom)、磁盘存储设备、光盘(cd-rom)、数字多功能光盘(dvd)或其他类型的光学存储设备或磁带。或者,一些或全部的任何组合可以形成用于存储程序的存储器。此外,在电子设备中可以包括多个这样的存储器。

此外,程序可以存储在可连接的存储设备中,该存储设备可以通过通信网络(例如,因特网、内联网、局域网(lan)、广域网(wlan)和存储区域网络(san)或其组合)访问电子设备。这样的存储设备可以经由外部端口访问电子设备。此外,通信网络上的单独的存储设备可以访问便携式电子设备。

在本公开的上述详细实施例中,根据所呈现的详细实施例,本公开中包括的组件以单数或复数表示。然而,为了便于描述,选择单数形式或复数形式以适合于所呈现的情况,并且本公开的各种实施例不限于单个元件或其多个元件。此外,在说明书中表达的多个元件可以被配置成单个元件,或者在说明书中的单个元件可以被配置成多个元件。

尽管已经参考本公开的某些实施例示出和描述了本公开,但是本领域技术人员将理解,在不脱离本公开的范围的情况下,可以在形式和细节上进行各种改变。因此,本公开的范围不应被定义为限于实施例,而应由所附权利要求及其等同物来限定。

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