用于同时更新数据库的方法和装置的制作方法

文档序号:6480659阅读:148来源:国知局

专利名称::用于同时更新数据库的方法和装置的制作方法
技术领域
:本发明一般地涉及数据库,具体涉及用于同时更新数据库的方法、系统和装置。
背景技术
:通过利用锁定机制己经在数据库系统中实现了并发控制(concurrencycontrol)。这防止了相冲突的并发事务(transaction)引起数据库破坏或者检索到无效数据。使用许多方法来实现锁定机制,包括二阶段锁定和多粒度锁定,每种方法具有不同的阻止特性(blockingcharacteristics)。然而,这些方法都涉及当潜在地冲突的事务已锁定了对数据库的访问时阻止某一事务,直到新事务可以获得对数据库的锁定访问时为止。用于并发控制的其他方法允许不锁定数据库,例如时间戳排序或提交排序(commitmentordering)。然而,这些方法涉及在检测到冲突时重新开始事务。这实际上阻止了对事务的处理,直到潜在地冲突的事务已完成为止。在另一方法中,为了避免对事务的任何延迟,可以允许对数据库的不受控制的并发访问,冒着相冲突的事务引起数据库破坏的相关风险。这种风险对于向特征功能提供高可用性而言被认为是可接受的,其中审査机制被用于检测和报告可被自动或手动解决的破坏。也可以使用锁定机制和非排他性(non-exclusive)访问的组合当从嵌入式系统管理应用(ESM)或其他外部应用发起事务时,应用锁定机制。然而,呼叫处理特征功能(例如,用户改变转移号码设置)可以使用对数据库的不受控制的并发访问(不管数据库是否为了系统配置目的而被锁定)。因此,使用两种不同的方法来访问数据库。ESM和其他外部应用(非高可访问性实体)利用视图层事务(涉及用于确保数据库完整性的数据库锁定机制)来访问数据库。呼叫处理特征功能(高可访问性实体)使用表格层访问来绕开视图层并且直接更新数据库表格记录。然而,对回退(rollback)的支持在被引入到允许对数据库的并发访问的数据库中时增大了数据库破坏的风险。这是因为两种潜在地冲突的事务可以重叠而不引起破坏,只要这两种事务的组合在事务结束时被应用到数据库即可。然而,如果潜在地冲突的事务之一执行回退,则其就将数据库修改为第二事务不知道的先前状况。例如,第一事务改变表格条目的第二字段,且同时第二事务改变同一表格条目的第三字段。这两种改变都可以被应用而没有冲突,然而,如果第一事务在第二事务完成之后调用回退,则对第三字段的改变被用其原始值覆写。如果对第三字段的改变包括转移号码,则转移号码将丢失,而发起改变的实体却并不知道。
发明内容本发明提供了一种同时更新数据库的方法,该方法包括在数据库中创建记录的排他性拷贝,所述排他性拷贝供第一类的第一实体排他性地使用;将来自所述第一实体的对所述记录的第一提议改变发布到所述排他性拷贝;判定所述排他性拷贝是否与所述记录的非排他性拷贝相冲突,所述非排他性拷贝供第二类的多个第二实体非排他性地使用;如果所述排他性拷贝与所述非排他性拷贝不冲突,则将所述第一提议改变发布到所述记录;如果所述排他性拷贝与所述非排他性拷贝冲突,则判定冲突是否可被解决;以及生成包括结果的日志。参考以下附图来描述实施例,在附图中图1示出了根据现有技术的用于更新数据库的系统;图2示出了根据一非限制性实施例的用于更新数据库的系统;并且图3示出了根据一非限制性实施例的用于更新数据库的方法。具体实施例方式图1示出了根据现有技术的用于更新数据库110的系统100。数据库110存储记录112,并且经由通信网络124而与应用服务器120和至少一个通信设备123-1、123-2...123-n(—般称为通信设备123,并且总称为通信设备123)通信。每个通信设备123-1、123-2…123-n可以分别与用户125-1、125-2...125-n(—般称为用户125,并且总称为用户125)相关联。在一些实施例中,用户125中的至少一个可以是管理员。通信设备123可包括有线和/或无线通信设备、电话设备、计算设备、膝上型计算机、个人计算机、蜂窝电话、PDA等的任何希望的组合,其能够经由通信网络124与彼此通信并且与其他通信设备123及数据库110通信。通信网络124包括用于使能通信设备123、数据库110和/或其他通信设备之间的通信的有线和/或无线通信网络的任何希望的组合。通信网络124还使能服务器120和数据库IIO之间的通信。通信网络124可以包括但不限于模拟网络(例如,PSTN)、基于分组的网络(例如,因特网)、无线网络(例如,基于蜂窝的网络、WiFi、WiMax)、LAN、WAN和WLAN。在一些实施例中,系统100可包括这样的通信系统,其中应用服务器120包括用于辅助去往和来自通信设备123的通信的至少一个应用121,并且记录112包括与在通信设备123处可用的呼叫处理/特征功能相关联的设置(即,数据)。在一些实施例中,每个通信设备123以一一对应的关系对应于一个单独的记录112;然而,记录112的数目不被认为是特别限制的。此外,在一些实施例中,系统IOO包括操作层,该操作层能够作为通信设备123(和/或应用服务器120)和记录112(和/或记录112的任何拷贝,如下所述)之间的接口,以使得记录112的一个视图被提供给通信设备123(和/或应用服务器120),该视图可以包括来自记录112的数据,以及存储在数据库110的与该视图有关的任何其他记录。因此,在这些实施例中,对数据的操纵发生在层内(即,视图内),并且记录112被相应地更新。在这些实施例中,该层可以包括指向记录112的指针和/或指向记录112中的特定数据的(一个或多个)指针,和/或指向存储在数据库110的与该视图有关的任何其他记录内的特定数据的(一个或多个)指针。因此,可以了解,在以下讨论中,尽管参考对记录和记录拷贝的操纵,但是在一些实施例中,这种操纵经由层而发生。表l包括记录112的非限制性示例<table>tableseeoriginaldocumentpage7</column></row><table>在该非限制性示例中,存储在记录112中的数据包括以行和列布置的多个字段,其中每一行对应于第一行中所标识出的通信设备123的不同设置,第一列中的第一字段标识设置的名称,并且第二列中的第二字段包括设置的值。然而,记录112的格式不是特别限制的,其他合适的格式都在本发明实施例的范围内。在该示例中,第一行包括通信设备123-1的标识符,在该例中是通信设备123-1的电话号码(613-555-1212)。第二行包括呼叫转移的开启/关闭设置("关闭"),且第三行包括在呼叫转移设置为"开启"的情况下呼叫被转移到的号码。其余的行包括通信设备123-1处对快速拨号按钮的设置(即,当在通信设备123-1处促动相应按钮的情况下应当呼叫的号码)。本领域技术人员可以想到其他设置,这些设置在本发明实施例的范围内。例如,在一些实施例中,记录112不是直接存储诸如呼叫转移号码或快速拨号号码之类的号码,而是存储对系统资源的引用(reference),例如数字串池(即,可分配的号码的池)。如果记录112包括与在通信设备123处可用的呼叫处理/特征功能相关联的设置/数据,则应用服务器120处的应用121可被使能为根据给定标准而针对通信设备123之一来自动改变这些设置。在一非限制性示例中,应用121可被使能为根据基于一天中的时刻(timeofday)的标准来改变呼叫转移设置(例如,在办公时间之外将呼叫转移到语音邮箱、应答服务、呼叫中心或者给定号码)和/或根据基于存在性信息的标准来改变呼叫转移设置(例如,基于用户125的存在性将呼叫转移到语音邮箱、应答服务、呼叫中心或给定号码)。当满足给定标准时,应用服务器120试图更新数据库IIO,以使得记录112中所存储的设置被更新。在这样做时,在数据库110中创建记录112的排他性拷贝150。所提议的对记录112的改变(例如,转移号码的改变)被存储在排他性拷贝150中。继续表1的非限制性示例,表2包括当呼叫转移号码将被改变为613-555-1234时记录112的排他性拷贝150的非限制性示例表2:排他性拷贝150的非限制性实施例通信设备123标识符613-555-1212(123-1)呼叫转移开启呼叫转移号码613-555-1234快速拨号1204-555-8765快速拨号1613-555-1515因此,包括呼叫转移开启/关闭设置的字段将被改变为"开启",并且包括呼叫转移号码的字段将被改变为613-555-1234,这可以是语音邮箱的号码或者下班以后应答服务。此外,包括第一快速拨号号码的字段将被改变为204-555-8765。在原始记录112存储对诸如数字串池之类的系统资源的引用的实施例中,排他性拷贝150也将存储对系统资源的引用,并且当发生改变时,改变将包括更新引用。如果所提议的改变被提交,则记录112的内容被替换为排他性拷贝150的内容。在一些实施例中,排他性拷贝150变为记录112,并且表2替换表1,而在包括层的实施例中,通过指针来更新有关数据。在这样做时,一般锁定系统100以免产生潜在地冲突的另一排他性拷贝(例如,由另一应用和/或另一应用服务器产生),以防止改变,直到所提议的排他性拷贝150中的改变被存储在记录112中为止。一般而言,应用服务器120代表第一类实体,这类实体不要求对数据库iio的高可用性访问。8然而,在系统100包括要求对数据库110的并发高可访问性访问的第二类实体(例如通信设备123)的情形中,该过程是有缺陷的。换言之,通信设备123—般能够经由通信设备123处可用的按钮、应用、GUI(图形用户界面)、菜单项等的任何合适的组合,对记录112作出改变。这种改变一般可以是通过在一通信设备123处接收输入数据(例如,通过用户促动按钮,和/或满足诸如一天中的时刻和/或存在性之类的标准)来发起的。照此,通过通信设备123而发生的对记录112的改变应当在最小等待时间的情况下发生,因为用户125—般通过通信设备123来发起这种改变。这种等待时间是通过使得通信设备123能够直接对记录112作出改变而实现的。然而,如果对记录112的改变是在排他性拷贝被创建之后且在排他性拷贝150被保存之前作出的,则这种改变可能丢失,因为记录112的内容一般被排他性拷贝150的内容所替换。例如,在排他性拷贝150被创建之后,但在排他性拷贝150的内容替换记录112的内容之前,一通信设备123可以在记录112中存储呼叫转移号码(例如,根据从用户125接收到的输入)。例如,在表2所呈现的排他性拷贝150被创建之后,该通信设备123可将呼叫转移号码改变为613-555-5678(例如,用户125的蜂窝电话号码)。然而,当排他性拷贝150的内容替换记录112的内容时,已被通信设备123存储在记录112中的呼叫转移号码又被存储在排他性拷贝150中的任何呼叫转移号码(如果存在的话)(例如,旧呼叫转移号码、由应用服务器120确定的新呼叫转移号码)所替换。用户125忘记了该过程,认为通过通信设备123所存储的呼叫转移号码是有效的。因此,重要的呼叫可能被转移到错误的号码。在记录112存储对诸如数字串池之类的系统资源的引用的实施例中,如果引用被覆写,则底层资源丢失该资源仍位于系统中,但未被链接。因此,数据库110遭到了破坏。或者,在一些实施例中,对排他性拷贝150作出的改变的回退可以发生在记录112的内容被排他性拷贝150的内容替换之后和对记录112的改变随后被通信设备123作出之后。在这种情况下,回退也将会引起通信设备123对记录112的改变的丢失。为了能够创建排他性拷贝150并更新数据库110,在一些实施例中,数据库IIO是计算装置160的元件,该计算装置160包括通信接口162,通信接口162能够通过任何希望的无线或有线协议而与数据库110和/或应用服务器120和/或通信设备123通信。计算装置160还包括处理单元164,处理单元164能够创建排他性拷贝150并更新数据库110。在其他实施例中,计算装置160可以是与数据库110分离的元件。现在参考图2,图2示出了根据一非限制性实施例的用于同时更新数据库110的系统200。系统200基本类似于系统100,其中相似的元件用相似的标号示出。系统200包括与计算装置160类似的计算装置260,计算装置260包括与通信接口162类似的通信接口262和与处理单元164类似的处理单元264。然而,在系统200中,当通信设备123试图对记录112作出改变时,记录112的非排他性拷贝250被创建以供通信设备123的非排他性使用,使得每个通信设备123可将改变发布(post)到非排他性拷贝250。非排他性拷贝250的内容然后可以替换记录112的内容以更新数据库110。这种更新过程可以周期性地发生,并且/或者在预先配置的标准得到满足时和/或在对非排他性拷贝250的改变发生时被触发。继续表1和表2的非限制性示例,表3包括当呼叫转移号码将被通信设备123改变为613-555-5678时记录112的非排他性拷贝250的非限制性示例表3:非排他性拷贝250的非限制性实施例<table>tableseeoriginaldocumentpage10</column></row><table>因此,包括呼叫转移开启/关闭设置的字段将被"开启",并且包括呼叫转移号码的字段将被改变为613-555-5678,这例如可以是用户125的蜂窝电话号码。在原始记录112存储对诸如数字串池之类的系统资源的引用的实施例中,非排他性拷贝250也将存储对系统资源的引用,并且当发生改变时,改变将包括更新引用。在一些示例性的非限制性实施例中,数据库更新包括与以下操作类似的一系列操作开始会话;读取(一个或多个)记录;对(一个或多个)记录开始事务;修改(一个或多个)记录;提交事务;结束会话。在这些实施例的一些中,仅在数据库锁定机制允许(并且相互依赖的记录被锁定访问)的情况下开始事务操作才会成功。另外,在开始事务期间可以对任何现有的非排他性拷贝(与非排他性拷贝250类似)进行测试,并且在锁定相互依赖的记录的访问之前,来自任何现有的非排他性拷贝的改变被保存到记录112。因此,在这些实施例中,锁定发生在排他性拷贝150被创建之前的开始事务期间,并且现有非排他性拷贝250中已发生的任何改变被保存到记录112以避免冲突。事务期间的改变被应用于排他性拷贝150并且不应用于数据库,直到提交事务操作被接收到为止。如果当提交事务操作被处理时存在非排他性拷贝250(即,非排他性拷贝250是在创建排他性拷贝150之后创建的),则冲突检测被应用于排他性拷贝150和非排他性拷贝250之间,以判定对非排他性拷贝250的改变是否与对排他性拷贝150的改变相冲突。如果冲突,则可以实现冲突解决机制来解决冲突。否则,排他性拷贝150被丢弃并且提交事务操作失败。冲突解决机制修改记录112的内容以反映排他性拷贝150和非排他性拷贝250的组合改变。在一些实施例中,可以生成冲突和/或改变的日志。在这些实施例的一些中,日志可被发送到通信设备123中的至少一个,例如与管理员相关联的通信设备123和/或发起了对非排他性拷贝250的冲突改变的通信设备123。此外,仅通过排他性拷贝150发生回退。换言之,如果对排他性拷贝150的改变被回退,则排他性拷贝150被丢弃。如果对排他性拷贝150的改变被提交,则结合冲突解决机制,记录112的内容被排他性拷贝150的内容所替换。现在参考图3,图3示出了用于同时更新数据库的方法300。为了辅助说明方法300,将假定方法300是利用系统200执行的。此外,以下对方法300的讨论将会带来对系统200及其各种部件的进一步理解。然而,将会了解,系统200和/或方法300可被变更,并且不必精确地像这里所讨论的那样来彼此结合地工作,这些变更在本发明实施例的范围内。在步骤310,第一类的第一实体发起数据库110处的事务。在所示实施例中,第一实体包括应用服务器120,然而可以了解,在其他实施例中,系统200可以包括第一类的其他实体。第一类的实体一般是满足于对数据库110的低可用性的实体,并且由第一类的实体发起的对数据库110的改变的相对高的等待时间(例如,高于给定阈值的等待时间)对于这些实体的操作而言是足够的。这种事务可以通过由应用服务器120经由通信网络124向数据库110发送记录更新命令275来发起,记录更新命令275包括用于更新记录112(例如表1)并因此更新数据库110的数据。在特定的非限制性实施例中,记录更新命令275包括一系列的数据库操作,这些操作包括开始事务;修改(一个或多个)记录;提交事务;结束事务。在一些实施例中,这一系列的数据库操作可以包括多个修改(一个或多个)记录命令,这些命令可以包括增加命令、删除命令、读取命令等等。这些操作可被独立地或相结合地完成(例如,单个修改(一个或多个)事务记录可替换开始事务;修改(一个或多个)记录;提交事务等而被使用)。任何合适的变更都在本发明实施例的范围内。对于正在被修改的每个记录,在每个修改(一个或多个)记录操作期间,如果先前未创建记录的排他性拷贝,则创建记录的排他性拷贝。在一些实施例中,当事务开始时,根据数据库锁定机制,针对事务中可能涉及/影响的每个现有的非排他性拷贝,测试状态指示(以下描述)。如果任何所涉及/影响的非排他性拷贝正在被修改/被预留以供修改,则潜在的冲突被检测到并且事务开始请求被拒绝(未能锁定数据库)。否则,在允许在步骤344中开始事务(以下更详细地描述)之前,数据库锁定机制被应用,并且对其完成了改变的任何所涉及/影响的非排他性拷贝被应用于数据库(经受以下所描述的冲突检测处理)。在步骤315,记录112的排他性拷贝150被创建(例如,排他性拷贝150最初包括表1的内容),排他性拷贝150供第一类的第一实体(例如,应用服务器120)排他性地使用。排他性拷贝150—般受对开始事务操作期间所建立的相互依赖的记录的相同表锁定的保护。数据库锁定机制防止记录112的多个排他性拷贝的创建,但不防止非排他性拷贝250的创建。在步骤320,来自第一实体的对记录112的第一提议改变被发布到排他性拷贝150(例如,排他性拷贝150现在包括表2的内容),就像直接访问数据库110中的记录112(这在一些实施例中是通过层来执行的)一样。例如,记录更新命令275中的数据可被发布到排他性拷贝150。在一些实施例中,第一提议改变的发布可被打上时间戳,以使得改变发生的时间可在以后确定。在步骤325,判定对排他性拷贝150的改变是将通过提交事务操作请求而被提交(即,存储在记录112中),还是通过取消事务操作请求而被回退(即,放弃)。在一些实施例中,可以通过超时过程而自动发生回退。例如,如果在给定的时间段期间未接收到提交命令,则自动发生回退。如果被回退,则在步骤330,排他性拷贝150被丢弃并且如果记录112先前已被锁定,则记录112被解锁。然而,如果排他性拷贝150将被提交,则在步骤340,判定是否存在非排他性拷贝250。例如,在步骤315创建排他性拷贝150之前、期间或者之后,可发生并行过程以创建非排他性拷贝250。对于创建非排他性拷贝250的非限制性实施例,主要参考步骤341-344。在步骤341,第二类的第二实体可发起事务。在所示实施例中,系统200包括第二类的多个第二实体,具体而言是通信设备123。然而,将会了解,在其他实施例中,系统200可以包括第二类的其他实体。第二类的实体一般是偏好对数据库110的高可用性的实体,并且由第二类的实体所发起的对数据库110的改变的相对低的等待时间(例如,低于给定阈值的等待时间)是这些实体的操作所偏好的。这种事务可以通过由通信设备123经由通信网络124向数据库110发送记录更新命令276来发起,记录更新命令276包括用于更新记录112并因此更新数据库110的数据。在一些实施例中,各个通信设备123-1、123-2...123-n可以分别发送记录更新命令276-1、276-2...276-n(—般称为记录更新命令276并且总称为记录更新命令276)。在特定的非限制性实施例中,记录更新命令276通过请求并获得指向记录112的指针来直接修改数据库110的内容。在步骤342,通过拷贝记录112而创建记录112的非排他性拷贝250(例如,非排他性拷贝250最初包括表1的内容),非排他性拷贝250供第二类的多个第二实体(例如通信设备123)排他性地使用。此外,数据库IIO能够分别基于正试图访问数据库IIO的外部设备(例如,通信设备123和/或应用服务器120)是低可用性设备还是高可用性设备,来区分是创建记录112的排他性拷贝还是非排他性拷贝。具体而言,数据库110能够基于外部设备在试图如何访问数据库110的操作模式来区分高可用性和低可用性设备。例如,诸如应用服务器120之类的低可用性设备试图通过如上所述的开始事务命令来访问数据库110。而高可用性设备通过请求指向记录112的直接指针(例如,绕过开始事务操作)来试图访问数据库110。通过提供指向非排他性拷贝250的指针以供通信设备123—方使用,可使非排他性拷贝250对通信设备123而言可用。本领域技术人员将会认识到用于使非排他性拷贝250对通信设备123而言可用的其他过程,这些过程在本发明实施例的范围内。此外,非排他性拷贝250的创建可以不伴随有对记录112的锁定。在步骤343,来自第二实体的对记录112的第二提议改变被发布到非排他性拷贝250(例如,非排他性拷贝250现在包括表3的内容),就像直接访问数据库110中的记录112—样。例如,记录更新命令276中的数据可被发布到非排他性拷贝250。在一些实施例中,第二提议改变的发布可被打上时间戳,以使得改变发生的时间可在以后确定。在一些实施例中,系统200和/或通信设备123的呼叫处理/特征功能更新与数据库中的非排他性拷贝250适当关联或者与数据库中的记录112相关联的状态指示。这些状态指示用于标识-非排他性拷贝250何时被修改和/或被预留以供修改;-对非排他性拷贝250的改变何时完成;-何时由于同时的排他性和非排他性访问而检测到冲突;以及-可选地,何时由于同时的非排他性访问而检测到冲突。在步骤344,除非发生如下所述的冲突解决过程,否则第二提议改变被发布到记录112(例如,非排他性拷贝250的内容然后可以在步骤344替换记录112的内容gp,表1的内容被表3的内容所替换)。步骤344可以周期性地发生,并且/或者在接收到触发(例如,来自一个或多个通信设备123)时和/或每当发生任何改变时发生。现在返回步骤340,对存在非排他性拷贝250的判定指示出第二类的至少一个实体在第一实体试图对记录112作出改变的同时试图对记录112作出改变,并且提供在这两个过程之间存在冲突的指示。可以通过向数据库IIO査询与排他性拷贝150相关联的记录112的拷贝的存在和/或通过测试与记录112的非排他性拷贝250相关联的状态指示来进行这种判定。如果不存在非排他性拷贝250(即,本质上没有冲突),则在步骤345,第一提议改变被发布到记录112(例如,记录112的内容可被排他性拷贝150的内容替换g卩,表1的内容被表2的内容所替换)。排他性拷贝150然后可被丢弃。此外,如果记录112先前已被锁定,则记录112被解锁。然而,如果存在非排他性拷贝250,则在步骤350,判定排他性拷贝150是否与非排他性拷贝250相冲突。在其他实施例中,排他性拷贝150和非排他性拷贝250可被处理(例如由处理单元164),以确定它们之间的差别。如果存在差别,则存在冲突的可能。一般而言,如果与排他性拷贝150和非排他性拷贝250相关联的实体各自试图改变记录112中的给定字段(例如呼叫转移号码),则发生冲突。在一些实施例中,如果排他性拷贝150的一个或多个字段不同于非排他性拷贝250的相应字段,则可以确定存在冲突。例如,如果专用于存储呼叫转移号码的字段在排他性拷贝150和非排他性拷贝250中是不同的,则可能存在冲突。15然而,在其他实施例中,只有与对排他性拷贝150和非排他性拷贝250中的每一个的改变相关联的字段被比较以确定差别。例如,比较表1、表2和表3,在一个实施例中,用于存储第一快速拨号号码的字段在排他性拷贝150和非排他性拷贝250中可能是不同的。然而,非排他性拷贝250中的第一快速拨号号码可以与记录112中的第一快速拨号号码是相同的,表明通信设备123之前没有在试图改变呼叫转移号码。在该示例中,仅应用服务器120在试图改变第一快速拨号号码并且不存在冲突。或者,这种差别可被看作冲突,但与用于解决冲突的标准相关联(即,在一个拷贝中被改变而在另一拷贝中未被改变的字段将在记录112中被改变)。然而,再次比较表l、表2和表3,如果非排他性拷贝250、排他性拷贝150和记录112中的呼叫转移号码都是不同的,则应用服务器120和通信设备123都在试图将呼叫转移号码改变为不同的号码,并且存在冲突。例如,如果排他性拷贝150包括表2的内容(即,应用服务器120在试图将呼叫转移号码改变为613-555-1234)并且非排他性拷贝250包括表3的内容(即,通信设备123在试图将呼叫转移号码改变为613-555-5678),则存在冲突。在一些实施例中,也可以通过将差别与预先配置的给定标准相比较来确定冲突。如果没有冲突,则在步骤345,第一提议改变被发布到记录112(例如,记录112的内容可在步骤345被排他性拷贝150的内容所替换;或者,记录112的内容可被非排他性拷贝250的内容所替换,因为应用服务器120和通信设备123中的每一个都在试图对记录112作出相同的改变)。然而,如果存在至少一个冲突,则在步骤355判定(一个或多个)冲突是否可被解决。例如,系统200可设有用于解决冲突的预定标准。一种预定标准可以是总是遵从非排他性拷贝250中的改变(即,通过通信设备123发起的改变总是优先于通过管理服务器120发起的改变)。另一种预定标准可以是遵从最后发生的改变,例如在改变被打上时间戳的实施例中。在一些实施例中,这种预定标准可以是依给定字段/特征而定的。在其他实施例中,这种预定标准可以是对时间敏感的。在其他实施例中,这种预定标准可被系统200的管理员推翻例如,用户125可以是一个组织的雇员,并且该组织可能希望对系统200中的呼叫控制特征拥有最终发言权。如果(一个或多个)冲突可被解决(即,存在用于解决(一个或多个)冲突的标准),则在步骤360,冲突被解决,该冲突引起第三提议改变,这些改变可以包括第一数据和第二数据的混合。例如,如果应用服务器120在试图改变呼叫转移号码和快速拨号号码两者,并且一通信设备123在试图仅改变呼叫转移号码,则第三数据可以包括通信设备123的呼叫转移号码和应用服务器120的快速拨号号码。应用服务器120的呼叫转移号码被丢弃。继续表1、表2和表3的非限制性示例,表4包括第三提议改变的非限制性示例,即在表2和表2之间的冲突已被解决的情况下表2和表3的混合表4:第三提议改变的非限制性实施例通信设备123标识符613-555-1212(123-1)呼叫转移开启呼叫转移号码613-555-5678快速拨号1204-555-8765快速拨号1613-555-1515因此,包括呼叫转移开启/关闭设置的字段将被"开启",并且包括呼叫转移号码的字段将被改变为613-555-5678(与表3—样),从而解决了表2和表3之间的冲突。然而,包括第一快速拨号号码的字段包括204-555-8765(与表2—样),因为不存在冲突(或者因为用于解决冲突的标准已被应用)。在步骤365,多个第三提议改变被发布到记录112(例如,表1的内容被表4的内容所替换)。在一些实施例中,方法随后在步骤380结束,而在其他实施例中,在步骤370生成冲突和解决的日志,并且可选地,在步骤375将冲突和解决的日志发送给系统100的管理员和/或通信设备123的用户。返回步骤355,如果冲突无法被解决,则在一些实施例中,在步骤370可以生成冲突的日志,并且在步骤375可以可选地将日志例如发送到发起了引起冲突的改变的管理员和/或通信设备123。该日志可用于为冲突解决确定进一步的标准。否则,在步骤380,方法300结束。在一些实施例中,呼叫处理/特征功能继续创建并参考非排他性拷贝(直接从数据库110中的记录112,其在事务进行期间是未受影响的)。呼叫处理/特征功能可选地在非排他性拷贝250上(和/或利用数据库中的记录112)检査/设置指示,以使改变串行化和/或检测先前会涉及对数据库表的同时访问的冲突(并防止潜在的但是非常不可能的数据库破坏)。在其他实施例中,一周期性的任务对其改变完成的任何非排他性拷贝250进行检査。其然后在向数据库110应用改变之前应用数据库锁定机制(经受上面所述的冲突检测处理)。这确保了非排他性改变被应用于数据库110中的记录112(而不要求涉及受影响的记录的事务)。在其他实施例中,当对非排他性拷贝250的改变指示出由于同时访问而检测到的冲突时,在向数据库110应用这些改变之前执行另外的确认。这种确认依所涉及的记录112而定(根据数据的特性),并且当非排他性拷贝250在被创建时,这种确认可以通过记录112的原始拷贝的创建而得以补充。该原始拷贝保持记录112的字段值以供与非排他性拷贝250和随后更新的记录112(其由于同时的事务改变而改变)进行比较。具有无法被解决或者可能危及数据库完整性的冲突的非排他性拷贝250被丢弃并且描述日志被生成。在一些实施例中,非排他性拷贝250可与记录112—起存储,或存储在单独的表/结构中。在一些实施例中,存储器管理方案可被应用于非排他性拷贝250和排他性拷贝150的创建/管理/释放(例如,对RAM使用率的优化、性能、简化或者其组合)。虽然这里所描述的一些实施例特定于支持呼叫处理/特征功能,但是方18法300可被更一般地应用于以下问题在多个数据改变被同时应用,其中具有相冲突的改变的风险的情况下,确保数据完整性(在实现方式中甚至没有数据库)。例如,方法300可被应用于任何数据存储库,其中锁定机制是相关功能不希望的/不考虑的。本领域技术人员将会认识到,在一些实施例中,可以利用预编程的硬件或固件元件(例如,专用集成电路(ASIC)、电可擦除可编程只读存储器(EEPROM)等)或者其他有关部件来实现数据库110、应用服务器120、通信设备123和计算装置160的功能。在其他实施例中,可以利用下述计算装置来实现数据库110、应用服务器120、通信设备123和计算装置160的功能该计算装置可以访问存储用于计算装置操作的计算机可读程序代码的代码存储器(未示出)。计算机可读程序代码可被存储在固定的、有形的和可由这些部件直接读取的介质(例如,可移动盘、CD-RON^ROM、固定盘、USB驱动器)上,或者计算机可读程序代码可被远程存储但可通过传输介质经由调制解调器或者连接到网络(包括但不限于因特网)的其他接口设备而发送到这些部件。传输介质可以是非无线介质(例如,光学或模拟通信线路)或者无线介质(例如,微波、红外、自由空间的光学或其他传输方案)或者其组合。本领域技术人员将会认识到,有许多其他可用于实现这些实施例的替换实现方式和修改,并且以上的实现方式和示例仅仅是对一个或多个实施例的说明。因此,范围仅由所附权利要求来限定。19权利要求1.一种同时更新数据库的方法,该方法包括在数据库中创建记录的排他性拷贝,所述排他性拷贝供第一类的第一实体排他性地使用;将来自所述第一实体的对所述记录的第一提议改变发布到所述排他性拷贝;判定所述排他性拷贝是否与所述记录的非排他性拷贝相冲突,所述非排他性拷贝供第二类的多个第二实体非排他性地使用;如果所述排他性拷贝与所述非排他性拷贝不冲突,则将所述第一提议改变发布到所述记录;如果所述排他性拷贝与所述非排他性拷贝冲突,则判定冲突是否可被解决;以及生成包括结果的日志。2.如权利要求1所述的方法,还包括创建所述非排他性拷贝。3.如权利要求1所述的方法,还包括将来自所述多个第二实体的对所述记录的第二提议改变发布到所述非排他性拷贝。4.如权利要求3所述的方法,其中,所述发布第二提议改变的步骤包括按从所述多个第二实体接收所述第二提议改变的顺序来发布所述第二提议改变。5.如权利要求3所述的方法,还包括将所述第二提议改变发布到所述记录。6.如权利要求1所述的方法,还包括判定所述第一提议改变将被提交到所述记录还是将被回退;如果所述第一提议改变将被回退,则丢弃所述第一提议改变;否则,如果所述排他性拷贝与所述记录的所述非排他性拷贝冲突,则进行所述判定。7.如权利要求1所述的方法,还包括判定是否存在所述非排他性拷贝;以及,如果判定结果为否,则将来自所述排他性拷贝的所述改变发布到所述记录。8.如权利要求1所述的方法,还包括解决引起第三提议改变的所述冲突,并且将所述第三提议改变发布到所述记录。9.如权利要求1所述的方法,其中,所述第一实体和所述数据库中的记录之间的事务是通过视图层发生的,并且所述多个第二实体和所述数据库中的所述记录之间的事务是通过所述视图层发生的。10.如权利要求1所述的方法,其中,所述第一类包括低可用性实体,并且所述第二类包括高可用性实体。全文摘要提供了用于同时更新数据库的方法和装置。在数据库中创建记录的排他性拷贝,该排他性拷贝供第一类的第一实体排他性地使用。来自第一实体的第一提议改变被发布到该排他性拷贝。判定排他性拷贝是否与记录的非排他性拷贝相冲突,该非排他性拷贝供第二类的多个第二实体非排他性地使用。如果排他性拷贝与非排他性拷贝不冲突,则第一提议改变被发布到记录。因此,高可用性设备可以与低可用性配置应用并行地同时修改数据库,其中冲突得到解决。文档编号G06F17/30GK101634990SQ200910005699公开日2010年1月27日申请日期2009年2月19日优先权日2008年7月25日发明者保罗·赫伯申请人:米特尔网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1