1. 数据仓库技术的特点
数据仓库最根本的特点是物理地存放数据,而且这些数据并不是最新的、专有的,而是来源于其它数据库的。数据仓库的建立并不是要取代数据库,它要建立在一个较全面和完善的信息应用的基础上,用于支持高层决策分析,而事务处理数据库族明腊在企业的信息环境中承担的是日常操作性的任务。数据仓库是数据库技术的一种新的应用,而且到槐慎目前为止,数据仓库还是用关系数据库管理系统来管理其中的兆滑数据。
2. 结合pki技术原理,阐述网上银行系统如何保障信息传输的机密性和不可否认性
一、引言 随着网络的发展,网络信息的安全越来越引起世界各国的重视,防病毒产品、防火墙、入侵检测、漏洞扫描等安全产品都得到了广泛的应用,但是这些信息安全产品都是为了防御外部的入侵和窃取。随着对网络安全的认识和技术的发展,发现由于内部人员造成的泄密或入侵事件占了很大的比例,所以防止内部的非法违规行为应该与抵培猜御外部吵纯的入侵同样地受到重视,要做到这点就需要在网络中实现对网络资源的使用进行审计。 在当今的网络中各种审计系统已经有了初步的应用,例如:数据库审计、应用程序审计以及网络信息审计等,但是,随着网络规模的不断扩大,功能相对单一的审计产品有一定的局限性,并且对审计信息的综合分析和综合管理能力远远不够。功能完整、管理统一,跨地区、跨网段、集中管理才是综合审计系统最终的发展目标。 本文对涉密信息系统中安全审计系统的概念、内容、实现原理、存在的问题、以及今后的发展方向做出了讨论。 二、什么是安全审计 国内通常对计算机信息安全的认识是要保证计算机信息系统中信息的机密性、完整性、可控性、可用性和不可否认性(抗抵赖),简称“五性”。安全审计是这“五性”的重要保障之一,它对计算机信息系统中的所有网络资源(包括数据库、主机、操作系统、安全设备等)进行安全审计,记录所有发生的事件,提供给系统管理员作为系统维护以及安全防范的依据。安全审计如同银行的监控系统,不论是什么人进出银行,都进行如实登记,并且每个人在银行中的行动,乃至一个茶杯的挪动都被如实的记录,一旦有突发事件可以快速的查阅进出记录和行为记录,确定问题所在,以便采取相应的处理措施。 近几年,涉密系统规模不断扩大,系统中使用的设备也逐渐增多,每种设备都带有自己的审计模块,另外还有专门针对某一种网络应用设计的审计系统,如:操作系统的审计、数据库审计系统、网络安全审计系统、应用程序审计系统等,但是都无法做到对计算机信息系统全面的安全审计,另外审计数据格式不统一、审计分析规则无法统一定制也给系统的全面综合审计造成了一定的困难。如果在当前的系统条件下希望全面掌握信息系统的运行情况,就需要对每种设备的审计模块熟练操作,并且结合多种专用审计产品才能够做到。 为了能够方便地对整个计算机信息系统进行审计,就需要设计综合的安全审计系统。它的目标是通过数据挖掘和数据仓库等技术,实现在不同网络环境中对网络设备、终端、数据资源等进行监控和管理,在必要时通过多种途径向管理员发出警告或自动采取排错措施,并且能够对历史审计数据进行分析、处理和追踪。主要作用有以下几个方面: 1. 对潜在的攻击者起到震慑和警告的作用; 2. 对于已经发生的系统破坏行为提供有效的追究证据; 3. 为系统管理员提供有价值的系统使用日志,从而帮助系统管理员及时发现系统入侵行为或潜在的系统漏洞; 4. 为系统管理员提供系统的统计日志,使系统管理员能够发现系统性能上的不足或需要改进和加强的地方。 三、涉密信息系统安全审计包括的内容 《中华人民共和国计算机信息系统安全保护条例》中定义的计算机信息系统,是指由计算机及其相关的和配套的设备、设施(含网络)构成的,按照一定的应用目标和规则对信息进行采集、加配碰型工、存储、传输、检索等处理的人机系统。涉密计算机信息系统(以下简称“涉密信息系统”)在《计算机信息系统保密管理暂行规定》中定义为:采集、存储、处理、传递、输出国家秘密信息的计算机信息系统。所以针对涉密信息系统的安全审计的内容就应该针对涉密信息系统的每一个方面,应该对计算机及其相关的和配套的设备、设施(含网络),以及对信息的采集、加工、存储、传输和检索等方面进行审计。 具体来说,应该对一个涉密信息系统中的以下内容进行安全审计: 被审计资源安全审计内容 网络通信系统网络流量中典型协议分析、识别、判断和记录,Telnet、HTTP、Email、FTP、网上聊天、文件共享等的检测,流量监测以及对异常流量的识别和报警、网络设备运行的监测等。 重要服务器主机操作系统系统启动、运行情况,管理员登录、操作情况,系统配置更改(如注册表、配置文件、用户系统等)以及病毒或蠕虫感染、资源消耗情况的审计,硬盘、CPU、内存、网络负载、进程、操作系统安全日志、系统内部事件、对重要文件的访问等。 重要服务器主机应用平台软件重要应用平台进程的运行、Web Server、Mail Server、Lotus、Exchange Server、中间件系统、健康状况(响应时间等)等。 重要数据库操作数据库进程运转情况、绕过应用软件直接操作数据库的违规访问行为、对数据库配置的更改、数据备份操作和其他维护管理操作、对重要数据的访问和更改、数据完整性等的审计。 重要应用系统办公自动化系统、公文流转和操作、网页完整性、相关业务系统(包括业务系统正常运转情况、用户开设/中止等重要操作、授权更改操作、数据提交/处理/访问/发布操作、业务流程等内容)等。 重要网络区域的客户机病毒感染情况、通过网络进行的文件共享操作、文件拷贝/打印操作、通过Modem擅自连接外网的情况、非业务异常软件的安装和运行等的审计 四、安全审计系统使用的关键技术 根据在涉密信息系统中要进行安全审计的内容,我们可以从技术上分为以下几个模块: 1.网络审计模块:主要负责网络通信系统的审计; 2.操作系统审计模块:主要负责对重要服务器主机操作系统的审计; 3.数据库审计模块:主要负责对重要数据库操作的审计; 4.主机审计模块:主要负责对网络重要区域的客户机进行审计; 5.应用审计模块:主要负责重要服务器主机的应用平台软件,以及重要应用系统进行审计。 还需要配备一个数据库系统,负责以上审计模块生成的审计数据的存储、检索、数据分析等操作,另外,还需要设计一个统一管理平台模块,负责接收各审计模块发送的审计数据,存入数据库,以及向审计模块发布审计规则。如下图所示: 安全审计系统中应解决如下的关键技术: 1.网络监听: 是安全审计的基础技术之一。它应用于网络审计模块,安装在网络通信系统的数据汇聚点,通过抓取网络数据包进行典型协议分析、识别、判断和记录,Telnet、HTTP、Email、FTP、网上聊天、文件共享等的检测,流量监测以及对异常流量的识别和报警、网络设备运行的监测等,另外也可以进行数据库网络操作的审计。 2.内核驱动技术: 是主机审计模块、操作系统审计模块的核心技术,它可以做到和操作系统的无缝连接,可以方便的对硬盘、CPU、内存、网络负载、进程、文件拷贝/打印操作、通过Modem擅自连接外网的情况、非业务异常软件的安装和运行等进行审计。 3.应用系统审计数据读取技术: 大多数的多用户操作系统(Windows、UNIX等)、正规的大型软件(数据库系统等)、多数安全设备(防火墙、防病毒软件等)都有自己的审计功能,日志通常用于检查用户的登录、分析故障、进行收费管理、统计流量、检查软件运行情况和调试软件,系统或设备的审计日志通常可以用作二次开发的基础,所以如何读取多种系统和设备的审计日志将是解决操作系统审计模块、数据库审计模块、应用审计模块的关键所在。 4.完善的审计数据分析技术: 审计数据的分析是一个安全审计系统成败的关键,分析技术应该能够根据安全策略对审计数据具备评判异常和违规的能力,分为实时分析和事后分析: 实时分析:提供或获取审计数据的设备和软件应该具备预分析能力,并能够进行第一道筛选; 事后分析:统一管理平台模块对记录在数据库中的审计记录进行事后分析,包括统计分析和数据挖掘。 五、安全审计系统应该注意的问题 安全审计系统的设计应该注意以下几个问题: 1.审计数据的安全: 在审计数据的获取、传输、存储过程中都应该注意安全问题,同样要保证审计信息的“五性”。在审计数据获取过程中应该防止审计数据的丢失,应该在获取后尽快传输到统一管理平台模块,经过滤后存入数据库,如果没有连接到管理平台模块,则应该在本地进行存储,待连接后再发送至管理平台模块,并且应该采取措施防止审计功能被绕过;在传输过程中应该防止审计数据被截获、篡改、丢失等,可以采用加密算法以及数字签名方式进行控制;在审计数据存储时应注意数据库的加密,防止数据库溢出,当数据库发生异常时,有相应的应急措施,而且应该在进行审计数据读取时加入身份鉴别机制,防止非授权的访问。 2.审计数据的获取 首先要把握和控制好数据的来源,比如来自网络的数据截取;来自系统、网络、防火墙、中间件等系统的日志;通过嵌入模块主动收集的系统内部信息;通过网络主动访问获取的信息;来自应用系统或安全系统的审计数据等。有数据源的要积极获取;没有数据源的要设法生成数据。对收集的审计数据性质也要分清哪些是已经经过分析和判断的数据,哪些是没有分析的原始数据,要做出不同的处理。 另外,应该设计公开统一的日志读取API,使应用系统或安全设备开发时,就可以将审计日志按照日志读取API的模式进行设计,方便日后的审计数据获取。 3.管理平台分级控制 由于涉密信息系统的迅速发展,系统规模也在不断扩大,所以在安全审计设计的初期就应该考虑分布式、跨网段,能够进行分级控制的问题。也就是说一个涉密信息系统中可能存在多个统一管理平台,各自管理一部分审计模块,管理平台之间是平行关系或上下级关系,平级之间不能互相管理,上级可以向下级发布审计规则,下级根据审计规则向上级汇报审计数据。这样能够根据网络规模及安全域的划分灵活的进行扩充和改变,也有利于整个安全审计系统的管理,减轻网络的通信负担。 4.易于升级维护 安全审计系统应该采用模块设计,这样有利于审计系统的升级和维护。 专家预测,安全审计系统在2003年是最热门的信息安全技术之一。国内很多信息安全厂家都在进行相关技术的研究,有的已经推出了成型的产品,另一方面,相关的安全审计标准也在紧锣密鼓的制定当中,看来一个安全审计的春天已经离我们越来越近了。 但是信息系统的安全从来都是一个相对的概念,只有相对的安全,而没有绝对的安全。安全也是一个动态发展的过程,随着网络技术的发展,安全审计还有很多值得关注的问题,如: 1. 网络带宽由现在的100兆会增加到1G,安全审计如何对千兆网络进行审计就是值得关注的问题; 2. 当前还没有一套为各信息安全厂商承认的安全审计接口标准,标准的制定与应用将会使安全审计跨上一个新的台阶; 3. 现在的安全审计都建立在TCP/IP协议之上,如果有系统不采用此协议,那么如何进行安全审计。 六、小结 安全审计作为一门新的信息安全技术,能够对整个计算机信息系统进行监控,如实记录系统内发生的任何事件,一个完善的安全审计系统可以根据一定的安全策略记录和分析历史操作事件及数据,有效的记录攻击事件的发生,提供有效改进系统性能和的安全性能的依据。本文从安全审计的概念、在涉密信息系统中需要审计的内容、安全审计的关键技术及安全审计系统应该注意的问题等几个方面讨论了安全审计在涉密信息系统中的应用。安全审计系统应该全面地对整个涉密信息系统中的网络、主机、应用程序、数据库及安全设备等进行审计,同时支持分布式跨网段审计,集中统一管理,可对审计数据进行综合的统计与分析,从而可以更有效的防御外部的入侵和内部的非法违规操作,最终起到保护机密信息和资源的作用。
3. 数据库与数据仓库的本质差别是什么
数据库与数据仓库的本质差别如下:
1、逻辑层面/概念层面:数据库和数据仓库其实是一样的或者及其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。但是,数据库通常更关注业务交易处理(OLTP),而数据仓库更关注数据分析层面(OLAP),由此产生的数据库模型上也会有很大的差异。
2、数据库通常追求交易的速度,交易完整性,数据的一致性等,在数据库模型上主要遵从范式模型(1NF,2NF,3NF等),从而尽可能减少数据冗余,保证引用完整性;而数据仓库强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以在数据库模型上,数据仓库喜欢使用多维模型,从而提高数据分析的效率。
3、产品实现层面:数据库和数据仓库软件是有些不同的,数据库通常使用行式存储,如SAP ASE,Oracle, Microsoft sql Server,而数据仓库倾向使用列式存储,如SAP IQ,SAP HANA。
4. 数据仓库的用途
信息技术与如衡数据智能大环境下,数据仓库在软硬件领域、Internet 和企业内部网解决方案以及数据库方高族面提供了许多经济高效的计算资源,可以保存极大量的数据供分析使用,且允许使用多种数据访问技术。
开放系统技术使得分析大量数据的成本趋于合理,并且硬件解决方案也更为成熟。在数据仓库应用中主要使用的技术如下:
并行
计算的硬件环境、操作系统环境、 数据库管理系统和所有相关的数据库操作、查询工具和技术、应用程序等各个领域都可以从并行的最新成就中获益。
分区
分区功能使得支渣念做持大型表和索引更容易,同时也提高了数据管理和查询性能。
数据压缩
数据压缩功能降低了数据仓库环境中通常需要的用于存储大量数据的磁盘系统的成本,新的数据压缩技术也已经消除了压缩数据对查询性能造成的负面影响。
5. 数据仓库之数据粒度
确定数据仓库中数据的恰当粒度是数据仓库开发者需要面对的一个最重要的设计问题。数据粒度主要针对指标数据的计算范围,如人口这个数据项在统计部门是以街区范围还是一个社区为范围统计的。人口数据细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。粒度是数据仓库主要设计问题,因为它极大地影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。在设计数据仓库的时候权衡数据量大小和查询类型得出合理的粒度大小。下面我们通过规划设计和建设两个阶段来讲解数据仓库粒度的确定。
1.规划阶段
“规划”——对未来整体性、长期性、基本型问题的思考和考量,设计未来整套行动的方案。在规划阶段过程中首先粗略估算数据量,估算的目的是掌握数据仓库中数据量的一个范围。第二步预测未来数据集市中应用需要的粒度,数据仓库存储数据集市使用的最小粒度。
1.1. 建立良好的循环反馈机制是很重要的。
首先就要建立完善的循环反馈机制。数据仓库是面对模糊需求开始建立的,粒度不可能一次就能规划好,先导入少量数据,建立一部分应用提交给用户使用,并聆听用户使用意见,根据用户的使用意见调整粒度的大慧好小。
1.2. 对存储数据进行粗略估算对设计体系结构的人员来说非常有用。
粗略估算数据仓库的乱碧橘数据量,可跟好的规划数据仓库架构。如果数据只有10 000行,那么数据仓库采用粒度级越小的数据存储,数据仓库中存储所有明细数据。如果明细数据有10 000 000行,进入数据仓库的数据就需要进行初步汇总。如果有100亿行,数据仓库不但需要有一个高粒度级,还可能将大部分数据移到溢出存储器上去。
估算方法如下:
1.3. 预测数据集市中可能使用的数据粒度是很必要的。
为了合适地填充所有的数据集市,数据仓库中的数据必须在一个所有数据集市所需要的最低粒度水平上。
规划阶段的成果是数据仓库建设的重要依据内容。规划阶段对组织架构,数据量大小和后期应用的摸底,可以制定方案,并对可能的结果有预先的认知,对可能存在的问题设计上进行避免。
2. 建设阶段
2.1.根据估算的空间结果,在体系架构设计上可以根据数据量大小进行存储设备选择。需要多少直接存取存储设备,是否需采用双重粒度设计。
2.2.设计溢出数据的管理。溢出数据是指数据仓库将不经常被访问的过时的数据转移到存储量更大的访问速度慢的存储器上的数据。管理溢出数据可以方便索引定位历史数据并可以快速取出该数据。
跨介质存储管理器和数据活动监控器可以对溢出数据进行有效的管理。磁盘存储器和大容量低速存储器之间的数据移动是通过一种称为“跨介质存储管理器(CMSM)”的软件来控制的。数据活动监控器,用来确定哪些数据正在被访问,哪些没被访问。数据活动监控器能提供数据存储的位置信息。
2.3.实施数据仓库过程中粒度的确定是一个往复循环的过程。利用规划阶段建立的反馈循环方法,不断的从分析员获得反馈,不断的优化数据仓库。
从图可以看出成功建立数据仓库离不开分析人员的通力协作。建设者要不断的聆听分析员的意见。分析人员在建立数据仓库的时候并不知道自己需要什么,只有在他们看到最终分析结果,才能告诉数据仓库工作人员什么才是他们真正有用的。为了有效的获得反馈,以下几点技巧可供参考:
快速建立数据仓库很小的子集并认真听取用户的反馈意见;
使用原型方法;
参考别人的经验;
与有经验的用户协同工作;
以企业中已有的功能需要作参考;
定期举行数据仓库建设例会。
3.例举银行粒度小例子
3.1.银行环境中粒度哗团级别,下图是银行中的数据粒度例子。
银行的操作层存放的是以日为单位粒度的数据。银行的各个业务系统只存放最近60天交易活动明细内容,方便用户查询最近两个月的交易信息详情,这段时间用户对交易数据明细最为关心。
数据仓库层将数据汇聚成以月为单位粒度的汇总数据。银行将过去长达十年的数据按每个账户每月交易信息进行汇聚,存储在直接存储设备,供高速查询访问,用户对过去很久的交易明细并不在意,但是用户需要快速查询得出结果,此时提供以月为单位的汇总数据可以满足用户的需求。
所有的历史数据以日为单位存放在溢出存储区,该区域数据量极大,访问频率极低。一般银行不受理长达十年的历史明细数据查询的请求,如果一些特殊情况需要查询超过十年的历史数据,查询时间会相当缓慢。
4.小结
数据仓库粒度的确定是一个困难的过程,要求一个合适的级别,既不能太高也不能太低。
选择粒度级别很大程度上基于常识。建设之前作好适当的规划,估算数据量并建立相应的反馈制度。在实施的过程中,首先建立数据仓库的一小部分,并让分析人员使用。然后聆听他们的意见,根据他们的反馈对粒度级别进行适当的调整。
6. 什么是数据仓库,数据仓库如何分层
数据仓库分层的原因
1通过数据预处理提高效率,因为预处理,所以会存在冗余数据
2如果不分层而业务系统的业务规则发生变化,就会影响整个数据清洗过程,工作量巨大
3通过分层管理来实现分步完成工作,这样每一层的处理逻辑就简单了
标准的数据仓库分层:ods(临时存储层),pdw(数据仓库层),mid(数据集市层),app(应用层)
ods:历史存储层,它和源系统数据是同构的,而且这一层数据粒度是最细的,这层的表分为两种,一种是存储当前需要加载的数据,一种是用于存储处理完后的数据。
pdw:数据仓库层,它的数据是干净的数据,是一致的准确的,也就是清洗后的数据,它的数据一般都遵循数据库第三范式,数据粒度和ods的粒度相同,它会保存bi系统中所有历史数据
mid:数据集市层,它是面向主题组织数据的,通常是星状和雪花状数据,从数据粒度将,它是轻度汇总级别的数据,已经不存在明细的数据了,从广度来说,它包含了所有业务数量。从分析角度讲,大概就是近几年
app:应用层,数据粒度高度汇总,倒不一定涵盖所有业务数据,只是mid层数据的一个子集。
数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持。数据仓库的context也可以理解为:数据源,数据仓库,数据应用
数据仓库可以理解为中间集成化数据管理的一个平台
etl(抽取extra,转化transfer,装载load)是数据仓库的流水线,也可以认为是数据仓库的血液。
数据仓库的存储并不需要存储所有原始数据,因为比如你存储冗长的文本数据完全没必要,但需要存储细节数据,因为需求是多变的,而且数据仓库是导入数据必须经过整理和转换使它面向主题,因为前台数据库的数据是基于oltp操作组织优化的,这些可能不适合做分析,面向主题的组织形式才有利于分析。
多维数据模型就是说可以多维度交叉查询和细分,应用一般都是基于联机分析处理(online analytical process OLAP),面向特定需求群体的数据集市会基于多位数据模型构建
而报表展示就是将聚合数据和多维分析数据展示到报表,提供简单和直观的数据。
元数据,也叫解释性数据,或者数据字典,会记录数据仓库中模型的定义,各层级之间的映射关系,监控数据仓库的数据状态和etl的任务运行状态。一般通过元数据资料库来统一存储和管理元数据。
7. 什么是数据仓库,数据仓库在哪里保存数据。BI项目需要用到哪些技术
一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。先大概列一下互联网行业数据仓库、数据平台的用途:
整合公司所有业务数据,建立统一的数据中心;
提供各种报表,有给高层的,有给各个业务的;
为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;
为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;
分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;
开发数据产品,直接或间接为公司盈利;
建设开放数据平台,开放公司数据;
。。。。。。
上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;
其实,互联网行业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;
建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。
整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:
逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。
我们从下往上看:
数据采集数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。
数据源的种类比较多:
网站日志:
作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,
一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;
业务数据库:
业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapRece来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。
当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。
来自于Ftp/Http的数据源:
有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;
其他数据源:
比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;
数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。
离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapRece要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;
当然,使用Hadoop框架自然而然也提供了MapRece接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapRece来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapRece要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》
实时计算部分,后面单独说。
数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;
前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据;和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。
另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。
数据应用
业务产品
业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;
报表
同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;
即席查询
即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;
这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。
即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。
当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。
OLAP
目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;
这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;
比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。
其它数据接口
这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。
实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。
我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。
做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。
任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;
这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始;这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。
前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。
总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。
8. 检测到缓存溢出是何意思
一些Sasser代码(可以说是插件或木马之类)穿过未打补丁的防火墙,到达没有防护的服务器。当代码进入没有防护服务器的内存时,它马上执行缓存器溢出,将服务器系统级的控制权交给了远端的主机,实现在企业网内的远程控制。
卡巴六正是针对Web浏览器或者其他最终用户网络应用的的漏洞防御,并可以检测和防止受保护计算机上运行的任何应用遭受缓存溢出攻击,防治计算机收到伤害,你拒绝的时候没有“以后都这样操作”的提示吗?如果没有,建议不要浏览该网页了!
温馨提醒:上网的时候最好不要用IE上网,因为80%病毒都是针对IE的(也就是WINDOW),如果使用第三方面的浏览器,将会大大降低中毒的几率!
9. 典型的数据仓库系统包括哪几部分
1.数据源-> 2.ETL -> 3.数据仓库存储与管理-> 4.OLAP -> 5.BI工具
**数据源:**是数据仓库系统的数据源泉,通常包括企业各类信息,包括存放于RDBMS中的各种业务处理数据和各类文档数据;各类法律法规、市场信息和竞争对手的信息等判世等;
ETL工具(informatica,ssis,owb,datastage),以及该工具简单讲述特点。
DataStage是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据仓库目标数据库的集成工具。
它有四个组件:Administrator:用来管理project和环境变量。Manager:用于job表定义的引导引出。Designer:用来设计job。Direct:用运查看job运行日志。
数据的存储与管理:数据的存储和管理是整个数据仓库的核心,是关键。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。从数据仓库的技术特点着手分析,来决定采用什么产品和技术来建立数据仓库,然后针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。
OLAP服务器:
对需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层辩耐次的分析,并发现趋势。其具体实现可以分为:ROLAP(关系型在线分析处理)、MOLAP(多维在线分析处理)和HOLAP(混合型线上分析处理)。ROLAP基本数据和聚合数据均存放在RDBMS之中;MOLAP基本数据和聚合数据均存放于多维数据库中;HOLAP基本数据存放于RDBMS之中,聚合数据存放于多维数据库中。
前端工具:主要包括各查询工具、数据分析工具、数据挖掘工具、种报表工具以及各种携冲春基于数据仓库或数据集市的应用开发工具。
数据分析工具主要针对OLAP服务器。报表工具、数据挖掘工具主要针对数据仓库。
10. 关于优化Oracle存储过程的问题
你好:
您的程序我也看了。
先这么入手吧:
您的程序是包含在一个循环语句中,可否把循环语句的cursor单独拉出来,查一下执行计划:
selectdistinctv.procinstid_,v.value_,r.purc_report_id,r.purc_pro_id,r.purc_pro_name,t.team_name,r.purc_type,r.requi_form,r.build_name
fromcg_purchase_reportr,cg_bid_teamt,jbpm4_hist_varv
wherer.bid_team=t.bid_team_id
andr.purc_report_id=v.value_
andv.varname_='pkId'
andv.procinstid_like'requirementsReport%'
andr.purc_report_state=3;
一般来说对程序效率造成最大的问题的就是cursor,当然也包括了对INDEX列的DML。那我们先一步步来。您先查一下,给个截图。或者简单描述下您查到的执行计划的结果。
-------------------------------------------------------------------------------------------------------------------------
另外, 指出一下(或者说探讨一下)楼上wwtburning所提出的时间上用to_number, to_date的问题。 这个问题本身确实可能会造成效率下降, 但是不是由于使用了转换, 您的代码中全部都是 select __________ from al, 没有用在 where句中, 就不可能通过index而造成影响。所以这个方向不需要考虑了。
------------------------------------------------------------------------------------------------------------------------
提2个问题:
您的cursor查询结果是2000, 但是您的from 后面跟的几个表的数据集是多大?如果可能, 可否给您的几个表的索引一个截图。目的是如果是driving cursor的效率不高, 那么需要提升这个cursor的效率, 需要看下他的索引是怎么写的, 顺便也可以了解一下有多少个索引。
您的这个过程中有少许几个update语句,通过您的程序的命名法看出很多数据是为了商业报表而准备的。 这个您要更新的语句是staging table吗,或者是数据仓库吗? 索引是怎样的? 问这个问题是因为, 为报表而准备的数据在设计过程中为的是用报表的人可以读的快,也就是说select尽量快, 因此, 如果我们第一步检查cursor走不通, 就可能要考虑是否是您这个目标表的效率问题。