CN103631843B - 关系数据库中时间唯一索引中的间隙检测的方法和系统 - Google Patents
关系数据库中时间唯一索引中的间隙检测的方法和系统 Download PDFInfo
- Publication number
- CN103631843B CN103631843B CN201310363334.0A CN201310363334A CN103631843B CN 103631843 B CN103631843 B CN 103631843B CN 201310363334 A CN201310363334 A CN 201310363334A CN 103631843 B CN103631843 B CN 103631843B
- Authority
- CN
- China
- Prior art keywords
- gap
- time
- row
- list
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了实现和使用用于关系数据库中时间唯一索引中的间隙检测的技术的方法和装置,包括计算机程序产品。在关系数据库中提供时间唯一索引。该索引包括第一组关键词,每个关键词包括一个或多个非时间关键词部分以及两个时间关键词部分。响应于接收到针对改变的行的插入、更新或删除语句,识别与所改变的行具有相同的非时间关键词部分的行。将所识别的行的时间关键词部分与所改变的行的时间关键词部分进行比较,以确定:所改变的行是否与时间更早的行和时间更晚的行直接相邻,所改变的行与时间更早的行之间是否检测到间隙,或者所改变的行与时间更晚的行之间是否检测到间隙。
Description
技术领域
本发明涉及关系数据库,并且更具体地,涉及关系数据库中时间唯一索引中的间隙检测。
背景技术
关系数据库可以一般地描述为数据项的集合,其被组织为可以容易地从其访问数据的一组正式描述的表。关系数据库中使用的软件通常称为关系数据库管理系统(RDBMS)。RDBMS的一个示例是DB2通用数据库(DB2 UDB),其可以从纽约Armonk的国际商业机器公司获得。RDBMS中通常使用的一种类型的表是应用维持的时序表(Application_MaintainedTemporal Tables)。时序表包含已知对给定时间段有效的数据。例如,对客户贷款的利率每月或每年具有特定值,但该利率在贷款的寿命期限中可能波动。数据库服务器可以在应用维持的时序表之上处理两种类型的约束(constraint):时间唯一性(TemporalUniqueness)和间隙消除(Gap Elimination)。
时间唯一性约束(在DB2 UDB系统中也称为“无重叠(WITHOUT OVERLAPS)”约束)确保应用维持的时序表的每行描述离散的时间段,即,给定客户的贷款利率仅具有针对贷款寿命中的任何给定时间点的一个值。
间隙消除约束(本文也称为“无间隙(WITHOUT GAPS)”确保在用户数据的持续期间上不存在值的间隙,即,从贷款开始直到贷款结束,不存在未记录利率的时间点。
在某些RDBMS(诸如DB2 UDB)中,用户可以创建他们自己的间隙消除触发器或结构化查询语言(SQL)查询,以检测间隙。然而,这些SQL查询比时间唯一性复杂得多,因为间隙消除查询需要使用联机分析处理(OLAP)或其它分析功能,以在索引中确定“下一”和“前一”行的值,即:
SELECT*FROM
(SELECT STOCK_ID,MAX(END_DATE)OVER(ORDER BY BEGIN_DATE)GAP_START,
LEAD(BEGIN_DATE)OVER(ORDER BY BEGIN_DATE)GAP_END FROM T1)
WHERE GAP_START<GAP_END
此外,使用基于SQL的间隙消除方案的用户可能得到“错误的肯定(falsepositives)”,因为在更新/删除/插入(UDI)操作之后以及上述SQL语句被读取之前,索引未被锁定,并且这需要用户调整查询以匹配他们想要监视间隙的索引。
另一可选技术是在UDI操作后执行表的索引扫描,查找与被修改的非时间关键词部分匹配的所有关键词(key),并且在扫描期间确保当前行的结束时间等于下一行的开始时间。然而,这引入了锁定与并发的问题,因为扫描必须在数据上的索引锁定和页面锁定已被释放之后发生。
发明内容
根据本发明的各种实施例,提供了用于关系数据库中时间唯一索引中的间隙检测的方法和装置,包括计算机程序产品。在关系数据库中提供了时间为一索引。时间唯一索引包括第一组关键词。第一组关键词中的每个关键词包括一个或多个非时间关键词部分以及两个时间关键词部分,时间关键词部分指示时间开始值和时间结束值。响应于接收到与关系数据库中的改变的行有关的插入语句、更新语句和删除语句中的一个,在时间唯一索引中识别与所改变的行具有相同的非时间关键词部分的行。将所识别的行的时间关键词部分与所改变的行的时间关键词部分进行比较,以确定:所改变的行是否与时间更早的行和时间更晚的行直接相邻,所改变的行与时间更早的行之间是否检测到间隙,或者所改变的行与时间更晚的行之间是否检测到间隙。
下面在附图和描述中说明本发明的一个或多个实施例的细节。从描述和附图以及权利要求,本发明的其它特征和优点将是明显的。
附图说明
图1-图8示出了根据本发明的各种实施例的、索引和间隙列表如何受各种UDI操作影响的示例。
各个附图中同样的参考标记指示同样的元素。
具体实施方式
总述
这里描述的各个实施例涉及例如可以由RDBMS索引管理器(诸如DB2索引管理器)使用的技术,以在时间索引上的UDI操作期间维持间隙的列表。作为使用这些技术的结果,可以提高RDBMS的性能,对于时间索引上的时间UDI操作需要更少的应用开发时间,并且为用户获得增加的价值。
根据各个实施例,如果以下信息是已知的:所改变的行的开始时间(已知)、所改变的行的结束时间(已知)、前一行的结束时间(如果存在)、以及下一行的开始时间(如果存在),则可以在索引插入、删除或更新(更新就是删除后立即插入)时检查间隙消除。
这里所使用的表述“前一行”和“下一行”是指匹配索引中的所有其它非时间关键词部分的行。前一值和下一值可被用于确定所改变的行是否与该两行在任一侧上直接时间相邻,或者是否存在空白(empty)空间(现有间隙)。
插入(INSERT)语句可以创建间隙(如果要被插入的行不与前一行或下一行直接相邻)或者去除间隙(如果要被插入的行与前一行或下一行都直接相邻,即,在更新(UPDATE)语句中)。
删除(DELETE)语句可以创建间隙(如果要被删除的行与前一行和下一行都直接相邻)或去除间隙(如果要被删除的行不与前一行或下一行直接相邻,即,在更新语句中)。
有时,插入和删除语句也可以延伸或分离或截断现有间隙。下面将详细描述的各种技术使用间隙检测算法,其追踪最小数目的已知间隙。如下面将描述的,针对常用情形优化算法,诸如单个数据的常规插入或删除,或者完全清除表(即“DELETE FROM T1(从T1删除)”)。
一些更新语句可能产生将由更新的结束消除(resolve)的临时间隙,即,在给定表中的数据的情况下,以下更新语句"UPDATE T1SET BUS_START=BUS_START+1MONTH,BUS_END=BUS_END+1MONTH"可能在许多行中产生临时间隙,但该更新的最终结果总是没有间隙的表。这是因为无间隙索引上的每个事务必须在索引中无间隙的情况下完成,否则事务回退(roll back)。如果事务以没有间隙的表开始,则这种索引上的任何数据库操作的最终结果总是没有间隙的表。
一旦间隙已知,则可以将间隙添加到存储在可由可以触及所讨论的表的所有代理(agent)访问的存储器的共享区域中的链接列表。链接列表的元素将包括表id、对象id、索引id、非时间关键词部分(或其散列值,以节省空间)、以及间隙的开始和结束时间。如果UDI操作将去除间隙,可以通过下面的算法搜索间隙列表,以找到现有间隙。
一旦操作完成并且已经通过语句改变所有行,则发现操作是否导致间隙与检查间隙列表是否具有任何成员一样简单。可以在针对迟延的(deferred)唯一性索引的唯一性违反检查时完成此检查。如果操作导致间隙,则事务将被回退。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把这些计算机程序指令加载到计算机、其它可编程数据处理装置或其它设备上,以使得可以在该计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的处理,从而,在该计算机或其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的处理。
一些说明性示例
现在将利用可以在RDBMS中执行的不同类型的操作的示例说明本发明的各种实施例。为了这些示例的目的,假设存在具有关键词K0、K1、K2……Kn的索引。每个关键词K由非时间关键词部分Kp0、Kp1……Kpn和用于时间开始和结束值的两个时间关键词部分KpB和KpE组成。时间开始关键词部分KpB必须小于KpE,其中KpB是包含的(inclusive)而KpE是单独的(exclusive)。这些限制是时间关键词部分定义所固有的。对于允许KpB是单独的或允许KpE是包含的的时间实施方式,将需要略微修改下述技术。
可以三个不同方式定义这种表中的唯一性:
非时间唯一性,其规定对于所有关键词K,K的所有关键词部分都是不同的。
没有重叠的时间唯一性,其附加地规定对于所有不同对的关键词K1和K2,满足以下条件:
o如果K1pB<=K2pB,则Kp1E<K2pB.
o如果K1pE>=K2pE,则K1pB>=K2pE.
没有重叠或间隙的时间唯一性,其附加地规定对于所有外部相同的关键词(下面定义),如果存在与K外部相同但时间上早于K的前一关键词PrevK,则PrevK的KpE等于K的KpB,并且如果存在与K外部相同但时间上晚于K的下一关键词NextK,则NextK的KpB等于K的KpE。如果索引中的所有关键词K满足此要求,则索引被称为是没有间隙的时间唯一。
让我们称其中Kp0、Kp1……Kpn等价的任意两个关键词为外部相同的关键词,因为数据的当前版本将仅在满足时间唯一性约束的表中包含一个这样的关键词。例如,假设存在具有两个关键词(Joe,‘123’,01/01/12,02/01/12)和(Joe,‘123’,02/01/12,03/01/12)的时间索引,则它们是外部相同的。换言之,对于查询该数据库的用户,仅存在一个值(Joe,‘123’),其具有两个有效时段,一个来自于1月至2月,一个来自于2月至3月。关键词的非时间关键词部分都是相同的,但时间(开始/结束)关键词部分是不同的。从数据库的角度,索引关键词本身当然是完全不同的,但从时间应用的用户的角度,它们是相同的。
无间隙检查
如果对于给定关键词K,索引不包含PrevK或NextK,则在该时间方向(更早或更晚)不需要间隙检查。
如果索引包含索引中没有其它与其外部相同的关键词的关键词K,则该关键词K被称为在任一侧上没有间隙。
完全没有关键词的索引也被称为满足无间隙约束和无时间重叠约束。
在某些实施例中,仅在DML(数据操纵语言)语句的执行的结束时检查无间隙限制。假设在选择(SELECT)操作期间,在索引上不需要存在阻止读取的锁,并且对于UDI操作,在UDI操作的期间,数据库仅锁定修改的关键词的外部相同的关键词。
对于无间隙索引,索引必须在连续的状态中开始任何事务,即,所有关键词满足没有间隙和没有重叠的时间唯一性要求。下面是在索引插入、更新和删除语句过程期间可能创建间隙的几个情况。
添加关键词
此操作作为SQL语句的部分将关键词添加到索引。如果新关键词K具有外部相同的PrevK,其中K->KpB不等于PrevK->KpE,或者如果新关键词K具有外部相同的NextK,其中K->KpE不等于NextK->KpB,则此操作可能导致在索引中出现间隙。
插入(INSERT)语句可以将一个或多个关键词添加到索引。例如,如果超过一个关键词正被添加到索引(例如作为来自SUBSELECT SQL语句的INSERT(插入)的部分),则正被插入的关键词的顺序未被限定。如上所述,即使插入语句的最终结果是没有间隙的索引,插入语句也可以引入临时间隙。为此原因,在整个插入操作完成之前,“添加关键词”操作不能抛出错误。
通过撤销(undo)被回退的事务的所有操作而执行数据库中的回退(ROLLBACK)。回退操作的一个示例是撤销删除操作,其等价于将关键词添加到索引中。假设索引在删除开始之前在连续的无间隙状态中,在删除的撤销期间,应该在索引中不造成间隙。
将第一个关键词添加到空白索引中,或者添加针对给定一组的非时间关键词部分的第一个外部相同的关键词将永远不会造成间隙。可以检测这两种情形,或者可以在此插入语句期间禁用间隙检测。
删除关键词
此操作作为SQL语句的部分从索引去除关键词。如果所删除的关键词K具有外部相同的PrevK,其中K->KpB等于PrevK->KpE,并且所删除的关键词具有外部相同的Nextk,其中K->KpE等于NextK-KpB,则此操作可以在索引中导致间隙的出现。如果所删除的关键词k紧挨在该索引中之前或之后没有外部相同的关键词,则不能造成间隙。注意,用于关键词删除的间隙检测算法与用于关键词插入的间隙检测算法相反。
删除语句可以从索引删除一个或多个关键词。如果正从索引删除超过一个关键词,则正被删除的关键词的顺序未被限定,并且,即使删除语句的最终结果是没有间隙的索引,删除语句也可以引入临时间隙。为此原因,在整个删除操作完成之前,删除关键词的操作不能抛出错误。
删除索引的最后一个关键词,或者删除针对给定一组的非时间关键词部分的最后一个外部相同的关键词将永远不会造成间隙。可以检测这两种情况,或者在此删除语句期间可以禁用间隙检测。
更新操作
如在关键词删除之后插入不同的关键词一样,处理更新语句。因此,上述用于添加或删除关键词的逻辑在更新操作内发生,并且如果抛出针对间隙的错误,则仅在语句结束时将在关键词的添加或删除期间检测到的任何间隙记录在间隙列表中。
维持操作的临时间隙的列表
通过间隙的时间范围的开始和结束描述间隙。开始和结束值不能为空(NULL),并且不能是负无限大或正无限大。仅可以在未被当前UDI语句删除的两个关键词值之间出现间隙。在一些实施例中,已知间隙的列表被维持为可查询树(诸如二叉树或B树),并且每个间隙列表一次仅可由一个数据库工作单元读取和写入,并且一次将包含用于一个索引的间隙的列表。这避免了多个工作单元干扰彼此的间隙检查。
在添加或删除关键词的操作期间找到间隙的任何时间,可以将间隙条目添加到该间隙列表。间隙条目包括非时间关键词部分、间隙开始时间和间隙结束时间。间隙开始和结束时间由下一个或前一个外部相同的关键词的开始或结束时间以及新添加的或删除的关键词的开始或结束时间确定。
以此方式,间隙列表将用作索引的镜子(mirror)。索引中存在的任何值将不在间隙列表中,并且间隙列表中存在的任何间隙将不出现在索引中。因此,为了最小化这些间隙列表的尺寸,在添加和删除关键词时找到的间隙将与已知间隙组合,或者去除已知间隙,这取决于特定规则。
为了进一步说明这一点,请考虑以下情况A-E,下面将参照附图说明它们。为了下面情况A-E中的示例的目的,假设存在连续(consistent)的索引以及特定范围的时间关键词值,其具有时间开始和结束值T0、T1、T2、T3、T4和T5。时间范围T1->T2被从索引中删除,并被添加到间隙列表中,如图1所示。
情况A:新添加的间隙与现有间隙相邻
如果新添加的间隙与列表中的现有间隙相邻(即,新间隙的KpE等于现有间隙的KpB,和/或新间隙的KpB等于现有间隙的KpE),则一侧或两侧上的间隙将受此间隙的添加的影响。
情况A1:其一个示例是是否从索引删除时间范围T0->T1。间隙列表包含T1->T2,此新间隙与现有间隙相邻且早于现有间隙,但本身在列表中没有更早的间隙。也没有晚于T1的间隙,因此,值T0->T1的删除将使得必须从间隙列表中去除间隙T1->T2,使间隙列表为空。索引此时在其中没有间隙,因为最早的值为T2。因为间隙不能具有无穷大的开始或结束时间,所以如果最早或最后的值被删除,则这具有去除了相邻的已知间隙的效果。图2中示出了更新的索引和间隙列表。
情况A2:现在考虑从索引删除时间范围T2->T3的情况。接着,将现有间隙T1->T2扩展变为从T1->T3的间隙。间隙列表仍然仅具有一个已知间隙,尽管已经从索引中删除了两个关键词值。以此方式,最小数目的间隙被记录在间隙列表中,并且其将永远不大于索引本身中的关键词的数目的一半。图3示出了更新的索引和间隙列表。
情况A3:考虑间隙列表包含两个间隙T1->T2和T3->T4的情况,如图4A中所示。引入新间隙T2->T3,其与间隙列表中的两个间隙都相邻。前一间隙的KpE现在变为后一间隙的KpE,并且后一间隙被从列表中去除,使得间隙列表中留下单个间隙T1->T4,如图4B中所示。
情况B:新添加的间隙没有相邻间隙
如果新添加的间隙在列表中没有相邻间隙,但在列表中存在更早或更晚的外部相同的关键词值,这是一个新间隙。例如,如果从图1中所示的原始索引和间隙列表,要从索引中删除T3-T4,则此间隙将被添加到间隙列表,不会与现有间隙T1->T2组合或修改现有间隙T1->T2,如图5中所示。
情况C:从间隙列表中删除间隙
如果从间隙列表中删除间隙(即,当索引关键词在被删除之后被在相同工作单元内添加回到索引),并且该间隙精确地匹配已知间隙,则从间隙列表去除该间隙。例如,如果现有间隙T1->T2被从如图1所示的间隙列表中删除,则所产生的索引和间隙列表将如图6中的索引和间隙列表。
情况D:新删除的间隙被完全包含在现有间隙内
如果新删除的间隙被完全包含在现有间隙内,则间隙必须被分离为两个,前半个间隙具有与所删除的间隙的KpB相等的KpE,后半个间隙具有与所删除的间隙的KpE相等的KpB。例如,如果间隙列表包含T1->T4,如图7A中所示,并且间隙T2->T3被去除,则间隙列表将包含T1->T2和T3->T4,如图7B中所示。
情况E:新删除的间隙部分包含在现有间隙内
如果新删除的间隙部分包含在现有间隙内,则现有间隙的开始或结束时间必须被修改,效果上缩短了已知间隙。例如,如果间隙列表包含T1->T4,如图8A中所示,并且间隙T3->T4被从列表去除,则现有间隙将变为T1->T3,如图8B中所示。
在操作结束时,通过观察间隙列表并看是否还存在任何元素来检查间隙的存在将很简单。造成间隙的索引操作将被回退,并且在此回退操作期间,可以挂起所有间隙检查,因为回退保证索引回到其原始的连续状态。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
这里使用的术语仅用于描述特定实施例的目的,而不意在限制本发明。如这里所使用的,单数形式也意在包含复数形式,除非上下文清楚表明不是这样。还将理解,词语“包括”和/或“包含”当在该说明书中使用时表示所陈述的特征、数字、步骤、操作、元素和/或组件的存在,但不排除一个或多个其它特征、数字、步骤、操作、元素、组件和/或它们的组合的存在或添加。
权利要求中的所有装置或步骤加功能元素的相应结构、材料、动作和等同体意在包括用于与具体主张的其它权利要求元素组合地执行功能的任何结构、材料或动作。已经为了说明和描述的目的呈现了本发明的描述,但其不意在为是穷举的或者将本发明限制到所公开的形式。对于本领域的技术人员而言,在不偏离本发明的范围和精神的情况下,许多修改和改变是明显的。例如,可以如下建模的间隙列表处理这里所描述的各种实施例:B树、或散列表、或链接列表、或任何Java库(HashMap、TreeMap等)、或XML文件等,如本领域的技术人员所熟悉的。只要遵循所述规则,算法不强制要求间隙列表(或索引或数据库)的实施方式。为了最佳地说明本发明的原理和实际应用,以及为了使本领域的技术人员能够针对具有适合于所想到的特定用途的各种修改的各种实施例而理解本发明,选择和说明了实施例。
Claims (12)
1.一种用于关系数据库中时间唯一索引中的间隙检测的方法,包括:
在关系数据库中提供时间唯一索引,其中所述时间唯一索引包括第一组关键词,其中所述第一组关键词中的每个关键词包括一个或多个非时间关键词部分和指示时间开始值和时间结束值的两个时间关键词部分;以及
响应于接收到与所述关系数据库中的改变的行有关的插入语句、更新语句和删除语句之一,
识别所述时间唯一索引中与所改变的行具有相同非时间关键词部分的行,以及
将所识别的行的时间关键词部分与所改变的行的时间关键词部分进行比较,以确定:所改变的行是否与时间上更早的行和时间上更晚的行都直接相邻,是否在所改变的行和时间上更早的行之间检测到间隙,或者是否在所改变的行与时间上更晚的行之间检测到间隙。
2.如权利要求1所述的方法,还包括:
响应于检测到间隙,将关于所述间隙的数据存储在间隙列表中。
3.如权利要求2所述的方法,还包括:
将所述间隙列表存储在具有访问所述关系数据库中的所述时间唯一索引的权限的代理能够访问的存储器的共享区域中。
4.如权利要求3所述的方法,其中所述间隙列表被作为可查询树而保持在所述存储器中。
5.如权利要求2所述的方法,其中所述间隙列表是链接列表,所述链接列表针对每个被检测的间隙包含以下元素中的一个或多个:表识别符、对象识别符、索引识别符、非时间关键词部分、以及所述间隙的开始和结束时间。
6.如权利要求5所述的方法,还包括:
对所述元素中的至少一些进行散列化,以节省存储器中的空间。
7.如权利要求2所述的方法,还包括:
响应于接收到与所述关系数据库中的改变的行有关的插入语句、更新语句和删除语句之一,搜索所述间隙列表,以确定所述语句执行的操作是否造成了间隙。
8.如权利要求7所述的方法,其中
在针对延迟的唯一性索引的唯一性违反检查时,执行所述间隙列表的搜索;以及
响应于确定所述操作造成了间隙,回退造成所述间隙的所述操作。
9.如权利要求2所述的方法,其中
所述间隙列表一次仅能够由一个数据库工作单元读取和写入;以及
所述间隙列表一次仅包含用于一个时间唯一索引的间隙。
10.如权利要求2所述的方法,还包括:
当新识别的间隙被添加到所述间隙列表时,根据一组预定规则,通过组合一个或多个间隙或通过去除已知间隙来减小所述间隙列表的尺寸。
11.一种用于关系数据库中时间唯一索引中的间隙检测的系统,包括用于实现权利要求1-10的任意方法的任意步骤的装置。
12.一种用于关系数据库中时间唯一索引中的间隙检测的系统,包括:
数据储存器,可操作来存储关系数据库,所述关系数据库包括时间唯一索引,所述时间唯一索引具有第一组关键词,其中所述第一组关键词中的每个关键词包括一个或多个非时间关键词部分和指示时间开始值和时间结束值的两个时间关键词部分;以及
服务器计算机,可操作来控制所述关系数据库并可操作来执行用于处理对来自所述关系数据库中的数据的用户查询的方法动作,所述方法动作包括:
响应于接收到与所述关系数据库中的改变的行有关的插入语句、更新语句和删除语句之一,
通过所述服务器计算机识别所述时间唯一索引中与所改变的行具有相同非时间关键词部分的行,以及
通过所述服务器计算机将所识别的行的时间关键词部分与所改变的行的时间关键词部分进行比较,以确定:所改变的行是否与时间上更早的行和时间上更晚的行都直接相邻,是否在所改变的行和时间上更早的行之间检测到间隙,或者是否在所改变的行与时间上更晚的行之间检测到间隙。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201213589316A | 2012-08-20 | 2012-08-20 | |
US13/589,316 | 2012-08-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631843A CN103631843A (zh) | 2014-03-12 |
CN103631843B true CN103631843B (zh) | 2017-03-01 |
Family
ID=50100819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310363334.0A Expired - Fee Related CN103631843B (zh) | 2012-08-20 | 2013-08-20 | 关系数据库中时间唯一索引中的间隙检测的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8909681B2 (zh) |
JP (1) | JP6202929B2 (zh) |
CN (1) | CN103631843B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042929B2 (en) * | 2014-09-09 | 2021-06-22 | Oracle Financial Services Software Limited | Generating instruction sets implementing business rules designed to update business objects of financial applications |
CN104391690B (zh) * | 2014-11-04 | 2019-06-11 | 中国石油天然气股份有限公司 | 一种应用开发系统及方法 |
CN105718491A (zh) | 2014-12-04 | 2016-06-29 | 阿里巴巴集团控股有限公司 | 数据库之间更新的方法及其装置 |
JP7343348B2 (ja) | 2019-10-07 | 2023-09-12 | 株式会社日立製作所 | プログラミング支援装置及びプログラミング支援方法 |
AU2021470113A1 (en) * | 2021-10-20 | 2024-01-18 | Paypal, Inc. | Database management using sort keys |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488134A (zh) * | 2008-01-16 | 2009-07-22 | 诺基亚西门子通信有限责任两合公司 | 数据库系统的复制环境内的高性能修改事务的方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0822405A (ja) * | 1994-07-07 | 1996-01-23 | Toshiba Corp | リレーショナルデータベースの管理システム |
JPH10301824A (ja) * | 1997-04-25 | 1998-11-13 | Nippon Telegr & Teleph Corp <Ntt> | 情報管理データが記録されているコンピュータ読み取り可能な記録媒体および情報管理システム |
US6684215B1 (en) | 2000-06-20 | 2004-01-27 | International Business Machines Corporation | Technique for enforcing temporal uniqueness in an object/relational database management system environment |
US20060277534A1 (en) | 2005-06-07 | 2006-12-07 | Atsushi Kasuya | Evaluation of a temporal description within a general purpose programming language |
JP5383117B2 (ja) * | 2008-08-21 | 2014-01-08 | キヤノン株式会社 | 記録装置及びその制御方法、並びに、プログラム |
US8219522B2 (en) * | 2010-06-29 | 2012-07-10 | Asserted Versioning, Llc | Management of temporal data by means of a canonical schema |
US9104713B2 (en) | 2011-10-05 | 2015-08-11 | International Business Machines Corporation | Managing a temporal key property in a database management system |
-
2013
- 2013-03-04 US US13/783,422 patent/US8909681B2/en not_active Expired - Fee Related
- 2013-08-05 JP JP2013162531A patent/JP6202929B2/ja not_active Expired - Fee Related
- 2013-08-20 CN CN201310363334.0A patent/CN103631843B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488134A (zh) * | 2008-01-16 | 2009-07-22 | 诺基亚西门子通信有限责任两合公司 | 数据库系统的复制环境内的高性能修改事务的方法及系统 |
Non-Patent Citations (4)
Title |
---|
Managing time in DB2 with temporal consistency;Matthias Nicola et al.;《http://www.ibm.com/developerworks/data/library/techarticle/dm-1207db2temporalintegrity/》;20120612;第3页第8-9行,第6页第29-31行,第7页第5-6段,第8页第2段,清单2,清单6 * |
Temporal Data Modeling and Integrity Constraints in Relational Databases;Abdullah Uz Tansel;《Computer and information Sciences-ISCIS 2004》;20041231;第3280卷;第459-469页 * |
一种可行的时态数据库索引技术;刘云生 等;《计算机应用研究》;20061231(第10期);63-65 * |
时态XML模型中的一致性问题和基于B树索引的研究;张玉萍;《中国优秀硕士学位论文全文数据库-信息科技辑》;20100915(第9期);I138-419 * |
Also Published As
Publication number | Publication date |
---|---|
JP6202929B2 (ja) | 2017-09-27 |
US20140052703A1 (en) | 2014-02-20 |
CN103631843A (zh) | 2014-03-12 |
JP2014038615A (ja) | 2014-02-27 |
US8909681B2 (en) | 2014-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572484B2 (en) | Duplicate reduction or elimination with hash join operations | |
CN103631843B (zh) | 关系数据库中时间唯一索引中的间隙检测的方法和系统 | |
US7890497B2 (en) | Using estimated cost to schedule an order for refreshing a set of materialized views (MVS) | |
US10417265B2 (en) | High performance parallel indexing for forensics and electronic discovery | |
US8478742B2 (en) | Using estimated cost to refresh a set of materialized views (MVS) | |
US7734602B2 (en) | Choosing whether to use a delayed index maintenance depending on the portion of the materialized view (MV) changed | |
US20130191336A1 (en) | Cross-acl multi-master replication | |
KR101496179B1 (ko) | 데이터 부재 태깅 기반의 정보 검색 시스템 및 방법 | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
US7117197B1 (en) | Selectively auditing accesses to rows within a relational database at a database server | |
US20130311517A1 (en) | Representing Incomplete and Uncertain Information in Graph Data | |
Shah et al. | Association rule hiding by heuristic approach to reduce side effects & hide multiple RHS items | |
US10133768B2 (en) | Latest external dependee entity in transaction record | |
US20140229496A1 (en) | Information processing device, information processing method, and computer program product | |
Zakerzadeh et al. | Delay-sensitive approaches for anonymizing numerical streaming data | |
US10509767B2 (en) | Systems and methods for managing snapshots of a file system volume | |
US11003540B2 (en) | Method, server, and computer readable medium for index recovery using index redo log | |
US10102251B2 (en) | Lockless open collection data structure | |
GB2459551A (en) | Federated Configuration Management Database for reconciling attribute information | |
Zhang et al. | Probabilistic n-of-N skyline computation over uncertain data streams | |
US20160306659A1 (en) | Processing of data stream collection record sequence | |
Altowim et al. | ProgressER: adaptive progressive approach to relational entity resolution | |
Huang et al. | US-Rule: Discovering utility-driven sequential rules | |
Hikmawati et al. | How to determine minimum support in association rule | |
US8775342B2 (en) | Incremental context accumulating systems with information co-location for high performance and real-time decisioning systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20200820 |