CN103810219B - 一种基于行存储数据库的数据处理方法及装置 - Google Patents

一种基于行存储数据库的数据处理方法及装置 Download PDF

Info

Publication number
CN103810219B
CN103810219B CN201210459226.9A CN201210459226A CN103810219B CN 103810219 B CN103810219 B CN 103810219B CN 201210459226 A CN201210459226 A CN 201210459226A CN 103810219 B CN103810219 B CN 103810219B
Authority
CN
China
Prior art keywords
row
data
data storage
storage storehouse
target matrix
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
Application number
CN201210459226.9A
Other languages
English (en)
Other versions
CN103810219A (zh
Inventor
隋琪
袁向阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201210459226.9A priority Critical patent/CN103810219B/zh
Publication of CN103810219A publication Critical patent/CN103810219A/zh
Application granted granted Critical
Publication of CN103810219B publication Critical patent/CN103810219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Abstract

本发明公开了一种基于行存储数据库的数据处理方法及装置,涉及数据处理领域,解决了现有技术中列存储数据库访问特定几列时查询效率较低,难以与行存储数据库的优点相兼容等问题。该方法包括:数据库系统接收到用户提交的在行存储数据库中创建目标数据表的建表SQL语句后,创建与目标数据表对应的数个列表,将该表SQL语句中包括的分组标识符所指示的多个列创建在同一列表中,并创建对应数个列表的统一视图;当数据库系统接收到用户提交的对行存储数据库中的目标数据表中的数据进行处理的请求时,数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。本发明主要用于数据处理。

Description

一种基于行存储数据库的数据处理方法及装置
技术领域
本发明涉及数据处理领域,特别涉及一种基于行存储数据库的数据处理方法及装置。
背景技术
行存储方式是目前主流的关系数据库存储技术实现方式,其基本思路是:将数据按照行为单位进行存储,并通过索引技术提高查询的效率。该方式很适合OLTP(On-LineTransaction Processing,联机事务处理)的场景,在频繁的插入、删除、更新操作,以及小数据量(若干行)的查询方面优势较为突出。但是,随着PB(PetaByte,千万亿字节)级别的超大型数据仓库的出现,行存储方式的不足逐渐显现。
由于传统的数据仓库产品是以行为单位进行存储的,且数据仓库查询操作多而更新和插入操作较少,而多数查询分析都是基于某些特定列进行操作。因此,通过行存储方式实现的数据仓库不可避免的会带来非必要的IO(Input/Output,输出/输入)操作。同时,行存储方式实现的数据仓库存储单元中的数据的共性较少,不利于数据压缩。
正是针对上述行存储数据仓库的不足,列存储数据仓库应运而生。其基本实现思路是将数据按照列为单位进行存储,并通过链接表示不同的列值之间的关系。因为它是基于列进行存储的,可以很好的克服上述行存储数据仓库的缺陷。但是,列存储数据仓库同样也有不足:首先,虽然数据仓库的多数OLAP操作是针对某些特定的列而非全部列,但是多数的操作是针对某几列而非某一列,因此往往需要访问某几个列才能得到分析结果,这些操作在以单个列为单位进行存储的列存储数据仓库产品中,必然会增加更多的查询开销。其次,由于列存储数据仓库出现的时间较短,虽然基本的数据仓库功能已经很好的满足,但是很多传统的行存储数据仓库功能比如存储过程等,还无法兼容,这增加了用户迁移数据仓库系统的难度。另外,让用户放弃多年的数据仓库产品投资,而转向全新的列存储数据仓库产品,本身也是一个艰难的抉择。
发明内容
为了解决现有技术中列存储数据库访问特定几列时查询效率较低,难以与行存储数据库的优点相兼容等问题,本发明的提出一种基于行存储数据库的数据处理方法及装置。
一种基于行存储数据库的数据处理方法,包括:
数据库系统接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句后,创建与所述目标数据表对应的数个列表,其中,所述建表SQL语句中包括分组标识符;
数据库系统将所述分组标识符指示的多个列创建在同一列表中,并创建对应所述数个列表的统一视图;
当所述数据库系统接收到用户提交的对所述行存储数据库中的所述目标数据表中的数据进行处理的请求时,所述数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。
一种基于行存储数据库的数据处理装置,包括:
接收模块,用于接收用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句以及对所述行存储数据库中的所述目标数据表中的数据进行处理的请求,该建表SQL语句中包括分组标识符;
模拟器模块,用于当所述接收模块接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句后,创建与所述目标数据表对应的数个列表,将所述分组标识符指示的多个列创建在同一列表中,并创建对应所述数个列表的统一视图;
处理模块,用于当所述接收模块接收到用户提交的对所述行存储数据库中的所述目标数据表中的数据进行处理的请求时,所述数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。
本申请提出的方案是一种基于行存储数据库的列存储模拟器,并且在现有的标准SQL语言里增加了分组标识符功能,该功能允许用户自由组合将哪些列存储在一个列表中。通过这种自由组合,将那些分析统计中经常同时访问的列放在同一个列表中,不需再对几个列表进行外连接就可进行分析统计,可以有效提升多数查询分析的效率,更好的发挥列存储模拟器的作用。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1中提供的具体的创建列表语句格式的事例框图;
图2为本发明实施例1中提供的数据库系统的工作原理示意图;
图3-4为本发明实施例1中提供的基于行存储数据库的数据处理方法的流程示意图;
图5为本发明实施例2中提供的基于行存储数据库的数据处理装置的结构示意图。
具体实施方式
针对现有技术中行存储技术和列存储技术各自的缺陷,本发明实施例提供了一种基于行存储数据库的数据处理的技术方案,在现有行存储数据库的基础上,模拟列存储数据库,并提供可将任意几列存放在同一列表中的功能,以使行存储数据库产品用户无需进行存储数据库产品更换即可获得列存储技术的优点,同时在多次查询相同几列的情况下,效果尤其显著。
为了实现基于行存储数据库的列存储技术,本发明实施例提供的技术方案通过在现有的行存储数据库系统(以下简称“数据库系统”)中设置列存储模拟器(以下简称“模拟器”)的同时,提供允许用户自由组合某些列存储在同一列表中的功能(需要说明的是:本发明主要用于描述“提供允许用户自由组合某些列存储在同一列表中的功能”的实现过程。因此,对于在现有的行存储数据库系统中设置列存储模拟器的具体实施过程,下述实施例若有描述有不详尽的地方,请参考本申请人的另一专利申请201110447629.7),并且通过该模拟器对数据库系统接收到的建表/删表SQL语句进行相应的处理,实现行存储数据库中的列表创建和删除,以及对某些列的高效访问。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。并且,以下各实施例均为本发明的可选方案,实施例的排列顺序及实施例的编号与其优选执行的顺序无关。
实施例1
与标准建表SQL的语句(如图1左边框图)相比,本实施例提供的模拟器的建表SQL语句(如图1右边框图)增加了若干可以由用户自由选择的分组标识符,如图1中的括号“(”和“)”(需要说明的是,该分组标识符包括但不限于“(”和“)”,也可以为【和】、《和》,甚至也是无需成对的符合,如@、#和*均可,本实施例中仅以“(”和“)”为例进行描述),标识那几列需要集中存放在同一列表中。具体的Create Table语句格式可以如图1所示。
模拟器接收到用户输入的建表SQL后,解析建表SQL中的括号分组情况,自动创建相应的列表;同时模拟器创建对应的统一视图,这样用户对该表的访问就跟传统的行存储完全一样。用户访问和更新在视图上操作,跟原来的行存储完全一样;而用户的删除表的操作,跟创建表的过程基本类似。整个列存储的转换和访问对用户完全透明,使对访问该表的应用所造成的影响降低到最低。
如图2所示,为本发明实施例中提供的数据库系统的工作原理示意图,其中:
通过利用本发明实施例提供的数据库系统中设置的模拟器,DBA(DatabaseAdministrator,数据库管理员)只需要直接输入标准的建表/删表SQL(Structured QueryLanguage,结构化查询语言)语句即可实现列表的创建和删除。例如:若要以id、Name、Rank和Salary为列名创建列表,其中,Rank和Salary列创建到同一列表中,则建表SQL语句如图1所示,可为Create t(id,Name,(Rank,Salary))。其中Rank前的“(”和Salary后的“)”即为本实施例中的分组标识符,要创建的目标数据表表名为t。
其中,当数据库系统接收到建表SQL语句时,通过模拟器将其分解为相应的列表创建SQL语句,并根据该列表创建SQL语句创建相应的列表(如列表1、列表2和列表3);同时,模拟器根据接收到的建表SQL创建对应的统一视图。其中,统一视图即为对应建表SQL语句的数据表的虚拟映射表,该统一视图与现有行存储数据库中的数据表的形式一样。通过统一视图,用户可以使用现有行存储数据库的数据操作和访问方式实现对上述列表的操作和访问。
相应地,当数据库系统接收到删表SQL语句时,可以通过模拟器根据该删表SQL语句删除相应的统一视图;同时,模拟器对接收到的删表SQL进行解析,将其分解为相应的列表删除SQL语句,并根据该列表删除SQL语句删除相应的列表。
在本发明实施例中,当接收到建表SQL语句时,模拟器通常先创建列表后建立统一视图;当接收到删表SQL语句时,模拟器通常先删除统一视图后删除列表。
当列表创建后,用户可以直接根据统一视图对相应的列表进行操作(包括插入数据、删除数据和更新数据)和访问(包括查询数据)。由于模拟器对用户输入的标准SQL语句的转换对用户(或管理员)来说是完全透明的,用户对表的操作和访问与传统对行存储数据库产品的访问一样,对访问相应的表的应用所造成的影响较低。
基于上述数据库系统的工作原理,本发明实施例提供了一种基于行存储数据库的数据处理方法,如图3所示,可以包括以下步骤:
步骤101,数据库系统接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句,该建表SQL语句中包括分组标识符。
具体的,用户可以在模拟器的输入界面上输入建表SQL语句,并根据实际情况选择目标行存储数据库的类型。其中,目标行存储数据库类型可以包括目标行存储数据库产品的型号和版本。
步骤102,数据库系统创建与目标数据表对应的数个列表,将分组标识符指示的多个列创建在同一列表中,并创建对应数个列表的统一视图。
其中,上述将分组标识符指示的多个列创建在同一列表中,具体为:
所数据库系统将分组标识符指示的用于存放在同一列表中的多个列归为一组,并统计分组的组数;数据库系统根据组数生成将多个列创建在同一列表中的数个列建表SQL语句;根据数个列建表SQL语句建立对应的数个列表。
具体而与,包括:模拟器接到新型建表SQL语句,并解析建表SQL语句中的括号分组情况,确定哪些列要组合存放,模拟器再根据分组情况,生成对应的创建列表的建表SQL语句(即列建表SQL语句)。模拟器按照创建列表的建表SQL建立相应的列表,并且生成统一视图创建语句,并创建统一视图。
本实施例中根据分组标识符将多个列存放在同一列表是本实施例的关键技术之一,其是根据用户添加的括号得出各列的分组情况,因此,上述数据库系统将分组标识符指示的用于存放在同一列表中的多个列归为一组具体包括:
数据库系统对建表SQL语句中列名定义字段进行扫描;当扫描到分组标识符的起始指示时,记录起始指示关联到的每个列的列名,直到扫描到分组标识符的终止指示时停止记录;将从起始指示开始到终止指示为止的所有扫描到的列名作为存放在同一列表中的多个列。
例如可采用如下算法:模拟器解析建表SQL语句中列名定义字段,从而获取列名定义部分;定义新分组标识符newGroup=true;并对列名定义字段每列进行循环,包括:a)如果newGroup=true,则添加一个新分组,b)
将当前列加入新分组;c)如果在列名定义之前有“(”,则newGroup=false;d)如果在列名定义之前有“)”,则newGroup=true;4)如果newGroup=false,则报错“括号分组没有正常结束”;然后对每一个分组,生成列建表SQL语句,并创建列表,其中表名为“列名1_列名_2....列名N”,列名为每个分组里边的列名。
下面就是本实施例提供的一个将一个简单的建表SQL语句分解成若干列表的建表SQL(即列建表SQL语句)以及统一视图创建SQL的例子。
管理原输入的建表SQL语句为:
模拟器根据上述建表语句生成的对应的列建表SQL语句为:
模拟器生成的建立统一视图的SQL语句为:
步骤103,当数据库系统接收到用户提交的对行存储数据库中的目标数据表中的数据进行处理的请求时,数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。
具体的,生成统一视图后,用户可以根据该统一视图对相应数据表中的数据发起处理请求,该数据处理请求包括数据查询、数据插入、数据删除或数据更新。当数据库系统接收到用户提交的对行存储数据库中的目标数据表中的数据进行处理的请求时,根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。
以数据查询为例,假设一个表有50列,一个汇总查询的结果集有5万行,且该数据表一行需要3个数据块存储。如果是传统的行存储,那么需要加载50000*3=150000个数据块才能得到汇总结果,而通过使用本发明实施例提供的技术方案,只需要加载50000个数据块即可,提高了数据查询的效率。
由于创建了与数据表对应的统一视图,用户对数据表中数据的处理请求都是基于统一视图上进行,整个列存储的转换和访问对用户完全透明,对访问相应数据表的应用所造成的影响较低。用户仅需要使用现有行存储数据库的相应操作和访问指令对相应的目标行存储数据库中的数据进行操作和访问,即可获得列存储的技术的优点。
进一步地,由于本实施例中的用户可以通过输入分组标识符进而自由将多个列组合在同一列表中,因此对于一些常用的列的查询或更新仅需访问同一列表即可完整,可以明显提高访问效率。例如:
假设在上述例中总共有5万条记录,需要分析salary和rank之间的规律。
在不支持分组标识符的建表语句的模拟器中,salary和rank分别存放在两个不同的表中,分析他们之间的规律需要首先对两个表进行关联,这样两个表之间的笛卡尔集最大为50,000*50,000=25,000,000,000条,虽然经过索引优化这个代价可以大大减少,这个分析的代价仍然很大。
而在支持分组标识符的本实施例提供的建表语句的模拟器中,salary和rank存放在同一个表中,分析他们之间的规律不需要对两个表进行关联,只需要对这个表的50,000条记录进行检索即可,分析代价大大减少。
优选方案中,对于删除列表的情况,如图4所示,本实施例还提供了如下方法:
步骤104,数据库系统接收到用户提交的删除行存储数据库中目标数据表的删表SQL语句;例如用户可以在模拟器的输入界面上输入删表SQL语句,并选择目标行存储数据库的类型。其中,目标行存储数据库类型可以包括目标行存储数据库产品的型号和版本。
步骤105,数据库系统删除对应的统一视图,并删除行存储数据库中与目标数据表对应的列表。
其中,上述删除行存储数据库中与目标数据表对应的列表,具体为:
数据库系统通过解析删表SQL语句,得到目标数据表的表名,并根据目标数据表的表名获取对应的列名;
数据库系统根据目标数据表的表名删除对应的统一视图,并根据列名删除行存储数据库中列名对应的列表。
在本实施例中上述步骤104-105,删除表的语句与标准SQL完全相同,且具体过程跟创建表的过程类似,具体的内部处理流程可参看下述内容:
1)用户输入删除表的删表SQL语句;
2)模拟器解析视图定义,获取列表表名定义;
3)模拟器生成删除统一视图的SQL语句,并删除统一视图;
4)根据列表表名定义,生成相应的删除列表SQL;
5)按照删除列表的SQL语句删除相应的列表;
其中,解析删除表SQL语句的具体算法跟创建表SQL的解析过程类似:
例如:模拟器先解析删表SQL语句,获取表名定义,并得到对应的统一视图定义;再根据表名删除统一视图,以及根据视图定义,删除其关联的多个列表。下面就是删除步骤102创建的表t的例子(即步骤103上面的内容)。
管理员输入的删除表t的语句:delete table t;
模拟器内部执行的语句:
数据库系统接收到的对行存储数据库中的目标数据表中的数据进行处理的请求除了上述的建表和删表请求外,还包括:数据查询请求、数据插入请求、或数据更新请求等,由于针对这些请求的处理与标准SQL语句处理的方式相似,故而在此不赘述。
本实施例提供的方法不仅提出了一种在行存储数据库中建立列存储模拟器的方案,还列存储模拟器下的可以将多个列存放在同一列表中的方案。不仅解决了行存储数据库无效输入输出过多和压缩效率过低,以及列存储数据库迁移成本过大的两个技术问题,还解决了对若干个列同时访问的难题,而这也是数据仓库OLAP应用中常见的场景。
进一步地,由于现有的行存储数据库以行为单位进行存储,列存储数据库以列为单位进行存储,均无支持用户自由定义若干列合并进行存储的建表功能,因此本实施例提供的建表语句与标准SQL的建表语句有明显的不同,但是又照顾了用户的使用习惯,简单易懂。并且该方法中允许用户自由组合将某些列存储在一个列表中,通过这种自由组合,将那些分析统计中经常同时访问的列放在同一个列表中,不需再对几个列表进行外连接就可进行分析统计,可以有效提升多数查询分析的效率,更好的发挥列存储模拟器的作用。并且,这种方法同样可以用在目前的列存储数据库上,能更好的提升列存储数据库的性能。
实施例2
基于上述方法实施例相同的技术构思,本发明实施例提供了一种基于行存储数据库的数据处理装置,可以应用于上述方法流程。如图5所示,包括:接收模块21,模拟器模块22,处理模块23。
接收模块21,用于接收用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句以及对行存储数据库中的目标数据表中的数据进行处理的请求,该建表SQL语句中包括分组标识符;
模拟器模块22,用于当接收模块21接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句后,创建与目标数据表对应的数个列表,将分组标识符指示的多个列创建在同一列表中,并创建对应数个列表的统一视图;
处理模块23,用于当接收模块21接收到用户提交的对行存储数据库中的目标数据表中的数据进行处理的请求时,数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理。
其中,接收模块21接收到的对行存储数据库中的目标数据表中的数据进行处理的请求包括:数据查询请求、数据插入请求、数据删除请求或数据更新请求。
优选地,模拟器模块22具体用于,将分组标识符指示的用于存放在同一列表中的多个列归为一组,并统计分组的组数,再根据组数生成将多个列创建在同一列表中的数个列建表SQL语句,根据数个列建表SQL语句建立对应的数个列表。更优选地,模拟器模块22具体用于,对建表SQL语句中列名定义字段进行扫描;当扫描到分组标识符的起始指示时,记录起始指示关联到的每个列的列名,直到扫描到分组标识符的终止指示时停止记录;将从起始指示开始到终止指示为止的所有扫描到的列名作为存放在同一列表中的多个列。
优选地,模拟器模块还可以用于,当接收模块接收到用户提交的删除行存储数据库中目标数据表的删表SQL语句后,删除对应的统一视图,并删除行存储数据库中与目标数据表对应的列表。更优选地,模拟器模块具体用于,数据库系统通过解析删表SQL语句,得到目标数据表的表名,并根据目标数据表的表名获取对应的列名;
数据库系统根据目标数据表的表名删除对应的统一视图,并根据列名删除行存储数据库中列名对应的列表。
其中,接收模块21接收到的对行存储数据库中的目标数据表中的数据进行处理的请求包括:数据查询请求、数据插入请求、数据删除请求或数据更新请求。
本实施例提供的装置实现的是一种基于行存储数据库的列存储模拟器,且是一种结合行存储数据库和列存储数据库二者优点的折中解决思路。它在行存储数据库的基础上实现列存储,既发挥了列存储的优点,又最大保留了行存数据库用户的操作习惯,降低了用户应用从行存储产品到列存储产品的迁移难度,减少了迁移成本。但是该模拟器也存在一个不足:多数数据仓库上的OLAP的操作,虽然并不需要访问所有的列,但是通常也并非是针对某一个特定的列,往往需要同时访问某几个列才能得到分析结果,这些操作在以单个列为单位进行存储的列存储模拟器中,必然会增加更多的查询开销。
更重要的是该装置允许用户自由组合将哪些列存储在同一个列表中。通过这种自由组合,将那些分析统计中经常同时访问的列放在同一个列表中,不需再对几个列表进行外连接就可进行分析统计,可以有效提升多数查询分析的效率,更好的发挥列存储模拟器的作用。
本发明实施例提供的上述装置等产品是属于以计算机程序的流程方法为依据,并按照与方法实施例1和/或附图中方法流程的各步骤完全对应一致的方式,所提供的功能模块。并且由于这种功能模块是通过计算机程序的方式实现的软件装置,所以对于装置实施例2未具体提及的功能模块,由于考虑到根据上述方法实施例记载的内容已经足够使本领域技术人员从方法记录的各流程步骤直接地、毫无意外地确定实现所述步骤所必须建立的功能模块,所以在此不赘述。
本发明的技术方案本质上或者说对现有技术做出贡献的部分是以软件产品的形式体现出来的功能,也即是说:本发明的装置、设备或者组成系统的各个设备其所执行的方法或实现的功能主体即便为硬件,但是实际上实现本发明上述功能的部分却是计算机软件产品的模块或单元。并且该计算机软件产品可存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台设备执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明能有多种不同形式的具体实施方式,上文结合附图对本发明做举例说明,这并不意味着本发明所应用的具体实施方式只能局限在这些特定的具体实施方式中,本领域的技术人员应当了解,上文所提供的具体实施方式只是多种优选实施方式中的一些示例,任何体现本发明权利要求的具体实施方式均应在本发明权利要求所要求保护的范围之内;本领域的技术人员能够对上文各具体实施方式中所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换或者改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种基于行存储数据库的数据处理方法,其特征在于,包括:
数据库系统接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句后,创建与所述目标数据表对应的数个列表,其中,所述建表SQL语句中包括分组标识符;
数据库系统将所述分组标识符指示的多个列创建在同一列表中,并创建对应所述数个列表的统一视图;
当所述数据库系统接收到用户提交的对所述行存储数据库中的所述目标数据表中的数据进行处理的请求时,所述数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理;
所述将所述分组标识符指示的多个列创建在同一列表中,具体为:
所述数据库系统将所述分组标识符指示的用于存放在同一列表中的多个列归为一组,并统计分组的组数;
数据库系统根据所述组数生成将所述多个列创建在同一列表中的数个列建表SQL语句;
根据所述数个列建表SQL语句建立对应的数个列表。
2.根据权利要求1所述的方法,其特征在于,所述数据库系统将所述分组标识符指示的用于存放在同一列表中的多个列归为一组具体包括:
所述数据库系统对所述建表SQL语句中列名定义字段进行扫描;
当扫描到分组标识符的起始指示时,记录所述起始指示关联到的每个列的列名,直到扫描到分组标识符的终止指示时停止记录;
将从起始指示开始到终止指示为止的所有扫描到的列名作为存放在同一列表中的多个列。
3.如权利要求1所述的方法,其特征在于,还包括:
所述数据库系统接收到用户提交的删除行存储数据库中目标数据表的删表SQL语句后,删除对应的统一视图,并删除行存储数据库中与所述目标数据表对应的列表。
4.如权利要求3所述的方法,其特征在于,所述数据库系统删除行存储数据库中与所述目标数据表对应的列表,具体为:
所述数据库系统通过解析所述删表SQL语句,得到目标数据表的表名,并根据所述目标数据表的表名获取对应的列名;
所述数据库系统根据所述目标数据表的表名删除对应的统一视图,并根据所述列名删除所述行存储数据库中所述列名对应的列表。
5.如权利要求1-4之一所述的方法,其特征在于,所述对所述行存储数据库中的所述目标数据表中的数据进行处理的请求包括:
数据查询请求、数据插入请求、数据删除请求或数据更新请求。
6.一种基于行存储数据库的数据处理装置,其特征在于,包括:
接收模块,用于接收用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句以及对所述行存储数据库中的所述目标数据表中的数据进行处理的请求,该建表SQL语句中包括分组标识符;
模拟器模块,用于当所述接收模块接收到用户提交的在行存储数据库中创建目标数据表的建表结构化查询语言SQL语句后,创建与所述目标数据表对应的数个列表,将所述分组标识符指示的多个列创建在同一列表中,并创建对应所述数个列表的统一视图;
处理模块,用于当所述接收模块接收到用户提交的对所述行存储数据库中的所述目标数据表中的数据进行处理的请求时,所述数据库系统根据所请求处理的目标数据表所对应的统一视图,对相应列表中的数据进行相应处理;
所述模拟器模块具体用于,将所述分组标识符指示的用于存放在同一列表中的多个列归为一组,并统计分组的组数,再根据所述组数生成将所述多个列创建在同一列表中的数个列建表SQL语句,根据所述数个列建表SQL语句建立对应的数个列表。
7.如权利要求6所述的基于行存储数据库的数据处理装置,其特征在于,
所述模拟器模块具体用于,对所述建表SQL语句中列名定义字段进行扫描;当扫描到分组标识符的起始指示时,记录所述起始指示关联到的每个列的列名,直到扫描到分组标识符的终止指示时停止记录;将从起始指示开始到终止指示为止的所有扫描到的列名作为存放在同一列表中的多个列。
8.如权利要求6所述的基于行存储数据库的数据处理装置,其特征在于,所述模拟器模块还用于,当所述接收模块接收到用户提交的删除行存储数据库中目标数据表的删表SQL语句后,删除对应的统一视图,并删除行存储数据库中与所述目标数据表对应的列表。
9.如权利要求8所述的基于行存储数据库的数据处理装置,其特征在于,所述模拟器模块具体用于,所述数据库系统通过解析所述删表SQL语句,得到目标数据表的表名,并根据所述目标数据表的表名获取对应的列名;
所述数据库系统根据所述目标数据表的表名删除对应的统一视图,并根据所述列名删除所述行存储数据库中所述列名对应的列表。
10.如权利要求6-9任一项所述的基于行存储数据库的数据处理装置,其特征在于,所述接收模块接收到的对所述行存储数据库中的所述目标数据表中的数据进行处理的请求包括:数据查询请求、数据插入请求、数据删除请求或数据更新请求。
CN201210459226.9A 2012-11-15 2012-11-15 一种基于行存储数据库的数据处理方法及装置 Active CN103810219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210459226.9A CN103810219B (zh) 2012-11-15 2012-11-15 一种基于行存储数据库的数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210459226.9A CN103810219B (zh) 2012-11-15 2012-11-15 一种基于行存储数据库的数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN103810219A CN103810219A (zh) 2014-05-21
CN103810219B true CN103810219B (zh) 2017-03-22

Family

ID=50707002

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210459226.9A Active CN103810219B (zh) 2012-11-15 2012-11-15 一种基于行存储数据库的数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN103810219B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160078085A1 (en) * 2014-09-17 2016-03-17 Futurewei Technologies, Inc. Method and system for adaptively building and updating a column store database from a row store database based on query demands
CN108255883B (zh) * 2016-12-29 2021-12-24 北京国双科技有限公司 数据获取方法及装置
CN107391525B (zh) * 2017-03-10 2020-08-07 阿里巴巴集团控股有限公司 针对数据库的指令处理方法及装置
US20180336262A1 (en) * 2017-05-19 2018-11-22 Futurewei Technologies, Inc. Geometric approach to predicate selectivity
CN107678806A (zh) * 2017-09-30 2018-02-09 北京酷我科技有限公司 一种对象类型转为数据库类型的方法
CN110909072B (zh) * 2018-09-18 2023-07-18 阿里巴巴集团控股有限公司 一种数据表建立方法、装置及设备
CN110928895B (zh) * 2018-09-19 2023-07-04 阿里巴巴集团控股有限公司 一种数据查询、数据表建立方法、装置及设备
CN112632073A (zh) * 2020-12-24 2021-04-09 第四范式(北京)技术有限公司 一种时序特征数据表的存储方法及装置
CN113220691B (zh) * 2021-05-31 2024-02-06 北京互金新融科技有限公司 数据库的库表创建方法及库表创建装置、电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101490672A (zh) * 2005-03-29 2009-07-22 Bea系统公司 智能服务的查询处理

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110264667A1 (en) * 2010-04-27 2011-10-27 Stavros Harizopoulos Column-oriented storage in a row-oriented database management system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101490672A (zh) * 2005-03-29 2009-07-22 Bea系统公司 智能服务的查询处理

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
列存储数据库关键技术综述;李超;《计算机科学》;20101231;全文 *
基于行存储模型的模拟列存储策略研究;于利胜;《计算机研究与发展》;20100622;第880页第3-9段,第881页第1-3段,第882页第1-3段,图2,图3 *

Also Published As

Publication number Publication date
CN103810219A (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
CN103810219B (zh) 一种基于行存储数据库的数据处理方法及装置
CN106897322B (zh) 一种数据库和文件系统的访问方法和装置
US6618729B1 (en) Optimization of a star join operation using a bitmap index structure
TWI710919B (zh) 資料儲存裝置、轉譯裝置及資料庫存取方法
US5345586A (en) Method and system for manipulation of distributed heterogeneous data in a data processing system
KR102177190B1 (ko) 유연한 스키마를 사용한 데이터 관리
US9836519B2 (en) Densely grouping dimensional data
CN105117417B (zh) 一种读优化的内存数据库Trie树索引方法
CN104765731B (zh) 数据库查询优化方法和设备
US7174345B2 (en) Methods and systems for auto-partitioning of schema objects
US7949687B1 (en) Relational database system having overlapping partitions
US8005836B2 (en) Method and system for performing logical partial declustering
CN102362273A (zh) 用于关系数据库系统中高效数据存取的动态散列表
Liang et al. Mid-model design used in model transition and data migration between relational databases and nosql databases
US9208234B2 (en) Database row access control
CN103177046B (zh) 一种基于行存储数据库的数据处理方法和设备
CN109165262A (zh) 一种关系型大表的分片集群系统及其分片方法
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
US9129001B2 (en) Character data compression for reducing storage requirements in a database system
CN109800233A (zh) 一种大数据融合搜索方法
CN105989117B (zh) 一种半结构化数据快速联合处理的方法及系统
CN111680069A (zh) 数据库访问方法及装置
CN112889039A (zh) 用于克隆后租户标识符转换的记录的标识
KR101642072B1 (ko) 하이브리드스토리지장치 및 방법
KR101648707B1 (ko) 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant