CN104021145A - 一种混合业务并发访问的方法和装置 - Google Patents
一种混合业务并发访问的方法和装置 Download PDFInfo
- Publication number
- CN104021145A CN104021145A CN201410206980.0A CN201410206980A CN104021145A CN 104021145 A CN104021145 A CN 104021145A CN 201410206980 A CN201410206980 A CN 201410206980A CN 104021145 A CN104021145 A CN 104021145A
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- pending data
- query manipulation
- affairs
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
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)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例提供一种混合业务并发访问的方法和装置,涉及数据库应用领域,实现对数据库业务读写并发访问,允许查询与修改操作的无锁并发,降低操作复杂度,减少开销,减少对内存浪费,提高数据及时性。包括:将数据表划分得到至少一个数据组;将针对数据表的修改或查询操作分解为至少一个点操作;判断点操作处理的待处理的数据是否分布在多列;若待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作。本发明应用于数据表的读写并发访问。
Description
技术领域
本发明涉及数据库应用技术领域,尤其涉及一种混合业务并发访问的方法和装置。
背景技术
对于传统的数据库应用,其业务场景中主要是通过联机事务处理(On-Line Transaction Processing,简称OLTP)处理数据的频繁更新,通过提取-转换-加载(Extraction-Transformation-Loading,简称ELT)操作将数据导入到数据仓库,在数据仓库中实施联机分析处理(On-Line Analytical Processing,简称OLAP)支持复杂结构化查询语言(Structured Query Language,简称SQL)查询生成报表。由于数据库底层的读写并发操作需要通过复杂的锁机制加以保护,数据的频繁更新会导致OLAP查询的中断并降低查询效率。因此,为了提高查询效率往往不允许OLTP与OLAP业务运行在同一数据库管理系统中,但这类限制带来的直接问题是数据的及时性差,报表无法反映最新的业务情况。同时,数据库系统的设计与实现也不得不面对并发所带来的各种复杂问题例如:死锁、优先级反转等。
为了解决数据库应用中OLAP与OLTP在混合场景下的读写并发的同时可以提高查询效率,现有技术中的解决方案是:利用数据快照实现OLTP与OLAP业务的隔离。数据快照是通过fork()算法创建的子进程,子进程与主进程共享同一份数据,OLTP业务在主进程中运行,OLAP业务在子进程中运行。子进程的数据读取不影响内存数据。在主进程执行数据更新时,原有数据页执行复制后在新页上进行写操作,因此不会对子进程中正在访问的数据造成影响。但是,现有技术中的解决方案中的主/子进程间的数据同步需依赖创建子进程,会带来不必要的初始化开销。同时,主进程中对于更新操作需要复制页对性能影响较大。更新数据较大时,会占用过多的内存。
发明内容
本发明的实施例提供一种混合业务并发访问的方法和装置,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种混合业务并发访问的方法,所述方法包括:
将数据表划分得到至少一个数据组;其中,每个所述数据组中包括至少一个所述数据表中的列,所述数据组中的列是连续的;
将针对所述数据表的修改或查询操作分解为至少一个点操作;
判断进行所述点操作处理的待处理的数据是否分布在多列;
若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作。
在第一种可能的实现方式中,结合第一方面,所述方法还包括:
若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作。
在第二种可能的实现方式中,结合第一方面,所述若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作,包括:
若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中;
判断所述待处理的数据是否在事务粒度范围内;
若所述待处理的数据在同一所述数据组中且不在所述事务粒度范围内,则通过异地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据在同一所述数据组中且在所述事务粒度范围内,则通过本地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据不在同一所述数据组中且在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的所述每个数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据不在同一所述数据组中且不在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的所述每个数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作。
在第三种可能的实现方式中,结合第一种可能的实现方式,所述若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作,包括:
若所述待处理的数据分布在单一列,则判断所述待处理的数据是否在所述事务粒度范围内;
若所述待处理的数据不在所述事务粒度范围内,通过异地更新方式对所述待处理的数据进行修改或查询操作;
若所述待处理的数据在所述事务粒度范围内,通过本地更新方式对所述待处理的数据进行修改或查询操作。
在第四种可能的实现方式中,结合第一方面或上述任一可能的实现方式,所述将数据表划分得到至少一个数据组之前,还包括:
定义所述数据表的属性,其中,所述数据表的属性包括:所述数据表中存储的数据类型、所述数据表的长度和所述数据表各个字段之间的关联关系;
根据所述数据表的属性,申请内存空间建立所述数据表和数据副本区。
在第五种可能的实现方式中,结合第一方面或上述任一可能的实现方式,所述方法还包括:
定义所述数据表中的每个所述数据组的属性为关键区,以便于针对所述数据表中的待处理数据的修改和查询操作同时进行。
在第六种可能的实现方式中,结合第一方面或上述任一可能的实现方式,
所述待处理的数据的一致性是由事务内存系统保障的。
第二方面,提供一种混合业务并发访问的装置,所述装置包括:
划分单元,用于数据表划分得到至少一个数据组;其中,每个所述数据组中包括至少一个所述数据表中的列,所述数据组中的列是连续的;
分解单元,用于将针对所述数据表中的修改或查询操作分解为至少一个点操作;
判断单元,用于判断进行所述点操作处理的待处理的数据是否分布在多列;
处理单元,用于若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作。
在第一种可能的实现方式中,结合第二方面,
所述处理单元,还用于若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作。
在第二种可能的实现方式中,结合第二方面,所述处理单元包括:
判断模块,用于判断所述待处理的数据是否在所述同一数据组中;
所述判断模块,还用于判断所述待处理的数据是否在事务粒度范围内;
处理模块,用于若所述判断模块得到所述待处理的数据在同一所述数据组中且不在所述事务粒度范围内,则通过异地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据在同一所述数据组中且在所述事务粒度范围内,则通过本地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在同一所述数据组中且在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的所述每个数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在同一所述数据组中且不在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的所述每个数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作。
在第三种可能的实现方式中,结合第一种可能的实现方式,
所述判断模块,还用于若所述待处理的数据分布在单一列,则判断所述待处理的数据是否在所述事务粒度范围内;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在所述事务粒度范围内,通过异地更新方式对所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据在所述事务粒度范围内,则通过本地更新方式对所述待处理的数据进行修改或查询操作。
在第四种可能的实现方式中,结合第二方面或上述任一可能的实现方式,所述装置还包括:
定义单元,用于定义所述数据表的属性,其中,所述数据表的属性包括:所述数据表中存储的数据类型、所述数据表的长度和所述数据表各个字段之间的关联关系;
创建单元,用于根据所述定义单元得到的所述数据表的属性,申请内存空间建立所述数据表和数据副本区。
在第五种可能的实现方式中,结合第二方面或上述任一可能的实现方式,
所述定义单元,还用于定义所述数据表中的每个所述数据组的属性为关键区,以便于针对所述数据表中的待处理数据的修改和查询操作同时进行。
在第六种可能的实现方式中,结合第二方面或上述任一可能的实现方式,
所述待处理的数据的一致性是由事务内存系统保障的。
本发明的实施例提供的混合业务并发访问的方法和装置,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的一种实现混合业务并发访问的方法的装置的外/内部交换关系示意图;
图2为本发明的实施例提供的一种混合业务并发访问的方法的流程示意图;
图3为本发明的实施例提供的另一种混合业务并发访问的方法的流程示意图;
图4为本发明的实施例提供的一种应用事务内存的列存组织结构示意图;
图5为本发明的实施例提供的又一种混合业务并发访问的方法的流程示意图;
图6为本发明的实施例提供的一种混合业务并发访问的装置的结构示意图;
图7为本发明的实施例提供的另一种混合业务并发访问的装置的结构示意图;
图8为本发明的实施例提供的又一种混合业务并发访问的装置的结构示意图;
图9为本发明的实施例提供的再一种混合业务并发访问的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的混合业务并发访问的方法是在基于硬件设备的基础上实现的,主要装置/内部交互关系示意图如图1中所示,涉及部件主要包括三部分:数据库系统,数据库内部数据组织以及事务内存系统。外部应用中的OLAP业务中的外部数据文件可以通过提取转换加载(Extract Transform and Load,简称ETL)操作通过本实施例提供的混合业务并发访问的方法通过数据库系统查询数据表中的数据;或者,外部应用中的OLTP业务例如:事务应用A、事务应用B和事务应用C等可以通过本实施例提供的混合业务并发访问的方法通过数据库系统修改数据表中的数据;并发访问过程中数据的一致性通过事务内存系统来提供保障,具体的事务内存系统的实现方式可以参照现有技术方案中的任一可以实现数据一致性的方案。
事务内存通过将不同并行执行的线程事务化,用事务操作来代替现有技术方案中的锁机制,降低了编程的复杂性。事务是进行单线程执行的对内存进行读写的有序操作序列,其特性包括:原子性、隔离性、一致性。可通过事务来访问特定内存,事务内存系统负责正确执行事务。
对于配备了硬件事务内存的处理器,其底层定时器模块跟踪事务的读集合read-set和写集合write-set,read-set和write-set分别表明事务在执行过程中已读出或写入的所有高速缓存行。如果事务的read-set中的一个高速缓存行被另一个线程写入,或者事务的write-set中的一个高速缓存行被另一个线程读取或写入,则会出现事务冲突。本实施例中可以利用硬件事务内存来保障特定粒度下数据访问的事务性,避免事务冲突的发生。其中,以一个64字节的高速缓存行作为一个粒度。
实施例1
本发明的实施例提供一种混合业务并发访问的方法,参照图2所示,该方法包括以下步骤:
101、混合业务并发访问的装置将数据表划分得到至少一个数据组。
其中,每个数据组中包括至少一个数据表中的列,数据组中的列是连续的。
具体的,分析型数据库中数据一般是按照列方式组织,同一记录的各字段通过列偏移量(即逻辑行标号RowID)来标识。由于绝大部分数据查询与修改操作只涉及记录中的特定列,因此将数据表进行垂直划分得到数据组,方便对数据库中的数据进行查询或者修改操作。
102、混合业务并发访问的装置将针对数据表的修改或查询操作分解为至少一个点操作。
其中,点操作即为行操作。为了方便对数据表中的数据进行操作,可以将针对数据表中的修改或者查询操作分解为针对数据表的行操作来实施。
103、混合业务并发访问的装置判断进行点操作处理的待处理的数据是否分布在多列。
104、若待处理的数据分布在多列,则混合业务并发访问的装置判断该待处理的数据是否在同一数据组中,并根据判断结果对待处理的数据进行修改或者查询操作。
具体的,事务粒度的大小是由硬件设备中的事务内存的大小来限定的,具体设置中可以根据事务内存实际所有的空间大小在保证系统正常运行的情况下,来选择恰当的数值作为事务粒度的大小范围。
本实施例中会根据待处理的数据分布在多列,则判断待处理的数据是否在同一数据组中并判断待处理的数据是否在事务粒度范围内,并根据具体的判断结果选择通过本地更新或异地更新方式对待处理的数据进行修改或查询操作。
基于本实施中的论述,混合业务并发访问的装置可以是计算机系统中的处理器或者可以是硬件设备中能实现相应步骤的实际设备,此处对于设备的名称不作具体的限定,凡是可以实现相应步骤的设备均可以作为混合业务并发访问的装置。
本发明的实施例提供的混合业务并发访问的方法,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
实施例2
本发明的实施例提供一种混合业务并发访问的方法,参照图3所示,该方法包括以下步骤:
201、混合业务并发访问的装置定义数据表的属性。
其中,数据表的属性包括:数据表中存储的数据类型、数据表的长度和数据表各个字段之间的关联关系。
具体的,数据表的属性可以是由混合业务并发访问的装置使用数据库语言通过编辑程序来实现的。
202、混合业务并发访问的装置根据数据表的属性,申请内存空间建立数据表和数据副本区。
其中,数据表中可以存储实际的数据,也可以存储标识数据存放具体位置对应的ID数值;若数据表中存储的是ID值,则数据副本区中存储的是ID值对应的实际数据。
203、混合业务并发访问的装置将数据表划分得到至少一个数据组。
其中,每个数据组中包括至少一个数据表中的列,数据组中的列是连续的。
具体的,分析型数据库中数据一般是按照列方式组织,同一记录的各字段通过列偏移量(即逻辑行标号RowID)来标识。由于绝大部分数据查询与修改操作只涉及记录中的特定列,因此可以根据数据表中的数据之间的关联关系和对应数据表中数据的总长度是否在事务粒度范围内将数据表进行垂直划分得到数据组,方便对数据库中的数据进行查询或者修改操作。如图4中所示,第一列为一个独立的划分为一个数据组,而第二、三列则属于同一划分为一个数据组。为了实现并发修改和查询(即读写)访问,数据组中每条记录的字段总长度不超过硬件事务内存的粒度。对于变长字段和多列关联的特殊情况,在数据组中仅保存实际数据在数据副本区中的ID值,ID值所对应的实际数据存放在数据副本区中。
204、混合业务并发访问的装置定义数据表中的每个数据组的属性为关键区,以便于针对数据表中的待处理的数据的修改和查询操作同时进行。
具体的,在对数据表进行修改和查询操作之前,需要先定义数据表中的每个数据组为关键区,在实际执行中对数据表进行修改或者查询操作时可以根据具体操作的数据表中的对象将数据表中的对应的数据组定义为关键区。其中,关键区用于保障对数据组中的数据进行修改或查询操作时,不受其它查询或者修改操作的干扰。该关键区对应的数据表中的数据组可以通过事务内存保证数据的一致性,这样对该数据组中的数据进行修改和查询操作可以并发执行,即实现对数据表中的数据的并发读写访问。
205、混合业务并发访问的装置将针对数据表的修改或查询操作分解为至少一个点操作。
其中,点操作即为行操作。为了方便对数据表中的数据进行操作,可以将针对数据表中的修改或者查询操作分解为针对数据表的行操作来实施。
206、混合业务并发访问的装置判断进行点操作处理的待处理的数据是否分布在多列。
207、若待处理的数据分布在多列,则混合业务并发访问的装置判断该待处理的数据是否在同一数据组中,并根据判断结果对待处理的数据进行修改或者查询操作。
208、若待处理的数据分布在单一列,则混合业务并发访问的装置根据该待处理的数据是否在事务粒度范围内对待处理的数据进行修改或者查询操作。
其中,待处理的数据的一致性是由事务内存系统保障的。
具体的,根据待处理的数据是否在事务粒度范围内的判断结果选择通过本地更新方式或者异地更新方式进行数据的修改或查询操作。
本发明的实施例提供的混合业务并发访问的方法,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
实施例3
本发明的实施例提供一种混合业务并发访问的方法,参照图5所示,该方法包括以下步骤:
301、混合业务并发访问的装置定义数据表的属性。
其中,数据表的属性包括:数据表中存储的数据类型、数据表的长度和数据表各个字段之间的关联关系。
具体的,数据表的属性可以是由混合业务并发访问的装置使用数据库语言通过编辑程序来实现的。
302、混合业务并发访问的装置根据数据表的属性,申请内存空间建立数据表和数据副本区。
其中,数据表中可以存储实际的数据,也可以存储标识数据存放具体位置对应的ID数值;若数据表中存储的是ID值,则数据副本区中存储的是ID值对应的实际数据。
303、混合业务并发访问的装置将数据表划分得到至少一个数据组。
其中,每个数据组中包括至少一个数据表中的列,该数据组中的列是连续的。
具体的,分析型数据库中数据一般是按照列方式组织,同一记录的各字段通过列偏移量(即逻辑行标号RowID)来标识。由于绝大部分数据查询与修改操作只涉及记录中的特定列,因此可以根据数据表中的数据之间的关联关系和对应数据表中数据的总长度是否在事务粒度范围内将数据表进行垂直划分得到数据组,方便对数据库中的数据进行查询或者修改操作。如图4中所示,第一列为一个独立的划分为一个数据组,而第二、三列则属于同一划分为一个数据组。为了实现并发修改和查询(即读写)访问,数据组中每条记录的字段总长度不超过硬件事务内存的粒度。对于变长字段和多列关联的特殊情况,在数据组中仅保存实际数据在数据副本区中的ID值,ID值所对应的实际数据存放在数据副本区中。
304、混合业务并发访问的装置定义数据表中的每个数据组的属性为关键区,以便于针对数据表中的待处理的数据的修改和查询操作同时进行。
具体的,在对数据表进行修改和查询操作之前,需要先定义数据表中的每个数据组为关键区,在实际执行中对数据表进行修改或者查询操作时可以根据具体操作的数据表中的对象将数据表中的对应的数据组定义为关键区。其中,关键区用于保障对数据组中的数据进行修改或查询操作时,不受其它查询或者修改操作的干扰。该关键区对应的数据表中的数据组可以通过事务内存保证数据的一致性,这样对该数据组中的数据进行修改和查询操作可以并发执行,即实现对数据表中的数据的并发读写访问。
305、混合业务并发访问的装置将针对数据表的修改或查询操作分解为至少一个点操作。
其中,点操作即为行操作;通过将数据表中需要进行修改或者查询操作的数据表所属范围分解为至少一个行操作即实现将针对数据表中的修改或查询操作分解为至少一个点操作。
306、混合业务并发访问的装置判断进行点操作处理的待处理的数据是否分布在多列。
通过判断进行点操作处理的待处理的数据是否存在于数据表中的多个列中,即可以得到进行点操作处理的待处理的数据是否分布在多列;若该待处理的数据存在于数据表的多个列中,则该待处理的数据分布在多列;若该处理的数据只存在于数据表的其中一个列中,则该待处理的数据分布在单一列。
在步骤306判断进行点操作处理的待处理的数据是否分布在多列之后,根据进行点操作处理的待处理的数据是否分布在多列的判断结果,若该待处理的数据分布在多列则执行步骤307~312,若该待处理的数据分布在单一列则执行步骤313~315;
307、若待处理的数据分布在多列,则混合业务并发访问的装置判断该待处理的数据是否在同一数据组中。
308、混合业务并发访问的装置判断待处理的数据是否在事务粒度范围内。
具体的,事务粒度的大小是由硬件设备中的事务内存的大小来限定的,具体设置中可以根据事务内存实际所有的空间大小在保证系统正常运行的情况下,来选择恰当的数值作为事务粒度的大小范围。
需要说明的是步骤307判断待处理的数据是否在同一数据组中和步骤308判断待处理的数据是否在事务粒度范围内在执行顺序上没有先后之分,即步骤307可以是与步骤308同时执行的,或者步骤307可以是在步骤308之后执行的,或者步骤307可以是在步骤308之前执行的,此处对于步骤307和步骤308的执行顺序不作唯一的限定,在实际执行中具体的实施顺序根据实际运行环境来决定。
步骤308之后,可以根据待处理的数据是否在同一数据组中和是否在事务粒度范围内的判断结果,若待处理的数据在同一数据组中且不在事务粒度范围内则执行步骤309;若待处理的数据在同一数据组中且在事务粒度范围内则执行步骤310;若待处理的数据不在同一数据组中且在事务粒度范围内则执行步骤311;若待处理的数据不在同一数据组中且不在事务粒度范围内则执行步骤312;
309、若待处理的数据在同一数据组中且不在事务粒度范围内,则混合业务并发访问的装置通过异地更新方式对数据组中的待处理的数据进行修改或查询操作。
其中,异地更新方式具体可以采用out_place方式。采用out_place方式是由于数据表中存储的并不是实际数据,而是实际数据在数据副本区中的对应的ID值。
310、若待处理的数据在同一数据组中且在事务粒度范围内,则混合业务并发访问的装置通过本地更新方式对数据组中的待处理的数据进行修改或查询操作。
其中,本地更新方式具体可以采用in_place方式。
其中,本实施例中所出现的所有对待处理的数据进行修改操作即为对该待处理的数据进行写操作,对于写操作的定义可以参见现有技术方案中定义,此处不作具体的限定。本实施例中现的所有对待处理的数据进行查询操作即为对待处理的数据进行读操作,对于读操作的定义可以参见现有技术方案中定义,此处不作具体的限定。
311、若待处理的数据不在同一数据组中且在事务粒度范围内,则混合业务并发访问的装置将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作并通过本地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
具体的,将针对待处理的数据的修改操作分解为与数据表中的每个数据组对应的数据修改操作可以通过将修改操作分解为与进行修改操作的数据所在数据表中的数据组相对应的数据修改操作的数据组来实现。将针对待处理的数据的查询操作分解为与数据表中的每个数据组对应的数据查询操作可以通过将查询操作分解为与进行查询操作的数据所在数据表中的数据组相对应的数据查询操作的数据组来实现。
312、若待处理的数据不在同一数据组中且不在事务粒度范围内,则混合业务并发访问的装置将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作并通过异地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
313、若待处理的数据分布在单一列,则混合业务并发访问的装置判断待处理的数据是否在事务粒度范围内。
通过判断待处理的数据的总的数据长度是否超过事务内存大小限制的范围,即可以得到待处理的数据是否在事务粒度范围内。
314、若待处理的数据不在事务粒度范围内,混合业务并发访问的装置通过异地更新方式对待处理的数据进行修改或查询操作。
315、若待处理的数据在事务粒度范围内,混合业务并发访问的装置通过本地更新方式对待处理的数据进行修改或查询操作。
其中,本实施例中的待处理的数据的一致性是由事务内存系统保障的。
需要说明的是,在对数据表中的数据进行修改操作时,若数据表中存储的是ID值而不是实际数据,在对数据进行修改操作时,需要通过out_place方式即先对数据副本区中的数据进行修改操作,然后将指针更新到对应的字段中,修改数据表中的ID值,同时删除原始的数据。以对数据进行更新、插入、删除操作为例进行说明具体的操作过程可以为:若是对数据进行更新操作,则先在数据副本区中插入更新后的新数据,然后早数据表中增加该新数据在数据副本区中对应的ID值,将数据副本区原始数据的指针对应的ID值置为不可用,同时删除原始的数据;若进行插入数据的操作,则先在数据副本区中插入需要插入的新数据,然后在数据表中增加该新数据在数据副本区中对应的ID值;若是对数据进行删除操作,则先在数据副本区中删除需要进行删除操作的原始数据,然后将在数据表中将该数据对应的ID值设置为不可用。在对数据表中的数据进行查询操作时,若数据表中存储的是ID值而不是实际数据,在对数据进行查询操作时,先在数据表中获得ID值,然后根据获得的ID值在数据副本区中的相应位置读取实际数据。
基于本实施中的论述,混合业务并发访问的装置可以是计算机系统中的处理器或者可以是硬件设备中能实现相应步骤的实际设备,此处对于设备的名称不作具体的限定,凡是可以实现相应步骤的设备均可以作为混合业务并发访问的装置。
本发明的实施例提供的混合业务并发访问的方法,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
基于上述实施例中提供的混合业务并发访问的方法,本发明提供一种应用于软件中实现该混合业务并发访问的方法的操作流程:一、数据文件导入到数据库中的过程为:通过数据定义语言(datadefinition language,简称DDL)建表语句定义待导入的数据表的属性;数据库根据数据表的属性,申请内存空间建立垂直划分和对应的数据副本区用于存储数据。二、数据导入将各列数据分别写入对应的划分的过程:导入工具解析数据文件,将记录即数据分批发送至服务器端;服务器端将接收到的记录逐条插入数据表中;将每条记录插入每个垂直划分的数据定义为关键区,即执行在事务粒度内的内存写操作;对于仅保存副本ID的划分,插入分为两步完成:首先增加一个新的数据副本并获取ID,然后更新字段中对应的ID。三、并发数据查询的过程(即读操作):客户端查询请求后,将结构化查询语言(StructuredQuery Language,简称SQL)语句发送到数据库服务端;数据库服务端解析SQL语句后,得到所要扫描的数据表及扫描范围,对于根据ID的索引扫描同样适用。然后根据得到的扫面范围逐一进行扫描得到记录集合;对于每条记录的查询可以分解为针对不同垂直划分的读操作,通过定义事务内存关键区可以确保各个划分中的读操作满足事务性;对于数据表中字段中可以直接获取其中存储的最新值的数据直接进行读操作;对于具有数据副本区的扫描范围可以先在数据表中读取到最新的对应数据副本区的ID字段,根据读取到的最新的ID,再访问该划分对应的数据副本区获取数据副本的实际取值。需要说明的是不同的查询操作也可以并发执行。四、并发数据修改的过程(即写操作):客户端将SQL语句发送至服务器端;服务器端解析SQL语句并找到对应需要修改的;对于每条记录更新分解为每个垂直划分的数据修改,并定义关键区操作,即执行在事务粒度内的内存写操作;对于仅保存副本ID的划分,更新分为三步完成:首先在数据副本区中增加一个新的数据副本并获取ID,然后更新数据表的对应字段中对应的ID,最后将原ID指向的数据副本设置为不可用。
当然,需要说明的是此处只是举一种可行的实现方式来说明应用软件实现混合业务并发访问的方法的过程,并没有限定只能是应用本发明中所列举的过程来进行。在实际的操作中,可以根据实际的执行环境,选择恰当的软件实现语句和过程来实施。
实施例4
本发明的实施例提供一种混合业务并发访问的装置4,该装置4用于实现图2、图3和图5中的任一对应的方法实施例所提供的混合业务并发访问的方法,参照图6所示,该装置3包括:划分单元41、分解单元42、判断单元43和处理单元44,其中:
划分单元41,用于将数据表划分得到至少一个数据组。
其中,每个数据组中包括至少一个数据表中的列,数据组中的列是连续的。
分解单元42,用于将针对数据表中的修改或查询操作分解为至少一个点操作。
判断单元43,用于判断进行点操作处理的待处理的数据是否分布在多列。
处理单元44,用于若判断单元43得到待处理的数据分布在多列,则判断待处理的数据是否在同一数据组中,并根据判断结果对待处理的数据进行修改或者查询操作。
本发明的实施例提供的混合业务并发访问的装置,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,避免了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
进一步,处理单元44,还用于若判断单元43得到待处理的数据分布在单一列,则根据待处理的数据是否在事务粒度范围内对待处理的数据进行修改或者查询操作。
具体的,参照图7所示,处理单元44包括:判断模块441和处理模块442,其中:
判断模块441,用于若判断单元43得到待处理的数据分布在多列,则判断待处理的数据是否在同一数据组中。
判断模块441,还用于判断待处理的数据是否在事务粒度范围内。
处理模块442,用于若判断模块441得到待处理的数据在同一数据组中且不在事务粒度范围内,则通过异地更新方式对数据组中的待处理的数据进行修改或查询操作。
处理模块442,还用于若判断模块441得到待处理的数据在同一数据组中且在事务粒度范围内,则通过本地更新方式对数据组中的待处理的数据进行修改或查询操作。
进一步,可选的,处理模块442,还用于若判断模块441得到待处理的数据在同一数据组中且在事务粒度范围内,则将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
处理模块442,还用于若判断模块441得到待处理的数据在同一数据组中且不在事务粒度范围内,则将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
进一步可选的,判断模块441,还用于若待处理的数据分布在单一列,则判断待处理的数据是否在事务粒度范围内。
处理模块442,还用于若判断模块441得到待处理的数据不在事务粒度范围内,通过异地更新方式对待处理的数据进行修改或查询操作。
处理模块442,还用于若判断模块441得到待处理的数据在事务粒度范围内,则通过本地更新方式对待处理的数据进行修改或查询操作。
进一步,参照图8所示,该装置4还包括:定义单元45和创建单元46,其中:
定义单元45,用于定义数据表的属性。
其中,数据表的属性包括:数据表中存储的数据类型、数据表的长度和数据表各个字段之间的关联关系。
创建单元46,用于根据定义单元35得到的数据表的属性,申请内存空间建立数据表和数据副本区。
定义单元45,还用于定义数据表中的每个数据组的属性为关键区,以便于针对数据表中的待处理的数据的修改和查询操作同时进行。
其中,本实施例中的待处理的数据的一致性是由事务内存系统保障的。
需要说明的是,本实施例中的混合业务并发访问的装置中的各单元和各模块的实现方式和交互过程可以参考相应方法实施例中的相关描述。
本发明的实施例提供的混合业务并发访问的装置,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
实施例5
本发明的实施例提供一种混合业务并发访问的装置5,该装置5用于实现图2、图3和图5中的任一对应的方法实施例所提供的混合业务并发访问的方法,参照图9所示,该装置5包括:至少一个处理器51、存储器52、通信接口53和总线54,至少一个处理器51、存储器52和通信接口53通过总线54连接并完成相互间的通信,存储器51用于存储程序代码,其中:
该总线54可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral ComponentInterconnect,简称为PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,简称为EISA)总线等。该总线54可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器52用于存储程序代码,该程序代码包括操作指令。存储器52可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器51可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific IntegratedCircuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口53,主要用于实现本实施例中的装置之间的通信。
处理器51,还用于调用存储器52中的程序代码,用以执行以下操作:
将数据表划分得到至少一个数据组。
其中,每个数据组中包括至少一个数据表中的列,数据组中的列是连续的。
将针对数据表的修改或查询操作分解为至少一个点操作。
判断进行点操作处理的待处理的数据是否分布在多列。
若待处理的数据分布在多列,则判断待处理的数据是否在同一数据组中,并根据判断结果对待处理的数据进行修改或者查询操作。
进一步,处理器51,还用于若待处理的数据分布在单一列,则根据待处理的数据是否在事务粒度范围内对待处理的数据进行修改或者查询操作。
具体的,处理器51具体用于执行以下步骤:
若待处理的数据分布在多列,则判断待处理的数据是否在同一数据组中。
判断待处理的数据是否在事务粒度范围内。
若待处理的数据在同一数据组中且不在事务粒度范围内,则通过异地更新方式对数据组中的待处理的数据进行修改或查询操作。
若待处理的数据在同一数据组中且在事务粒度范围内,则通过本地更新方式对数据组中的待处理的数据进行修改或查询操作。
可选的,处理器51具体还用于执行以下步骤:
若待处理的数据不在同一数据组中且在事务粒度范围内,则将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
若待处理的数据不在同一数据组中且不在事务粒度范围内,则将针对待处理的数据的修改或查询操作分解为与数据表中的每个数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个数据组中的待处理的数据进行修改或查询操作。
进一步,处理器51,还用于若待处理的数据分布在单一列,则判断待处理的数据是否在事务粒度范围内。
处理器51,还用于若待处理的数据不在事务粒度范围内,通过异地更新方式对待处理的数据进行修改或查询操作。
可选的,处理器51还用于若待处理的数据在事务粒度范围内,通过本地更新方式对待处理的数据进行修改或查询操作。
进一步,处理器51还用于执行以下步骤:
定义的数据表的属性。
其中,数据表的属性包括:数据表中存储的数据类型、数据表的长度和数据表各个字段之间的关联关系;
根据数据表的属性,申请内存空间建立数据表和数据副本区。
进一步,处理器51,还用于定义数据表中的每个数据组的属性为关键区,以便于针对数据表中的待处理的数据的修改和查询操作同时进行。
其中,在本实施例中,待处理的数据的一致性是由事务内存系统保障的。
需要说明的是,本实施例中的混合业务并发访问的装置中的各个器件之间的实现方式和交互过程可以参考相应方法实施例中的相关描述。
本发明的实施例提供的混合业务并发访问的装置,通过采用事务内存系统来保证进行并发访问的数据的一致性,同时将待写入数据的数据表垂直划分为不同的列或列的组合,得到一个划分,将针对数据表中的划分的修改或查询操作分解为至少一个点操作,并判断进行点操作处理的数据字段是否为多个字段,若点操作处理的数据字段为多个字段,则判断待处理的数据字段是否在同一粒度内,根据判断结果对待处理的数据字段中的数据进行修改或者查询操作,实现了针对数据库混合业务的读写并发访问,允许查询与修改操作的无锁并发,解决了通过锁机制和通过主/子进程实现数据读写进程的隔离而带来的性能开销的问题。同时,降低了操作的复杂度,减少了开销,避免对内存的过渡使用,提高了数据的及时性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种混合业务并发访问的方法,其特征在于,所述方法包括:
将数据表划分得到至少一个数据组;其中,每个所述数据组中包括至少一个所述数据表中的列,所述数据组中的列是连续的;
将针对所述数据表的修改或查询操作分解为至少一个点操作;
判断进行所述点操作处理的待处理的数据是否分布在多列;
若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作。
3.根据权利要求1所述的方法,其特征在于,所述若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作,包括:
若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中;
判断所述待处理的数据是否在事务粒度范围内;
若所述待处理的数据在同一所述数据组中且不在所述事务粒度范围内,则通过异地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据在在同一所述数据组中且在所述事务粒度范围内,则通过本地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据不在同一所述数据组中且在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的每个所述数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作;
若所述待处理的数据不在同一所述数据组中且不在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的每个所述数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作。
4.根据权利要求2所述的方法,其特征在于,所述若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作,包括:
若所述待处理的数据分布在单一列,则判断所述待处理的数据是否在所述事务粒度范围内;
若所述待处理的数据不在所述事务粒度范围内,通过异地更新方式对所述待处理的数据进行修改或查询操作;
若所述待处理的数据在所述事务粒度范围内,通过本地更新方式对所述待处理的数据进行修改或查询操作。
5.根据权利要求1~4中任一所述的方法,其特征在于,所述将数据表划分得到至少一个数据组之前,还包括:
定义所述数据表的属性,其中,所述数据表的属性包括:所述数据表中存储的数据类型、所述数据表的长度和所述数据表各个列之间的关联关系;
根据所述数据表的属性,申请内存空间建立所述数据表和数据副本区。
6.根据权利要求1~5任一所述的方法,其特征在于,所述方法还包括:
定义所述数据表中的每个所述数据组的属性为关键区,以便于针对所述数据表中的所述待处理的数据的修改和查询操作同时进行。
7.根据权利要求1~6任一所述的方法,其特征在于,
所述待处理的数据的一致性是由事务内存系统保障的。
8.一种混合业务并发访问的装置,其特征在于,所述装置包括:
划分单元,用于将数据表划分得到至少一个数据组;其中,每个所述数据组中包括至少一个所述数据表中的列,所述数据组中的列是连续的;
分解单元,用于将针对所述数据表中的修改或查询操作分解为至少一个点操作;
判断单元,用于判断进行所述点操作处理的待处理的数据是否分布在多列;
处理单元,用于若所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中,并根据判断结果对所述待处理的数据进行修改或者查询操作。
9.根据权利要求8所述的装置,其特征在于,
所述处理单元,还用于若所述待处理的数据分布在单一列,则根据所述待处理的数据是否在事务粒度范围内对所述待处理的数据进行修改或者查询操作。
10.根据权利要求8所述的装置,其特征在于,所述处理单元包括:
判断模块,用于若所述判断单元得到所述待处理的数据分布在多列,则判断所述待处理的数据是否在同一所述数据组中;
所述判断模块,还用于判断所述待处理的数据是否在事务粒度范围内;
处理模块,用于若所述判断模块得到所述待处理的数据在同一所述数据组中且不在所述事务粒度范围内,则通过异地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据在同一所述数据组中且在所述事务粒度范围内,则通过本地更新方式对所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在同一所述数据组中且在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的所述每个数据组对应的数据修改或查询操作,并通过本地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在同一所述数据组中且不在所述事务粒度范围内,则将针对所述待处理的数据的修改或查询操作分解为与所述数据表中的每个所述数据组对应的数据修改或查询操作,并通过异地更新方式分别对每个所述数据组中的所述待处理的数据进行修改或查询操作。
11.根据权利要求9所述的装置,其特征在于,
所述判断模块,还用于若所述待处理的数据分布在单一列,则判断所述待处理的数据是否在所述事务粒度范围内;
所述处理模块,还用于若所述判断模块得到所述待处理的数据不在所述事务粒度范围内,通过异地更新方式对所述待处理的数据进行修改或查询操作;
所述处理模块,还用于若所述判断模块得到所述待处理的数据在所述事务粒度范围内,则通过本地更新方式对所述待处理的数据进行修改或查询操作。
12.根据权利要求8~11任一所述的装置,其特征在于,所述装置还包括:
定义单元,用于定义所述数据表的属性,其中,所述数据表的属性包括:所述数据表中存储的数据类型、所述数据表的长度和所述数据表各个字段之间的关联关系;
创建单元,用于根据所述定义单元得到的所述数据表的属性,申请内存空间建立所述数据表和数据副本区。
13.根据权利要求8~12任一所述的装置,其特征在于,
所述定义单元,还用于定义所述数据表中的每个所述数据组的属性为关键区,以便于针对所述数据表中的待处理的数据的修改和查询操作同时进行。
14.根据权利要求8~13任一所述的装置,其特征在于,
所述待处理的数据的一致性是由事务内存系统保障的。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410206980.0A CN104021145B (zh) | 2014-05-16 | 2014-05-16 | 一种混合业务并发访问的方法和装置 |
EP15167752.3A EP2955642A3 (en) | 2014-05-16 | 2015-05-14 | Method and apparatus for concurrent access of mixed services |
US14/713,739 US9904701B2 (en) | 2014-05-16 | 2015-05-15 | Method and apparatus for concurrent access of mixed services |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410206980.0A CN104021145B (zh) | 2014-05-16 | 2014-05-16 | 一种混合业务并发访问的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104021145A true CN104021145A (zh) | 2014-09-03 |
CN104021145B CN104021145B (zh) | 2018-03-06 |
Family
ID=51437900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410206980.0A Active CN104021145B (zh) | 2014-05-16 | 2014-05-16 | 一种混合业务并发访问的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9904701B2 (zh) |
EP (1) | EP2955642A3 (zh) |
CN (1) | CN104021145B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866577A (zh) * | 2015-05-26 | 2015-08-26 | 深圳市六度人和科技有限公司 | 一种基于嵌入式数据库的数据处理方法及装置 |
CN106294380A (zh) * | 2015-05-18 | 2017-01-04 | 中兴通讯股份有限公司 | 数据库的查询方法及装置 |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN109033301A (zh) * | 2018-07-16 | 2018-12-18 | 中国科学技术大学 | 一种基于图形处理器的数据库事务执行方法 |
CN110019375A (zh) * | 2019-04-18 | 2019-07-16 | 哈尔滨汇拓投资中心(有限合伙) | 一种基于在线聚合的多版本并行混合处理方法 |
CN110069499A (zh) * | 2019-04-18 | 2019-07-30 | 中国联合网络通信集团有限公司 | 数据管理方法、装置、系统及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152429B2 (en) * | 2015-10-27 | 2018-12-11 | Medallia, Inc. | Predictive memory management |
US10733091B2 (en) | 2016-05-03 | 2020-08-04 | International Business Machines Corporation | Read and write sets for ranges of instructions of transactions |
US10042761B2 (en) * | 2016-05-03 | 2018-08-07 | International Business Machines Corporation | Read and write sets for transactions of a multithreaded computing environment |
US10169106B2 (en) * | 2016-06-30 | 2019-01-01 | International Business Machines Corporation | Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity |
CN107256220A (zh) * | 2017-04-25 | 2017-10-17 | 北京微影时代科技有限公司 | 数据日志生成方法、装置及电子设备 |
CN108268217B (zh) * | 2018-01-10 | 2021-04-30 | 北京航天云路有限公司 | 一种基于时序数据冷热分类的分层存储方法 |
US10341172B1 (en) | 2018-10-22 | 2019-07-02 | CSG Media, LLC | System and method for configuring networks |
CN111241053B (zh) * | 2018-11-29 | 2022-08-23 | 中国移动通信集团四川有限公司 | 数据表创建方法、装置、设备及存储介质 |
CN112559466B (zh) * | 2019-09-25 | 2023-12-29 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
US12117999B2 (en) * | 2021-09-29 | 2024-10-15 | International Business Machines Corporation | Masking shard operations in distributed database systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
US20110252073A1 (en) * | 2010-04-06 | 2011-10-13 | Justone Database, Inc. | Apparatus, systems and methods for data storage and/or retrieval based on a database model-agnostic, schema-agnostic and workload-agnostic data storage and access models |
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752026A (en) * | 1994-04-28 | 1998-05-12 | The United States Of America As Represented By The Secretary Of The Navy | Early commit locking computer database protocol |
US5870758A (en) * | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6240413B1 (en) * | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US20090019029A1 (en) * | 2007-07-11 | 2009-01-15 | James Joseph Tommaney | Method and system for performing a scan operation on a table of a column-oriented database |
US20120158650A1 (en) * | 2010-12-16 | 2012-06-21 | Sybase, Inc. | Distributed data cache database architecture |
US8745016B2 (en) * | 2011-06-17 | 2014-06-03 | International Business Machines Corporation | Managing concurrent access to data in database system |
-
2014
- 2014-05-16 CN CN201410206980.0A patent/CN104021145B/zh active Active
-
2015
- 2015-05-14 EP EP15167752.3A patent/EP2955642A3/en not_active Ceased
- 2015-05-15 US US14/713,739 patent/US9904701B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
US20110252073A1 (en) * | 2010-04-06 | 2011-10-13 | Justone Database, Inc. | Apparatus, systems and methods for data storage and/or retrieval based on a database model-agnostic, schema-agnostic and workload-agnostic data storage and access models |
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294380A (zh) * | 2015-05-18 | 2017-01-04 | 中兴通讯股份有限公司 | 数据库的查询方法及装置 |
CN106294380B (zh) * | 2015-05-18 | 2021-02-12 | 中兴通讯股份有限公司 | 数据库的查询方法及装置 |
CN104866577A (zh) * | 2015-05-26 | 2015-08-26 | 深圳市六度人和科技有限公司 | 一种基于嵌入式数据库的数据处理方法及装置 |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN109033301A (zh) * | 2018-07-16 | 2018-12-18 | 中国科学技术大学 | 一种基于图形处理器的数据库事务执行方法 |
CN109033301B (zh) * | 2018-07-16 | 2021-07-06 | 中国科学技术大学 | 一种基于图形处理器的数据库事务执行方法 |
CN110019375A (zh) * | 2019-04-18 | 2019-07-16 | 哈尔滨汇拓投资中心(有限合伙) | 一种基于在线聚合的多版本并行混合处理方法 |
CN110069499A (zh) * | 2019-04-18 | 2019-07-30 | 中国联合网络通信集团有限公司 | 数据管理方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104021145B (zh) | 2018-03-06 |
EP2955642A3 (en) | 2016-03-23 |
US9904701B2 (en) | 2018-02-27 |
US20150331898A1 (en) | 2015-11-19 |
EP2955642A2 (en) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104021145A (zh) | 一种混合业务并发访问的方法和装置 | |
CN110799960B (zh) | 数据库租户迁移的系统和方法 | |
US9361187B2 (en) | File system metadata capture and restore | |
JP7507142B2 (ja) | データベースにおいてレコードを一括削除するためのシステムおよび方法 | |
CN105630865B (zh) | 用于内存列式存储的n比特压缩版本化列数据阵列 | |
US20210042286A1 (en) | Transactional key-value store | |
CN106575297B (zh) | 使用盲更新操作的高吞吐量数据修改 | |
CN105868228B (zh) | 为olap和oltp事务提供无锁读取和写入操作的内存数据库系统 | |
US10255309B2 (en) | Versioned insert only hash table for in-memory columnar stores | |
US10725987B2 (en) | Forced ordering of a dictionary storing row identifier values | |
US9195657B2 (en) | Columnar storage of a database index | |
US9875024B2 (en) | Efficient block-level space allocation for multi-version concurrency control data | |
US11100083B2 (en) | Read only bufferpool | |
US20120323971A1 (en) | Optimizing data storage and access of an in-memory database | |
US20180011892A1 (en) | Foster twin data structure | |
CN105630860A (zh) | 具有事务控制块索引的数据库系统 | |
CN105408895A (zh) | 用于多个访问方法的无锁存、日志结构化的存储 | |
CN103765393A (zh) | 存储系统 | |
CN109690522B (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
US20070233753A1 (en) | Database system management method, database system, database device, and backup program | |
US11249968B2 (en) | Large object containers with size criteria for storing mid-sized large objects | |
KR20150053720A (ko) | 논리 블록 주소의 아토믹 스왑 및 트림을 위한 swat 커맨드 및 애플리케이션 프로그래밍 인터페이스 | |
Shen et al. | An efficient LSM-tree-based SQLite-like database engine for mobile devices | |
US10409799B2 (en) | Supporting updatable repeated values over variable schema | |
US20180150498A1 (en) | Database management device, information processing system, and database management method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |