管理请求数据库系统中不存在的索引键的事务技术方案

技术编号:21407062 阅读:19 留言:0更新日期:2019-06-19 09:28
本公开提供了用于管理数据库的索引中的不存在的键的锁的系统、方法和装置。系统可以接收用于访问与索引中的多个键中的任何一个不匹配的第一请求的键的第一事务。系统使用分区函数将第一请求的键分区到第一分区。系统还可以接收用于访问与索引中的多个键中的任何一个都不匹配的第二请求的键的第二事务。系统还使用分区函数将第二请求的键分区到第二分区。仅当第二分区与第一分区不同时,系统才会将锁分配给第二事务。

Managing transactions that do not exist with index keys in the request database system

This disclosure provides systems, methods and devices for managing locks of keys that do not exist in the index of a database. The system can receive a first transaction for accessing the key of a first request that does not match any of the keys in the index. The system uses the partitioning function to partition the key of the first request to the first partition. The system can also receive a second transaction for accessing the key of a second request that does not match any of the keys in the index. The system also partitions the key of the second request to the second partition using the partition function. Only when the second partition is different from the first partition does the system allocate locks to the second transaction.

【技术实现步骤摘要】
【国外来华专利技术】管理请求数据库系统中不存在的索引键的事务相关专利申请的交叉引用本申请要求2016年12月14日提交系列号为62/433,944的美国临时专利申请、2017年1月13日提交的系列号为15/405,841的美国专利申请和2017年1月13日提交的系列号为15/405,846的美国专利申请,题为“用于在数据库中分配锁的系统和方法(SYSTEMSANDMETHODSFORASSIGNINGLOCKSINDATABASES)”的权益和优先权,其中每一个专利都通过引用整体结合于此。
本公开涉及数据库系统领域,并且具体涉及包括索引的事务型数据库系统。
技术介绍
数据库管理系统可以在数据库中存储、处理和保护数据。数据库读取和写入事务被定向到数据库管理系统,数据库管理系统处理事务并在数据库上执行任务以执行接收到的事务。在一些实施方式中,为了维护并发性,数据库管理系统可以向接收到的事务发布锁,以锁定事务需要访问的数据库的一部分。如果事务请求的数据库的一部分已被锁定,则该事务将暂停,直到锁变为可用。一旦事务完成,数据库的该部分就会被解锁。在一些实施方式中,数据库可以是被索引的,其具有多个键(key)和与多个键中的每一个相关联的记录。系统接收的事务可以查询或更新与索引的多个键中的一个或多个键相关联的一个或多个记录。
技术实现思路
根据一个方面,本公开中描述的主题涉及一种数据库管理系统,该系统包括具有索引的存储器,该索引包括多个键和与多个键中的每一个相关联的至少一个记录。该系统还包括可通信地耦合到存储器的控制器,其中控制器被配置为接收用于访问与多个键中的任何一个都不匹配的第一请求的键的第一事务。控制器还被配置为从多个键中确定第一键,其中第一键的值最接近第一请求的键的值,并且是小于和大于第一请求的键的值中的一个。控制器还被配置为使用k分区函数(k-partitionfunction)来将k个分区中的第一分区分配给第一请求的键,并向第一事务发布用于第一分区的第一锁。控制器还被配置为接收用于访问与多个键中的任何一个都不匹配的第二请求的键的第二事务,其中,第二请求的键的值与第一键的值之间的小于或大于关系与第一请求的键的值与第一键的值之间的关系相同。控制器还被配置为使用k分区函数将k个分区中的第二分区分配给第二请求的键。控制器附加地被配置为基于确定第二分区与第一分区不同,向第二事务发布用于第二分区的第二锁。k分区函数可以包括模k函数(modulo-kfunction)或可以将其输入映射到k个分区中的一个的散列函数(hashfunction)。在完成第一事务之前接收第二事务。索引可以是主索引。或者,索引可以是基于主索引的属性形成的辅索引(secondaryindex)。控制器还可以被配置为从多个键中确定第二键。第二键可以具有最接近并且大于第一键的值的值。控制器可以被配置为维护第一键和第二键之间的键值范围的范围锁。第一锁可以是共享锁或独占锁。第一事务可以包括访问除第一请求的键之外的至少一个以上键的请求,并且控制器可以被配置为对包括至少一个以上键的k个分区中的一个或多个发布除第一锁之外的一个或多个锁。根据另一方面,本公开中描述的主题涉及一种用于管理访问数据库的事务的方法。该方法包括接收用于访问索引的第一事务,该索引包括多个键和与多个键中的每一个相关联的至少一个记录,其中第一事务请求访问与多个键中的任何一个都不匹配的第一请求的键。该方法还包括从多个键中确定第一键,其中第一键的值最接近第一请求的键的值,并且是小于和大于第一请求的键的值中的一个。该方法还包括使用k分区函数将k个分区中的第一分区分配给第一请求的键,并且向第一事务发布用于第一分区的第一锁。该方法附加地包括接收用于访问与索引的多个键中的任何一个都不匹配的第二请求的键的第二事务,其中,第二请求的键的值与第一键的值之间的小于或大于关系与第一请求的键的值与第一键的值之间的关系相同。该方法还包括使用k分区函数将k个分区中的第二分区分配给第二请求的键。该方法还包括基于确定第二分区不同于第一分区,向第二事务发布用于第二分区的第二锁。k分区函数可以包括模k函数。k分区函数可以包括可以将其输入映射到k个分区中的一个的散列函数。接收第二事务可以发生在第一事务完成之前。该索引可以是主索引,也可以是辅索引。辅索引可以基于主索引的属性来形成。该方法可以包括从多个键中确定第二键。第二键可以具有最接近并且大于第一键的值的值。可以为第一键和第二键之间的键值范围维护范围锁。第一锁可以是共享锁或独占锁。除第一请求的键之外,第一事务可以请求访问至少一个以上的键。该方法还可以包括对包括至少一个以上键的k个分区中的一个或多个发布除第一锁之外的一个或多个锁。本说明书中描述的主题的一个或多个实施方式的细节在附图和以下描述中阐述。根据说明书、附图和权利要求,其他特征、方面和优点将变得显而易见。请注意,下图中的相对尺寸可能未按比例绘制。附图说明图1示出了示例计算系统的表示。图2A-图2C示出了示例主索引和辅索引的表示。图3示出了对应于图2A所示的主索引中的B树索引。图4示出了请求的索引键所在的、两个存在的键之间的不存在的索引键值列表。图5描绘了分区锁定技术的结果。图6示出了用于分区请求的不存在的索引键另一分区技术。图7示出了用于在图1所示的数据库管理系统中处理传入的事务(incomingtransaction)的示例过程的流程图。图8示出了用于在图1所示的数据库管理系统中处理传入的事务的另一示例过程的流程图。图9示出另一示例计算系统的表示。各个附图中相同的附图标记和名称表示相同的元件。具体实施方式上面介绍和下面更详细讨论的各种概念可以以多种方式中的任何一种来实施,因为所描述的概念不限于任何特定的实施方式。具体实施方式和应用的示例主要是为了说明的目的而提供的。图1示出了示例计算系统100的表示。系统100包括服务器102、数据库存储104、网络106和设备108。服务器102主控(host)数据库管理系统110,数据库管理系统110又包括事务引擎112、索引引擎114和锁管理器116。数据库存储104包括一个或多个存储卷118,存储卷118可以包括物理存储器,诸如磁盘存储器、固态存储器等。设备108可以包括能够通过诸如网络106的网络通信的任何计算设备。在一些实施方式中,设备108可以包括台式计算机、膝上型计算机、平板计算机、移动通信设备、大型计算机(mainframecomputer)、服务器等。在一些实施方式中,设备108可以向一个或多个用户提供用户界面以允许用户提供输入、接收输出,并且与在设备108上运行的一个或多个应用进行总体的交互。在一些实施方式中,设备108可以包括一个或多个应用,该一个或多个应用允许设备108通过网络106与诸如服务器102的其他计算设备通信。例如,在一些实施方式中,设备108可以运行诸如客户端应用的应用,该客户端应用允许用户或在设备108上运行的其他应用与服务器102和数据库管理系统110通信。设备108还可以运行服务器应用,该服务器应用可以允许在其他设备上运行的其他客户端应用与设备108通信。网络106可以包括无线网络和/或有线网络。在一些实施方式中,网络106可以包括互联网、内联网或可以允许本文档来自技高网...

【技术保护点】
1.一种数据库管理系统,包括:存储器,所述存储器包括:索引,包括多个键和与多个键中的每个键相关联的至少一个记录;和控制器,通信地耦合到存储器,所述控制器被配置为:接收用于访问与所述多个键中的任何一个键都不匹配的第一请求的键的第一事务,从所述多个键中确定第一键,其中第一键的值最接近第一请求的键的值,并且是小于和大于第一请求的键的值中的一个,使用k分区函数将k个分区中的第一分区分配给第一请求的键,向第一事务发布用于第一分区的第一锁,接收用于访问与所述多个键中的任何一个键都不匹配的第二请求的键的第二事务,其中,第二请求的键的值与第一键的值之间的小于或大于关系与第一请求的键的值与第一键的值之间的关系相同,使用k分区函数将所述k个分区中的第二分区分配给第二请求的键,以及基于确定第二分区与第一分区不同,向第二事务发布用于第二分区的第二锁。

【技术特征摘要】
【国外来华专利技术】2016.12.14 US 62/433,944;2017.01.13 US 15/405,841;1.一种数据库管理系统,包括:存储器,所述存储器包括:索引,包括多个键和与多个键中的每个键相关联的至少一个记录;和控制器,通信地耦合到存储器,所述控制器被配置为:接收用于访问与所述多个键中的任何一个键都不匹配的第一请求的键的第一事务,从所述多个键中确定第一键,其中第一键的值最接近第一请求的键的值,并且是小于和大于第一请求的键的值中的一个,使用k分区函数将k个分区中的第一分区分配给第一请求的键,向第一事务发布用于第一分区的第一锁,接收用于访问与所述多个键中的任何一个键都不匹配的第二请求的键的第二事务,其中,第二请求的键的值与第一键的值之间的小于或大于关系与第一请求的键的值与第一键的值之间的关系相同,使用k分区函数将所述k个分区中的第二分区分配给第二请求的键,以及基于确定第二分区与第一分区不同,向第二事务发布用于第二分区的第二锁。2.如权利要求1所述的数据库管理系统,其中,k分区函数包括模k函数。3.如权利要求1所述的数据库管理系统,其中,所述k分区函数包括可以将其输入映射到k个分区中的一个的散列函数。4.如权利要求1、2或3所述的数据库管理系统,其中,第二事务在完成第一事务之前被接收。5.如前述权利要求中任一项所述的数据库管理系统,其中,所述索引是主索引。6.如权利要求1至5中任一项所述的数据库管理系统,其中,所述索引是基于主索引的属性形成的辅索引。7.如前述权利要求中任一项所述的数据库管理系统,其中,第一键的值小于第一请求的键的值,并且所述控制器还被配置为从多个键中确定第二键,第二键具有最接近且大于第一键的值的值,并且维护第一键和第二键之间的键值范围的范围锁。8.如前述权利要求中任一项所述的数据库管理系统,其中,所述第一锁是共享锁。9.如权利要求1至7中任一项所述的数据库管理系统,其中,所述第一锁是独占锁。10.如前述权利要求中任一项所述的数据库管理系统,其中,所述控制器被配置为接收用于访...

【专利技术属性】
技术研发人员:G格雷费
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1