CN107180102A - 一种目标特性数据的存储方法和系统 - Google Patents

一种目标特性数据的存储方法和系统 Download PDF

Info

Publication number
CN107180102A
CN107180102A CN201710376521.0A CN201710376521A CN107180102A CN 107180102 A CN107180102 A CN 107180102A CN 201710376521 A CN201710376521 A CN 201710376521A CN 107180102 A CN107180102 A CN 107180102A
Authority
CN
China
Prior art keywords
data
memory modules
storage
file
hbase
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
Application number
CN201710376521.0A
Other languages
English (en)
Other versions
CN107180102B (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.)
Beijing Institute of Environmental Features
Original Assignee
Beijing Institute of Environmental Features
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 Beijing Institute of Environmental Features filed Critical Beijing Institute of Environmental Features
Priority to CN201710376521.0A priority Critical patent/CN107180102B/zh
Publication of CN107180102A publication Critical patent/CN107180102A/zh
Application granted granted Critical
Publication of CN107180102B publication Critical patent/CN107180102B/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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种目标特性数据的存储方法和系统,其中的方法包括:预先设置多个用于存储数据的数据存储模块以及对应的存储控制器;客户端向分发器发送携带有数据信息的数据存储请求,数据信息包括:密级信息、共享信息、用户组信息和访问权限信息;分发器根据数据存储请求及各个存储控制器的负载情况选择一个存储控制器,将数据存储请求转发给所选择的存储控制器,并将所选择的存储控制器通知所述客户端;客户端与存储控制器直接进行通信,存储控制器为客户端提供统一的数据读写接口,将客户端上传的数据存储到与存储控制器对应的数据存储模块中。应用本发明可以降低数据存储成本,统一管理和维护数据,保障数据安全,方便数据共享和使用。

Description

一种目标特性数据的存储方法和系统
技术领域
本申请涉及数据存储技术领域,尤其涉及一种目标特性数据的存储方法和系统。
背景技术
在现有技术中,随着现代战场环境日趋复杂,目标特性数据的容量越来越大、增长速度越来越快、数据类型越来越多样,传统关系型数据库系统(RDBMS)由于存储容量、性能等限制,难以满足海量特性数据的存储与管理。
在目标特性领域主要存在两类数据:结构化数据和非结构化数据。结构化数据具有一定的数据格式,可被解析并存储到关系型数据库(RDBMS)中。非结构化数据的格式和规模不固定,无法直接解析,如原始雷达、红外测量数据等。在目标特性领域,非结构化数据在数据规模和容量上远多于结构化数据。随着测量、仿真次数的增多,非结构数据增长迅速。因此,如何统一存储和管理这些特性文件,解决大量小文件查询效率问题以及大文件存储、上传、下载效率问题,为后续分析处理提供数据支持,已成为目标特性行业中亟需解决的难题。
发明内容
有鉴于此,本发明提供了一种目标特性数据的存储方法和系统,从而可以降低数据存储成本,统一管理和维护数据,保障数据安全,方便数据共享和使用。
本发明的技术方案具体是这样实现的:
一种目标特性数据的存储方法,该方法包括:
预先设置多个用于存储数据的数据存储模块以及对应的存储控制器;所述数据存储模块包括:Oracle存储模块、HDFS存储模块、HBase存储模块和Cache存储模块;
客户端向分发器发送数据存储请求,所述数据存储请求中携带有数据信息,所述数据信息包括:密级信息、共享信息、用户组信息和访问权限信息;
分发器根据接收到的数据存储请求以及各个存储控制器的负载情况选择一个存储控制器,将数据存储请求转发给所选择的存储控制器,并将所选择的存储控制器通知所述客户端;
客户端与存储控制器直接进行通信,存储控制器为客户端提供统一的数据读写接口,将客户端上传的数据存储到与所述存储控制器对应的数据存储模块中。
较佳的,该方法进一步包括:
所述分发器根据预设的分发策略将同一用户的所有请求分发给对应的存储控制器,每个存储控制器均可访问所有的数据存储模块;
其中,所述分发策略为:对用户地址进行一致性哈希分配策略分配对应的存储控制器。
较佳的,该方法进一步包括:
通过文件共享表来为各个用户分配所拥有的对文件的操作权限;
预先设置一个或多个用户组,每一个用户组对应一组文件的操作权限,通过用户组的方式给用户授权。
较佳的,该方法进一步包括:
当所需存储的数据为结构化数据时,所需存储的数据被存储到Oracle存储模块中;
当所需存储的数据为非结构化数据时,如果数据大小大于预设阈值,则所需存储的数据被存储到HDFS存储模块中;如果数据大小不大于预设阈值,则所需存储的数据被存储到HBase存储模块中。
较佳的,在将数据存储到数据存储模块中之前,客户端将所需存储的数据分割成预设的固定大小的数据块,并为每个数据块设置全局唯一的标识,再将各个数据块分别独立地发送给数据存储模块;
各个数据存储模块根据各个数据块的全局唯一的标识进行数据重传和文件重构操作。
较佳的,当所述数据块需要存储在HDFS存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HDFS写入缓冲区中,再通过HDFS写入线程从所述HDFS写入缓冲区中读取数据块,并根据各个数据块的全局唯一的标识依次将各个数据块写入所述HDFS存储模块中;其中,所述HDFS写入缓冲区按照生产者-消费者的多线程同步方式管理。
较佳的,当所述数据块需要存储在HBase存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HBase写入缓冲区中,预先设置的写入线程池中的多个HBase写入线程分别从所述HBase写入缓冲区中读取数据块,并根据各个数据块的全局唯一的标识依次将各个数据块写入所述HBase存储模块中。
较佳的,所述将所需存储的数据分割成预设的固定大小的数据块,并为每个数据块设置全局唯一的标识包括:
读取所需存储的数据,设所需存储的数据为文件F;
获取所述文件F的元数据并存储到Oracle存储模块中,记录文件F的文件状态为不可用;
在HBase存储模块中创建一条记录,所述记录的RowKey为Oracle存储模块中的文件F的文件ID;
根据预设的固定大小,将文件F分割成若干个数据块并为每个数据块设置全局唯一的标识,根据分割后的各个数据块形成文件块列表FC。
较佳的,所述根据各个数据块的全局唯一的标识依次将各个数据块写入所述HBase存储模块中包括如下步骤:
A1、初始化时间戳T=0,根据数据块的全局唯一的标识,逆序排列所述文件块列表FC中的所有数据块;
A2、对于逆序排列后的所述文件块列表FC中的第T+1个文件块C,将文件块C的内容、大小、MD5值及时间戳T存储到HBase存储模块中;时间戳自增:T=T+1;
A3、判断判断当前的时间戳T的取值是否大于预设的时间戳阈值,如果是,则执行步骤A4;否则,返回执行步骤A1;
A4、将存储在Oracle存储模块中的文件F的文件状态设置为可用。
较佳的,通过如下的步骤从所述HBase存储模块读取所存储的数据:
从Oracle存储模块中获取所需读取的数据的元数据,设所需读取的数据为文件F;
根据所述元数据中的文件F的读取范围,计算HBase存储模块中与文件F对应的各个文件块的时间戳区间TC;
从HBase存储模块中获取时间戳区间TC对应的文件块;
从HBase存储模块中依次下载所获取的所有文件块,并计算文件块的MD5值,以保证数据正确下载;对未正确下载的文件块进行重试;若重试N次仍未成功则返回错误;其中,N为预设的数值。
较佳的,通过如下步骤从数据存储模块中读取所需的数据:
B1、设所需读取的数据为文件F,当用户U需要读取文件F时,发送数据读取请求以请求执行数据读取操作FP;所述数据读取请求中携带有用户信息,所述用户信息包括:用户组信息和访问权限信息;
B2、根据所述用户信息判断该用户U是否为文件F的所有者;如果是,执行FP并结束流程;否则,执行步骤B3;
B3、根据所述用户信息判断该用户U是否满足文件F的密级要求;如果是,执行步骤B4;否则,向用户返回用户密级不匹配的错误提示信息并结束流程;
B4、判断所述文件F是否共享;如果是,执行步骤B5;否则,向用户返回无法访问私有文件的错误提示信息并结束流程;
B5、判断所述文件F的默认权限是否满足FP要求;如果是,执行FP并结束流程;否则,执行步骤B6;
B6、根据所述用户信息获取所述用户U所属的用户组以及对应的文件共享权限集合;
B7、判断文件共享权限集合中是否存在对文件F执行FP的权限;如果是,执行FP;否则,向用户返回无操作权限的错误提示信息。
较佳的,该方法进一步包括:
多个客户端同时通过客户端读取线程对存储控制器发送数据读取请求,远程调用存储控制器中的存储控制线程池中的各个存储控制线程,对HDFS存储模块和HBase存储模块中所存储的对应的数据块进行并行读取,实现多线程数据下载。
如上可见,在本发明的技术方案中,提出了一种基于Oracle和Hadoop的目标特性数据存储方法和系统,从而可以利用Hadoop的分布式处理和存储能力,弥补Oracle在海量数据存储的不足,降低数据存储成本,统一管理和维护数据,保障数据安全,解决数据孤岛和单点故障问题,方便数据共享和使用,为后续目标特性数据处理、挖掘和应用研究等提供数据和存储支持。
附图说明
图1为本发明实施例中的目标特性数据的存储方法的流程图。
图2为本发明实施例中的访问控制模型E-R图。
图3为本发明实施例中的多线程数据上传逻辑流程示意图。
图4为本发明实施例中的将数据存储到HBase存储模块的逻辑流程示意图。
图5为本发明实施例中的从HBase存储模块中读取数据的逻辑流程示意图。
图6为本发明实施例中从数据存储模块中读取所需的数据的流程示意图。
图7为本发明实施例中的多线程数据下载逻辑流程示意图。
图8为本发明实施例中的目标特性数据存储系统的结构示意图。
图9为本发明实施例中的目标特性数据存储系统的实际部署示意图。
具体实施方式
为使本发明的技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明作进一步详细的说明。
图1为本发明实施例中的目标特性数据的存储方法的流程图。如图1所示,本发明实施例中的目标特性数据的存储方法包括如下所述步骤:
步骤101,预先设置多个用于存储数据的数据存储模块以及对应的存储控制器;所述数据存储模块包括:Oracle存储模块、HDFS存储模块、HBase存储模块和Cache存储模块。
在现有技术中,Oracle数据库是一种已经广泛应用到各个领域的通用数据库,可以提供相应的数据管理功能。因此,在本发明的技术方案中,Oracle存储模块可以使用Oracle数据库的方式来存储相应的数据。但是,Oracle数据库由于存储容量、性能等限制,在海量特性数据存储方面还存在一定的不足之处,而且数据存储成本较高。因此,如图8所示,在本发明的技术方案中,除了Oracle存储模块之外,还可以使用HDFS存储模块、HBase存储模块和Cache存储模块来存储数据,为系统提供底层存储服务,从而可以利用Hadoop的分布式处理和存储能力,弥补Oracle在海量数据存储的不足,降低数据存储成本,统一管理和维护数据,保障数据安全,解决数据孤岛和单点故障问题,方便数据共享和使用,为后续目标特性数据处理、挖掘和应用研究等提供数据和存储支持。
其中,现有技术中的Hadoop是一个由Apache基金会所开发的分布式系统基础架构,其具体的实现可以是一个Hadoop分布式文件系统(HDFS,Hadoop Distributed FileSystem)。HDFS具有高容错性的特点,并且设计用来部署在低廉的硬件上;而且还可以提供高吞吐量来访问应用程序的数据。
另外,HBase是Apache的Hadoop项目的子项目,是一个分布式的、面向列的开源数据库,适合于非结构化数据存储的数据库。Hadoop和HBase可运行在廉价的计算机上,为系统提供安全、快速、可扩展的数据存储集群服务,有效降低数据存储成本。
此外,在本发明的技术方案中,当设置了多个数据存储模块之后,分发器可以根据预设的分发策略将同一用户的所有请求分发给对应的存储控制器,每个存储控制器均可访问所有的数据存储模块。
另外,较佳的,在本发明的具体实施例中,所述分发策略可以包括:轮训、随机分配或一致性哈希分配等分发策略。
在本发明的一个较佳实施例中,采用对用户地址进行一致性哈希分配策略分配对应的存储控制器,实现系统的负载均衡。
由于在本发明的技术方案中设置了多个数据存储模块和多个存储控制器,因此还可以有效地防止由于单点故障导致整个系统瘫痪的问题,还可以有效地提高系统吞吐率。
步骤102,客户端向分发器发送数据存储请求,所述数据存储请求中携带有数据信息,所述数据信息包括:密级信息、共享信息、用户组信息和访问权限信息。
在目标特性数据领域,由于行业的保密性质,特定文件只能在特定范围内使用。为了在保密的前提下更大范围地满足文件共享的需要,且现有技术中的Hadoop的权限机制不能满足该要求,因此在本发明的技术方案中,对文件系统权限进行了重新设计。例如,可以预先对所需存储的数据或文件设立密级属性(即密级信息),并预先对访问数据或文件的用户也建立的相应的岗位密级。所以,在本发明的技术方案中,对于特定的数据或文件,只有满足相应的密级要求的用户才有访问该数据或文件的权限。因此,用户在上传数据或文件进行存储的同时,需要表明该数据或文件的密级以及是否可以共享(即共享信息),从而确保只有特定范围的人员才能访问该数据或文件。
因此,为了更好地挖掘目标特性数据的价值,在本发明的技术方案中设计了文件共享功能。数据或文件的所有者在通过客户端向分发器发送数据存储请求之前,可以预先根据所需存储的数据或文件的情况创建或选择特定的用户组(即用户组信息),同时设定对应的访问权限(即访问权限信息)。例如,只有属于特定的用户组的用户才具有该文件的访问权限。
所以,在本步骤中,用户在通过客户端向分发器发送数据存储请求时,将在该数据存储请求中携带与所需存储的数据相关的数据信息,该数据信息可以包括:密级信息、共享信息、用户组信息和访问权限信息等信息。
另外,在本发明的技术方案中,还可以为不同的用户设置不同的访问权限。例如,较佳的,在本发明的一个具体实施例中,所述访问权限信息中的访问权限可以包括:读权限(r)、写权限(w)、执行权限(x)和无权限(0)等。
另外,较佳的,在本发明的一个具体实施例中,可以对所需存储的数据或文件的权限以及具有相应权限的用户组预先进行设计。例如,图2为本发明实施例中的访问控制模型E-R图,如图2所示,在本发明的技术方案中,可以借鉴基于角色的访问控制技术,通过文件共享表来为各个用户分配所拥有的对文件的操作权限。为方便管理和维护,可以预先设置一个或多个用户组,每一个用户组对应一组文件的操作权限,通过用户组的方式给用户授权。
例如,如图2所示,“用户文件表”与“用户表”之间存在一对多关系,“用户表”和“用户组”之间通过“用户所属组”组成多对多关系,“用户组”和“用户文件表”之间也属于多对多关系。其中,用户表中记录了用户的用户名、密码、用户状态、岗位密级等信息;用户文件表定义了存储文件的文件名、保存路径、所有者、密级、文件类型、文件大小、文件状态、创建时间、修改时间、是否共享、默认权限、备注等信息。用户所属组表中记录了用户ID和项目组ID等信息。用户组表中记录了组名称和备注等信息。文件共享表中记录了文件ID、用户组ID和访问权限等信息。其中,文件名及文件类型由文件所有者定义,其保存路径对应该文件在系统中的存储位置,当文件(即所需存储的数据)大小超过阈值时,该文件被保存到HDFS上,保存路径对应HDFS中的文件路径;当文件大小不超过阈值时,则被存储到HBase中,保存路径则对应HBase中的一条记录。文件状态标记该文件是否可用,一个文件被删除时会被标记为不可用,待系统执行清理任务才被真正删除;系统定期执行删除任务,在执行删除任务前,仍可恢复该文件,防止数据误删。当文件所有者上传文件时,可设置该文件是否可以被共享以及其他用户的默认权限等,如文件F可被共享且默认权限为只读时,若用户U的岗位密级不低于文件F的密级时,用户U默认具有文件F的只读权限。通过设置文件的默认权限,可减少文件共享表存储的记录数。
步骤103,分发器根据接收到的数据存储请求以及各个存储控制器的负载情况选择一个存储控制器,将数据存储请求转发给所选择的存储控制器,并将所选择的存储控制器通知所述客户端。
由于在本发明的技术方案中,预先设置了多个数据存储模块和存储控制器,因此,分发器在收到客户端发送的数据存储请求之后,将根据各个存储控制器的负载情况为该客户端选择一个存储控制器,然后将数据存储请求转发给所选择的存储控制器,并将所选择的存储控制器通知所述客户端。
步骤104,客户端与存储控制器直接进行通信,存储控制器为客户端提供统一的数据读写接口,将客户端上传的数据存储到与所述存储控制器对应的数据存储模块中。
其中,当所需存储的数据为结构化数据时,所需存储的数据被存储到系型数据库(即Oracle存储模块)中;
而当所需存储的数据为非结构化数据时,数据大小大于预设阈值的数据被存储到HDFS存储模块中,数据大小不大于预设阈值的数据被存储到HBase存储模块中。
另外,在本发明的技术方案中,为提高数据传输效率,在将数据存储到数据存储模块中之前,客户端将所需存储的数据或文件分割成预设的固定大小的数据块,并为每个数据块设置全局唯一的标识(例如,文件唯一编号+文件块下标等),然后再将各个数据块分别独立地发送给数据存储模块,数据存储模块可以根据各个数据块的标识进行数据重传和文件重构等操作。
此外,在本发明的技术方案中,为提高数据传输效率,还可以使用多线程的数据上传方法来存储数据。
例如,图3为本发明实施例中的多线程数据上传逻辑流程示意图,如图3所示,由于HDFS存储模块在写入数据时,只支持单线程方式,因此,较佳的,在本发明的一个具体实施例中,当所述数据块需要存储在HDFS存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HDFS写入缓冲区中,然后再通过HDFS写入线程从所述HDFS写入缓冲区中读取数据块,并根据各个数据块的标识依次将各个数据块写入所述HDFS存储模块中。
其中,所述HDFS写入缓冲区可以按照生产者-消费者的多线程同步方式管理。
再例如,较佳的,在本发明的一个具体实施例中,当所述数据块需要存储在HBase存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HBase写入缓冲区中,然后,预先设置的写入线程池中的多个HBase写入线程分别从所述HBase写入缓冲区中读取数据块,并根据各个数据块的标识依次将各个数据块写入所述HBase存储模块中。
另外,在本发明的技术方案中,由于在HBase中,列簇是数据存储和访问控制的基本单元,同一列簇的列通常具有相同的类型。因此,为了充分利用HBase存储模块的存储特性,提高存储效率,在本发明的一个具体实施例中可以预先设置如表1所示的存储模型:
表1
因此,可以根据上述表1中所示的存储模型进行数据的存储。
例如,较佳的,在本发明的一个具体实施例中,在将数据存储到HBase存储模块中之前,可以根据预设的固定大小,将所需存储的数据(例如,一个文件)分割成若干个数据块(Chunk),存储到列簇Content的Chunk列中,每个文件可以对应HBase数据库中的一行,以Oracle中的文件ID作为行键(RowKey)进行索引。同时,记录各个数据块的大小和MD5值,存储在MetaInfo列簇中的大小(Size)和MD5列中,以方便数据块的读取和校验。
例如,图4为本发明实施例中的将数据存储到HBase存储模块的逻辑流程示意图,如图4所示,较佳的,在本发明的一个具体实施例中,当所需存储的数据需要存储在HBase存储模块中时,所述将所需存储的数据分割成若干个数据块可以包括如下的步骤:
步骤401,读取所需存储的文件F(即所需存储的数据)。
步骤402,获取所述文件F的元数据并存储到Oracle存储模块中,记录文件F的文件状态为不可用。
步骤403,在HBase存储模块中创建一条记录,该记录的RowKey为Oracle存储模块中的文件F的文件ID。
步骤404,根据预设的固定大小(即ChunkSize),将文件F分割成若干个数据块并为每个数据块设置全局唯一的标识(例如,文件唯一编号+文件块下标等),根据分割后的各个数据块形成文件块列表(FC)。
在将文件F分割成若干个数据块之后,即可对各个数据块进行存储。
例如,较佳的,在本发明的一个具体实施例中,所述根据各个数据块的标识依次将各个数据块写入所述HBase存储模块中可以包括如下步骤:
步骤405,初始化时间戳T=0,根据数据块的全局唯一的标识,逆序排列所述文件块列表FC中的所有数据块。
步骤406,对于逆序排列后的所述文件块列表FC中的第T+1个文件块C,将文件块C的内容、大小、MD5值及时间戳T存储到HBase存储模块中;时间戳自增:T=T+1;从而可以保证在后续过程中从HBase存储模块中读取数据时,所获得的文件块列表是根据数据块的全局唯一的标识正序排列的;
步骤407,判断所述文件块列表FC是否遍历完成(即判断当前的时间戳T的取值是否大于预设的时间戳阈值),如果是,则执行步骤408;否则,返回执行步骤405;
步骤408,将存储在Oracle存储模块中的文件F的文件状态设置为可用。
通过上述的步骤401~408,即可将所需存储的数据存储到HBase存储模块中。
更进一步的,在本发明的一个具体实施例中,图5为本发明实施例中的从HBase存储模块中读取数据的逻辑流程示意图,如图5所示,当需要从所述HBase存储模块读取上述所存储的数据时,可以通过如下的步骤实现:
步骤501,从Oracle存储模块中获取所需读取的文件F(即所需读取的数据)的元数据。
步骤502,根据所述元数据中的文件F的读取范围,计算HBase存储模块中与文件F对应的各个文件块的时间戳区间TC。
步骤503,从HBase存储模块中获取时间戳区间TC对应的文件块Chunk。
步骤504,从HBase存储模块中依次下载所获取的所有文件块,并计算文件块的MD5值,以保证数据正确下载;对未正确下载的文件块进行重试;若重试N次仍未成功则返回错误;其中,N为预设的数值,例如,N=3。
通过上述的步骤501~504,即可从所述HBase存储模块读取上述所存储的数据。
另外,在本发明的技术方案中,可以根据用户的要求,从各个数据存储模块中读取所需的数据。
例如,图6为本发明实施例中从数据存储模块中读取所需的数据的流程示意图,如图6所示,较佳的,在本发明的一个具体实施例中,可以通过如下步骤从数据存储模块中读取所需的数据:
步骤601,当用户U需要读取文件F(即所需读取的数据)时,发送数据读取请求以请求执行数据读取操作(FP);所述数据读取请求中携带有用户信息,所述用户信息包括:用户组信息和访问权限信息。
步骤602,根据所述用户信息判断该用户U是否为文件F的所有者;如果是,执行FP并结束流程;否则,执行步骤603;
步骤603,根据所述用户信息判断该用户U是否满足文件F的密级要求;如果是,执行步骤604;否则,向用户返回用户密级不匹配的错误提示信息并结束流程;
步骤604,判断所述文件F是否共享;如果是,执行步骤605;否则,向用户返回无法访问私有文件的错误提示信息并结束流程;
步骤605,判断所述文件F的默认权限是否满足FP要求;如果是,执行FP并结束流程;否则,执行步骤606;
步骤606,根据所述用户信息获取所述用户U所属的用户组(UG)以及对应的文件共享权限集合(PG);
步骤607,判断PG中是否存在对文件F执行FP的权限;如果是,执行FP;否则,向用户返回无操作权限的错误提示信息。
通过上述的步骤601~607,即可从数据存储模块中读取所需的数据。
另外,由于在本发明的技术方案中,HDFS存储模块和HBase存储模块都可以支持多线程并发读取,因此,本发明中可以对所需读取的数据进行多线程下载。
例如,图7为本发明实施例中的多线程数据下载逻辑流程示意图,如图7所示,较佳的,在本发明的一个具体实施例中,多个客户端可以同时通过客户端读取线程对存储控制器发送数据读取请求,远程调用存储控制器中的存储控制线程池中的各个存储控制线程,对HDFS存储模块和HBase存储模块中所存储的对应的数据块进行并行读取,从而实现多线程数据下载。
此外,在数据或文件的下载过程中,还可以将经常访问的文件元数据和文件块进行缓存,从而可以有效地减少磁盘I/O,提高系统响应速度。
图9为本发明实施例中的目标特性数据存储系统的实际部署示意图,如图9所示,在本发明的一个较佳的具体实施例中,Oracle存储模块、HDFS存储模块和HBase存储模块可以分别采用Oracle 11g、Hadoop2.6和HBase 1.1作为数据持久化存储模块,然后采用内存数据库Redis作为全局缓存,使用Thrift进行远程调用。Hadoop/HBase集群对应一个主节点和多个子节点,主节点部署HDFS的名称节点(NameNode)(用于存储HDFS的元数据)和HBase的HMaster(用于存储HBase的元数据);子节点部署HDFS的数据节点(DataNode)(用于存储HDFS中的数据)和HBase的HRegionServer(用于存储HBase中的数据)。存储控制器、分发器和客户端可以分别部署在10台个人计算机(例如,DELL 7010)上,通过千兆以太网连接。其中,存储控制器及Hadoop集群(即HDFS存储模块和HBase存储模块)可根据实际具体应用情况的需要增加节点;Thrift是跨平台和支持多语言的远程调用框架,可方便数据处理程序调用。
综上所述,在本发明的技术方案中,提出了一种基于Oracle和Hadoop的目标特性数据存储方法和系统,从而可以利用Hadoop的分布式处理和存储能力,弥补Oracle在海量数据存储的不足,降低数据存储成本,统一管理和维护数据,保障数据安全,解决数据孤岛和单点故障问题,方便数据共享和使用,为后续目标特性数据处理、挖掘和应用研究等提供数据和存储支持。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种目标特性数据的存储方法,其特征在于,该方法包括:
预先设置多个用于存储数据的数据存储模块以及对应的存储控制器;所述数据存储模块包括:Oracle存储模块、HDFS存储模块、HBase存储模块和Cache存储模块;
客户端向分发器发送数据存储请求,所述数据存储请求中携带有数据信息,所述数据信息包括:密级信息、共享信息、用户组信息和访问权限信息;
分发器根据接收到的数据存储请求以及各个存储控制器的负载情况选择一个存储控制器,将数据存储请求转发给所选择的存储控制器,并将所选择的存储控制器通知所述客户端;
客户端与存储控制器直接进行通信,存储控制器为客户端提供统一的数据读写接口,将客户端上传的数据存储到与所述存储控制器对应的数据存储模块中。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
所述分发器根据预设的分发策略将同一用户的所有请求分发给对应的存储控制器,每个存储控制器均可访问所有的数据存储模块;
其中,所述分发策略为:对用户地址进行一致性哈希分配策略分配对应的存储控制器。
3.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
通过文件共享表来为各个用户分配所拥有的对文件的操作权限;
预先设置一个或多个用户组,每一个用户组对应一组文件的操作权限,通过用户组的方式给用户授权。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当所需存储的数据为结构化数据时,所需存储的数据被存储到Oracle存储模块中;
当所需存储的数据为非结构化数据时,如果数据大小大于预设阈值,则所需存储的数据被存储到HDFS存储模块中;如果数据大小不大于预设阈值,则所需存储的数据被存储到HBase存储模块中。
5.根据权利要求4所述的方法,其特征在于:
在将数据存储到数据存储模块中之前,客户端将所需存储的数据分割成预设的固定大小的数据块,并为每个数据块设置全局唯一的标识,再将各个数据块分别独立地发送给数据存储模块;
各个数据存储模块根据各个数据块的全局唯一的标识进行数据重传和文件重构操作。
6.根据权利要求5所述的方法,其特征在于:
当所述数据块需要存储在HDFS存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HDFS写入缓冲区中,再通过HDFS写入线程从所述HDFS写入缓冲区中读取数据块,并根据各个数据块的全局唯一的标识依次将各个数据块写入所述HDFS存储模块中;其中,所述HDFS写入缓冲区按照生产者-消费者的多线程同步方式管理。
7.根据权利要求5所述的方法,其特征在于:
当所述数据块需要存储在HBase存储模块中时,对应的存储控制器将所述数据块写入到预先设置的HBase写入缓冲区中,预先设置的写入线程池中的多个HBase写入线程分别从所述HBase写入缓冲区中读取数据块,并根据各个数据块的全局唯一的标识依次将各个数据块写入所述HBase存储模块中。
8.根据权利要求7所述的方法,其特征在于,所述将所需存储的数据分割成预设的固定大小的数据块,并为每个数据块设置全局唯一的标识包括:
读取所需存储的数据,设所需存储的数据为文件F;
获取所述文件F的元数据并存储到Oracle存储模块中,记录文件F的文件状态为不可用;
在HBase存储模块中创建一条记录,所述记录的RowKey为Oracle存储模块中的文件F的文件ID;
根据预设的固定大小,将文件F分割成若干个数据块并为每个数据块设置全局唯一的标识,根据分割后的各个数据块形成文件块列表FC。
9.根据权利要求8所述的方法,其特征在于,所述根据各个数据块的全局唯一的标识依次将各个数据块写入所述HBase存储模块中包括如下步骤:
A1、初始化时间戳T=0,根据数据块的全局唯一的标识,逆序排列所述文件块列表FC中的所有数据块;
A2、对于逆序排列后的所述文件块列表FC中的第T+1个文件块C,将文件块C的内容、大小、MD5值及时间戳T存储到HBase存储模块中;时间戳自增:T=T+1;
A3、判断判断当前的时间戳T的取值是否大于预设的时间戳阈值,如果是,则执行步骤A4;否则,返回执行步骤A1;
A4、将存储在Oracle存储模块中的文件F的文件状态设置为可用。
10.根据权利要求9所述的方法,其特征在于,通过如下的步骤从所述HBase存储模块读取所存储的数据:
从Oracle存储模块中获取所需读取的数据的元数据,设所需读取的数据为文件F;
根据所述元数据中的文件F的读取范围,计算HBase存储模块中与文件F对应的各个文件块的时间戳区间TC;
从HBase存储模块中获取时间戳区间TC对应的文件块;
从HBase存储模块中依次下载所获取的所有文件块,并计算文件块的MD5值,以保证数据正确下载;对未正确下载的文件块进行重试;若重试N次仍未成功则返回错误;其中,N为预设的数值。
CN201710376521.0A 2017-05-25 2017-05-25 一种目标特性数据的存储方法和系统 Active CN107180102B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710376521.0A CN107180102B (zh) 2017-05-25 2017-05-25 一种目标特性数据的存储方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710376521.0A CN107180102B (zh) 2017-05-25 2017-05-25 一种目标特性数据的存储方法和系统

Publications (2)

Publication Number Publication Date
CN107180102A true CN107180102A (zh) 2017-09-19
CN107180102B CN107180102B (zh) 2019-12-31

Family

ID=59831379

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710376521.0A Active CN107180102B (zh) 2017-05-25 2017-05-25 一种目标特性数据的存储方法和系统

Country Status (1)

Country Link
CN (1) CN107180102B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967305A (zh) * 2017-11-10 2018-04-27 平安科技(深圳)有限公司 影像文件上传方法、服务器及可读存储介质
CN108776627A (zh) * 2018-05-29 2018-11-09 青岛海尔科技有限公司 一种数据存储方法、装置、读取方法及装置
CN109194566A (zh) * 2018-08-27 2019-01-11 惠州Tcl移动通信有限公司 一种重发信息的方法、存储介质及终端设备
CN109558082A (zh) * 2018-11-26 2019-04-02 深圳天源迪科信息技术股份有限公司 分布式文件系统
WO2019237590A1 (zh) * 2018-06-14 2019-12-19 平安科技(深圳)有限公司 文件安全管理方法、装置、计算机设备及存储介质
CN110704375A (zh) * 2019-09-26 2020-01-17 深圳前海大数金融服务有限公司 文件管理方法、装置、设备及计算机存储介质
CN110874268A (zh) * 2018-09-04 2020-03-10 阿里巴巴集团控股有限公司 数据处理方法、装置和设备
CN110912953A (zh) * 2018-09-17 2020-03-24 深圳市优必选科技有限公司 一种文件存储系统及方法
WO2021184761A1 (zh) * 2020-03-20 2021-09-23 腾讯科技(深圳)有限公司 数据访问方法和装置、数据存储方法和装置
CN113836105A (zh) * 2021-09-27 2021-12-24 深圳市绿联科技股份有限公司 一种文件共享方法、文件展示方法、装置和存储介质
CN114598716A (zh) * 2022-04-02 2022-06-07 西湖大学 一种分布式文件存储系统、方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414173B (zh) * 2007-10-19 2011-07-13 松下电工株式会社 负载控制系统
CN103440288A (zh) * 2013-08-16 2013-12-11 曙光信息产业股份有限公司 一种大数据存储方法及装置
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置
CN105446913A (zh) * 2014-09-29 2016-03-30 华为数字技术(成都)有限公司 一种数据访问方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414173B (zh) * 2007-10-19 2011-07-13 松下电工株式会社 负载控制系统
CN103440288A (zh) * 2013-08-16 2013-12-11 曙光信息产业股份有限公司 一种大数据存储方法及装置
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置
CN105446913A (zh) * 2014-09-29 2016-03-30 华为数字技术(成都)有限公司 一种数据访问方法及装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967305A (zh) * 2017-11-10 2018-04-27 平安科技(深圳)有限公司 影像文件上传方法、服务器及可读存储介质
CN107967305B (zh) * 2017-11-10 2022-02-01 平安科技(深圳)有限公司 影像文件上传方法、服务器及可读存储介质
CN108776627A (zh) * 2018-05-29 2018-11-09 青岛海尔科技有限公司 一种数据存储方法、装置、读取方法及装置
CN108776627B (zh) * 2018-05-29 2021-08-24 青岛海尔科技有限公司 一种数据存储方法、装置、读取方法及装置
CN108830102B (zh) * 2018-06-14 2021-07-02 平安科技(深圳)有限公司 文件安全管理方法、装置、计算机设备及存储介质
WO2019237590A1 (zh) * 2018-06-14 2019-12-19 平安科技(深圳)有限公司 文件安全管理方法、装置、计算机设备及存储介质
CN109194566A (zh) * 2018-08-27 2019-01-11 惠州Tcl移动通信有限公司 一种重发信息的方法、存储介质及终端设备
CN110874268A (zh) * 2018-09-04 2020-03-10 阿里巴巴集团控股有限公司 数据处理方法、装置和设备
CN110874268B (zh) * 2018-09-04 2023-04-18 阿里巴巴集团控股有限公司 数据处理方法、装置和设备
CN110912953A (zh) * 2018-09-17 2020-03-24 深圳市优必选科技有限公司 一种文件存储系统及方法
CN109558082A (zh) * 2018-11-26 2019-04-02 深圳天源迪科信息技术股份有限公司 分布式文件系统
CN109558082B (zh) * 2018-11-26 2021-12-07 深圳天源迪科信息技术股份有限公司 分布式文件系统
CN110704375A (zh) * 2019-09-26 2020-01-17 深圳前海大数金融服务有限公司 文件管理方法、装置、设备及计算机存储介质
WO2021184761A1 (zh) * 2020-03-20 2021-09-23 腾讯科技(深圳)有限公司 数据访问方法和装置、数据存储方法和装置
CN113836105A (zh) * 2021-09-27 2021-12-24 深圳市绿联科技股份有限公司 一种文件共享方法、文件展示方法、装置和存储介质
CN114598716A (zh) * 2022-04-02 2022-06-07 西湖大学 一种分布式文件存储系统、方法及电子设备

Also Published As

Publication number Publication date
CN107180102B (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
CN107180102A (zh) 一种目标特性数据的存储方法和系统
US10956601B2 (en) Fully managed account level blob data encryption in a distributed storage environment
CN104025054B (zh) 虚拟环境中的动态存储分层
CN103812939A (zh) 一种大数据存储系统
CN106233259B (zh) 在分散存储网络中检索多世代存储数据的方法和系统
US10108632B2 (en) Splitting and moving ranges in a distributed system
US7792301B2 (en) Access control and encryption in multi-user systems
CN102394894B (zh) 一种基于云计算的网络虚拟磁盘文件安全管理方法
Goodrich et al. Oblivious RAM simulation with efficient worst-case access overhead
US10223506B2 (en) Self-destructing files in an object storage system
US10659225B2 (en) Encrypting existing live unencrypted data using age-based garbage collection
CN103842969B (zh) 信息处理系统
TWI733514B (zh) 儲存系統、區塊鏈網路的網路節點以及基於區塊鏈的日誌結構儲存系統
US20180060318A1 (en) Coordinated hash table indexes to facilitate reducing database reconfiguration time
US20100332530A1 (en) Islands of data
CN109791594A (zh) 为了在多个不可变数据结构上持续存储而对数据进行分段
CN104603740A (zh) 归档数据识别
US20160156631A1 (en) Methods and systems for shared file storage
US11907199B2 (en) Blockchain based distributed file systems
CN104520822A (zh) 数据存储应用编程界面
CN104754001A (zh) 云存储系统和数据存储方法
TW202111520A (zh) 日誌結構儲存系統
CN108900483A (zh) 云存储细粒度访问控制方法、数据上传和数据访问方法
US10516732B2 (en) Disconnected ingest in a distributed storage system
CN103180842A (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