CN104657364B - 一种日志结构数据库系统查询请求消息处理方法及装置 - Google Patents

一种日志结构数据库系统查询请求消息处理方法及装置 Download PDF

Info

Publication number
CN104657364B
CN104657364B CN201310578867.0A CN201310578867A CN104657364B CN 104657364 B CN104657364 B CN 104657364B CN 201310578867 A CN201310578867 A CN 201310578867A CN 104657364 B CN104657364 B CN 104657364B
Authority
CN
China
Prior art keywords
tuple
affairs
transaction identifier
submit
request message
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.)
Active
Application number
CN201310578867.0A
Other languages
English (en)
Other versions
CN104657364A (zh
Inventor
朱俊华
吴小蓉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310578867.0A priority Critical patent/CN104657364B/zh
Priority to PCT/CN2014/085998 priority patent/WO2015070663A1/zh
Publication of CN104657364A publication Critical patent/CN104657364A/zh
Application granted granted Critical
Publication of CN104657364B publication Critical patent/CN104657364B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Abstract

本发明实施例公开了一种日志结构数据库系统查询请求消息处理方法及装置,该方法包括:接收查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识;根据查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;返回所述查询结果。为了使日志结构数据库支持事务,实现并发控制,本发明从事务的查询过程入手,对元组进行已提交和未提交的区分,同时对于未提交的元组进行进一步判断,即查看处理它的是否是当前事务,从而避免了当前事务将其他事务正在处理的元组也查到,达到了隔离各事务的效果,进而确保了日志结构数据库系统对事务的支持,各事务可以并发执行,互不影响。

Description

一种日志结构数据库系统查询请求消息处理方法及装置
技术领域
本发明实施例一般涉及数据库技术,尤其是涉及一种日志结构数据库系统查询请求消息处理方法及装置。
背景技术
元组是数据库系统中的一个常见概念,指的是数据库表中的一条记录。一个元组可以有多个版本,各版本之间通过主键关联。日志结构数据库系统(log-structureddatabase system)是一种以类似日志的形式来存储元组的数据库系统。在日志结构数据库系统中,新增或修改元组时,新元组或元组的新值都会被追加到新的位置,而不是修改已持久化的元组的原始版本;删除元组时,通过特殊格式的元组版本(例如添加删除标记)来标识该删除动作,在读取数据时,如果发现该删除标记,则自动过滤该元组。
由于使用以上机制,日志结构数据库系统能将对底层存储设备的随机IO(输入输出)操作转化为顺序IO操作。因为硬盘的顺序IO的吞吐量远远超过其随机IO的吞吐量,所以日志结构数据库系统在以硬盘为主要存储设备的系统中能够体现出很高的性能,尤其是写性能。然而,现有的日志结构数据库系统缺乏有效的并发控制机制,在多个请求同时执行时,难以确保数据的一致性。
发明内容
有鉴于此,本发明实施例的目的是提供一种日志结构数据库系统查询请求消息处理方法及装置,以使日志结构数据库系统支持事务,实现并发控制。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面,提供一种日志结构数据库系统查询请求消息处理方法,所述方法包括:
接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务;
根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;
按照第二指定规则返回所述查询结果;
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则。
结合上述第一方面,在第一种可能的实现方式中,通过如下方式判断元组是否已提交:根据元组是否带有已提交标识,判断元组是否已提交;
结合上述第一方面,在第二种可能的实现方式中,通过如下方式判断未提交元组是否含有当前事务的事务标识:根据未提交元组的所属事务标识字段,判断未提交元组是否带有当前事务的事务标识。
结合上述第一方面或第一方面的任一可能的实现方式,在第三种可能的实现方式中,所述第二指定规则包括:
若所述时间戳最新的元组含有删除标识,则将所述查询结果置为空,若所述时间戳最新的元组未含有删除标识,则对所述查询结果不进行处理。
结合上述第一方面,在第四种可能的实现方式中,所述方法还包括以下的元组提交步骤:
接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
结合上述第一方面,在第五种可能的实现方式中,所述方法还包括:
对包含同一主键的未提交元组,按照第三指定规则进行合并。
结合上述第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述第三指定规则包括:
将所述包含同一主键的未提交元组根据各元组所带有的所属事务标识的不同而进行区分;
在带有同一所属事务标识的未提交元组之中,只保留时间戳最新的元组作为合并后的元组。
第二方面,提供一种日志结构数据库系统中查询消息处理装置,所述装置包括:
查询消息接收单元,用于接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务;
查询单元,用于根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;
结果返回单元,用于按照第二指定规则返回所述查询结果;
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则。
结合上述第二方面,在第一种可能的实现方式中,所述装置还包括:
提交指示接收单元,用于接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
提交执行单元,用于在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
结合上述第二方面,在第二种可能的实现方式中,所述装置还包括:
合并单元,用于对包含同一主键的未提交元组,按照第三指定规则进行合并。
本发明的一些有益效果可以包括:
为了使日志结构数据库支持事务,实现并发控制,本发明实施例从事务的查询过程入手,对元组进行已提交和未提交的区分,同时对于未提交的元组进行进一步判断,即查看处理它的是否是当前事务,从而避免了当前事务将其他事务正在处理的元组也查到,达到了隔离各事务的效果,进而确保了日志结构数据库系统对事务的支持,各事务可以并发执行,互不影响。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明元组存储格式修改示意图;
图2是本发明实施例一方法的示例性流程图;
图3是本发明实施例二方法的示例性流程图;
图4是本发明实施例三中元组提交时的格式变换示例图;
图5是本发明实施例四方法的示例性流程图;
图6是本发明实施例五装置的示意图;
图7是本发明实施例的系统架构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了全面理解本发明,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本发明可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
事务在数据库技术领域中是另一个常见概念。事务是构成单一逻辑工作单元的操作集合,换句话说,事务就是一个包含一项或多项操作的集合体,用于完成一个单一的逻辑工作。事务具有多种特性,如原子性(atomicity),即一个事务的所有操作要么全部执行,要么全部不执行;隔离性(isolation),即一个事务的执行不会影响其他并发事务的运行。
并发控制是保证事务可以顺利执行的关键机制之一。并发控制调度多个事务的并发执行,并同时保证这些事务的一致性。发明人在实现本发明的过程中发现,目前的日志结构数据库中缺乏并发控制机制,导致事务无法很好的应用到日志结构数据库中。
根据事务执行的过程,可以将事务划分为事务开始、事务执行、事务提交三个时间阶段。其中事务执行主要由增、删、改、查这四种操作组成。查即对元组的查询,在日志结构数据库中若要实现事务的并发处理,则首先应该对事务的查询过程进行改进,使事务在进行查询时,不会将其他事务正在处理的元组查到,从而确保各事务之间的隔离,进而可以实现多事务的并发执行。
而要对事务的查询过程进行改进,则需要首先修改数据库的数据格式。所以接下来先对本发明实施例中对元组格式所做的修改进行一下说明:
本发明实施例中对元组的存储格式做了如下修改:
第一,为元组增加一个新的字段,即提交标识字段,用于区分已提交和未提交的元组,已提交的元组该字段中会有提交标识,而未提交的元组的该字段中没有提交标识或者带有未提交标识。若元组未提交,则表明该元组处于活跃状态,或者说是不确定状态,因为此时该元组正被某事务处理。若元组已提交,则表明该事务执行成功,该元组的内容已被持久化。
第二,对于未提交元组(即带有未提交标识的元组),增加另一个新的字段,即所属事务标识字段,里面存有该元组所属的事务的事务标识,以表明该元组当前正被该事务操作。事务标识(即事务ID)是用于区分各事务的标识。
具体实施时,可以参见图1所示,图1中上下两个格式均为经过修改后的新元组格式,其中上面的是已提交的,下面的是未提交的。LogicalDeletion为删除标志(0表示未删除,1表示可删除),在新旧格式中都存在。新的元组格式中增加的提交标志为CommitFlag(0表示已提交,1表示未提交)。新的元组格式中增加的事务ID为TxID字段。至于新元组中的其他字段,例如Key表示主键,Time表示时间戳,record表示元组的内容,均与原格式相同,不再赘述。
需要指出的是,在下文S201~S203等步骤中,已经涵盖了元组新格式的特征,而上面之所以专门描述对元组格式的修改,仅仅是为了使本发明实施例更容易理解。
图2为本发明实施例一方法的示例性流程图。
本实施例提供了一种日志结构数据库系统中查询请求消息处理方法,所述方法包括:
S201、接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务。
S202、根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果。
S203、按照第二指定规则返回所述查询结果。
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则。
在本实施例中,较佳的,可以通过如下方式判断元组是否已提交:根据元组是否带有已提交标识,判断元组是否已提交。
当然,在本发明其他某些实施例中,也可以通过其他各种方式指示出一个元组是否已提交(例如直接通过查看元组是否带有事务ID来判断该元组是否已提交),对此本实施并不进行限制,可以在此处使用的这些方式都没有背离本发明的精神和保护范围。
在本实施例或本发明其他某些实施例中,较佳的,可以通过如下方式判断未提交元组是否含有当前事务的事务标识:根据未提交元组的所属事务标识字段,判断未提交元组是否带有当前事务的事务标识。
因为所属事务标识字段中存储有当前操作这个元组的事务标识,所以读取该字段的内容并与查询消息中的事务标识进行比较,即知未提交元组是否含有当前事务的事务标识,也即发出查询消息的事务是否正在操作这个元组。
查询结果的返回方式可以通过第二指定规则来设置,可以根据不同场景或需求而定,所以第二指定规则的具体内容本实施例也不需要进行限制。
在本实施例或本发明其他某些实施例中,较佳的,所述第二指定规则可以包括:
若所述时间戳最新的元组含有删除标识,则将所述查询结果置为空,若所述时间戳最新的元组未含有删除标识,则对所述查询结果不进行处理。
换句话说,当查到的时间戳最新的元组已经被删除,则返回空结果即可,其他情况直接返回查询结果即可。
在本实施例中,为了使日志结构数据库支持事务,实现并发控制,从事务的查询过程入手,对元组进行已提交和未提交的区分,同时对于未提交的元组进行进一步判断,即查看处理它的是否是当前事务,从而避免了当前事务将其他事务正在处理的元组也查到,达到了隔离各事务的效果,进而确保了日志结构数据库系统对事务的支持,各事务可以并发执行,互不影响。
图3为本发明实施例二方法的示例性流程图。
本实施例基于实施例一,是结合具体场景对实施例一所做的进一步细化。包括如下步骤:
S301、接收查询请求(包含待查询主键和待查询事务ID)。
S302、是否查找到下一个具有与待查询主键相同主键的元组,若是则进入S303,若否则进入S307。
S303、判断当前查到的元组是否已提交,若是则进入S304,若否则进入S306。
S304、判断当前查到的元组的时间戳与待输出元组相比,是否更新,若是则进入S305,若否则跳回S302。
S305、将当前查到的元组作为待输出元组,并跳回S302。
S306、判断当前查到的元组的事务ID是否与待查询事务ID相同,若是则进入S304,若否则跳回S302。
S307、判断得到的待输出元组是否含有删除标记,若否则进入S308,若是则进入S309。
S308、输出待输出元组。
S309、输出空值。
在本实施例中,为了使日志结构数据库支持事务,实现并发控制,从事务的查询过程入手,对元组进行已提交和未提交的区分,同时对于未提交的元组进行进一步判断,即查看处理它的是否是当前事务,从而避免了当前事务将其他事务正在处理的元组也查到,达到了隔离各事务的效果,进而确保了日志结构数据库系统对事务的支持,各事务可以并发执行,互不影响。
图4为本发明实施例三中元组提交时的格式变换示例图。
事务成功执行完之后需要提交,事务的提交也即事务所操作的元组的提交。本实施例基于上述实施例,是对上述实施例的进一步补充。具体来讲,为了进一步对日志结构数据库进行优化,本实施例对上述方法后续的未提交元组的提交步骤进行了设计。
在本实施例中,所述方法还包括以下的元组提交步骤:
接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
因为元组提交之后就相当于变成了一份稳定的数据,不再与事务绑定,可以不再需要区分事务ID,也不需再根据事务ID进行查询,所以本实施例在图4最下面一条元组即已提交元组中删除了事务ID,这样有利于减少存储空间。同时,新增的那条待删除标记的元组,在未来一些场合下可以与提交前的那条元组对消,从而进一步减少对内存或磁盘的空间占用。
此外,为了进一步减小对存储空间的占用,提高查询效率,还可以在上述实施例方法基础上增加元组的合并步骤。在本发明实施例四中,所述方法还可以包括:
对包含同一主键的未提交元组,按照第三指定规则进行合并。
元组合并时的一个基本原则是同一主键的元组才能合并。在本实施例中。对于已提交元组,直接按照主键进行合并即可,不再赘述。而对于未提交的元组的合并,则需要增加一个原则,即带有同一事务ID的元组才能合并。故在本实施例或本发明其他某些实施例中,较佳的,所述第三指定规则可以包括:
将所述包含同一主键的未提交元组根据各元组所带有的所属事务标识的不同而进行区分;
在带有同一所属事务标识的未提交元组之中,只保留时间戳最新的元组作为合并后的元组。
经过这样的合并,可以过滤掉历史数据,保留最新的数据。
另外所述合并可以在预设合并规则满足时执行,例如定期合并。
下面结合具体场景对本实施例进行进一步的说明。
图5是本发明实施例四方法的示例性流程图。该图描述了对同一主键下的元组的遍历过程:对于已提交的元组,筛选出一个时间戳最新的元组,然后记录到保留列表(相当于一个中转列表)中,对于未提交的元组,则按照事务ID进行划分,同一事务ID下筛选出一个时间戳最新的元组,然后同样记录到保留列表中,最后将得到的保留列表写到磁盘上一个新的存储区域(sstable)中。具体包括如下步骤:
S501、是否查找到主键相同的下一个元组。也即判断同一主键下的元组是否遍历完毕。若是,则将查找到的元组作为当前元组并进入S502,若否则进入S509。
S502、判断当前元组是否已提交,若是则进入S503,若否则进入S505。
S503、判断当前元组的时间戳是否比保留列表中的已提交元组的时间戳更新,若是则进入S504,若否,则跳回S501继续向下遍历。
S504、将当前元组替换保留列表中的已提交元组,并跳回S501继续向下遍历。
S505、判断当前元组的事务ID是否已在保留列表中出现,若是则进入S506,若否则进入S508。
S506、判断当前元组的时间戳是否比保留列表中的同事务ID的元组的时间戳更新,若是进入S507,若否则跳回S501。
S507、用当前元组替换保留列表中同事务ID的元组,并跳回S501。
S508、将当前元组加入到保留列表中,并跳回S501。
S509、删除保留列表中带有删除标记的元组。
S510、将保留列表写到新的sstable。
S511、继续对下一主键进行遍历。
经过本实施例中的合并步骤,对于同一主键的元组可以过滤掉众多时间戳旧的版本,从而节省存储空间,提高查询效率。
图6是本发明实施例五装置的示意图。
本实施例基于上述方法实施例,提供了一种日志结构数据库系统中查询消息处理装置600,所述装置600包括:
查询消息接收单元601,用于接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务;
查询单元602,用于根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;
结果返回单元603,用于按照第二指定规则返回所述查询结果;
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则。
在本实施例或本发明其他某些实施例中,所述装置600还可以包括:
提交指示接收单元,用于接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
提交执行单元,用于在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
在本实施例或本发明其他某些实施例中,所述装置600还可以包括:
合并单元,用于对包含同一主键的未提交元组,按照第三指定规则进行合并。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
图7是本发明实施例的系统架构示意图,主要包括事务管理器、日志管理器、Memtable和SStable。
事务管理器用于维护所有事务的信息,包括活跃事务列表,事务ID的分配等等;日志管理器用于管理并操作日志;Memtable和SStable用于存储元组,Memtable是存储元组时的临时数据区(如内存),SStable是存储元组时的永久数据区(如磁盘);日志管理器和Memtable、SStable共同构成了存储引擎。
事务读数据时,会从Memtable和SStable中读取。事务写数据时,会向Memtable中写,而不会向SStable中写。Memtable中的数据会根据一些规则(如定期)向SStable中转移。
事务向Memtable中写数据时还会写一份到日志管理器,以作为备份,这样当Memtable崩溃时,便可以从日志管理器中恢复数据。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM、RAM、磁碟、光盘等。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种日志结构数据库系统查询请求消息处理方法,其特征在于,所述方法包括:
接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务;
根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;
按照第二指定规则返回所述查询结果;
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则;
所述第二指定规则包括:
若所述时间戳最新的元组含有删除标识,则将所述查询结果置为空,若所述时间戳最新的元组未含有删除标识,则对所述查询结果不进行处理。
2.根据权利要求1所述的方法,其特征在于,通过如下方式判断元组是否已提交:根据元组是否带有已提交标识,判断元组是否已提交。
3.根据权利要求1所述的方法,其特征在于,通过如下方式判断未提交元组是否含有当前事务的事务标识:根据未提交元组的所属事务标识字段,判断未提交元组是否带有当前事务的事务标识。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述第二指定规则包括:
若所述时间戳最新的元组含有删除标识,则将所述查询结果置为空,若所述时间戳最新的元组未含有删除标识,则对所述查询结果不进行处理。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括以下的元组提交步骤:
接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对包含同一主键的未提交元组,按照第三指定规则进行合并。
7.根据权利要求6所述的方法,其特征在于,所述第三指定规则包括:
将所述包含同一主键的未提交元组根据各元组所带有的所属事务标识的不同而进行区分;
在带有同一所属事务标识的未提交元组之中,只保留时间戳最新的元组作为合并后的元组。
8.一种日志结构数据库系统中查询消息处理装置,其特征在于,所述装置包括:
查询消息接收单元,用于接收针对元组的查询请求消息,所述查询请求消息中包含了待查询的元组的主键和当前事务的事务标识,所述当前事务为发出所述查询请求消息的事务;
查询单元,用于根据所述查询请求消息,在包含所述主键且满足第一指定规则的元组中,获取时间戳最新的元组作为查询结果;
结果返回单元,用于按照第二指定规则返回所述查询结果;
其中,所述第一指定规则包括:
若元组已提交,则满足所述第一指定规则;若元组未提交,则判断元组是否带有当前事务的事务标识,若带有当前事务的事务标识则也满足所述第一指定规则;
所述第二指定规则包括:
若所述时间戳最新的元组含有删除标识,则将所述查询结果置为空,若所述时间戳最新的元组未含有删除标识,则对所述查询结果不进行处理。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
提交指示接收单元,用于接收元组提交指示信息,所述元组提交指示信息所针对的未提交元组带有未提交标识及所属事务标识;
提交执行单元,用于在所述数据库系统中新增两条指定元组以完成所述提交;
其中,所述两条指定元组包括:在所述未提交元组基础上增加了删除标识的元组,以及,在所述未提交元组基础上删除了所属事务标识并用已提交标识替换了未提交标识的元组。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
合并单元,用于对包含同一主键的未提交元组,按照第三指定规则进行合并。
CN201310578867.0A 2013-11-18 2013-11-18 一种日志结构数据库系统查询请求消息处理方法及装置 Active CN104657364B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310578867.0A CN104657364B (zh) 2013-11-18 2013-11-18 一种日志结构数据库系统查询请求消息处理方法及装置
PCT/CN2014/085998 WO2015070663A1 (zh) 2013-11-18 2014-09-05 一种日志结构数据库系统查询请求消息处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310578867.0A CN104657364B (zh) 2013-11-18 2013-11-18 一种日志结构数据库系统查询请求消息处理方法及装置

Publications (2)

Publication Number Publication Date
CN104657364A CN104657364A (zh) 2015-05-27
CN104657364B true CN104657364B (zh) 2018-02-23

Family

ID=53056737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310578867.0A Active CN104657364B (zh) 2013-11-18 2013-11-18 一种日志结构数据库系统查询请求消息处理方法及装置

Country Status (2)

Country Link
CN (1) CN104657364B (zh)
WO (1) WO2015070663A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649301B (zh) * 2015-10-28 2020-09-11 北京国双科技有限公司 数据查询的方法、装置及系统
CN106649304A (zh) * 2015-10-28 2017-05-10 北京国双科技有限公司 数据查询的方法、装置及系统
US11244384B1 (en) * 2016-11-30 2022-02-08 Intuit Inc. Method and transaction tracking service for surfacing rule-creation actions
WO2018233820A1 (en) * 2017-06-21 2018-12-27 Huawei Technologies Co., Ltd. SYSTEMS AND METHODS FOR MANAGING JOURNAL STRUCTURE
CN109815213A (zh) * 2018-12-20 2019-05-28 武汉璞华大数据技术有限公司 一种Append-Only数据库上删除和修改数据的方法及系统
CN109710388B (zh) * 2019-01-09 2022-10-21 腾讯科技(深圳)有限公司 数据读取方法、装置、电子设备以及存储介质
CN109739935B (zh) * 2019-01-09 2022-12-30 腾讯科技(深圳)有限公司 数据读取方法、装置、电子设备以及存储介质
US11080257B2 (en) * 2019-05-13 2021-08-03 Snowflake Inc. Journaled tables in database systems
CN111190935B (zh) * 2019-08-27 2022-10-14 中国人民大学 数据读取方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110074A (zh) * 2007-01-30 2008-01-23 浪潮乐金信息系统有限公司 基于文件系统缓存的数据加速查询方法
CN102142024A (zh) * 2010-02-01 2011-08-03 微软公司 在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN103221949A (zh) * 2010-07-27 2013-07-24 甲骨文国际公司 Mysql数据库的异构的基于日志的复制
CN103299267A (zh) * 2010-12-20 2013-09-11 销售力网络公司 用于执行多租户存储中的交叉存储连接的方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281023B2 (en) * 2003-12-15 2007-10-09 At&T Knowledge Ventures, L.P. Architecture of database application with robust online recoverability
CN101807210B (zh) * 2010-04-26 2015-04-01 中兴通讯股份有限公司 一种数据库间数据同步的方法、系统及设备
CN103345470B (zh) * 2013-05-31 2016-05-25 深圳市沃信科技有限公司 一种数据库容灾方法、系统及服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110074A (zh) * 2007-01-30 2008-01-23 浪潮乐金信息系统有限公司 基于文件系统缓存的数据加速查询方法
CN102142024A (zh) * 2010-02-01 2011-08-03 微软公司 在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退
CN103221949A (zh) * 2010-07-27 2013-07-24 甲骨文国际公司 Mysql数据库的异构的基于日志的复制
CN103299267A (zh) * 2010-12-20 2013-09-11 销售力网络公司 用于执行多租户存储中的交叉存储连接的方法和系统
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法

Also Published As

Publication number Publication date
WO2015070663A1 (zh) 2015-05-21
CN104657364A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN104657364B (zh) 一种日志结构数据库系统查询请求消息处理方法及装置
CN103635902B (zh) 引用计数传播
CN103473251B (zh) 在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统
CN105793843B (zh) 用于oltp和分析工作量的用于内存数据库的组合行和列式存储
CN104536904B (zh) 一种数据管理的方法、设备与系统
CN107423422B (zh) 基于网格的空间数据分布式存储及检索方法和系统
CN109923534A (zh) 对具有未提交事务的数据库记录的多版本并发控制
CN102682071B (zh) 用于主存储器数据库的高效的多版本锁定
CN105630847B (zh) 数据存储方法、数据查询方法、装置及系统
CN105393249B (zh) 针对查询优化的范围分区统计数据的增量式维护
CN103810237A (zh) 数据管理方法和系统
CN109101516B (zh) 一种数据查询方法和服务器
CN104035925B (zh) 数据存储方法、装置和存储系统
CN104641650B (zh) 在数据存储子系统中的源引用复制
CN102902763B (zh) 关联、检索信息处理数据和处理信息任务的方法及装置
CN102725752A (zh) 处理脏数据的方法及装置
CN106682042B (zh) 一种关系数据缓存及查询方法及装置
CN104854587B (zh) 用于维护主动查询的方法、系统和计算机可读存储介质
CN109643309A (zh) 用于对跳跃表数据结构执行范围查询的系统和方法
CN102508913A (zh) 一种带有数据立方存储索引结构的云计算系统
CN102523251A (zh) 对海量数据处理的云存储架构及应用该架构的云存储平台
CN103186622A (zh) 一种全文检索系统中索引信息的更新方法以及装置
CN103793493A (zh) 一种处理车载终端海量数据的方法和系统
CN108897859A (zh) 一种元数据检索方法、装置、设备及计算机可读存储介质
CN104951464A (zh) 数据存储方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant