序列生成方法与设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种序列生成的技术。
背景技术
序列是数据库应用中广泛使用的一项技术,用于生成非重复的字段,主要用来生成数据库中数据表的主键,但是现有的序列生成只是在单机中实现的,而随着数据库技术的发展,分布式数据库由于其可靠性高、可用性好、体系结构灵活、更适合分布式的管理与控制等优点得到了广泛应用,因此,能够在分布式数据库中实现序列的生成具有重要的意义,而现有技术中并没有在分布式数据库中实现序列生成的方法。
发明内容
本申请的目的是提供一种序列生成的方法与设备。
根据本申请的一个方面,提供了一种在协调设备分配序列值的方法,其中,所述协调设备用于协调向多个节点设备分配序列值,该方法包括:
在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求;
基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。
进一步地,所述序列值请求包含序列的自增值、起始值、最大值、最小值。
进一步地,所述序列值请求还包括序列的缓存值,其中,所述基于所述序列值请求,向所述第一节点设备分配序列值包括:
根据所述自增值及缓存值为所述第一节点设备分配序列值,其中,所述序列值满足所述起始值、最大值与最小值的设定范围。
根据本申请的另一方面,还提供了一种在第一节点设备的序列生成方法,其中,所述第一节点设备中存储有待生成序列的数据,所述第一节点设备用于为所述数据生成序列,该方法包括:
向协调设备发送序列值请求;
接收所述协调设备基于所述序列值请求分配的序列值;
基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
进一步地,所述序列值请求包含序列的自增值、起始值、最大值、最小值。
进一步地,所述序列值请求还包括序列的缓存值,其中,所述接收所述协调设备基于所述序列值请求分配的序列值还包括:对所述序列值进行缓存存储,生成缓存序列值。
进一步地,所述基于所述序列值执行序列操作,以生成与所述序列值对应的序列包括:
从所述缓存序列值中获取序列值,并基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
根据本申请的再一方面,还提供了一种分配序列值的协调设备,其中,所述协调设备用于协调向多个节点设备分配序列值,该设备包括:
获取装置,用于在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求;
分配装置,用于基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。
进一步地,所述序列值请求包含序列的自增值、起始值、最大值、最小值。
进一步地,所述序列值请求还包括序列的缓存值,其中,所述分配装置用于:根据所述自增值及缓存值为所述第一节点设备分配序列值,其中,所述序列值满足所述起始值、最大值与最小值的设定范围。
根据本申请的又一方面,还提供了一种序列生成的第一节点设备,其中,所述第一节点设备中存储有待生成序列的数据,所述第一节点设备用于为所述数据生成序列,该设备包括:
发送装置,用于向协调设备发送序列值请求;
接收装置,用于接收所述协调设备基于所述序列值请求分配的序列值;
生成装置,用于基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
进一步地,所述序列值请求包含序列的自增值、起始值、最大值、最小值。
进一步地,所述序列值请求还包括序列的缓存值,其中,所述接收装置还用于:对所述序列值进行缓存存储,生成缓存序列值。
进一步地,所述生成装置用于:从所述缓存序列值中获取序列值,并基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
与现有技术相比,本申请通过协调设备在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求,然后基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求,所述第一节点设备可以基于获取到的所述序列值执行序列操作,以生成与所述序列值对应的序列。通过这种方式实现了在分布式数据库中生成序列,且能够保证序列的非重复性。
而且,本申请中所述序列值请求还包括序列的缓存值,所述第一节点设备会获取到缓存值个序列值,则所述第一节点设备会对所述序列值进行缓存存储,生成缓存序列值,然后从所述缓存序列值中获取序列值,并基于所述序列值执行序列操作,以生成与所述序列值对应的序列。这种方式,通过获取多个序列值缓存到本地,当需要序列值时从本地获取即可,而不需要每次都要向协调设备获取,从而缓解了网络通信的损耗,并加快了数据库序列操作的执行速度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本申请的一种序列生成的实施环境示意图;
图2示出根据本申请一个方面的一种在协调设备分配序列值的方法流程图;
图3示出根据本申请另一个方面的一种在第一节点设备的序列生成方法;
图4示出根据本申请又一方面的一种分配序列值的设备示意图;
图5示出根据本申请再一方面的一种序列生成方法的设备示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请的一种序列生成的实施环境示意图。其中,所述设备1为协调设备,所述协调设备可以为能够实现为多个节点设备分配序列值的网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;其中,云由基于云计算(CloudComputing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机;优选地,所述协调设备为分布式数据库中的主节点设备,例如,可以为实现统一协调调度的主服务器或者集成在主服务器上的模块。所述第一节点设备和其他节点设备为分布式数据库中存储数据的子节点设备,所述子节点设备可以由一个或多个计算机组成。具体地,所述第一节点设备或者其他节点设备向所述设备1发送序列值请求,并接收所述设备1基于所述序列值请求分配的序列值。
图2示出根据本申请一个方面的一种在协调设备分配序列值的方法,其中,所述协调设备用于协调向多个节点设备分配序列值,该方法包括:
S21在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求;
S22基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。
在该实施例中,在所述步骤S21中,在访问状态为未锁定状态时,所述协调设备获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求。在此,所述协调设备用于向多个节点设备分配序列值,因此会接收到多个节点设备发送的序列值请求,为了避免多个请求之间的冲突,所述协调设备会按照时间先后顺序将这些请求进行排序,而且在处理某个节点设备的序列值请求时,会将访问状态设定为锁定状态,这样可以拒绝处理其他节点设备发送的序列值请求,而当处理完该节点设备的序列值请求后,会将访问状态设定为未锁定状态,这样所述协调设备可以从序列值请求队列中获取下一个要处理的序列值请求,通过这种方式,避免了多个序列值请求之间的冲突。
继续在该实施例中,在所述步骤S22中,所述协调设备基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。优选地,其中,所述序列值请求包含序列的自增值、起始值、最大值、最小值。在该实施例中,所述协调设备基于序列的自增值、起始值、最大值、最小值为所述第一节点设备分配序列值,比如一个序列自增值为1,最小值为1,起始值为3,最大值为5,且这个序列被设置为可循环,则当所述第一节点设备向所述协调设备请求一个序列值时,当所述第一节点设备为第一个向所述协调设备请求序列值的节点设备时,所述第一节点设备会获取到序列值3,而其他节点设备会顺次获取到序列值4、5、1、2、3、4、5……等等。
其中,所述序列值请求还包括序列的缓存值,其中,所述基于所述序列值请求,向所述第一节点设备分配序列值包括:根据所述自增值及缓存值为所述第一节点设备分配序列值,其中,所述序列值满足所述起始值、最大值与最小值的设定范围。在该实施例中,所述序列值请求中增加了缓存值,这样所述第一节点设备可以一次向所述协调设备请求与所述缓存值相等的数目的序列值,例如,缓存值为3,则所述第一节点设备可以一次请求3个序列值,这种方式能够减少数据库序列操作引起的计算机网络通信的代价,而且提高序列生成的效率。
图3示出根据本申请另一个方面的一种在第一节点设备的序列生成方法,其中,所述第一节点设备中存储有待生成序列的数据,所述第一节点设备用于为所述数据生成序列,该方法包括:
S31向协调设备发送序列值请求;
S32接收所述协调设备基于所述序列值请求分配的序列值;
S33基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
在该实施例中,在所述步骤S31中,所述第一节点设备向协调设备发送序列值请求,在此,所述序列值请求可以由主节点发送的信息生成,例如,当用户要为数据生成序列时,主节点可以获取用户关于序列的设置信息,该序列值设置信息中包括但不限于序列值的自增值、起始值、最大值、最小值等,当主节点获取到序列值的设置信息会将所述序列值的设置信息发送至各个节点设备,则所述各个节点设备,例如,所述第一节点设备会根据所述序列值的设置信息生成序列值请求,并向所述协调设备发送序列值请求,以获取序列值,在此,所述协调设备可以融合在所述主节点中,也可以是独立的。
继续在该实施例中,在所述步骤S32中,所述第一节点设备接收所述协调设备基于所述序列值请求分配的序列值,具体地,所述第一节点设备与所述协调设备之间建立了网络连接,当所述协调设备为所述第一节点设备分配序列值后,会通过网络连接将所述序列值发送给所述第一节点设备,相应地,所述第一节点设备接收所述序列值。
优选地,其中,所述序列值请求还包括序列的缓存值,其中,所述步骤S32还包括:对所述序列值进行缓存存储,生成缓存序列值。在该情形中,所述序列值请求中除了包含自增值、起始值、最大值、最小值等,还包括序列的缓存值,即所述第一节点设备可以每次向所述协调设备请求多个序列值,当接收到所述协调设备发送的所述多个序列值时,所述第一节点设备可以先将所述多个序列值进行缓存存储,例如,可以在所述第一节点设备上专门设置缓存模块来存储所述序列值。
继续在该实施例中,在所述步骤S33中,基于所述序列值执行序列操作,以生成与所述序列值对应的序列。当所述第一节点设备获取到序列值之后,会执行相应的序列操作,为对应的数据生成与所述序列值对应的序列。优选地,当生成缓存序列值之后,所述第一节点设备会从缓存模块中顺次获取序列值,并基于所述序列值执行序列操作,这种方式,无需每次向所述协调模块请求序列值,而直接在本地的缓存模块中获取,大大提高了生成序列的时间,且节省了通信流量。
与现有技术相比,本申请通过协调设备在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求,然后基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求,所述第一节点设备可以基于获取到的所述序列值执行序列操作,以生成与所述序列值对应的序列。通过这种方式实现了在分布式数据库中生成序列,且能够保证序列的非重复性。
而且,本申请中所述序列值请求还包括序列的缓存值,所述第一节点设备会获取到缓存值个序列值,则所述第一节点设备会对所述序列值进行缓存存储,生成缓存序列值,然后从所述缓存序列值中获取序列值,并基于所述序列值执行序列操作,以生成与所述序列值对应的序列。这种方式,通过获取多个序列值缓存到本地,当需要序列值时从本地获取即可,而不需要每次都要向协调设备获取,从而缓解了网络通信的损耗,并加快了数据库序列操作的执行速度。
图4示出根据本申请一个方面的一种分配序列值的协调设备,其中,所述协调设备用于协调向多个节点设备分配序列值,该设备包括:
获取装置41,用于在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求;
分配装置42,用于基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。
在该实施例中,在访问状态为未锁定状态时,所述协调设备的获取装置41获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求。在此,所述协调设备用于向多个节点设备分配序列值,因此会接收到多个节点设备发送的序列值请求,为了避免多个请求之间的冲突,所述协调设备的获取装置41会按照时间先后顺序将这些请求进行排序,而且在处理某个节点设备的序列值请求时,会将访问状态设定为锁定状态,这样可以拒绝处理其他节点设备发送的序列值请求,而当处理完该节点设备的序列值请求后,所述获取装置41会将访问状态设定为未锁定状态,这样所述协调设备的获取装置41可以从序列值请求队列中获取下一个要处理的序列值请求,通过这种方式,避免了多个序列值请求之间的冲突。
继续在该实施例中,所述协调设备的分配装置42基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求。优选地,其中,所述序列值请求包含序列的自增值、起始值、最大值、最小值。在该实施例中,所述协调设备的分配装置42基于序列的自增值、起始值、最大值、最小值为所述第一节点设备分配序列值,比如一个序列自增值为1,最小值为1,起始值为3,最大值为5,且这个序列被设置为可循环,则当所述第一节点设备向所述协调设备请求一个序列值时,当所述第一节点设备为第一个向所述协调设备请求序列值的节点设备时,所述第一节点设备会获取到序列值3,而其他节点设备会顺次获取到序列值4、5、1、2、3、4、5……等等。
其中,所述序列值请求还包括序列的缓存值,其中,所述基于所述序列值请求,向所述第一节点设备的分配装置42分配序列值包括:根据所述自增值及缓存值为所述第一节点设备分配序列值,其中,所述序列值满足所述起始值、最大值与最小值的设定范围。在该实施例中,所述序列值请求中增加了缓存值,这样所述第一节点设备可以一次向所述协调设备的分配装置42请求与所述缓存值相等的数目的序列值,例如,缓存值为3,则所述第一节点设备可以一次请求3个序列值,这种方式能够减少数据库序列操作引起的计算机网络通信的代价,而且提高序列生成的效率。
图5示出根据本申请另一个方面的一种序列生成的第一节点设备,其中,所述第一节点设备中存储有待生成序列的数据,所述第一节点设备用于为所述数据生成序列,该设备包括:
发送装置51,用于向协调设备发送序列值请求;
接收装置52,用于接收所述协调设备基于所述序列值请求分配的序列值;
生成装置53,用于基于所述序列值执行序列操作,以生成与所述序列值对应的序列。
在该实施例中,所述第一节点设备的发送装置51向协调设备发送序列值请求,在此,所述序列值请求可以由主节点发送的信息生成,例如,当用户要为数据生成序列时,主节点可以获取用户关于序列的设置信息,该序列值设置信息中包括但不限于序列值的自增值、起始值、最大值、最小值等,当主节点获取到序列值的设置信息会将所述序列值的设置信息发送至各个节点设备,则所述各个节点设备,例如,主节点会发送给所述第一节点设备,所述第一节点设备会根据所述序列值的设置信息生成序列值请求,所述发送装置51会向所述协调设备发送序列值请求,以获取序列值,在此,所述协调设备可以融合在所述主节点中,也可以是独立的。
继续在该实施例中,所述第一节点设备的接收装置52接收所述协调设备基于所述序列值请求分配的序列值,具体地,所述第一节点设备与所述协调设备之间建立了网络连接,当所述协调设备的分配装置42为所述第一节点设备分配序列值后,会通过网络连接将所述序列值发送给所述第一节点设备,相应地,所述第一节点设备的接收装置52接收所述序列值。
优选地,其中,所述序列值请求还包括序列的缓存值,其中,所述接收装置52还用于:对所述序列值进行缓存存储,生成缓存序列值。在该情形中,所述序列值请求中除了包含自增值、起始值、最大值、最小值等,还包括序列的缓存值,即所述第一节点设备可以每次向所述协调设备请求多个序列值,当接收装置52接收到所述协调设备发送的所述多个序列值时,所述第一节点设备的接收装置还可以先将所述多个序列值进行缓存存储,例如,可以在所述第一节点设备上专门设置缓存模块来存储所述序列值。
继续在该实施例中,所述第一节点设备的生成装置53基于所述序列值执行序列操作,以生成与所述序列值对应的序列。当所述第一节点设备的生成装置53获取到序列值之后,会执行相应的序列操作,为对应的数据生成与所述序列值对应的序列。优选地,当生成缓存序列值之后,所述第一节点设备的生成装置53会从缓存模块中顺次获取序列值,并基于所述序列值执行序列操作,这种方式,无需每次向所述协调模块请求序列值,而直接在本地的缓存模块中获取,大大提高了生成序列的时间,且节省了通信流量。
与现有技术相比,本申请通过协调设备在访问状态为未锁定状态时,获取第一节点设备发送的序列值请求,并将访问状态设定为锁定状态,以拒绝处理其他节点设备发送的序列值请求,然后基于所述序列值请求,向所述第一节点设备分配序列值,并将访问状态设定为未锁定状态,以允许处理其他节点设备发送的序列值请求,所述第一节点设备可以基于获取到的所述序列值执行序列操作,以生成与所述序列值对应的序列。通过这种方式实现了在分布式数据库中生成序列,且能够保证序列的非重复性。
而且,本申请中所述序列值请求还包括序列的缓存值,所述第一节点设备会获取到缓存值个序列值,则所述第一节点设备会对所述序列值进行缓存存储,生成缓存序列值,然后从所述缓存序列值中获取序列值,并基于所述序列值执行序列操作,以生成与所述序列值对应的序列。这种方式,通过获取多个序列值缓存到本地,当需要序列值时从本地获取即可,而不需要每次都要向协调设备获取,从而缓解了网络通信的损耗,并加快了数据库序列操作的执行速度。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。