一种面向切面的云存储引擎构造方法

文档序号:6438759阅读:256来源:国知局
专利名称:一种面向切面的云存储引擎构造方法
技术领域
本发明属于网络存储技术领域,尤其涉及一种云存储引擎的构造方法。
背景技术
在现代计算技术、软硬件技术、网络技术的发展下,计算机系统通过集群应用、网格计算技术或分布式文件系统等技术,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。我们把这种系统称之为云计算机系统。在这样的云计算系统中,系统的核心是大量数据的存储和管理,而针对这种情况,云计算系统中需要配置大量的存储设备,这些存储设备存储的数据及数据本身的管理方法,就衍生、转变成为一个云存储系统(简称云存储);与传统的存储设备相比,云存储系统不仅仅是一个硬件,而是一个网络设备、存储设备、服务器、应用软件、公用访问接口、 接入网、和客户端程序等多个部分组成的复杂系统,在这个系统中,各部分以存储设备为核心,通过应用软件来对外提供数据存储和业务访问服务。存储引擎是数据库系统中,一种将数据集中存储管理的方式,现有的存储引擎,主要针对关系型数据库,这种存储引擎将关系型数据库中的数据表按照存储方法、索引类型以及锁定水平分类,并将分类后的数据表加载到内存中。但是现有的存储引擎并没有解除数据之间高度耦合的关系,没有改变数据的存储方法,使得用户在检索数据和进行数据管理时,花费大量的时间进行查找、比对,而且现有的存储引擎没有支持非关系型数据库。因此,现有的存储引擎在面对异构的云存储分布方式时,难以适应数据变化大、数据并发量高等新特点。

发明内容
本发明的目的是解决现有的存储引擎在面对异构的云存储分布方式时,难以适应数据变化大、数据并发量高的不足,提出一种面向切面的云存储引擎构造方法,该方法利用面向切面的思想,抽象出对数据的操作,屏蔽对底层关系型数据库和非关系型数据的差异, 统一对数据的管理和访问控制。本发明的技术方案是一种面向切面的云存储引擎构造方法,包括如下步骤步骤1 设计人员根据所采用的数据库类型构建数据访问层;步骤2 设计人员对数据库中的数据进行切面;步骤3 设计人员分析业务请求,对数据操作切面得到切面数据;步骤4 设计人员在步骤3中构建好的切面数据的基础上,构建云存储引擎。上述步骤1中构建数据访问层的具体过程如下确定使用数据存储方式为关系型数据库或非关系型数据库,分别对关系型数据库和非关系型数据库建立数据访问层。上述步骤2中对关系型数据库切面的过程包括如下步骤遍历数据库所有的原始数据表,对每张表进行编号,保证编号不重复;将上一步中的表编号单独存储在另一张表中;对原始数据表的数据,逐列(一列一属性)提取,将提取的数据单独存放在新的数据表中,再将新的数据表中的数据编号,所有从原始数据表逐列提取的数据,在所有的新的数据表中对应的编号一致,这个编号可以是原始数据表中的主键,也可以用其他方式生成, 但要保证新的数据表中的所有数据编号不重复。上述步骤2中对非关系数据库切面的过程包括如下步骤非关系数据库中,数据是用键值对的形式存储的,每一条数据都会有数据键和对应的数据值,所以在对非关系型数据库切面的时候,只需要将数据的数据键存储在一张表中,数据键对应的数据值存储在另一张表中,得到两个新的数据表。本发明的有益效果是本发明与传统技术相比较,在现有的云存储架构中,新加入数据访问层的概念,该数据访问层使用面向切面编程的思想将数据切面处理,大幅提高了数据检索和数据管理的效率,简化了关系型数据和非关系型数据处理过程中数据异构的复杂性问题。


图1是本发明所涉及的云存储系统整体架构示意图。图2为本发明的面向切面管理模型图。
具体实施例方式下面结合附图和具体的实施方式对本发明作进一步的阐述。为了对本发明的具体实施例做说明,有必要先确定一些本发明的专用的概念和理论。1.云存储架构云存储架构,通过添加标准硬件和共享标准网络(公共互联网或私有的企业内部网)提供对数据的访问,云容量和性能具有良好的可扩性。数百台云存储服务器对外提供服务,逻辑上是一个单一的、大型的存储池设备。本发明所涉及的云存储系统,其结构模型自下而上由以下五层组成,如图1所示, 其中第一层(存储层)、第三层(基础管理层)、第四层(访问层)、第五层(应用接口层) 为标准的云存储结构模型,第二层是本发明为了构建新的云存储引擎,而新引入的数据访问层,该数据访问层的构建使用了面向切面编程的思想。下面对各层做进一步的介绍11.存储层存储层是云存储最基础的部分。存储设备可以是FC光纤通道存储设备,可以是 NAS和iSCSI等IP存储设备,也可以是SCSI或SAS等DAS存储设备。云存储中的存储设备往往数量庞大且分布多不同地域,彼此之间通过广域网、互联网或者FC光纤通道网络连接在一起。存储层可以包含存储引擎,存储引擎是一种将数据用各种不同的技术存储在文件 (或者内存)中的方法。根据各种不同技术中采用的对数据存储方式、索引技巧、锁定水平的不同分类后,最终提供广泛的功能。12.数据访问层数据访问层是使用面向切面编程思想实现的对关系型和非关系型数据库的数据操作。数据访问层向上封装成为具体的程序调用,表现为相同的程序名称,向下实现了对不同类型数据库的访问,将相同的程序名称映射为对不同数据库的具体操作。13.基础管理层
基础管理层是云存储最核心的部分。基础管理层通过集群、分布式文件系统和网格计算等技术,实现云存储中多个存储设备之间的协同工作,使多个的存储设备可以对外提供同一种服务,并提供更大更强更好的数据访问性能。
身份认证技术、数据加密技术保证云存储中的数据不会被未授权的用户所访问, 同时,通过各种数据备份和容灾技术和措施可以保证云存储中的数据不会丢失,保证云存储自身的安全和稳定。
14.访问层
任何一个授权用户都可以通过标准的公用应用接口来登录云存储系统,享受云存储服务。云存储运营单位不同,云存储提供的访问类型和访问手段也不同。
15.应用接口层
云存储最灵活的部分。不同的云存储运营单位可以根据实际业务类型,开发不同的应用服务接口,提供不同的应用服务。
2.简单对象访问协议(SOAP, Simple Object Access Protocol)
简单对象访问协议是一种标准化的通讯规范,简化了网页服务器从数据库提取数据的过程,使得网页服务器无需再花大量时间格式化数据,并能够让不同应用程序之间透过HTTP通讯协定,以XML格式互相交换彼此的数据,使得数据的传输与具体的编程语言、平台和硬件无关。
3.(Aspect Oriented Programming, A0P)白勺:j>@。
面向切面编程主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
下面介绍本发明中需要用到的面向切面编程的一些基本概念
接入点(join point):是程序执行中的一个精确执行点,例如程序的一个方法。接入点是一个抽象的概念,在实现面向切面编程时,并不需要刻意去定义一个连接点。
切点(point cut)本质上是一个捕获接入点的结构。通常定义一个切点,来捕获程序中相关方法的调用。
切面(aspect)切点和连接点结合起来就是切面,是针对具体程序中的一个程序模块,这个程序模块包含了执行切面的具体方法。
通知(advide)切点的执行代码,是切面中包含的执行具体程序的代码。
目标对象(target)切面作用的具体对象。
代理对象(proxy)切面通过操作代理对象,间接操作具体对象。
织入(weaving)是指切面使用代理对象的过程。
在充分理解上述本发明相关的专用的概念和理论后,下面进一步的介绍本发明的具体实施过程一种面向切面的云存储引擎构造方法,如图1所示,包括步骤
步骤1 设计人员根据所采用的数据库类型构建数据访问层。
构建数据访问层的具体过程如下
步骤11 确定使用数据存储方式为关系型数据库或非关系型数据库,分别对关系型数据库和非关系型数据库建立数据访问层;具体设计如下
a.关系型数据库可使用的访问方式包括
ODBC (Open Database Connectivity)开放数据库互连,
JDBC (Java Database Connectivity) :java
ADO (ActiveX Data Objects) :ActiveX 数据对象,
OLEDB (Object Linking and Embedding Database):对象链接嵌入数据库;
b.非关系型数据库可使用的访问方式包括
Key-Value 基于键值对的存储方式;
由于上述提及的访问方式均为本领域的现有技术,因此未对其详细展开描述。
步骤2 设计人员对数据库中的数据进行切面。
步骤21 在关系型数据库中,数据是用表的形式存储的,表的每一行就是一条数据,表的每一列就是数据所拥有的属性,由于关系型数据库只针对数据本身,而没有针对数据的属性,所以可以对数据的属性进行切面。
关系型数据库切面的过程如下
遍历数据库所有的原始数据表,对每张表进行编号,保证编号不重复;
将上一步中的表编号单独存储在另一张表中;
对原始数据表的数据,逐列(一列一属性)提取,将提取的数据单独存放在新的数据表中,再将新的数据表中的数据编号,所有从原始数据表逐列提取的数据,在所有的新的数据表中对应的编号一致,这个编号可以是原始数据表中的主键,也可以用其他方式生成, 但要保证新的数据表中的所有数据编号不重复。
步骤22 在非关系数据库中,数据是用键值对的形式存储的,每一条数据都会有数据键和对应的数据值,所以在对非关系型数据库切面的时候,只需要将数据的数据键存储在一张表中,数据键对应的数据值存储在另一张表中,得到两个新的数据表。
以上用新的数据表存储的数据就是切面数据。
步骤3 设计人员分析业务请求,对数据操作切面得到切面数据。如图2所示,切面操作可以是一种抽象行为,如数据的操作可抽象为查询、新增、修改、删除、日志等,每一种操作即可作为一个切面操作;
在数据库系统中,设计人员首先提取数据操作的切面,这种数据操作对应具体的数据库操作步骤,具体的数据库操作步骤又需要具体的数据库访问方式,设计人员将具体的数据库访问方式封装成一个程序,这个程序可以访问关系型数据库,也可访问非关系型数据库,这个程序作为通知。
应用接口层会向服务器发出请求,发出请求的程序是接入点,请求从接入点发出后,切面操作截获服务请求,捕获接入点的程序作为切点,通过切点捕获到的请求,将由切点判断请求的有效性,如果为无效请求则拦截,如果是有效请求就将请求交给通知进行处理,通知针对具体的请求会转向具体的数据库对象。
具体的数据库对象已经通过第一步变为切面数据,这时,切面数据就是目标对象, 如果目标对象本身是对数据的封装,这些封装只是包含了对真实数据的操作,则把包含了对真实数据操作的数据对象称为代理对象,当切面操作要处理切面数据时,就会先处理代理对象,然后通过代理对象,实现对切面数据的操作。
上述切面操作通过操作代理对象而间接操作切面数据的过程称为织入。
步骤4 设计人员在步骤3中构建好的切面数据的基础上,构建云存储引擎。
由于数据的存储本身仍然需要依赖关系型数据库和非关系型数据库,但由于两者结构差异大,数据交换时容易导致访问出错,因此在搭建云存储引擎的过程中,使用步骤1 构建的数据访问方式来分别访问数据库。以此减少由于数据库的差异带来的影响。
步骤41 关系型数据库存储引擎的构造过程包括如下步骤
a.将数据的删除、更新及插入操作混合,这样使得数据操作对数据的尺寸产生更少的存储碎片;通过合并相邻被删除的存储块,以及若一个存储块被删除,就扩展到下一存储块的方式可以提高存储的效率。
b.设定每个表的最大索引数。设定每个索引最大的列数是64个。最大的键长度是IOM字节。对于键长度超过250字节的情况,使用一个超过IOM字节的的键块。
c.如果数据表中间的表没有合适大小的块,则新增一张表来辅助存储。
d.索引文件里设定一个标志,它表明表是否被正确关闭。
e.建立锁机制。在访问数据时加锁,检测死锁的进程在系统中产生死锁之后的很短时间内就检测到死锁的存在。一旦检测到系统中产生了死锁,就通过判断申请数据的时间来选择产生死锁的两个操作,让先申请的操作先执行。若申请的时间相同,则使用超时机制释放锁,两个操作都不执行。
步骤42 非关系型数据库构造存储引擎构造过程包括如下步骤
a.选择可用的键值数据结构
Lists (列表),
Sets (集合),
Sorted Sets (有序集合),
Hashes (哈希表),
键值的数据类型决定了该键值支持的操作,如列表、集合或有序集合的交集、并集、查集等高级原子操作。
b.将数据键先存储高字节,以允许一个更高地址的索引压缩,当记录以排好序的顺序插入,索引树被重构,以便高字节仅包含一个键。以改善键值数据结构的存储效率。
c.将数据值先存储低字节,再存储高字节,以降低数据值和数据值所运行的数据库环境的依赖性,运行数据库的服务器使用补码和浮点格式来表示数据值,数据行中的字节一般是未联合的,从一个方向读未联合的字节,这样可以使得服务器在获取列值时有更高的效率。
d.主从同步非关系型数据库的存储介质会部署在异构的系统中,所以存储在异构系统数据库中的数据需要同步,以保证数据的一致性。
异构的系统通过网络连接起来,在网络中,每个异构系统就是一个存储节点,存储节点中的数据需要同步,需就要一个全局定时方式,使得网络中的存储节点在一定的时间内进行数据同步,同步方式可以有主存储节点定时和从存储节点定时两种。主定时工作方式是以本节点时钟源作为定时的工作方式。从定时工作方式是以某一参考基准时间为标准,对本节点时钟源进行锁定后再定时的工作方式。
完成上述步骤1到步骤4后,切面操作完成,使用SOAP协议将处理过后的切面数据转化为XML格式,并根据请求的需要返回给应用接口层相应的数据。
下面结合一个实施例对本发明的技术方案做进一步的描述假设某大学需要组建一支篮球队,需要从身高、体重、年龄、兴趣、健康情况三个方面选择适合的同学参加筛选。现在使用面向切面编程的云存储引擎来处理筛选请求。
步骤1 构建数据访问层。由于所有的同学不在同一个学院,每个学院的学生资料都存储在不同的服务器上,且学院服务器上只存储了身高、体重、年龄、兴趣的资料,而健康情况存储在校医院的服务器上,且服务器上使用的数据库是不同厂商的数据库软件,所以要针对这种异构数据存储,需要对所有的不同数据库建立一套访问数据的机制。
步骤2 对数据进行切面。在建立好访问各个学院的数据库数据和校医院数据库的机制后,将所有学生的信息进行切面处理将不同数据库中的基本数据从表中读取,将身高、体重、年龄、兴趣、健康情况等学生所有的属性单独抽取建表,并用学号关联。身高、体重、年龄、兴趣、健康情况表中的数据即为切面数据,切面数据就是目标对象。
步骤3 对数据操作进行切面。对可能的操作进行切面,虽然现在只有筛选一种功能,但是筛选后,可能还有记录、通知、排序等数据操作等,所以对涉及到的操作进行切面, 筛选本身就是一个切面,而发出筛选等操作请求的程序就是接入点,接收筛选并判断筛选是否有效的程序就是切点,切点在获取到有效的筛选请求后,将请求分发到不同的处理程序中,这些处理程序就是通知,通知存有不同学院和医院数据库访问的方式,通知会对筛选请求查询切面数据,凡是符合条件的切面数据,就会返回。如果切面数据本身不包含请求数据,如请求年龄时,只有出生日期信息,那么改变出生日期,年龄就会相应的改变,则出生日期是一个代理对象。通知处理代理对象的过程就是织入。
步骤4:将所有需要的数据按照筛选条件获取完后,将分散的切面数据重新组成关联的独立信息,呈现在筛选请求者的面前的,是组合完整的学生数据。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
权利要求
1.一种面向切面的云存储引擎构造方法,包括如下步骤步骤1 设计人员根据所采用的数据库类型构建数据访问层;步骤2 设计人员对数据库中的数据进行切面;步骤3 设计人员分析业务请求,对数据操作切面得到切面数据;步骤4 设计人员在步骤3中构建好的切面数据的基础上,构建云存储引擎。
2.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,所述步骤1中构建数据访问层的具体过程如下确定使用数据存储方式为关系型数据库或非关系型数据库,分别对关系型数据库和非关系型数据库建立数据访问层。
3.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,所述步骤2中对关系型数据库切面的过程包括如下步骤遍历数据库所有的原始数据表,对每张表进行编号,保证编号不重复;将上一步中的表编号单独存储在另一张表中;对原始数据表的数据,逐列(一列一属性)提取,将提取的数据单独存放在新的数据表中,再将新的数据表中的数据编号,所有从原始数据表逐列提取的数据,在所有的新的数据表中对应的编号一致,这个编号可以是原始数据表中的主键,也可以用其他方式生成,但要保证新的数据表中的所有数据编号不重复。
4.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,所述步骤2中对非关系数据库切面的过程包括如下步骤非关系数据库中,数据是用键值对的形式存储的,每一条数据都会有数据键和对应的数据值,所以在对非关系型数据库切面的时候,只需要将数据的数据键存储在一张表中,数据键对应的数据值存储在另一张表中,得到两个新的数据表。
5.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,所述步骤3中对数据操作切面的具体过程包括如下步骤在数据库系统中,设计人员首先提取数据操作的切面,这种数据操作对应具体的数据库操作步骤,具体的数据库操作步骤又需要具体的数据库访问方式,设计人员将具体的数据库访问方式封装成一个程序,这个程序可以访问关系型数据库,也可访问非关系型数据库,这个程序作为通知;应用接口层会向服务器发出请求,发出请求的程序是接入点,请求从接入点发出后,切面操作截获服务请求,捕获接入点的程序作为切点,通过切点捕获到的请求,将由切点判断请求的有效性,如果为无效请求则拦截,如果是有效请求就将请求交给通知进行处理,通知针对具体的请求会转向具体的数据库对象;具体的数据库对象已经通过第一步变为切面数据,这时,切面数据就是目标对象,如果目标对象本身是对数据的封装,这些封装只是包含了对真实数据的操作,则把包含了对真实数据操作的数据对象称为代理对象,当切面操作要处理切面数据时,就会先处理代理对象,然后通过代理对象,实现对切面数据的操作。
6.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,步骤4中关系型数据库存储引擎的构造过程包括如下步骤a.将数据的删除、更新及插入操作混合,这样使得数据操作对数据的尺寸产生更少的存储碎片;通过合并相邻被删除的存储块,以及若一个存储块被删除,就扩展到下一存储块的方式可以提高存储的效率;b.设定每个表的最大索引数;c.如果数据表中间的表没有合适大小的块,则新增一张表来辅助存储;d.索引文件里设定一个标志,它表明表是否被正确关闭;e.建立锁机制。
7.根据权利要求1所述的一种面向切面的云存储引擎构造方法,其特征在于,步骤4中非关系型数据库构造存储引擎的构造过程包括如下步骤a.选择可用的键值数据结构 Lists (列表),Sets (集合),Sorted Sets (有序集合),Hashes (哈希表),键值的数据类型决定了该键值支持的操作,如列表、集合或有序集合的交集、并集、查集等高级原子操作;b.将数据键先存储高字节,以允许一个更高地址的索引压缩,当记录以排好序的顺序插入,索引树被重构,以便高字节仅包含一个键,以改善键值数据结构的存储效率;c.将数据值先存储低字节,再存储高字节,以降低数据值和数据值所运行的数据库环境的依赖性,运行数据库的服务器使用补码和浮点格式来表示数据值,数据行中的字节一般是未联合的,从一个方向读未联合的字节,这样可以使得服务器在获取列值时有更高的效率;d.主从同步非关系型数据库的存储介质会部署在异构的系统中,所以存储在异构系统数据库中的数据需要同步,以保证数据的一致性。
全文摘要
本发明涉及一种面向切面的云存储引擎构造方法,包括步骤步骤1设计人员根据所采用的数据库类型构建数据访问层;步骤2设计人员对数据库中的数据进行切面;步骤3设计人员分析业务请求,对数据操作切面得到切面数据;步骤4设计人员在步骤3中构建好的切面数据的基础上,构建云存储引擎。本发明的有益效果是本发明与传统技术相比较,在现有的云存储架构中,新加入数据访问层的概念,该数据访问层使用面向切面编程的思想将数据切面处理,大幅提高了数据检索和数据管理的效率,简化了关系型数据和非关系型数据处理过程中数据异构的复杂性问题。
文档编号G06F17/30GK102495853SQ20111036719
公开日2012年6月13日 申请日期2011年11月17日 优先权日2011年11月17日
发明者唐雪飞, 汪海良, 石砾 申请人:成都康赛电子科大信息技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1