CN109716324A - 存储器内数据库中的直接表关联 - Google Patents
存储器内数据库中的直接表关联 Download PDFInfo
- Publication number
- CN109716324A CN109716324A CN201780057968.XA CN201780057968A CN109716324A CN 109716324 A CN109716324 A CN 109716324A CN 201780057968 A CN201780057968 A CN 201780057968A CN 109716324 A CN109716324 A CN 109716324A
- Authority
- CN
- China
- Prior art keywords
- row
- major key
- memory address
- address pointer
- version
- 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.)
- Granted
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24562—Pointer or reference processing operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
为了解决关系数据库系统中的时延问题,提供了一种包括数据库服务器、处理器和相关联的随机存取存储器的计算机化数据库管理系统。处理器可以在随机存取存储器中配置存储器内数据库以具有表,每个表包含具有相关联的存储器地址的多个单元,在表内的原始单元和目标单元之间建立直接表关联,接收在包括目标单元的第二表上执行包括原始单元的第一表的联接数据库操作的请求,取消引用针对原始单元的直接表关联以获得针对目标单元的存储器地址处所存储的目标单元的值,执行联接数据库操作以生成包括值的联接表,并将联接表存储在随机存取存储器中的新位置处。
Description
背景技术
计算机化数据库被广泛用来存储和组织数据。计算机化数据库的最近应用的一个领域是实时处理在线事务。通常,关系数据库被用来处理此类事务。为了满足对在线事务不断增长的需求,数据库开发人员在开发这样的关系数据库系统时面临着挑战,这样的关系数据库系统实现了低时延并且在高并发性条件下可以很好地运行。
发明内容
为了解决上述问题,提供了一种计算机化数据库管理系统,其包括数据库服务器、处理器和相关联的随机存取存储器。处理器可以将随机存取存储器中的存储器内数据库配置为具有表,每个表包含具有相关联的存储器地址的多个单元,在包含原始单元的行和包含在表内的至少一个目标单元的行之间建立直接表关联,接收在包括目标单元的第二表上执行包括原始单元的第一表的联接数据库操作的请求,取消引用针对原始单元的直接表关联以获得在针对目标单元的存储器地址处被存储的目标单元的值,执行联接数据库操作以产生包括该值的联接表,并将联接表存储在随机存取存储器中的新位置处。
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步被描述。本发明内容不旨在标识所要求保护的主题内容的关键特征或必要特征,也不旨在被用来限制所要求保护的主题内容的范围。此外,所要求保护的主题内容不限于解决在本公开的任何部分中提到的任何或所有缺点的实现。
附图说明
图1是根据本公开的一个实施例的计算机化数据库管理系统的示意图。
图2A-2B是图1的系统的直接表关联的示意图,其示出了多对一关系。
图3A-3B是图1的系统的直接表关联的示意图,其示出了与中间索引表的多对多关系。
图4A-4B是图1的系统的直接表关联的示意图,其示出了主键版本元素。
图5是图4的系统中的联接数据库操作的示意图。
图6是将主键行插入表中并与图4的系统中的主键版本元素链接的示意图。
图7是将外键行插入表中并与图4的系统中的主键版本元素链接的示意图。
图8是从图4的系统中的主键版本元素的主键行列表中删除主键行的示意图。
图9是从图4的系统中的主键版本元素的主键行列表更新主键行的示意图。
图10是根据本公开的一个实施例的用于计算机化数据库管理的方法的流程图。
图11示出了根据本公开的实施例的示例计算系统。
具体实施方式
本申请的发明人已经发现,处理对关系数据库的查询消耗了大量处理资源,这在诸如高并发性的一些用例场景中可能导致不可接受的时延。将表数据存储在诸如固态驱动器(SSD)和硬盘驱动器(HDD)中的磁盘上位置中的传统数据库架构只允许访问大量数据块,这可能需要很长时间才能取回。发明人已经构想使用存储器内数据库平台,其提供比固态驱动器和硬盘驱动器更快的访问时间。通过将数据库数据存储在随机存取存储器而不是SSD或HDD中,与SSD或HDD存储装置相比,可以用低时延访问所存储的数据的每个字节。在诸如在线事务处理的字段中所使用的关系数据库的日益增长的复杂度、以及在高峰使用时间期间在这些数据库上的查询负载的日益增长的并发性已经给当前数据库架构带来了压力,这降低了时延性能。
如图1所示,为了解决上述问题,提供了计算机化数据库管理系统10。计算机化数据库管理系统10包括计算设备12,其被配置为经由诸如因特网的广域网(WAN)16与HTTP服务器14通信。进而,HTTP服务器14被配置为经由局域网(LAN)20与数据库服务器18通信。备选地,应当理解,在一些配置中,HTTP服务器14和数据库服务器18可以经由WAN进行通信。附加地,计算设备12上的应用程序22可以直接连接到数据库程序50。
在在线购物事务的示例中,用户可以使用由计算设备12执行的应用程序22来购买特定产品。在示例性购物会话中,应用程序22下载并显示具有搜索界面的网站,该搜索界面使得用户能够进行搜索关于产品的信息,诸如尺寸、价格或可用颜色。搜索查询作为HTTP请求24从应用程序22被发送到HTTP服务器14。进而,为了处理HTTP请求24,HTTP服务器14经由局域网20将数据库查询26发送到后端数据库服务器18。数据库服务器18处理数据库查询26并将查询结果28发送到HTTP服务器14,HTTP服务器14处理查询结果28并向用户返回HTTP响应30,其被显示在计算设备12上。
数据库服务器18包括处理器32、非易失性存储器34和随机存取存储器36。在随机存取存储器36中的存储器内数据库38内,处理器32被配置为包括被组织成逻辑行和逻辑列的多个单元的第一表40和被组织成逻辑行和逻辑列的多个单元的第二表42,单元中的每一个具有随机存取存储器36内的相关联的存储器地址。处理器32进一步被配置为在第一表40中的多个单元的原始单元46的存储器地址与第二表42中的多个单元的目标单元48的存储器地址之间建立直接表关联44。应当理解,原始单元46可以是外键,并且目标单元48可以是具有唯一约束的主键(或另一标识符),使得包含主键的列不具有任何重复值。
数据库服务器18中的非易失性存储器34被配置为包括执行存储器内数据库管理模块52的数据库程序50。存储器内数据库管理模块52还包括被编程为执行与存储器内数据库管理有关的特定功能的各种功能软件模块,其包括联接模块54、插入模块56、删除模块58和更新模块60。应当理解,可以例如在诸如专用集成电路(ASIC)的专用硬件或固件中实现这些软件模块中的一个或多个软件模块的功能。
当由计算设备12执行的应用程序22发送HTTP请求24时,HTTP服务器14根据HTTP服务器14上的应用逻辑来处理该请求。应用逻辑可以生成被发送到数据库服务器18的数据库查询26。返回到在线购物事务的示例,HTTP请求24可以是将产品添加到购物车,并且购物车应用可以由HTTP服务器14执行。购物车应用进而可以与后端数据库服务器18通信以验证期望产品在库存中,减少库存,获得相关定价、折扣和税收信息等。在这些通信期间,在HTTP服务器14和数据库服务器18之间发送各种数据库查询。因此,例如如果HTTP请求24要将具有特定尺寸和颜色的产品添加到购物车,则HTTP服务器14可以发送并且数据库服务器18可以接收数据库查询26,以在第二表42上执行第一表40的联接数据库操作,以验证产品的期望颜色是否可用于期望尺寸。在非易失性存储器34中被存储并由处理器32执行的联接模块54包含用以根据下面所描述的过程实现联接数据库操作的程序逻辑。
本公开内容提出了一种用于在关系数据库中高效地执行联接数据库操作的新策略,该关系数据库是通常包括循环扫描程序的当前方法的高效替代方案。在常规系统中,为了在联接操作中从每个表中取回数据,常规系统遍历表的每一行或索引以找到包含期望数据的行。每次执行联接数据库操作时都会执行扫描,而不管在相同数据集上的先前联接如何。由于常规联接操作的效率在很大程度上取决于扫描速度,因此时延是针对联接操作性能的持续关注点。相比之下,根据本文所描述的技术,仅利用第二表42的初始扫描来创建直接表关联44,而不是针对每个联接操作扫描整个表。在初始扫描之后的后续联接数据库操作中,在解除引用操作62中解除引用针对第一表40中的原始单元46的直接表关联44,以获得针对第二表42中的目标单元48的存储器地址处所存储的目标单元48的值。下面详细描述了直接表关联44的配置和供应及其使用。
在一个特定实施例中,直接表关联44包括数据集之间的物理存储器地址指针64。应当理解,物理存储器地址指针是与被存储在物理硬件上的至少一个物理存储器地址相关联的存储器地址指针。这些指针64在初始扫描期间被添加到第一表40,并使得随后的联接数据库操作能够遍历直接表关联44到第二表42,以在包含目标单元48的行中找到期望数据。所建立的直接表关联44鉴于现有的常规系统,减少了时延,从而改进了在线事务体验。可以理解的是,联接操作在在线事务处理中无处不在,并且因此当在联接数据库操作期间由于低效扫描而加剧在线事务的时延时,用户可能没有动机完成在线事务并且可能放弃他们的购物车。相应地,在主题实施例的潜在效用的一个非限制性示例中,所描述的技术可以减少时延,从而提高用户满意度,增加在线事务的变换率,并且通常改进在线购物网站的经济绩效。
例如,处理器32可以接收在包括目标单元48的第二表42的一个或多个行或列上执行包括原始单元46的第一表40的一个或多个行或列的联接数据库操作的请求。直接表关联44被解除引用以获得目标单元48的值,并且使用该值来执行联接数据库操作以产生包括被存储在随机存取存储器中的新位置处的值的联接表66。数据总线68将得到的数据传输到非易失性存储器34,在那里它作为查询结果28被发送到HTTP服务器14并且被变换成发布原始HTTP请求24的计算设备12内的应用程序22。备选地,查询结果28可以从随机存取存储器36被直接传送到应用程序22。用户可以通过用户显示器70查看请求和响应,用户显示器70可以是如图所示地被单独形成,或者可以与计算设备12一体形成。
现在转向图2A,示出了关于第一表40和第二表42之间的多对一关系的联接数据库操作的示例。第一表40和第二表42之间的直接表关联44包括在包含第一表40中的原始单元46的行内的物理存储器地址指针64,其指向第二表42中的目标单元48的存储器地址。现在转向图2B并继续在线购物事务的示例,用户可能想要知道特定尺寸的产品有多少颜色可用。具体地,用户可能正在寻找尺寸小的无袖圆领衬衫。在所描绘的示例中,使用包含第一表40中的原始单元46的行内的物理存储器地址指针64以联接在包含第二表42中目标单元48的行上,对数据库服务器中的第一表40和第二表42之间的多对一关系执行联接数据库操作。在该示例中,第一表40中的代码(Code)列包含外键,第二表42中的ID列是主键,并且在第二表42中的包含唯一值的代码列上执行联接。该直接表关联44将物理存储器地址指针64从第一表40中的行维持到第二表42中的引用行,从而与常规的扫描针对所请求的数据的表的方法相比大大提高了访问第二表42中的行的效率。
在图3A中,示出了关于第一表40和第二表42之间的多对多关系的联接数据库操作的示例。这里,上面所讨论的多对一关系的优化被应用于多对多关系。由被组织成逻辑行和逻辑列的多个单元组成的中间表72将多对多关系变换成两个多对一关系。第一物理存储器地址指针64a在第一表40和中间表72之间形成直接表关联44,并且第二物理存储器地址指针64b在第二表42和中间表72之间形成直接表关联。通过与中间表72的直接表关联44,第一表40和第二表42可以高效地与两个指针跳(hop)相联接,如虚线所示。应当理解,示例性指针被包括在图示中,并且不是每个指针都被示出。现在转向图3B并继续在线购物事务的示例,商家用户可能期望基于订单日期来将客户与他们的订单相关联。不是扫描整个第二表42以取回期望数据,而是可以利用中间表和两个指针跳来实现相同的结果。在这种情况下,第一表40或第二表42中的每一个中的ID列标识包含目标单元48的行,即主键,中间表72由原始单元(即外键)组成,并且联接在日期列上被执行。第一物理存储器地址指针64a被包括在中间表72的多个单元的至少一个原始单元46内,并且指向随机存取存储器36内的存储器地址,该存储器地址对应于第一表40中多个单元中的目标单元48,诸如产品编号。第二物理存储器地址指针64b被包括在中间表72的多个单元的至少一个原始单元46内,并且指向随机存取存储器36内的存储器地址,该存储器地址对应于第二表42的多个单元的至少一个目标单元48,诸如产品编号。因此,数据库服务器18中的针对第一表40和第二表42两者内所包含的信息的数据库查询26导致第一表40和第二表42之间的联接数据库操作。包括具有到第一表40和第二表42中的目标单元48的物理存储器地址指针64的原始单元46的中间表72,用于将多对多关系变换为可以用两个指针跳跃遍历的两个多对一关系,如虚线所指示。应当理解,示例性指针被包括在图示中,并且不是每个指针都被示出。
现在转到图4A,示出了版本元素的示例。当在多用户数据库中发生改变时,期望记录和管理这些改变以呈现数据库的一致视图,而无需创建数据副本。在此配置中,新数据不会覆盖旧数据;相反,旧数据被标记为陈旧,并且添加了新版本的数据。通常,每个版本的数据都标有时间戳。读取事务使用时间戳来标识要读取的数据版本,并且写入事务创建更加新的版本。以这种方式,读写功能可以同时发生。版本化允许在多用户情况下同步数据集,诸如并发在线购物事务。主键版本元素74通过利用每个新版本更新相关联的物理存储器地址指针64来维持数据表的直接表关联44。附加地,列表中的每个版本都可以由时间戳标识。在该配置中,包含第一表40中的原始单元46的行或列包含外键76,并且包含第二表中的目标单元48的行或列包含主键78。处理器32定义主键版本元素74,其被配置为包括指向主键行版本列表的开头的物理存储器地址指针64,以及引用计数80(如图5所示)。包含原始单元46的第一表40中的多行中的行被配置为包括指向主键版本元素74的物理存储器地址指针64,并且包含目标单元48的第二表42中的多行中的行被配置为包括指向主键版本元素74的物理存储器地址指针64。维持引用计数80以确定在时间点来自第二表的多少行在引用主键版本元素74。每个主键行具有指向存储器中存储对应版本的位置的关联指针。因此,将遍历主键版本元素74,直到找到适当的(例如基于时间戳的有效的)主键行版本,并且然后将选择对应于适当的主键版本的物理存储器地址指针64。
图4B提供了在在线购物事务期间维持主键行78和外键行76之间的直接表关联44的版本元素的示例。版本化在这种情况下特别有利,因为它们允许多个并发用户高效地利用相同的数据库,同时提供数据的当前(相对于事务)的且准确的版本,诸如商品库存。
在图5中,示出了联接数据库操作100的示例。引用计数80确定在时间点有多少主键行82正在引用主键版本元素74。物理存储器地址指针pFK-PKElement 64c被包括在外键行86中并且被指向主键版本元素74。附加物理存储器地址指针pPKElement 64d被包括在主键行版本的列表84中的每个主键行82中,并且各自都指向主键版本元素74。物理存储器地址指针pHead 64e被包括在主键版本元素74中并且被指向主键行版本的列表84。物理存储器地址指针pNext 64f被包括在每个主键行82中并指向主键行版本的列表84中的后续行,并且列表中的最后一个主键行82包括物理存储器地址指针pNull 64g,其是主键行版本的列表84的尾部。当接收到数据库查询26时,图1中的存储器内数据库管理系统模块52中的联接模块54对包含第一表40中的外键76的外键行86c执行联接数据库操作100,并且外键76将物理存储器地址指针64c引用到主键版本元素74,以获得被存储在第二表42中的主键行的列表84中的主键行82中的主键78的值。
在图6中,示出了主键版本元素74上的主键插入操作200的示例。当存在与主键78相关联的新数据时,可能期望将主键行82插入到第二表42中。在这种情况下,处理器32接收执行插入数据库操作以将一个或多个主键行82插入到第二表42中。执行图1中的存储器内数据库管理系统模块52中的插入模块56,并扫描第二表42以定位针对插入数据库操作的适当位置。在主键插入操作200期间,为新的主键行82分配随机存取存储器36,并分配主键版本元素74。执行数据库操作,其包括更新物理存储器地址指针pPKElement 64d和pHead64e。指针pPKElement 64d被包括在主键行82中并且指向主键版本元素74,并且pHead 64e被包括在指向主键行版本的列表84的开头的主键版本元素74中,如图6中所示。第三物理存储器地址指针pNull64g被包括在主键行82中,并且是列表的尾部。
图7提供了主键版本元素74上的外键插入操作300的示例。当存在与外键76相关联的新数据时,可能需要将外键行86插入第一表40中。在这种情况下,处理器32接收执行插入数据库操作的请求,以将一个或多个外键行86插入第一表40中。图1中的存储器内数据库管理系统模块52中的插入模块56被执行,并且扫描第一表40以定位针对插入数据库操作的适当位置。在外键插入操作300期间,分配随机存取存储器36以支持物理存储器地址指针64的实现。执行数据库操作,包括物理存储器地址指针pFK-PKElement 64c的创建,其指向主键版本元素74,如图7所示。外键行86的插入通过扫描针对对应的主键行82的第二表42来验证,并且引用来自对应的主键行82的物理存储器地址指针64d,以初始化外键行86以指向主键版本元素74。
在图8中,示出了来自主键版本元素74上的第二表的主键删除操作400的示例。逻辑删除是通陈旧间戳实现的,因为陈旧的数据可以由陈旧的时间戳标识,并且然后从后续的联接功能中被排除,但它保留在数据库中,因为它可以对先前的事务有效。在逻辑删除的情况下,处理器32接收执行删除数据库操作的请求以删除第二表42中的一行或多行主键82。图1中的存储器内数据库管理系统模块52中的删除模块58被执行,并且扫描第二表42以标识作为用于删除的主题的一个或多个主键行82。对于每个这样的一个或多个主键行82,扫描第一表40以确定没有外键行86正在引用要删除的主键行82。然后将具有过时的时间戳的主键行82标记为已删除。当数据库管理系统中的最旧事务早于逻辑删除的主键行82的时间戳时,可能期望物理地删除主键行82以清理存储器。在这种情况下,从主键行的列表84中移除已删除的主键行82,释放与已删除的主键行82相关联的存储器空间,并且相关联的主键版本元素74中的引用计数80递减一。当确定与已删除的主键行82相关联的主键版本元素74的引用计数80为零时,删除主键版本元素74,并释放与已删除的主键版本元素74相关联的存储器。
在图9中,示出了主键版本元素74上的主键更新操作500的示例。当改变与主键78相关联的数据时,可能需要将主键行82a更新为第二表42中的新主键行82b以维持当前版本的数据。在这种情况下,处理器32接收执行更新数据库操作的请求,以将一行或多行主键82a更新到第二表42中。图1中的存储器内数据库管理系统模块52中的更新模块60被执行,并扫描第二表42以确定哪个/哪些主键行82是陈旧的。当主键行82a被更新为新的主键行82b时,新的主键行82b被插入主键行版本的列表84中,被包括在新的主键行82b中的物理存储器地址指针pPKElement 64d被更新以指向主键版本元素74,被包括在主键版本元素74中的物理存储器地址指针pHead 64e被更新以指向新的主键行82b,并且引用计数80递增一。
图10示出了根据本说明书的实施例的示例方法800。方法800可以在上述计算机系统10上或在其他合适的计算机硬件上被实现。在步骤802处,方法800可以包括配置被存储在随机存取存储器中的存储器内数据库,以具有由组织成逻辑行和逻辑列的单元组成的表。如上所述,单元中的每一个被配置为在随机存取存储器内具有相关联的存储器地址。
从步骤802进行到步骤804,该方法可以包括在原始单元的存储器地址和目标单元的存储器地址之间建立直接表关联。对包含目标单元的第二表的初始扫描被用来创建直接表关联,其可以包括数据集之间的直接物理存储器地址指针,如子步骤806中所示。这些指针在初始扫描期间被添加到表中,并使得后续数据库操作能够遍历直接表关联到第二表,而不需要对第二表进行完全扫描以找到期望数据。如808处所示,直接表关联可以包括在多对一关系的上下文中从第一表到第二表的指针。在810处所示的另一示例中,直接表关联可以针对多对多关系而被创建,并且可以包括具有到第一表的第一物理存储器地址指针和到第二表的第二物理存储器地址指针的中间表。已建立的直接表关联减少时延并改进在线事务体验。
从步骤804前进到812,该方法可以包括接收在第二表的一个或多个行或列上执行第一表的一个或多个行或列的联接数据库操作的请求。在在线购物事务的示例中,用户可以在计算设备上发出命令以从在线商店购买服装项目。为了处理用户的请求,可能需要在第二表上执行第一表的联接数据库操作,以验证期望颜色的产品是否具有期望的尺寸。被存储在非易失性存储器中并由处理器执行的联接模块包含用以实现联接数据库操作的程序逻辑。
从步骤812进行到步骤814,该方法可以包括解除引用针对原始单元的直接表关联,以获得被存储在存储器地址处的目标单元的值。如上所述,对第一表和第二表之间的物理存储器地址指针执行解除引用操作。
继续从步骤814到816,该方法可以包括执行联接数据库操作以产生联接表。可以执行存储器内数据库管理模块内的联接模块,以将来自包含第一表中的原始单元的行的数据联接到包含第二表中的目标单元的行上。创建联接表,其包含来自第一表和第二表的期望数据。返回到在线购物事务的示例,联接表可以包括关于产品的信息,即衣服项目,诸如颜色、尺寸、价格或库存。
从步骤816前进到818,该方法可以包括将所联接的表存储在随机存取存储器中。一旦被存储,数据就可供处理器作为查询结果发送回HTTP服务器,从而允许终端用户接收包含所请求信息的响应。应当理解,可以以流方式发送数据以避免时延。继续在线购物事务的示例,被包含在联接表中的数据可以是期望的服装项目的尺寸和颜色,其将使用户能够完成其在线购物事务。
应当理解,可以使用贯穿本公开所描述的算法过程来执行上述方法步骤,包括在上面的计算系统10的描述中。
在一些实施例中,本文所描述的方法和过程可以被绑定到一个或多个计算设备的计算系统。特别地,这些方法和过程可以被实现为计算机应用程序或服务、应用编程接口(API)、库和/或其他计算机程序产品。
图11示意性地示出了计算系统900的非限制性实施例,该计算系统900可以实施上述方法和过程中的一个或多个。计算系统900以简化形式被示出。例如,计算系统900可以体现为系统10的计算设备12或数据库服务器18。计算系统900可以采用以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如智能电话)和/或其他计算设备和可穿戴计算设备(诸如智能手表和头戴式增强现实设备)。
计算系统900包括逻辑处理器902、易失性存储器903和非易失性存储设备904。计算系统900可以可选地包括显示子系统906、输入子系统908、通信子系统1000和/或在图11中未示出的其他组件。
逻辑处理器902包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可以被配置为执行作为一个或多个应用、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。可以实现这样的指令以执行任务、实现数据类型、变换一个或多个组件的状态、实现技术效果、或以其他方式达到期望的结果。
逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。附加地或备选地,逻辑处理器可以包括一个或多个硬件逻辑电路或固件设备,其被配置为执行硬件实现的逻辑或固件指令。逻辑处理器902的处理器可以是单核或多核,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的各个组件可选地可以分布在两个或更多个分离的设备中,这些设备可以被远程定位和/或配置用于协同处理。逻辑处理器的各方面可以由在云计算配置中配置的远程可访问的联网计算设备虚拟化和执行。在这种情况下,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行,这将被理解。
非易失性存储设备904包括一个或多个物理设备,其被配置为保存由逻辑处理器可执行的指令以实现本文所描述的方法和过程。当实现这样的方法和过程时,可以转换非易失性存储设备94的状态-例如以保持不同的数据。
非易失性存储设备904可以包括可移除和/或内置的物理设备。非易失性存储设备94可以包括光学存储器(例如CD、DVD、HD-DVD、蓝光盘等)、半导体存储器(例如ROM、EPROM、EEPROM、闪速存储器等)、和/或磁存储器(例如硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)或其他大容量存储设备技术。非易失性存储设备904可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。应当理解,非易失性存储设备904被配置为即使在切断非易失性存储设备904的电力时也保持指令。
易失性存储器903可以包括物理设备,该物理设备包括随机存取存储器。应当理解,也可以在非易失性存储器中提供随机存取存储器。逻辑处理器902通常由易失性存储器903用来在软件指令的处理期间临时存储信息。应当理解,当向易失性存储器903切断电力时,易失性存储器903通常不继续存储指令。
逻辑处理器902、易失性存储器903和非易失性存储设备904的各方面可以被一起集成到一个或多个硬件逻辑组件中。例如,这种硬件逻辑组件可以包括现场可编程门阵列(FPGA)、程序专用和应用专用集成电路(PASIC/ASIC)、程序专用和应用专用标准产品(PSSP/ASSP)、片上系统(SOC)和复杂可编程逻辑器件(CPLD)。
术语“模块”、“程序”和“引擎”可以被用来描述计算系统900的方面,计算系统900通常由处理器以软件实现,以使用易失性存储器的部分执行特定功能,该功能涉及专门配置处理器以执行该功能的变形处理。因此,可以经由逻辑处理器902使用易失性存储器903的部分来实例化模块、程序或引擎,逻辑处理器902执行由非易失性存储设备904保持的指令。应当理解、不同的模块、程序和/或引擎可以从相同的应用、服务、代码块、对象、库、例程、API、功能等来实例化。同样,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块、对象、例程、API、功能等实例化。术语“模块”、“程序”和“引擎”可以涵盖可执行文件、数据文件、库、驱动程序、脚本、数据库记录等的个体或组。
当被包括时,显示子系统906可以被用来呈现由非易失性存储设备904保持的数据的视觉表示。视觉表示可采取图形用户界面(GUI)的形式。由于本文所描述的方法和过程改变由非易失性存储设备保持的数据,并因此变换非易失性存储设备的状态,所以显示子系统906的状态同样可以被变换以在视觉上表示基础数据的变化。显示子系统906可以包括利用几乎任何类型的技术的一个或多个显示设备。这样的显示设备可以与共享封装中的逻辑处理器902、易失性存储器903和/或非易失性存储设备904组合,或者这样的显示设备可以是外围显示设备。
当被包括时,输入子系统908可以包括一个或多个用户输入设备或与其接口,诸如键盘、鼠标、触摸屏、麦克风、相机或游戏控制器。
当被包括时,通信子系统1000可以被配置为将本文所描述的各种计算设备彼此通信地耦合,并与其他设备通信地耦合。通信子系统1000可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络或者有线或无线局域网或广域网络进行通信。在一些实施例中,通信子系统可以允许计算系统900经由诸如因特网的网络向其他设备发送消息和/或从其他设备接收消息。
以下段落为本申请的权利要求提供了附加的支持。一个方面提供了一种计算机化数据库管理系统,其包括数据库服务器,该数据库服务器包括处理器和相关联的随机存取存储器。处理器可以被配置为将随机存取存储器中的存储器内数据库配置为具有被组织成逻辑行和逻辑列的多个单元的第一表,以及被组织成逻辑行和逻辑列的多个单元的第二表,每个表的每个单元在随机存取存储器内具有相关联的存储器地址,在第一表的多个单元的原始单元的存储器地址和第二表的多个单元的目标单元的存储器地址之间建立直接表关联,接收在包括目标单元的第二表的一个或多个行上执行包括原始单元的第一表的一个或多个行或列的联接数据库操作的请求,取消引用针对原始单元的直接表关联,以获得在针对目标单元的存储器地址处所存储的目标单元的值,使用该值来执行联接数据库操作,从而产生包括该值的联接表,并将联接表存储在随机存取存储器中的新位置处。在这个方面,附加地或备选地,联接数据库操作可以是关于第一表和第二表之间的多对一关系的联接数据库操作,并且直接表关联可以包括物理存储器地址指针,物理存储器地址指针可以被包括在包含原始单元的行内,并且其可以指向目标单元的存储器地址。在这方面,附加地或备选地,联接数据库操作可以是关于第一表和第二表之间的多对多关系的联接数据库操作,并且直接表关联可以包括中间表、第一物理存储器地址指针和第二物理存储器地址指针,其中中间表可以包括被组织成逻辑行和逻辑列的多个单元,第一物理存储器地址指针可以被包括在中间表的多个单元中的至少一个单元中,并且可以指向与第一表的多个单元的目标单元对应的随机存取存储器内的存储器地址,并且第二物理存储器地址指针可以被包括在中间表的多个单元的至少一个单元中,并且可以指向随机存取存储器内的存储器地址,该存储器地址对应于第二表的多个单元中的至少一个目标单元。在这个方面,附加地或备选地,包含原始单元的行或列可以包含外键,并且包含目标单元的行或列可以包含主键,并且处理器还可以被配置为定义主键版本元素,其可以被配置为包括指向主键行版本列表的开头的物理存储器地址指针,其中包含原始单元的多个行中的行可以被配置为包括指向主键版本元素中的物理存储器地址指针,包含目标单元的多个行中的行可以被配置为包括指向主键版本元素的物理存储器地址指针,并且引用计数可以确定在时间点多少主行正在引用主键版本元素。在该方面,附加地或备选地,处理器还可以被配置为在包含第一表的外键的行上执行联接数据库操作,其中外键可以将物理存储器地址指针引用到主键版本元素以获得被存储在第二表中的主键值。在该方面,附加地或备选地,处理器还可以被配置为:接收执行插入数据库操作以将一个或多个行的主键插入到第二表中的请求,扫描第二表以定位针对插入数据库操作的适当位置,分配随机存取存储器以用于新的主键行的添加,分配主键版本元素,执行插入数据库操作,更新指向主键行版本列表的主键版本元素中的物理存储器地址指针,更新指向主键版本元素的主键行版本中的物理存储器地址指针,并在主键行版本中包括指向主键行版本列表中后续行的物理存储器地址指针。在该方面,附加地或备选地,处理器还可以被配置为:接收执行数据库操作以将一个或多个行的外键插入第一表中的请求,扫描第一表以定位针对插入数据库操作的适当位置,分配存储器以用于支持物理存储器地址指针实现,执行插入数据库操作,在外键行中创建将被指向主键版本元素的物理存储器地址指针,通过扫描第二表用于对应主键行版本来验证外键行的插入,并从对应的主键行版本引用物理存储器地址指针以初始化外键行以指向主键版本元素。在该方面,附加地或备选地,处理器还可以被配置为:接收执行数据库操作以删除第二表中的一个或多个主键行的请求,扫描主键行以标识作为用于删除的主题的主键行,扫描第一表中的外键行以确定没有外键行正在引用将被删除的主键行,将主键行标记为已删除,以及当计算机化数据库管理系统中最旧的事务早于已删除的主键行的时间戳时,从主键行列表中移除已删除的主键行,释放与已删除的主键行相关联的存储器空间,将主键版本元素中的引用计数减1,确定与已删除的主键行相关联的主键版本元素的引用计数为零,并且响应于该确定,删除主键版本元素并释放与已删除的主键版本元素相关联的存储器空间。在该方面,附加地或备选地,处理器还可以被配置为:接收执行数据库操作以更新第二表中的一个或多个行的请求,扫描第二表以确定哪个或哪些主键行是陈旧的,将新的主键行插入到主键行版本列表中,更新在新主键行中所包括的物理存储器地址指针以指向主键版本元素,更新主键版本元素中所包括的物理存储器地址指针以指向新的主键行,并将引用计数增加1。在该方面,附加地或备选地,随机存取存储器可以是非易失性随机存取存储器。
另一方面提供了一种用于数据库服务器、处理器和相关联的随机存取存储器的方法,包括:在随机存取存储器中配置存储器内数据库以具有被组织成逻辑行和逻辑列的多个单元的第一表,以及被组织成逻辑行和逻辑列的多个单元的第二表,每个表的每个单元在随机存取存储器内具有相关联的存储器地址,在第一表的多个单元的原始单元的存储器地址和第二表的多个单元的目标单元的存储器地址之间建立直接表关联,接收在包括目标单元的第二表的一个或多个行或列上执行包括原始单元的第一表的一个或多个行或列的联接数据库操作的请求,取消引用针对原始单元的直接表关联,以获得针对目标单元的存储器地址处所存储的目标单元的值,使用该值来执行联接数据库操作,从而产生包括该值的联接表,并将联接表存储在随机存取存储器中的新位置处。在这个方面,附加地或备选地,联接数据库操作可以是关于第一表和第二表之间的多对一关系的联接数据库操作,并且直接表关联可以包括物理存储器地址指针,物理存储器地址指针可以被包括在原始单元内,并且其可以指向目标单元的存储器地址。在这方面,附加地或备选地,联接数据库操作可以是关于第一表和第二表之间的多对多关系的联接数据库操作,并且直接表关联可以包括中间表、第一物理存储器地址指针和第二物理存储器地址指针,其中中间表可以包括被组织成逻辑行和逻辑列的多个单元,第一物理存储器地址指针可以被包括在中间表的多个单元中的至少一个单元内,并且可以指向与第一表的多个单元的目标单元相对应的随机存取存储器内的存储器地址,并且第二物理存储器地址指针可以被包括在中间表的多个单元的至少一个单元中,并且可以指向随机存取存储器内的存储器地址,该存储器地址对应于第二表的多个单元中的至少一个目标单元。在这个方面,附加地或备选地,包含原始单元的行或列可以包含外键,并且包含目标单元的行或列可以包含主键,并且方法还可以包括定义主键版本元素,其可以被配置为包括指向主键行版本列表的开头的物理存储器地址指针,其中包含目标单元的多个行中的行可以被配置为包括指向主键版本元素的物理存储器地址指针,并且包含原始单元的多个行中的行可以被配置为包括指向主键版本元素的物理存储器地址指针,维持引用计数以确定在时间点多少行正在引用主键版本元素,并且在包含第一表的外键的列上执行联接操作,其中外键可以将物理存储器地址指针引用到主键版本元素,以获得在第二表中被存储的主键值。在该方面,附加地或备选地,该方法可以进一步包括以下操作:接收执行插入数据库操作以将一个或多个行的主键插入到第二表中的请求,扫描第二表以定位用于插入数据库操作的适当位置,分配随机存取存储器用于新的主键行的添加,分配主键版本元素,执行插入数据库操作,更新指向主键行版本列表的主键版本元素中的物理存储器地址指针,更新指向主键版本元素的主键行版本中的物理存储器地址指针,并且在主键行版本中包括指向主键行版本列表中后续行的物理存储器地址指针。在该方面,附加地或备选地,该方法可以进一步包括:接收执行数据库操作以将一个或多个行的外键插入第一表中的请求,扫描第一表以定位针对插入数据库操作的适当位置,分配存储器以用于支持物理存储器地址指针实现,执行插入数据库操作,在外键行中创建指向主键版本元素的物理存储器地址指针,通过扫描第二表用于对应的主键行版本来验证外键行的插入,并且从对应的主键行版本引用物理存储器地址指针以初始化外键行以指向主键版本元素。在该方面,附加地或备选地,该方法可以进一步包括:接收执行数据库操作以删除第二表中的一个或多个主键行的请求,扫描主键行以标识作为用于删除的主题的主键行,扫描第一表中的外键行以确定没有外键行正在引用将被删除的主键行,将主键行标记为已删除,以及当计算机化数据库管理系统中最旧的事务早于已删除的主键行的时间戳时,从主键行列表中移除已删除的主键行,释放与已删除的主键行相关联的存储器空间,并且将主键版本元素中的引用计数减1,确定与已删除的主键行相关联的主键版本元素的引用计数为零,并且响应于该确定,删除主键版本元素并释放与已删除的主键版本元素相关联的存储器空间。在该方面,附加地或备选地,该方法可以进一步包括:接收执行数据库操作以更新第二表中的一个或多个行的请求,扫描第二表以确定哪个或哪些主键行是陈旧的,将新的主键行插入到主键行版本列表中,更新在新主键行中所包括的物理存储器地址指针以指向主键版本元素,更新主键版本元素中所包括的物理存储器地址指针以指向新的主键行,并将引用计数增加1。在该方面,附加地或备选地,随机存取存储器可以是非易失性随机存取存储器。
另一方面提供了一种计算机化数据库管理系统,其包括数据库服务器,该数据库服务器包括处理器和相关联的随机存取存处理器。处理器可以被配置为在随机存取存储器中配置存储器内数据库以具有被组织成逻辑行和逻辑列的多个单元的第一表,以及被组织成逻辑行和逻辑列的多个单元的第二表,每个表的每个单元在随机存取存储器内具有相关联的存储器地址,在第一表的多个单元的原始单元的存储器地址和第二表的多个单元的目标单元的存储器地址之间建立直接表关联,其中直接表关联包括物理存储器地址指针,并且其中物理存储器地址指针是外键,接收执行数据库操作的请求,取消引用针对原始单元的直接表关联,以获得针对在目标单元的存储器地址处所存储的目标单元的值,使用该值执行数据库操作,以从而产生包括该值的结果表,并将结果表存储在随机存取存储器中的新位置处。
应当理解,本文所描述的配置和/或方法本质上是示例性的,并且这些具体实施例或示例不应被视为具有限制性意义,因为许多变型是可能的。本文所描述的特定例程或方法可以表示任何数目的处理策略中的一个或多个处理策略。这样,所图示和/或描述的各种动作可以以所图示和/或描述的顺序、以其他顺序、并行或省略地来执行。同样,可以改变上述过程的顺序。
本公开的主题内容包括本文所公开的各种过程、系统和配置以及其他特征、功能、动作和/或特性的所有新颖和非明显的组合和子组合,以及其任意和所有等同物。
Claims (15)
1.一种计算机化数据库管理系统,包括:
数据库服务器,其包括处理器和相关联的随机存取存储器,所述处理器被配置为:
将所述随机存取存储器中的存储器内数据库配置为具有:被组织成逻辑行和逻辑列的多个单元的第一表,以及被组织成逻辑行和逻辑列的多个单元的第二表,所述表中的每个表的所述单元中的每个单元在所述随机存取存储器内具有相关联的存储器地址;
在所述第一表的所述多个单元的原始单元的存储器地址和所述第二表的所述多个单元的目标单元的存储器地址之间建立直接表关联;
接收在包括所述目标单元的所述第二表的一个或多个行或列上执行包括所述原始单元的所述第一表的一个或多个行或列的联接数据库操作的请求;
取消引用针对所述原始单元的所述直接表关联,以获得在针对所述目标单元的所述存储器地址处所存储的所述目标单元的值;
使用所述值来执行所述联接数据库操作,以从而产生包括所述值的联接表;以及
将所述联接表存储在所述随机存取存储器中的新位置处。
2.根据权利要求1所述的计算机化数据库管理系统,其中所述联接数据库操作是在所述第一表和所述第二表之间的多对一关系上的联接数据库操作,所述直接表关联包括物理存储器地址指针,所述物理存储器地址指针被包括在包含所述原始单元的行中,并且指向所述目标单元的所述存储器地址。
3.根据权利要求1所述的计算机化数据库管理系统,其中所述联接数据库操作是在所述第一表和所述第二表之间的多对多关系上的联接数据库操作,所述直接表关联包括中间表、第一物理存储器地址指针和第二物理存储器地址指针,其中:
所述中间表包括被组织成逻辑行和逻辑列的多个单元;
所述第一物理存储器地址指针被包括在所述中间表的所述多个单元中的至少一个单元内,并且指向与所述第一表的所述多个单元的目标单元相对应的随机存取存储器内的存储器地址;并且
所述第二物理存储器地址指针被包括在所述中间表的所述多个单元中的至少一个单元内,并且指向与所述第二表的所述多个单元的至少一个目标单元相对应的随机存取存储器内的存储器地址。
4.根据权利要求1所述的计算机化数据库管理系统,其中
包含所述原始单元的所述行或所述列包含外键,并且包含所述目标单元的所述行或所述列包含主键;并且
所述处理器还被配置为定义主键版本元素,所述主键版本元素被配置为包括:
物理存储器地址指针,所述物理存储器地址指针被指向主键行版本列表的开头,其中包含所述原始单元的所述多个行中的行被配置为包括被指向所述主键版本元素的物理存储器地址指针,并且包含所述目标单元的所述多个行中的行被配置为包括被指向所述主键版本元素的物理存储器地址指针;以及
引用计数,所述引用计数用以确定在时间点多少主行正在引用所述主键版本元素。
5.根据权利要求4所述的计算机化数据库管理系统,其中所述处理器还被配置为:
在包含所述第一表的所述外键的所述行上执行所述联接数据库操作,其中所述外键引用指向所述主键版本元素的所述物理存储器地址指针,以获得在所述第二表中所存储的所述主键值。
6.根据权利要求4所述的计算机化数据库管理系统,其中所述处理器还被配置为:
接收执行插入数据库操作以将一个或多个行的主键插入到所述第二表中的请求;
扫描所述第二表以定位针对所述插入数据库操作的适当位置;
分配随机存取存储器以用于新的主键行的添加;
分配主键版本元素;
执行所述插入数据库操作;
更新被指向所述主键行版本列表的所述主键版本元素中的物理存储器地址指针;
更新被指向主键版本元素的所述主键行版本中的物理存储器地址指针;以及
将物理存储器地址指针包括在所述主键行版本中,所述物理存储器地址指针被指向所述主键行版本列表中的后续行。
7.根据权利要求4所述的计算机化数据库管理系统,其中所述处理器还被配置为:
接收执行数据库操作以将一个或多个行的外键插入到所述第一表中的请求;
扫描所述第一表以定位针对所述插入数据库操作的适当位置;
分配存储器以用于支持物理存储器地址指针实现;
执行所述插入数据库操作;
在所述外键行中创建将被指向所述主键版本元素的物理存储器地址指针;
通过扫描用于对应的所述主键行版本的所述第二表来验证所述外键行的插入;以及
从对应的所述主键行版本引用物理存储器地址指针来初始化所述外键行,以指向所述主键版本元素。
8.根据权利要求4所述的计算机化数据库管理系统,其中所述处理器还被配置为:
接收执行数据库操作以删除所述第二表中的一个或多个主键行的请求;
扫描所述主键行以标识作为用于删除的主题的所述主键行;
扫描所述第一表中的所述外键行,以确定没有外键行正在引用将被删除的所述主键行;
将所述主键行标记为已删除;以及
当所述计算机化数据库管理系统中的最旧事务早于已删除的所述主键行的时间戳时,
从所述主键行列表中删除已删除的所述主键行,释放与已删除的所述主键行相关联的存储器空间,并且将所述主键版本元素中的所述引用计数减一;
确定与已删除的所述主键行相关联的所述主键版本元素的所述引用计数为零;并且
响应于所述确定,删除所述主键版本元素并释放与已删除的所述主键版本元素相关联的存储器空间。
9.根据权利要求4所述的计算机化数据库管理系统,其中所述处理器还被配置为:
接收执行数据库操作以更新所述第二表中的一个或多个行的请求;
扫描所述第二表以确定哪个或哪些主键行是陈旧的;
将新的所述主键行插入到所述主键行版本列表中;
更新被包括在新的所述主键行中的所述物理存储器地址指针,以指向所述主键版本元素;
更新被包括在所述主键版本元素中的所述物理存储器地址指针,以指向新的所述主键行;并且
将所述引用计数增加一。
10.根据权利要求1所述的计算机化数据库管理系统,其中所述随机存取存储器是非易失性随机存取存储器。
11.一种用于数据库服务器、处理器和相关联的随机存取存储器的方法,所述方法包括:
将所述随机存取存储器中的存储器内数据库配置为具有:被组织成逻辑行和逻辑列的多个单元的第一表,以及被组织成逻辑行和逻辑列的多个单元的第二表,所述表中的每个表的所述单元中的每个单元在所述随机存取存储器内具有相关联的存储器地址;
在所述第一表的所述多个单元的原始单元的存储器地址和所述第二表的所述多个单元的目标单元的存储器地址之间建立直接表关联;
接收在包括所述目标单元的所述第二表的一个或多个行或列上执行包括所述原始单元的所述第一表的一个或多个行或列的联接数据库操作的请求;
取消引用针对所述原始单元的所述直接表关联,以获得在针对所述目标单元的所述存储器地址处所存储的所述目标单元的值;
使用所述值来执行所述联接数据库操作,以从而产生包括所述值的联接表;以及
将所述联接表存储在所述随机存取存储器中的新位置处。
12.根据权利要求11所述的用于所述数据库服务器、所述处理器和相关联的所述随机存取存储器的方法,其中所述联接数据库操作是在所述第一表和所述第二表之间的多对一关系上的联接数据库操作,所述直接表关联包括物理存储器地址指针,所述物理存储器地址指针被包括在所述原始单元内并且指向所述目标单元的所述存储器地址。
13.根据权利要求11所述的用于所述数据库服务器、所述处理器和相关联的所述随机存取存储器的方法,其中所述联接数据库操作是在所述第一表和所述第二表之间的多对多关系上的联接数据库操作,所述直接表关联包括中间表、第一物理存储器地址指针和第二物理存储器地址指针,其中:
所述中间表包括被组织成逻辑行和逻辑列的多个单元;
所述第一物理存储器地址指针被包括在所述中间表的所述多个单元中的至少一个单元内,并且指向与所述第一表的所述多个单元的目标单元相对应的随机存取存储器内的存储器地址;并且
所述第二物理存储器地址指针被包括在所述中间表的所述多个单元中的至少一个单元内,并且指向与所述第二表的所述多个单元的至少一个目标单元相对应的随机存取存储器内的存储器地址。
14.根据权利要求11所述的用于所述数据库服务器、所述处理器和相关联的所述随机存取存储器的方法,其中
包含所述原始单元的所述行或所述列包含外键,并且包含所述目标单元的所述行或所述列包含主键;并且
所述方法还包括:
定义主键版本元素,所述主键版本元素被配置为包括被指向主键行版本列表的开头的物理存储器地址指针,其中包含所述目标单元的所述多个行中的行被配置为包括被指向所述主键版本元素的物理存储器地址指针,并且包含所述原始单元的所述多个行中的行被配置为包括被指向所述主键版本元素的物理存储器地址指针;
维持引用计数以确定在时间点多少行正在引用所述主键版本元素;以及
在包含所述第一表的所述外键的所述列上执行联接操作,其中所述外键引用到所述主键版本元素的所述物理存储器地址指针,以获得被存储在所述第二表中的所述主键值。
15.根据权利要求11所述的用于所述数据库服务器、所述处理器和相关联的所述随机存取存储器的方法,其中所述随机存取存储器是非易失性随机存取存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/279,015 | 2016-09-28 | ||
US15/279,015 US10853364B2 (en) | 2016-09-28 | 2016-09-28 | Direct table association in in-memory databases |
PCT/US2017/052600 WO2018063897A1 (en) | 2016-09-28 | 2017-09-21 | Direct table association in in-memory databases |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109716324A true CN109716324A (zh) | 2019-05-03 |
CN109716324B CN109716324B (zh) | 2023-07-11 |
Family
ID=60002085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780057968.XA Active CN109716324B (zh) | 2016-09-28 | 2017-09-21 | 存储器内数据库中的直接表关联 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10853364B2 (zh) |
EP (1) | EP3519986B1 (zh) |
CN (1) | CN109716324B (zh) |
WO (1) | WO2018063897A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817920A (zh) * | 2021-03-03 | 2021-05-18 | 深圳市知小兵科技有限公司 | 分布式大数据的清理方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102657586B1 (ko) * | 2016-10-28 | 2024-04-15 | 삼성전자주식회사 | 그래픽스 데이터를 관리하는 방법 및 장치 |
US11221956B2 (en) * | 2017-05-31 | 2022-01-11 | Seagate Technology Llc | Hybrid storage device with three-level memory mapping |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US10908826B2 (en) * | 2018-09-24 | 2021-02-02 | Salesforce.Com, Inc. | Controlling access to memory cells |
US10977268B2 (en) * | 2019-05-31 | 2021-04-13 | Snowflake Inc. | Data exchange |
CN110659517A (zh) * | 2019-08-30 | 2020-01-07 | 深圳壹账通智能科技有限公司 | 数据验证方法、装置、计算机设备和存储介质 |
CN111427885B (zh) * | 2020-03-03 | 2023-06-09 | 中科驭数(北京)科技有限公司 | 基于查找表的数据库管理方法和装置 |
US11455288B2 (en) * | 2020-03-20 | 2022-09-27 | Sap Se | Version table scheme for fast version space access |
US12001427B2 (en) | 2020-12-28 | 2024-06-04 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for acceleration of merge join operations |
CN113742314A (zh) * | 2021-08-06 | 2021-12-03 | 紫金诚征信有限公司 | 数据倾斜矫正方法、装置、计算机设备和存储介质 |
CN114168606A (zh) * | 2021-12-10 | 2022-03-11 | 中国建设银行股份有限公司 | 主键id生成方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809495A (en) * | 1996-06-04 | 1998-09-15 | Oracle Corporation | Method for obtaining information regarding the current activity of a database management system from a viritual table in a memory of the database management system |
US7356549B1 (en) * | 2005-04-11 | 2008-04-08 | Unisys Corporation | System and method for cross-reference linking of local partitioned B-trees |
CN101160583A (zh) * | 2005-04-14 | 2008-04-09 | 国际商业机器公司 | 层次数据库的关系查询 |
US20100205351A1 (en) * | 2009-02-12 | 2010-08-12 | Wiener Janet L | Database join optimized for flash storage |
CN102203773A (zh) * | 2008-09-19 | 2011-09-28 | 甲骨文国际公司 | 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接 |
US20110252000A1 (en) * | 2010-04-08 | 2011-10-13 | Microsoft Corporation | In-memory database system |
US20120095974A1 (en) * | 2010-10-18 | 2012-04-19 | Verisign, Inc. | Database synchronization and validation |
US20140214794A1 (en) * | 2013-01-30 | 2014-07-31 | International Business Machines Corporation | Join operation partitioning |
CN104866608A (zh) * | 2015-06-05 | 2015-08-26 | 中国人民大学 | 一种数据仓库中基于连接索引的查询优化方法 |
CN105009067A (zh) * | 2013-03-06 | 2015-10-28 | 起元科技有限公司 | 管理对存储数据单元的操作 |
US20160125022A1 (en) * | 2014-10-31 | 2016-05-05 | Microsoft Corporation | Efficient maintenance of column store indexes on memory-optimized tables |
CN105653609A (zh) * | 2015-12-24 | 2016-06-08 | 中国建设银行股份有限公司 | 基于内存的数据处理方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07104871B2 (ja) | 1989-08-31 | 1995-11-13 | 三菱電機株式会社 | リレーショナル・データベースにおけるジョイン処理方式 |
US5666525A (en) | 1995-09-21 | 1997-09-09 | The Trustees Of Columbia University In The City Of New York | System and method for performing an efficient join operation on large tables with a small main memory |
US6167399A (en) | 1998-05-05 | 2000-12-26 | Ncr Corporation | Join index for relational databases |
US20020091677A1 (en) * | 2000-03-20 | 2002-07-11 | Sridhar Mandayam Andampikai | Content dereferencing in website development |
US6615206B1 (en) | 2001-09-28 | 2003-09-02 | Oracle International Corporation | Techniques for eliminating database table joins based on a join index |
US7702619B2 (en) | 2005-09-23 | 2010-04-20 | Alan El-Sabbagh | Methods and systems for joining database tables using indexing data structures |
US9122724B2 (en) | 2008-10-28 | 2015-09-01 | Hewlett-Packard Development Company, L.P. | Combined join |
US8868510B2 (en) * | 2009-12-03 | 2014-10-21 | Sybase, Inc. | Managing data storage as an in-memory database in a database management system |
US8189283B2 (en) * | 2010-02-04 | 2012-05-29 | Apple Inc. | Disk drive with state-information data buffer |
US8732159B2 (en) | 2011-12-22 | 2014-05-20 | Sap Ag | Generic outer join across database borders |
US9165010B2 (en) * | 2012-04-30 | 2015-10-20 | Sap Se | Logless atomic data movement |
US10268639B2 (en) * | 2013-03-15 | 2019-04-23 | Inpixon | Joining large database tables |
US20150019528A1 (en) * | 2013-07-12 | 2015-01-15 | Sap Ag | Prioritization of data from in-memory databases |
US9483516B2 (en) * | 2014-03-14 | 2016-11-01 | Sap Se | Multi-version concurrency control across row store and column store |
KR101640733B1 (ko) * | 2015-01-23 | 2016-07-20 | 주식회사 리얼타임테크 | 인-메모리 데이터베이스 기반의 데이터 관리 시스템 및 그 방법 |
US10360233B2 (en) * | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
-
2016
- 2016-09-28 US US15/279,015 patent/US10853364B2/en active Active
-
2017
- 2017-09-21 WO PCT/US2017/052600 patent/WO2018063897A1/en unknown
- 2017-09-21 EP EP17778098.8A patent/EP3519986B1/en active Active
- 2017-09-21 CN CN201780057968.XA patent/CN109716324B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809495A (en) * | 1996-06-04 | 1998-09-15 | Oracle Corporation | Method for obtaining information regarding the current activity of a database management system from a viritual table in a memory of the database management system |
US7356549B1 (en) * | 2005-04-11 | 2008-04-08 | Unisys Corporation | System and method for cross-reference linking of local partitioned B-trees |
CN101160583A (zh) * | 2005-04-14 | 2008-04-09 | 国际商业机器公司 | 层次数据库的关系查询 |
CN102203773A (zh) * | 2008-09-19 | 2011-09-28 | 甲骨文国际公司 | 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接 |
US20100205351A1 (en) * | 2009-02-12 | 2010-08-12 | Wiener Janet L | Database join optimized for flash storage |
US20110252000A1 (en) * | 2010-04-08 | 2011-10-13 | Microsoft Corporation | In-memory database system |
US20120095974A1 (en) * | 2010-10-18 | 2012-04-19 | Verisign, Inc. | Database synchronization and validation |
US20140214794A1 (en) * | 2013-01-30 | 2014-07-31 | International Business Machines Corporation | Join operation partitioning |
CN105009067A (zh) * | 2013-03-06 | 2015-10-28 | 起元科技有限公司 | 管理对存储数据单元的操作 |
US20160125022A1 (en) * | 2014-10-31 | 2016-05-05 | Microsoft Corporation | Efficient maintenance of column store indexes on memory-optimized tables |
CN104866608A (zh) * | 2015-06-05 | 2015-08-26 | 中国人民大学 | 一种数据仓库中基于连接索引的查询优化方法 |
CN105653609A (zh) * | 2015-12-24 | 2016-06-08 | 中国建设银行股份有限公司 | 基于内存的数据处理方法及装置 |
Non-Patent Citations (4)
Title |
---|
QUERY PROCESSING IN MAIN MEMORY DATABASE MANAGEMENT SYSTEMS: "Query processing in main memory database management systems", 《PROCEEDINGS OF THE 1986 ACM SIDMOD INTERNATIONAL CONFERENCE ON MANAGEMENT DATA》 * |
QUERY PROCESSING IN MAIN MEMORY DATABASE MANAGEMENT SYSTEMS: "Query processing in main memory database management systems", 《PROCEEDINGS OF THE 1986 ACM SIDMOD INTERNATIONAL CONFERENCE ON MANAGEMENT DATA》, 15 June 1986 (1986-06-15), pages 2 - 3 * |
刘云生等: "一种实时数据库查询执行方法的设计", 《计算机应用》 * |
刘云生等: "一种实时数据库查询执行方法的设计", 《计算机应用》, 10 February 2005 (2005-02-10) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817920A (zh) * | 2021-03-03 | 2021-05-18 | 深圳市知小兵科技有限公司 | 分布式大数据的清理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3519986B1 (en) | 2022-09-28 |
WO2018063897A1 (en) | 2018-04-05 |
US20180089266A1 (en) | 2018-03-29 |
EP3519986A1 (en) | 2019-08-07 |
US10853364B2 (en) | 2020-12-01 |
CN109716324B (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109716324A (zh) | 存储器内数据库中的直接表关联 | |
CN109167811B (zh) | 一种基于区块链的跨链数据访问方法和装置 | |
CN104160381B (zh) | 多租户环境中租户特定数据集的管理方法及其系统 | |
CN104838377B (zh) | 利用映射缩减集成事件处理 | |
EP2803214B1 (en) | Platform for the delivery of content and services to networked connected computing devices | |
US10452632B1 (en) | Multi-input SQL-MR | |
JP5489391B2 (ja) | トポロジを比較するための方法、システムおよびプログラム(トポロジ比較) | |
CN108737325A (zh) | 一种多租户数据隔离方法、装置及系统 | |
CN109997126A (zh) | 事件驱动提取、变换、加载(etl)处理 | |
CN109643312A (zh) | 托管查询服务 | |
CN108475271A (zh) | 容器数据库的应用容器 | |
CN106164847A (zh) | 针对分布式体系架构的可扩展商业过程智能和预测性分析 | |
CN112287015B (zh) | 画像生成系统及其方法、电子设备及存储介质 | |
CN108733713A (zh) | 数据仓库中的数据查询方法及装置 | |
CN104423982B (zh) | 请求的处理方法和处理设备 | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
CN109087121A (zh) | 营销信息投放平台构建方法及装置 | |
CN106326243B (zh) | 一种数据处理方法及装置 | |
CN108171528A (zh) | 一种归因方法及归因系统 | |
CN109542898A (zh) | 资料库表格的数据存储方法、装置、电子设备及存储介质 | |
CN110221829A (zh) | 信息处理方法及其系统、计算机系统及计算机可读介质 | |
CN107145574A (zh) | 数据库数据处理方法、装置及存储介质和电子设备 | |
CN109739993A (zh) | 服饰知识图谱显示方法、装置、图服务器及存储介质 | |
CN104463665B (zh) | 一种对普通发票数据进行存储解析的方法 | |
CN108268615A (zh) | 一种数据处理方法、装置以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |