买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于多版本数据库选取和更新时间戳的方法和系统_上海交通大学_201811640899.8 

申请/专利权人:上海交通大学

申请日:2018-12-29

公开(公告)日:2020-09-04

公开(公告)号:CN109739836B

主分类号:G06F16/21(20190101)

分类号:G06F16/21(20190101)

优先权:

专利状态码:有效-授权

法律状态:2020.09.04#授权;2019.06.04#实质审查的生效;2019.05.10#公开

摘要:本发明提供了一种用于多版本数据库选取和更新时间戳的方法和系统,初始化时间戳:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。和传统的时间戳相比,即能够表现更新和获取时间戳上的物理时间关系,也能够表现逻辑关系。在逻辑时钟更新的过程中,不会对物理时钟产生影响。

主权项:1.一种用于多版本数据库选取和更新时间戳的方法,其特征在于,包括:初始化时间戳步骤:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳步骤:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分被加上1;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分被加上1。

全文数据:用于多版本数据库选取和更新时间戳的方法和系统技术领域本发明涉及数据库技术领域,具体地,涉及一种用于多版本数据库选取和更新时间戳的方法和系统,适用于数据库数据存储以及数据处理。背景技术现代数据库通常为单个数据储存多个版本,这样对同一个数据的访问可以在多个版本的数据上并行的处理,提升系统的性能。数据的版本号和如何访问特定版本的数据由一个时间戳决定,数据在更新的时候会收到一个新的时间戳作为修改的版本;数据访问的时候会根据一个时间戳找到离这个时间戳最近的数据版本。时钟的获取和更新必须得同步,不然会给应用造成一致性问题。在单台计算机中,计算机的物理时钟Physicaltime可以用来作为时间戳的选取。物理时钟的获取和更新由计算机硬件完成。然而,在分布式系统中,不同机器间的时钟的同步无法被保证。因此,分布式系统中通常使用一台机器管理集群的时间戳。这样保证了时钟的同步,然而所有的时钟更新和获取都需要和特定的时钟服务器通信,影响了整个系统的性能,同时限制了系统的可扩展性。使用逻辑时钟可以解决分布式环境下时间戳的不一致问题,逻辑时钟在应用通信时同步,这样保证了时间戳的一致性。然而,逻辑时钟无法保证时间戳获取和获取发生的真实时间之间的相对关系。例如,当事件A获取了一个逻辑时钟,在事件A之后的事件B可能获取一个比事件A小的时钟。这样会造成用户体验的下降,比如应用无法读取到数据的最新版本。混合时钟Hybridclock结合了物理时钟和逻辑时钟的特点,利用物理时钟来初始化逻辑时钟,使得逻辑时钟的大小大致体现了事件发生的真实时间。然而,由于逻辑时钟会被频繁更新,这些更新会影响到时钟的物理时钟,使得物理时钟的表示产生不一致,限制了混合时钟的应用。发明内容针对现有技术中的缺陷,本发明的目的是提供一种用于多版本数据库选取和更新时间戳的方法和系统。根据本发明提供的用于多版本数据库选取和更新时间戳的方法,包括:初始化时间戳步骤:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳步骤:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。根据本发明提供的一种用于多版本数据库选取和更新时间戳的系统,包括:初始化时间戳模块:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳模块:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。优选地,所述时间戳的格式是一个8byte的整数。优选地,所述当前机器的机器时钟采用操作系统的函数gettimeofday获取。优选地,所述大小比较是将待更新时间戳与当前时间戳作为整数进行比较。优选地,所述当前时间戳的逻辑时钟部分进行增加是将当前时间戳的逻辑时钟部分增加1。优选地,所述时间戳由物理时钟部分、逻辑时钟部分、空格部分组成,其中,物理时钟部分占48位,逻辑时钟部分占8位,空格部分占8位。与现有技术相比,本发明具有如下的有益效果:利用混合时间戳作为基本的时间戳,使得时间戳能够表示事件物理上的时间顺序和逻辑上的时间顺序;并对时间戳进行填充来保证对时间戳逻辑部分的更新不会影响到时间戳的物理部分。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1为本发明的时间戳的结构关系示意图;图2为本发明的初始化时间戳示意图;图3为本发明的更新时间戳示意图。具体实施方式下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。本发明提出了一种新的混合时钟的表示,获取和更新方法。该方法保证了:在混合时间戳更新的时候,时间戳的逻辑部分不会影响时间戳的物理部分。这样,提出的混合时间戳可以同时准确的体现数据更新获取之间的真实时间关系,同时体现数据更新获取之间的逻辑关系。根据本发明提供的用于多版本数据库选取和更新时间戳的方法,包括:初始化时间戳步骤:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳步骤:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。根据本发明提供的一种用于多版本数据库选取和更新时间戳的系统,包括:初始化时间戳模块:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳模块:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。具体地,所述时间戳的格式是一个8byte的整数。具体地,所述当前机器的机器时钟采用操作系统的函数gettimeofday获取。具体地,所述大小比较是将待更新时间戳与当前时间戳作为整数进行比较。具体地,所述当前时间戳的逻辑时钟部分进行增加是将当前时间戳的逻辑时钟部分增加1。具体地,所述时间戳由物理时钟部分、逻辑时钟部分、空格部分组成,其中,物理时钟部分占48位,逻辑时钟部分占8位,空格部分占8位。本发明提供的用于多版本数据库选取和更新时间戳的系统,可以通过用于多版本数据库选取和更新时间戳的方法的步骤流程实现。本领域技术人员可以将用于多版本数据库选取和更新时间戳的方法理解为所述用于多版本数据库选取和更新时间戳的系统的优选例。本发明是适用于多版本数据库选取和更新时间戳的方法,该方法利用混合时间戳作为基本的时间戳,使得时间戳能够表示事件物理上的时间顺序和逻辑上的时间顺序;并对时间戳进行填充来保证对时间戳逻辑部分的更新不会影响到时间戳的物理部分。在时间戳的获取和更新过程中,能够同时准确的体现数据更新和获取之间的物理时间关系和逻辑关系。下面结合附图对本发明作进一步说明。如图1所示,本发明的时间戳在计算机系统中的具体表示由三部分组成,一个物理时钟部分,一个逻辑时钟部分,以及一部分空格。其中,整个时间戳由一个64位整数表示。物理时钟占48位,空格占8位而逻辑时钟占8位。如图2所示,初始时间戳时,将时间戳的物理部分初始化为当前计算机的物理时钟,并将空格和逻辑部分初始化位0。如图3所示,更新时间戳时,需要根据另一个时间戳来更新。这个实施例中,需要将t0根据t1来更新。本发明首先比较t0和t1的大小,由于时间戳是由一个整数来表示,因此可以直接来进行比较大小。如果需要更新的时间戳t0更大,则t0无需被更新,直接返回即可。如果t0和t1相等,则t0的逻辑部分被加上1,随后返回。如果t0比t1小,则t0被更新到t1,同时t0的逻辑部分被加上1。本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

权利要求:1.一种用于多版本数据库选取和更新时间戳的方法,其特征在于,包括:初始化时间戳步骤:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳步骤:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。2.根据权利要求1所述的用于多版本数据库选取和更新时间戳的方法,其特征在于,所述时间戳的格式是一个8byte的整数。3.根据权利要求1所述的用于多版本数据库选取和更新时间戳的方法,其特征在于,所述当前机器的机器时钟采用操作系统的函数gettimeofday获取。4.根据权利要求1所述的用于多版本数据库选取和更新时间戳的方法,其特征在于,所述大小比较是将待更新时间戳与当前时间戳作为整数进行比较。5.根据权利要求1所述的用于多版本数据库选取和更新时间戳的方法,其特征在于,所述当前时间戳的逻辑时钟部分进行增加是将当前时间戳的逻辑时钟部分增加1。6.根据权利要求1所述的用于多版本数据库选取和更新时间戳的方法,其特征在于,所述时间戳由物理时钟部分、逻辑时钟部分、空格部分组成,其中,物理时钟部分占48位,逻辑时钟部分占8位,空格部分占8位。7.一种用于多版本数据库选取和更新时间戳的系统,其特征在于,包括:初始化时间戳模块:将时间戳的物理时钟部分设置为当前机器的机器时钟,将时间戳的逻辑时钟部分置为0;更新时间戳模块:将待更新时间戳与当前时间戳进行大小比较,若待更新时间戳小于当前时间戳,则不进行时间戳更新;若待更新时间戳等于当前时间戳,则不进行时间戳更新,对当前时间戳的逻辑时钟部分进行增加;否则,则用待更新时间戳替换当前时间戳,且当前时间戳的逻辑时钟部分进行增加。8.根据权利要求7所述的用于多版本数据库选取和更新时间戳的系统,其特征在于,所述时间戳的格式是一个8byte的整数;所述当前机器的机器时钟采用操作系统的函数gettimeofday获取。9.根据权利要求7所述的用于多版本数据库选取和更新时间戳的系统,其特征在于,所述大小比较是将待更新时间戳与当前时间戳作为整数进行比较;所述当前时间戳的逻辑时钟部分进行增加是将当前时间戳的逻辑时钟部分增加1。10.根据权利要求7所述的用于多版本数据库选取和更新时间戳的系统,其特征在于,所述时间戳由物理时钟部分、逻辑时钟部分、空格部分组成,其中,物理时钟部分占48位,逻辑时钟部分占8位,空格部分占8位。

百度查询: 上海交通大学 用于多版本数据库选取和更新时间戳的方法和系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。