CN104111962B - 具有批量操作的增强型事务高速缓存 - Google Patents
具有批量操作的增强型事务高速缓存 Download PDFInfo
- Publication number
- CN104111962B CN104111962B CN201310259984.0A CN201310259984A CN104111962B CN 104111962 B CN104111962 B CN 104111962B CN 201310259984 A CN201310259984 A CN 201310259984A CN 104111962 B CN104111962 B CN 104111962B
- Authority
- CN
- China
- Prior art keywords
- database
- record
- cache
- affairs
- computer
- 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
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2216/00—Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
- G06F2216/05—Energy-efficient information retrieval
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
这里描述了一种用于提供增强型事务高速缓存的技术。根据一个方面,配置和数据库相关联的事务高速缓存。该增强的高速缓存可通过部分键或索引支持写操作。延迟对数据库的写操作的执行,直到确定有必要冲刷。通过对事务高速缓存执行写操作来延迟写操作。通过执行基于事务高速缓存更新数据库的行方式批量操作来调用冲刷。
Description
技术领域
本公开总体地涉及访问数据库系统的企业应用中的数据管理。更具体地,本公开涉及访问数据库系统的企业应用中的增强型事务高速缓存。
背景技术
数据库经常用来支持事务数据处理应用,例如金融、销售、订单履行、制造、人力资源和企业资源计划应用。实施了事务处理应用及其相关联的数据库(例如关系数据库)的系统称为联机事务处理(online transaction processing,OLTP)系统。在OLTP系统中,为了同时地更新数据库的很多部分,对于事务数据的快速读和写存在需求。
OLTP系统被针对处理非常少量的详细数据进行了优化,但一般却不适于涉及大数据量的临时分析(ad-hoc)的分析任务。为了执行查询而不对OLTP系统的性能有负面影响,发展了联机分析处理(online analytical processing,OLAP)系统。OLAP系统被针对具有快速执行时间的复杂分析和临时查询进行优化。OLAP系统使用预先计算的数据汇总检索数据,并且在应对在非常大量的非索引数据上进行定制的分析处理的少量用户时不是高效的。
在同一数据库上既运行OLTP也运行OLAP已经变成了降低产品总拥有成本(totalcost of ownership,TCO)和提高性能的有效方式。但是,由于所涉及的操作的不同类型所致,适于OLAP优化的数据库架构可能并不适于OLTP。反之,适于OLTP的数据库架构可能并不适于OLAP。
例如,OLTP的特征在于大量的基于行的写操作(例如,插入和更新),而OLAP通常通过利用字典的帮助压缩属性(或者列)来优化性能。把基于行的数据库用于OLTP已经变得十分普及。但是由于OLAP的基于列的操作与基于行的架构之间的模型差距(gap)所致,这种基于行的数据库可能是对OLAP来说很关键的某些操作的瓶颈。尽管传统的基于行和基于盘的数据库可满足OLTP需求,其对于OLAP而言可能并不是最佳的。
因此,对于解决当前技术的不足,并提供其他新颖和革新特征的系统、方法和装置存在需求。
发明内容
这里描述了一种框架,用于提供增强型事务高速缓存。根据一个方面,配置和数据库相关联的事务高速缓存。延迟对数据库的写操作的执行,直到确定有必要冲刷(flush)。通过对事务高速缓存执行写操作来延迟写操作。通过执行基于事务高速缓存更新数据库的行方式批量操作,调用冲刷。
根据另一方面,配置一种和数据库相关联的事务高速缓存。接收具有部分键的写操作。该部分键可映射到唯一地标识事务高速缓存中的一个或多个行的一个或多个主键。延迟对数据库的所述写操作的执行,直到确定有必要冲刷。通过对事务高速缓存中所标识的一个或多个行执行写操作来延迟写操作。然后通过执行基于事务高速缓存更新数据库的批量操作,可调用冲刷。
提供本发明内容以便以简化形式引入要在下面的详细描述中进一步描述的概念的选择。这既不是要标识做出权利要求的主题的特征或者必要特征,也不是要用来限制所声明的主题的范围。此外,所声明的主题不限于解决本公开的任何部分中记载的任一或者全部缺点的实施方案。
附图说明
在附图中示出了某些实施例,在附图中,相同的参考数字指代相同的部分,并且其中:
图1是示范性系统的框图;
图2是示范性架构的框图;
图3示出了示范性增强型事务高速缓存(ETC)的架构;
图4a示出了示范性状态转移图;
图4b示出了另一示范性状态转移图;
图5示出了管理数据库事件的示范性方法;
图6示出了在普通(normal)字段的更新期间,版本检查控制的示范性方法;和
图7示出了在主键字段的更新期间,版本检查控制的示范性方法。
具体实施方式
在下面的描述中,为了说明的目的,给出了具体数字、材料和配置,以便提供对本构架和方法的透彻理解,并满足法定的书面描述、实现和最佳实施方式的要求。但是,本领域技术人员将会清楚,有可能无需这些具体示范性细节就可以实践本构架和方法。在其他的实例中,省略或者简化了公知的特征,以便使本构架和方法的示范性实施方案的描述清晰,从而更好地说明本构架和方法。此外,为了容易理解,某些方法步骤被描绘为单独的步骤;但是,这些单独描绘的步骤不应被理解为在其执行中一定是依赖于顺序的。
下面的描述给出了用于辅助事务高速缓存的系统和方法的一个或更多个实施方案。本构架的一个实施方案提供了对事务高速缓存的各种增强,从而既支持读操作也支持写操作(例如,插入、更新等)。通过使用增强型事务高速缓存,可以延迟对数据库的写操作,直到确定有必要进行冲刷操作。可以通过收集增强型事务高速缓存中新插入或者更新的记录,然后使用批量操作将其写到数据库(例如,行方式),来调用冲刷操作。
高速缓存一般指数据的暂时存储以便在软件系统中取得更高的性能。事务高速缓存暂时存储数据库事务(即数据库访问的原子工作单位)的结果,以便降低数据库访问的数量。常规的事务高速缓存通常通过减少对数据的原始记录的访问数量取得性能增益,但是不减少写操作(例如,插入、更新)的数量。在本构架的一个实施方案中,将批量(bulk)操作与增强型事务高速缓存组合,以便在基于行的数据库中既减少读操作也减少写操作,从而取得更大的性能改善(例如,在典型的事务中是20%)。
本构架有益地提高了调用冲刷的批量操作的适用性。事务中在同一表上执行的插入和更新操作都可以从批量操作受益,即使它们分布在不同的位置也如此。此外,事务高速缓存对于OLTP应用开发者来说是透明的。这意味着不改变现有的业务逻辑设计和实施方案就可以改善OLTP应用的性能。
这里描述的构架可以被实施为方法、计算机控制的装置、计算机过程、计算系统,或者例如计算机可用介质的制品。从下面的描述,这些以及其他特征将会清晰。
图1示出了框图,图示了可用来实施这里描述的构架的示范性系统100。系统100可以包括可通信地耦接到输入设备102(例如键盘、触摸板、麦克风、相机等)和输出设备104(例如显示设备、监视器、打印机、扬声器等)的计算机系统106。计算机系统106也可以包括用于使用通信链路130(例如,电话线、无线网络链路、有线网络链路,或者电缆网)与网络132交换数据的通信卡或者通信设备116(例如,调制解调器和/或网络适配器)。网络132可以是局域网(LAN)或广域网(WAN)。计算机系统106可以通过网络132通信地耦接到一个或更多个其他的计算机系统150。例如,计算机系统106可以起到服务器的作用,并使用到一个或更多个客户端计算机150的逻辑连接工作于联网环境中。客户端计算机150可以包括和计算机系统106类似的部件,并且可以是桌面计算机、移动设备、平板计算机、通信设备等的形式。
计算系统106包括中央处理单元(CPU)114、输入/输出(I/O)单元110和非瞬态存储器设备112。其他的支持电路,例如高速缓存、电源、时钟电路和通信总线,也可以包括在计算系统106中。此外,前述部件中的任何一个均可以由专用集成电路补充,或者包含在专用集成电路中。计算系统106的例子包括手持设备、移动设备、个人数字助理(personaldigital assistance,PDA)、工作站、服务器、便携式膝上型计算机、其他的便携式设备、迷你计算机、大型计算机、存储系统、专用数字电器、设备、部件、其他装备,或者这些东西的组合,它们能够以定义的方式对指令做出响应并执行指令。
存储器设备112可以是任何形式的非瞬态计算机可读介质,包括但不限于:动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器件、磁盘、内部硬盘、可移动盘、磁光盘、紧制盘只读存储器(CD-ROM),任何其他的易失或者非易失存储器,或者其组合。
存储器设备112起到的作用是存储用于实施这里所描述的技术的机器可执行指令、数据和各种软件部件,它们都可以被CPU114处理。这样,计算机系统106是通用计算机系统,其在执行这些机器可执行指令时变为专用计算机系统。或者,这里所描述的各种技术可以实施为通过应用服务器120执行的软件产品的一部分。每一个计算机程序可以用高级过程语言或者面向对象编程语言(例如,C、C++、Java、来自AG的先进业务应用编程(Advanced Business Application Programming,ABAPTM),等等)实施,或者,如果期望,可以用汇编语言或者机器语言实施。语言可以是编译语言或者解释语言。机器可执行指令并非要限于任何特定的编程语言及其实施方案。将会理解,各种编程语言及其编码可被用来实施这里所包含的公开的教导。
在一个实施方案中,计算机系统106的存储器模块112包括应用服务器120和数据服务器127。应用服务器120可以存储联机事务处理(OLTP)单元121、增强型事务高速缓存(Enhanced Transactional Cache,ETC)控制器122、ETC124和联机分析处理(OLAP)单元125。
OLTP单元121可以包括源代码以及可执行机器代码,用于执行业务应用的功能。OLTP单元121可以设计成执行各种面向事务的功能,例如客户关系管理(customerrelationship management,CRM)、企业资源管理(ERP)应用、人力资源管理、企业内容管理(enterprise content management,ECM)、业务过程管理(business process management,BPM)、产品生命周期管理,诸如此类。OLTP单元121可使用例如Java、C++、ABAPTM等的高级编程语言编码。其他类型的编程语言也是有用的。OLTP单元121产生可被存储在计算系统106中的数据(称为“事务数据”)。事务数据包括例如涉及货物销售(例如,位置、时间、价格、数量等)、货物生产(例如,数量、供应商、原材料、成本等),电话销售数据、客户支持数据等的信息。
应用服务器120可以包括OLAP单元125,包括用于执行数据分析的源代码和可执行机器代码。OLAP单元125可以设计成执行各种业务功能,例如业务报告(例如,针对销售、市场、管理、财务等)、业务过程管理(BPM)、预算和预测,诸如此类。OLAP单元125可以使用例如Java、C++、ABAPTM等的高级编程语言编码。其他类型的编程语言也是可用的。
根据一个实施方案,OLTP单元121可通信地耦接到ETC控制器122。ETC控制器122管理ETC124。在初始化期间,ETC控制器122创建并配置ETC124。更具体地,ETC控制器122可以提供配置、生命周期管理、状态管理、冲刷管理、锁管理、次索引、查询顺序管理、高速缓存大小管理、版本控制,和/或其他服务,这将在下面的描述中更详细地描述。
在一个实施方案中,ETC124是具有和数据库事务相同的生命周期的事务级高速缓存。换句话说,其内容在事务结束(例如,提交、回卷等)时将被清除。通常,ETC124是“持久层”的部件,其是使程序更容易保持其状态的软件类的组。由于ETC124是临时的,所以消耗大量的存储器空间是可接受的。但是,为了避免用尽太多的存储器空间(例如,当查询具有非唯一键时),ETC控制器122可以限制要高速缓存的记录的数量(例如最大100)。
数据服务器127可以包括数据库管理系统(database management system,DBMS)126和数据库128。DBMS126可以包括用于定义、管理和处理数据库128的程序集合。客户端计算机150处的用户可以和用户接口(user interface,UI)152交互,以便经由应用服务器120和DBMS126与数据库128进行通信。UI152可以是图形用户接口,并且包括可选的用户接口部件,例如窗口、菜单、按钮、复选框、图表、图标,等等。
在一个实施方案中,数据库128是内存数据库,其主要依赖于系统的主存储器用于有效的计算机数据存储。更具体地,内存数据库中的数据驻留在易失性存储器中,并且不持久地存储在硬驱动器上,从而允许数据被以每毫秒几兆字节的速度即时访问和扫描。为了恢复的目的,内存数据库的一些数据,例如事务日志文件,仍可以持久地存储。内存数据库128允许对大量数据的实时无缝访问,以及对大量数据的实时传播。通过协同内存数据库128使用多核处理器114,可以进一步实现并行处理。内存数据库技术包括例如SAP的HANA(high performance analytic appliance,高性能分析设备)内存计算引擎的系统。
在一个实施方案中,针对OLAP和OLTP两者优化内存数据库128。通过把OLAP和OLTP合并(consolidate)到单个数据库中,可以取得较低的总拥有成本(total cost ofownership,TCO)。在内存数据库128中可以进一步实施基于列的数据存储,其中,数据表被作为数据列,依序存储并存储在压缩的存储器块中。当在单个列上执行计算时,这可以帮助更快的数据聚集。或者,基于行的数据存储也是可能的,其中,表被作为记录序列存储,其每一个记录均包含一行的字段。在某些实施方案中,不是更新整个行,而是将只更新已经改变的字段。这避免了在更新期间必须锁定整个数据表来防止对数据集合的冲突性修改。可以实现较高的并行化水平,这对实时数据流的实时处理以及执行恒定并且基本同时的更新很关键。
应该注意,计算机系统106的不同部件可以位于不同的物理机器。更具体地,应用服务器120和数据服务器127的部件可以在连接在网络132上的不同物理机器或者计算机系统上实施。例如,OLTP单元121、ETC控制器122和ETC124可以实施在一个机器上,而OLAP单元125和数据服务器127可以在另外两个不同的物理机器上实施。还应该理解,客户端计算机150的不同部件也可以位于计算机系统106上。
图2是本构架的示范性架构200的框图。如先前参考图1所述,架构200可以在计算机系统106中实施,或者可以在连接在网络132上的不同物理机器或者计算机系统中实施。应该注意,在下面的讨论中,将使用相同的数字引用图1中所描述的特征。
在一个实施方案中,OLTP单元121和持久层202通信。持久层202可以包括ETC124,ETC124起到数据库128的代理的作用,并延迟读和写访问的执行直到确定有必要冲刷。“冲刷”一般指基于ETC124更新数据库128的动作。更具体地,在冲刷期间,ETC中的脏记录可被写到数据库128。为了执行冲刷,可以实施批量操作接口。“批量操作”一般指把多个数据库访问操作作为一批(或者单个工作单位)执行。可以执行批量操作来把ETC124中的所有新插入的记录或者旧的被更新的记录写到数据库128。通过使用批量操作,数据在应用服务器120和数据库128之间的“往返”数量减少,并且性能得到有益地增强。
如果数据库128是基于行的,则批量操作可以是行方式绑定。行方式绑定批量操作把一个数组(array)绑定到每一行204,对于每一行204,从ETC124返回数据。例如,行方式绑定批量插入操作把ETC124中的数据的行添加到基于行的数据库128中的表的相应行中。行方式绑定在改善面向行的内存数据库的性能上特别有用。
使用开放数据库连接(Open Database Connectivity,ODBC),可以实施批量操作接口,ODBC是用于访问DBMS126的标准C编程语言中间件应用编程接口(ApplicationProgramming Interface,API)。也可以使用其他类型的接口。利用下列语句可以调用示范性开放数据库连接(ODBC)例程:
SQLSetStmtAttr(*m_pStatement,SQL_ATTR_PARAM_BIND_TYPE,sizeof(rowStructure),0);
SQLSetStmtAttr(*m_pStatement,SQL_ATTR_PARAMSET_SIZE,ARRAY_SIZE,0)
图3示出了ETC124的示例性架构。如图所示,ETC124可以包括高速缓存数据访问门(data access gate,DAG)303、主键(PK)映射304以及支持部分键寻址的次索引306。高速缓存DAG303是持久层202的实施方式,且充当类似于从数据服务器127返回的客户端侧记录集的数据容器。高速缓存DAG303通过提供插入、更新和/或查询数据库的功能,还充当与持久层的接口。高速缓存303中的每个记录包括指示该记录的状态(例如新、清洁等)的值。
用于高速缓存DAG303中每个记录的寻址空间可以包含用于单个数据记录的多个地址,从而通过使用主键、部分键或额外的键使该记录能够被定位。主键是唯一地标识高速缓存DAG303中的数据记录的键。部分键可以包括主键串的子集,并且不一定是唯一的。例如,如果主键包括分别具有值10和15的第一和第二列,则部分键可由具有值10的第一列限定。
主键(PK)映射304将主键与对应的记录指针(或地址)相关联。记录指针可被用于定位高速缓存DAG303中的记录(或行)。次索引306包括键号(KeyNo.)映射307、列号映射308、字段映射310和主键(Pk)集312。KeyNo.映射307将键号与指向列号映射308中条目的对应的指针相关联。键号指数据库中限定的部分键(或索引)或主键的标识符(ID)。例如,主键ID=1,且用于列#3和#4上的另一索引的ID=2。列号映射308中的每个条目使列号与字段映射310中的字段值相关联。该列号指示在字段值与数据库记录相关联时数据库表的列。此外,字段映射310中的每个条目将字段值关联到对应的Pk集312。因此,该Pk集312被键号、列号和字段值引用。
通过提供次索引306,本框架有利地支持仅包含部分键或非主键(即索引)的查询或写操作。例如,假定部分键代表数据库表中的第一列。如果将基于具有键值=’a’的该部分键执行查询,则键号=1(索引类型#1),列号=1(表中的第一列)且字段值=’a’。为了提供这样的查询信息,应用可以例如调用以下查询语句:DAG::GetByPartialKey(keyType#1,1,’a’)。利用此查询信息,可以找到两条满足该查询标准的记录(例如,Pk=’001’和Pk=’002’)。
无论在插入、更新或删除任何记录时,都可以应用由次索引306保持的映射。例如,当接收到具有部分键的写入操作时,次索引306可被用来将部分键映射到唯一地标识高速缓存DAG303中的一个或多个行。更具体地,次索引306可被用来将部分键的标识符(即键号)映射到列号,将列号映射到字段值,以及将字段值映射到包括一个或多个主键的主键集。可以通过向由该一个或多个主键标识的、高速缓存DAG303中的一个或多个行写入而延迟写操作。
根据一个实施方式,DBMS126可以对数据库128中存储的记录应用特定的锁类型以使其免受并发的数据访问或死锁(deadlock)。OLTP单元121还可通过调用持久层应用编程接口(API)而指定锁类型,例如load(withULock)。ETC控制器122可对每个高速缓存记录,保持DBMS126应用于每个对应的数据库记录上的相同的锁类型。该锁类型(或锁级别)可以是以下之一(以升序):不锁定(No Lock)、共享锁、更新锁和排他锁。其它类型的锁类型也可以是有用的。
当用户调用访问ETC124中记录的API时,ETC控制器122可根据以下的策略之一管理相关联的锁。例如,如果高速缓存记录的锁级别低于用户所请求的锁级别,则即使被请求的记录已经在高速缓存中,也可执行数据库访问以获得该锁。用户可通过调用ETC API(例如ETC.load(10,ULock))来请求锁级别(例如,更新锁)。可通过将锁从较低级别改变到较高级别而获得锁。在这种情况下,可在高速缓存日志文件中生成死锁警告。如果高速缓存记录的锁级别高于用户所请求的锁级别,则该高速缓存记录被直接返回给用户。当高速缓存记录被冲刷时,ETC控制器122将相关联的锁类型从共享锁或更新锁改变到排他锁。如果用户加载具有不锁定标记的记录,则不锁定标记可被应用于数据库记录。在事务结束后可解除所述锁定,而不管其是提交还是回卷。
图4a示出ETC124中的记录的示范性状态转移图400。为了既支持读操作也支持写操作,每一记录可以和六个可能的状态相关联。ETC124中的每一记录可以包括:和记录对应的存储器地址、读或写的值、指示记录是新(用户请求添加,但是还未插入数据库中)、旧(从数据库加载的记录)、清洁(从其被添加到高速缓存以来未改变)、脏(从其被添加到高速缓存以来被用户改变过)、删除(用户请求删除,但是还未在数据库上执行),或是其组合的状态值。
如状态转移图400所示,对于每一记录存在六个可能的状态(402、404、406、408、410、412):新清洁、新脏、新删除、旧清洁、旧脏和旧删除。可以响应于事件(沿每一转移箭头所指示的)开始从一个状态到另一个状态的转移。可以通过接收数据库访问操作(例如,插入、删除等)触发事件。
图4b是另一个示范性状态转移图450。如所示,每一记录的可能状态(452、454、456)的数量是三:新、旧清洁和旧脏。每一转移箭头用事件/动作标注。从一个状态到另一个的转移由每一相应事件/动作的出现来启动。例如,当用户请求把记录插入到数据库时,ETC控制器122把记录添加到ETC124,并把ETC124中的记录的状态设置为“新”。
应该理解,状态转移图450是状态转移图400的简化的实施方案。由于在业务应用中极少使用删除操作,所以可以去除“新删除”和“旧删除”状态(406和412)。可以为删除操作定义Write-through-DB策略。Write-through-DB(写直达数据库)策略指示响应于接收到删除指令,将记录从数据库128直接删除。此外,对应的记录也可以从ETC124去除。可以将“新清洁”和“新脏”状态(402和404)组合为“新”状态452。针对插入和更新操作,可以实施写延迟(Write-Delay)策略。写延迟策略指示记录被暂时存储在ETC124中,并且其状态设置为“新”。
图5示出了管理数据库事件的示范性方法500。在502,数据库事务开始。数据库事务是DBMS126作为单元处置的数据库操作(例如SQL)的序列。事务把数据库128从一种一致状态带到另一种一致状态,并且可以由用户或者业务应用启动。
在504,接收执行一个或更多个查询或写操作的请求。ETC控制器122根据所示的各种子例程应对每一操作。
在510,接收按键查询(Query by Key)操作。在这样的查询中使用的键可以是主键或者部分键。在512,当执行按键查询操作时,ETC控制器122查找ETC124中的记录。如果在ETC124中未找到记录,则在514,从数据库128加载该记录。在516,将记录添加到ETC124中,并且其状态被设置为清洁。如果在ETC124中找到了记录,则在518,将高速缓存记录返回到用户或者业务应用(或OLTP单元)。对于按非唯一索引键的查询,ETC控制器122可以检查以查看是否有必要冲刷。
在520,接收按键删除语句。如前面提到的那样,可以为删除操作定义Write-through-DB策略。在522,从数据库128直接删除记录。在524,ETC124中的对应记录也被去除。在526,如必要可更新次索引306。在当满足部分键标准的任何记录被从数据库移除时,这样的更新是必要的。如之前所讨论的,次索引可被用来支持按部分或非主键的查询或写操作。可通过例如从Pk集312移除与部分键相关联的特定主键来更新次索引。
在530,接收插入语句。在532,将新记录添加到ETC124,并且将其状态标记为“新”。在534,如必要可更新次索引306。在当满足部分键标准的任何记录被插入数据库时,这样的更新是必要的。可通过例如从Pk集312移除与部分键相关联的特定主键来更新次索引。
在540,接收按键更新语句。在542,ECT控制器122在ETC124中查找记录。如果记录未找到,则在544,ETC控制器122把记录添加到ETC124中。如果找到了记录,则在546,更新ETC124中的记录。在548,如果先前状态是“清洁”或者“脏”,则将ETC124中的记录标记为“脏”,以便指示其需要用来更新数据库中的现有记录。如果先前的状态是“新”,则状态保持不变。如必要可更新次索引306。在当满足部分键标准的任何数据库记录被更新且作为该更新的结果具有状态的改变时,这样的更新是必要的。可通过例如从Pk集312移除与部分键相关联的特定主键来更新次索引。
在550,接收通用查询、存储过程(stored procedure)、批更新(不按键)或者批删除(不按键)。在552,ETC控制器122查看是否需要冲刷。为了确认冲刷是有效的并且冲刷顺序正确,ETC控制器122可以实施确认冲刷的必要性的策略。
例如,在执行某个通用查询之前可以调用冲刷,这是因为某些查询结果可能受到ETC124中的任何新插入或者旧脏记录的影响。ETC控制器122可以在执行通用查询之前查看冲刷是否有必要。如果通用查询和视图(view)相关,则冲刷可能是必要的。视图一般指数据库中可作为虚拟表访问的查询。此外,如果ETC124中存在和与通用查询(例如SQL表JOIN、子查询等)相关的表相关联的任何新插入或者旧脏记录,则冲刷也可能是必要的。应该注意,也可以在执行存储过程、批更新(不按键)或者批删除(不按键)之前检查这些条件。
如果确认冲刷是有必要的,则在554,ETC控制器122根据例如表名,收集ETC124中全部的新插入或者旧脏记录。然后,ETC控制器122利用收集的记录插入或者更新数据库128,以便使数据库128与ETC124同步。这可以通过批量操作(例如,行方式绑定批量操作)实现。然后,将ETC124中的新插入和旧脏记录标记为清洁。如果确认冲刷是不必要的,则过程在步骤556继续,在步骤556,在数据库128上执行通用查询、存储过程、批更新或者批删除。在557,在存储过程的情况下,整个ETC124被清除。在批更新或者批删除的情况下,ETC124中相关联的表被清除。
在560,启动提交(COMMIT)来完成事务并保留数据库128中的变化。提交事务导致在562冲刷ETC124。然后,在564清除ETC124,并且在566成功地提交事务。
在570,启动回卷(ROLLBACK)以便把数据库返回到事务开始之前其所处的状态。回卷事务导致在572清除ETC124。然后,在574成功地回卷事务。
在506,事务结束。事务可以被提交或者回卷事件终止。
如先前所讨论的那样,ETC控制器122可以执行批量操作来冲刷ETC124。在下列情况下可以发生冲刷:(1)当事务正提交时;(2)在执行某个通用查询之前;(3)在执行某个批更新之前;(4)在执行某个批删除之前;(5)在执行所有的存储过程之前;和(6)当开发者通过调用函数Flush()明确地请求冲刷时。
由于冲刷延迟插入和更新操作的执行,所以查询语句的执行顺序也可能改变。执行顺序的修改可能导致顺序敏感查询语句的某些问题,并产生约束违反(或者表达式求值错误)。
约束可以指限制数据库中的值的规则。例如,SQL数据库服务器可以允许定义五种类型的约束:(1)非空(NOT NULL)约束;(2)唯一索引约束;(3)主键约束;(4)引用完整性(或者外键)约束;和(5)检查约束。也可以定义其他类型的约束。非空约束禁止数据库值为空。唯一索引约束禁止多个行在相同列或者列的组合中具有相同的值,但是允许某些值为空。主键约束将非空约束和唯一约束组合在单个声明中。引用完整性约束要求一个表中的值和另一表中的值匹配。检查约束要求数据库中的值符合指定的条件。
可能产生约束违反的顺序敏感查询语句的例子包括:改变主键、唯一索引或者外键的更新语句、插入和删除语句。修改这些语句的执行顺序可能导致数据库服务器抛出异常。
例如,如果更新和插入语句的执行顺序被修改,则可能出现三种类型的场景。在第一种场景中,唯一索引的列可能被如下更新:
OITM表:ItemCode是主键,并且ItemName是唯一列。
假设在OITM表中已经有一个记录:‘I001’,‘cpu’….
S1:Update OITM set ItemName=’memory’where ItemCode=’I001’
S2:Insert into OITM values(‘I002’,‘cpu’,…)
如果语句S1在语句S2之前执行,则这些语句将成功地执行。但是,如果S1在S2之后执行,则由于唯一索引约束违反,S2将产生异常。
在第二种场景中,外键的列可能被如下更新:
ORDR:OrderID是主键。
RDR1:(ItemCode,OrderID)是主键。OrderID是参考ORDR的外键。
S1:Update ORDR set OrderID=’R002’where OrderID=’R001’
S2:Insert into RDR1values(‘R002’,‘cpu’,…)
如果语句S1在语句S2之前执行,则这些语句将成功地执行。但是,如果S1在S2之后执行,则由于外键约束违反,S2将产生异常。
在第三种场景中,外键的列可能被如下更新:
S1:Update RDR1set OrderID=’R002’where OrderID=’R001’
S2:Insert into ORDR values(‘R002’,‘cpu’,…)
如果语句S1在语句S2之后执行,则这些语句将成功地执行。但是,如果S1在S2之前执行,则由于外键约束违反,S1将产生异常。
在另一个例子中,修改不同更新操作的执行顺序也可能产生约束违反。例如,唯一索引列可能被如下更新:
OITM表:ItemCode是主键并且ItemName是唯一列。假设在OITM表中已经有一个记录:‘I001’,‘cpu1’….,‘I002’,‘cpu2’….
S1:Update OITM set ItemName=’cpu2’where ItemCode=’I001’
S2:Update OITM set ItemName=’cpu3’where ItemCode=’I002’
如果语句S1在语句S2之后执行,则这些语句被成功地执行。但是,如果S1在S2之前执行,则由于唯一索引约束违反,S1将产生异常。
类似地,外键的列可能被如下更新:
S1:Update RDR1set OrderID=’R002’where OrderID=’R001’
S2:Update ORDR set OrderID=‘R002’,‘cpu’,…
如果语句S1在语句S2之后执行,则这些语句将成功地执行。但是,如果S1在S2之前执行,则由于外键约束违反,S1将产生异常。对于更新和删除操作,如果唯一索引或者外键的列被更新,则可能产生类似的问题。
为了解决这些可能的约束违反,ETC控制器122可以把Write-through-DB策略应用于顺序敏感的删除语句。Write-through-DB策略直接从数据库128去除记录。更具体地,Write-through-DB策略直接在数据库128上执行数据库访问操作,而非首先访问高速缓存(例如,把记录标记为删除)并延迟访问操作直到调用冲刷。对于顺序敏感的更新和插入语句,ETC控制器122可以保持语句初次进入ECT124时语句的原始执行顺序。至于由不正确的冲刷顺序导致的其他问题,用户可以明确地调用冲刷来确保正确的业务逻辑。在大多数业务应用中,这些情况通常非常罕见。
ETC控制器122也可以执行其他功能,例如数据版本管理。一个数据版本管理战略是把备份缓冲区用于版本检查控制。备份缓冲区起到保存和数据库128相关联的数据的原始内容的副本的作用。由于备份缓冲区的内容是从数据库加载的,所以它们可以用来通过比较数据和备份缓冲区来检查哪些字段被修改了。备份缓冲区也可以用来检查当发生冲刷时,记录是否被其他的客户端更新。如果备份缓冲区的内容和数据缓冲区中的数据库记录不同,其意味着在这些记录被高速缓存之后,新的版本已经被提交了。当前事务应该是回卷,并且应该抛出并发异常。
图6和图7示出了OLTP单元121如何与ETC124交互以便使用备份和数据缓冲区实施版本检查控制。如所示,每一对行(或者记录)是数据和备份缓冲区的组合,并且与数据库128中的记录相关联。OLTP单元121侧中的记录被分配给应用层,并被用来执行和事务相关的功能,而ETC124侧上的记录则被高速缓存在持久层内部。如先前所讨论的那样,ETC124起到数据库128的代理的作用。
更具体地,图6示出了在仅普通字段的更新期间,版本检查控制的示范性方法。普通字段一般指关系表的非主键的列。在这个例子中,表的第一列存储在第一和第二数据缓冲区(602和606)中,并且第一和第二备份缓冲区(604和608)保持标识表中的记录的主键609。
在步骤1,记录(例如表中的行或者其他数据元素)可以从数据库128加载到ETC124。当这发生时,第一数据缓冲区602可以存储数据库记录,而第一数据缓冲区602的内容被复制到第一备份缓冲区604。记录的状态被设置为清洁。
在步骤2,GetByKey语句可以被用户调用,以便“按键查询”或者检索其键字段和指定的键表达式(例如,001)匹配的记录。由于记录的状态是清洁,所以ETC记录可以被返回到OLTP单元121,并存储在第二数据缓冲区606中。第二备份缓冲区608也可以存储记录的副本。
在步骤3,Dag::SetColStr语句可以被用户调用,以便改变第二数据缓冲区606中包含的表的普通字段610中的串(string)值。在这种情况下,第二备份缓冲区608可以包含记录的不同副本或者旧副本。
在步骤4,Dag::Update语句可以被用户调用,以便更新ETC124或者数据库128。响应于这个语句,ETC控制器122可以调用UpdateInCache语句。如果记录在ETC124中找到,则第二数据缓冲区606中的记录被复制到第一数据缓冲区602。然后记录的状态被设置为脏。如果Checkbackup标志为真,则将第二备份缓冲区608与第一数据缓冲区602进行比较。如果第二备份缓冲区608和第一数据缓冲区602的内容不同,则报告错误。
在步骤5,GetbyKey语句可以被用户调用以便再次检索记录。作为响应,第一数据缓冲区602中的记录被返回,并存储在第二数据缓冲区606中。记录的副本被从第二数据缓冲区606复制到第二备份缓冲区608。在步骤6,DAG::SetColLong语句可以被用户调用,以便改变第二数据缓冲区606中所包含的表的普通字段612中的长整型值。然后,第二备份缓冲区608中的内容可以和第二数据缓冲区606中的内容不同。
在步骤7,Dag::Update语句可以再次被用户调用以便更新ETC124或者数据库128。响应于这个语句,ETC控制器122可以调用UpdateInCache语句。如果记录在ETC124中找到,则将第二数据缓冲区606中的记录复制到第一数据缓冲区602。记录的状态仍为脏。如果Checkbackup标志为真,则第二备份缓冲区608与第一数据缓冲区602进行比较。如果第二备份缓冲区608和第一数据缓冲区602的内容不同,则报告错误。
在步骤8,调用冲刷到数据库语句。首先检查第一备份缓冲区604,以便确定其是否包含与第一数据缓冲区602相同的脏记录。如果其不包含,则将第一数据缓冲区602的内容复制到第一备份缓冲区604。将第一数据缓冲区602中的脏记录冲刷到数据库128,并且将记录的状态设置为清洁。
图7示出了在主键字段的更新期间,版本检查控制的示范性方法。应该注意,在其他字段,例如唯一索引或者外键字段的更新期间,也可以应用这种方法。如所示,第一数据缓冲区和第一备份缓冲区被分配给ETC124,并且第二数据缓冲区和第二备份缓冲区被分配给OLTP单元(或者业务应用)。在数据正被从ETC移动到数据库128时,或者反过来时,第一数据缓冲区602暂时保持数据。在数据正被从OLTP单元121移动到ETC124或者数据库128时,第二数据缓冲区606暂时保持数据。在这个例子中,存储在第一和第二数据和备份缓冲区中的表的第一列保持标识表中的每一记录的主键。
在步骤1,记录(例如表中的行或者其他数据元素)可以从数据库128加载到ETC124。当这发生时,第一数据缓冲区602可以存储记录,而第一备份缓冲区604的内容可以被从第一数据缓冲区602复制到第一备份缓冲区604。将记录的状态设置为清洁。
在步骤2,GetByKey语句可以被用户调用,以便“按键查询”或者检索其键字段和指定的键表达式(例如,001)匹配的记录。由于记录的状态是清洁,所以记录可以被返回到OLTP单元121,并存储在第二数据缓冲区606中。第二备份缓冲区608也可以包含记录的副本。
在步骤3,Dag::SetColStr语句可以被用户调用,以便改变第二数据缓冲区606中包含的表的普通字段702中的串值。在这种情况下,第二备份缓冲区608可以包含记录的不同副本或者旧副本。
在步骤4,Dag::Update语句可以被用户调用,以便更新ETC124或者数据库128。响应于这个语句,ETC控制器122可以调用UpdateInCache语句。如果记录在ETC124中找到,则将第二数据缓冲区606中的记录复制到第一数据缓冲区602。然后将记录的状态设置为脏。如果Checkbackup标志为真,则第二备份缓冲区608与第一数据缓冲区602进行比较。如果第二备份缓冲区608和第一数据缓冲区602的内容不同,则报告错误。
在步骤5,响应于Dag::Update语句,也可以利用第二数据缓冲区606的内容更新第二备份缓冲区608。
在步骤6,DAG::SetColLong语句可以被用户调用,以便改变第二数据缓冲区606中所包含的表的普通字段706中的长整型值(例如,从10到5)和改变键字段704中的长整型值(例如,从001到002)。然后,第二备份缓冲区608中的内容可以和第二数据缓冲区606中的内容不同。
在步骤7,Dag::Update语句可以再次被用户调用以便更新ETC124或者数据库128。作为响应,ETC控制器122可以调用UpdateInCache语句。当ETC控制器122发现主键字段708已经被更新时,其把第二备份缓冲区608与第一数据缓冲区602的内容进行比较,检查它们是否相同。如果它们相同,则意味着OLTP单元121中的记录的原始版本是当前版本,因此,利用OLTP单元121中的记录覆盖ETC124中高速缓存的记录是安全的。因此,ETC124中的第一数据缓冲区602将被OLTP单元121侧上的第二数据缓冲区606更新,并且,当调用冲刷时,这个ETC记录可用来执行更新语句。
在步骤8(未示出),ETC控制器122可以针对新记录执行更新查询语句710。为了改善性能,查询语句可以用检查条件(例如,where PK=’001’and Col2=’a’and Col3=10(其中PK=’001’并且Col2=’a’并且Col3=10))执行。
在步骤9,用新记录更新第一数据缓冲区602,并且将其状态设置为清洁。然后,将第一数据缓冲区602的内容复制到第一备份缓冲区604。
在步骤10,如果必要则更新次索引。当满足部分键查询标准的任何数据库记录被更新时,这样的更新是必要的。可通过例如从Pk集312移除与部分键相关联的特定主键更新次索引。
尽管已经用特定于结构特征和/或方法步骤的语言描述了一个或更多个上述实施方案,但是将会理解,无需描述的特定特征或者步骤就可以实践其他的实施方案。相反,这些特定特征或者步骤作为一个或更多个实施方案的优选形式公开。
Claims (19)
1.一种计算机实施的事务高速缓存方法,包含:
配置和数据库相关联的事务高速缓存,其中所述数据库包括具有列架构的基于列的数据库;
接收具有部分键的写操作;
将所述部分键映射到一个或多个主键,其中所述主键唯一地标识所述事务高速缓存中的一个行,其中所述部分键是非唯一的并且由表示所述主键的串的子集标识;
对顺序敏感的查询操作应用写直达数据库策略,其中所述写直达数据库策略直接对数据库执行顺序敏感的查询操作;
延迟对数据库的所述写操作而非顺序敏感的查询操作的执行,直到确定有必要冲刷,其中,通过对标识出的所述事务高速缓存中的一个行执行写操作延迟该写操作;和
通过执行基于所述事务高速缓存更新数据库的批量操作来调用冲刷。
2.一种计算机实施的事务高速缓存方法,包含:
配置和数据库相关联的事务高速缓存;
接收具有部分键的写操作;
将所述部分键映射到一个或多个主键,其中所述主键唯一地标识所述事务高速缓存中的一个行,其中所述部分键是非唯一的并且由表示所述主键的串的子集标识;
延迟对数据库的所述写操作的执行,直到确定有必要冲刷,其中,通过对事务高速缓存执行写操作延迟该写操作;和
通过执行基于所述事务高速缓存更新数据库的行方式批量操作来调用冲刷。
3.如权利要求2所述的计算机实施的方法,其中,数据库包含内存数据库。
4.如权利要求2所述的计算机实施的方法,其中映射包含使用次索引将部分键映射到唯一地标识事务高速缓存中的一个行的一个或多个主键。
5.如权利要求4所述的计算机实施的方法,其中,将部分键映射到所述一个或多个主键包括:
将所述部分键的标识符映射到列号;
将列号映射到字段值;以及
将字段值映射到包括该一个或多个主键的主键集。
6.如权利要求2所述的计算机实施的方法,还包含:向事务高速缓存中的记录应用与向数据库中的对应记录应用的锁级别相同的锁级别。
7.如权利要求6所述的计算机实施的方法,其中所述锁级别包括不锁、共享锁、更新锁或排他锁。
8.如权利要求6所述的计算机实施的方法,还包含:
如果事务高速缓存中的记录的锁级别低于用户请求的锁级别,则执行对数据库的访问以获得锁。
9.如权利要求6所述的计算机实施的方法,还包含:
如果事务高速缓存中的记录的锁级别高于用户请求的锁级别,则将事务高速缓存中的记录返回给用户。
10.如权利要求6所述的计算机实施的方法,还包含:
当记录被冲刷时,将记录的锁级别从共享锁或更新锁改变为排他锁。
11.如权利要求2所述的计算机实施的方法,还包含:
接收按键删除操作;
从数据库和事务高速缓存删除对应记录;和
如必要更新次索引。
12.如权利要求2所述的计算机实施的方法,其中所述写操作包含:
插入操作,并且通过向事务高速缓存写新记录来延迟所述写操作。
13.如权利要求2所述的计算机实施的方法,其中所述写操作包含:
按键更新操作,并且延迟对所述数据库的所述写操作的执行直到确定有必要冲刷包含:
如果在事务高速缓存中未找到对应记录,则把新记录添加到事务高速缓存;和
如果在事务高速缓存中找到对应记录,则更新事务高速缓存中的对应记录。
14.如权利要求2所述的计算机实施的方法,其中所述写操作包含批更新或者批删除操作。
15.如权利要求14所述的计算机实施的方法,还包含如果所述写操作和视图相关,则确定有必要冲刷。
16.如权利要求14所述的计算机实施的方法,还包含如果事务高速缓存包括任何与和写操作相关的表相关联的新插入记录或者旧脏记录,则确定有必要冲刷。
17.如权利要求2所述的计算机实施的方法,还包含当事务正提交时或者在执行通用查询、批更新、批删除或者存储过程之前,确定有必要冲刷。
18.一种其上存储程序代码的非瞬态计算机可读介质,所述程序代码可被计算机执行,以便执行事务高速缓存的方法,包含:
配置和数据库相关联的事务高速缓存,其中所述数据库包括具有列架构的基于列的数据库;
接收具有部分键的写操作;
将所述部分键映射到一个或多个主键,其中所述主键唯一地标识所述事务高速缓存中的一个行,其中所述部分键是非唯一的并且由表示所述主键的串的子集标识;
延迟对数据库的写操作的执行,直到确定有必要冲刷,其中,通过插入或更新所述事务高速缓存中的记录来延迟该写操作;和
通过执行基于事务高速缓存更新数据库的行方式批量操作来调用冲刷,其中执行所述行方式批量操作包括将所述事务高速缓存中的所述记录写入所述基于列的数据库中的数据表中的相应记录行。
19.一种用于事务高速缓存的系统,包含:
非瞬态存储器设备,用于存储计算机可读程序代码;和
与所述存储器设备通信的处理器,所述处理器可利用所述计算机可读程序代码操作,以便
配置和数据库相关联的事务高速缓存,其中所述数据库包括具有列架构的基于列的数据库,
接收具有部分键的写操作,
将所述部分键映射到一个或多个主键,其中所述主键唯一地标识所述事务高速缓存中的一个行,其中所述部分键是非唯一的并且由表示所述主键的串的子集标识,
延迟对数据库的写操作的执行,直到确定有必要冲刷,其中,通过插入或者更新所述事务高速缓存中的记录来延迟该写操作,和
通过执行基于事务高速缓存更新数据库的行方式批量操作来调用冲刷,其中执行所述行方式批量操作包括将所述事务高速缓存中的所述记录写入所述基于列的数据库中的数据表中的相应记录行。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,995 US9632944B2 (en) | 2013-04-22 | 2013-06-30 | Enhanced transactional cache |
EP14165472.3A EP2797013B1 (en) | 2013-04-22 | 2014-04-22 | Database update execution according to power management schemes |
EP14165475.6A EP2797014B1 (en) | 2013-04-22 | 2014-04-22 | Database update execution according to power management schemes |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310140940 | 2013-04-22 | ||
CN2013101409406 | 2013-04-22 | ||
CN201310140940.6 | 2013-04-22 | ||
US13/869,926 | 2013-04-24 | ||
US13/869,926 US9477609B2 (en) | 2013-04-22 | 2013-04-24 | Enhanced transactional cache with bulk operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104111962A CN104111962A (zh) | 2014-10-22 |
CN104111962B true CN104111962B (zh) | 2018-09-18 |
Family
ID=51708757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310259984.0A Active CN104111962B (zh) | 2013-04-22 | 2013-06-26 | 具有批量操作的增强型事务高速缓存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104111962B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786959A (zh) * | 2016-01-11 | 2016-07-20 | 北京京东尚科信息技术有限公司 | 主备数据库的同步方法及装置 |
CN109992695B (zh) * | 2019-04-10 | 2021-08-27 | 北京奇艺世纪科技有限公司 | 一种视频信息查询方法及装置 |
CN113064919B (zh) * | 2021-03-31 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 数据处理方法、数据存储系统、计算机设备及存储介质 |
CN113868278B (zh) * | 2021-09-29 | 2023-08-01 | 北京有竹居网络技术有限公司 | 一种数据处理方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库系统的考虑了高速缓存的并行控制方案 |
CN1708757A (zh) * | 2002-12-23 | 2005-12-14 | 国际商业机器公司 | 透明网络边缘数据高速缓存 |
CN103020151A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 大数据量批处理系统和大数据量批处理方法 |
-
2013
- 2013-06-26 CN CN201310259984.0A patent/CN104111962B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库系统的考虑了高速缓存的并行控制方案 |
CN1708757A (zh) * | 2002-12-23 | 2005-12-14 | 国际商业机器公司 | 透明网络边缘数据高速缓存 |
CN103020151A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 大数据量批处理系统和大数据量批处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104111962A (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11176140B2 (en) | Updating a table using incremental and batch updates | |
US9477609B2 (en) | Enhanced transactional cache with bulk operation | |
US9632944B2 (en) | Enhanced transactional cache | |
US10671594B2 (en) | Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems | |
Sadalage et al. | NoSQL distilled: a brief guide to the emerging world of polyglot persistence | |
US8341128B1 (en) | Concurrency control using an effective change stack and tenant-based isolation | |
US6766325B1 (en) | System and method for maintaining data for performing “what if” analysis | |
US20120136839A1 (en) | User-Driven Conflict Resolution Of Concurrent Updates In Snapshot Isolation | |
CN106716409A (zh) | 基于查询需求从行存储数据库自适应地构建和更新列存储数据库的方法和系统 | |
US11977532B2 (en) | Log record identification using aggregated log indexes | |
US11157466B2 (en) | Data templates associated with non-relational database systems | |
US11947567B2 (en) | System and method for computing and managing datasets using hierarchical analytics | |
CN104111962B (zh) | 具有批量操作的增强型事务高速缓存 | |
Challawala et al. | MySQL 8 for Big Data: Effective Data Processing with MySQL 8, Hadoop, NoSQL APIs, and Other Big Data Tools | |
US7415457B2 (en) | Using a cache to provide cursor isolation | |
Zhang et al. | Skeena: Efficient and consistent cross-engine transactions | |
Schönig | Mastering PostgreSQL 12: Advanced techniques to build and administer scalable and reliable PostgreSQL database applications | |
US20180150498A1 (en) | Database management device, information processing system, and database management method | |
Reniers et al. | Schema design support for semi-structured data: Finding the sweet spot between NF and De-NF | |
US11188228B1 (en) | Graphing transaction operations for transaction compliance analysis | |
Schönig | Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications | |
Krogh | MySQL Concurrency [M] | |
Akhtar et al. | Pro Apache Phoenix: An SQL Driver for HBase | |
Menon | Expert Oracle JDBC Programming | |
US20230350859A1 (en) | Data retrieval from archived data storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |