公众交流平台
1 介绍
数据仓库是面向主题的、集成的、与时间相关的、不可修改的数据集合。数据仓库技术是基于信息系统业务发展的需要,基于数据库系统技术发展而来,并逐步独立的一系列新的应用技术。数据仓库系统可以看作是基于数学及统计学严谨逻辑思维的并达成“科学的判断、有效的行为”的一个工具,也是一种达成“数据整合、知识管理”的有效手段。随着数据仓库技术应用的不断深入,越来越多的企业开始使用数据仓库技术建设自己的数据仓库系统,希望能对历史数据进行具体而又有针对性的分析与挖掘,以期从中发现新客户和客户新的需求。
目前主要的数据仓库产品供应商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收购)等。Oracle公司的数据仓库解决方案包含了业界领先的数据库平台、开发工具和应用系统,能够提供一系列的数据仓库工具集和服务,具有多用户数据仓库管理能力,多种分区方式,较强的与OLAP工具的交互能力,及快速和便捷的数据移动机制等特性;IBM公司的数据仓库产品称为DB2 Data Warehouse Edition,它结合了DB2数据服务器的长处和IBM的商业智能基础设施,集成了用于仓库管理、数据转换、数据挖掘以及OLAP分析和报告的核心组件,提供了一套基于可视数据仓库的商业智能解决方案;微软的SQL Server提供了三大服务和一个工具来实现数据仓库系统的整合,为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能,可以实现建模、ETL、建立查询分析或图表、定制KPI、建立报表和构造数据挖掘应用及发布等功能;SAS公司的数据仓库解决方案是一个由30多个专用模块构成的架构体系,适应于对企业级的数据进行重新整合,支持多维、快速查询,提供服务于OLAP *** 作和决策支持的数据采集、管理、处理和展现功能;Teradata公司提出了可扩展数据仓库基本架构,包括数据装载、数据管理和信息访问几个部分,是高端数据仓库市场最有力竞争者,主要运行在基于Unix *** 作系统平台的NCR硬件设备上;Sybase提供了称为Warehouse Studio的一整套覆盖整个数据仓库建立周期的产品包,包括数据仓库的建模、数据集成和转换、数据存储和管理、元数据管理和数据可视化分析等产品;Business Objects是集查询、报表和OLAP技术为一身的智能决策支持系统,具有较好的查询和报表功能,提供多维分析技术,支持多种数据库,同时它还支持基于Web浏览器的查询、报表和分析决策。
根据IDC发布的2006年数据仓库市场分析报告,上述公司占据了全球近90%的市场份额,提供的数据仓库产品的功能特性已经成为市场的主流。这些公司在推出各自的数据仓库产品的同时也提供了相应的数据仓库解决方案。本文后续内容将针对这些数据仓库产品和解决方案的主要支撑技术进行比较,并结合IDC和ChinaBI相关报告给出相应的市场情况分析。
2 支撑技术
在数据仓库系列技术中,主要的支撑技术包括数据库技术、ETL技术、OLAP技术、报表技术、数据挖掘技术。
21 数据库技术
数据库技术是支撑数据仓库技术的基础技术。尽管在数据仓库技术存储模型方面,基于数据库技术而发展的关系模式的理念已经被颠覆,取而代之是各种各样的数据仓库数据模型,如星型模型,雪花模型等。然而,在已有的数据仓库实践中,关系数据库仍然是实质的数据库存储工具,只是将数据库表改称为了事实表和维表,将属性域之间的关系重新定义为维度,量度,层次,粒度等。
成熟的数据仓库后台数据库包括Oracle、DB2、SQL Server、Teradata和Sybase IQ。在查询效率方面,Sybase IQ由于采用了列存储技术,查询效率比较高;在兼容性方面,Teradata从软件到硬件都必须是专用的,因而兼容性最差;在管理平台和海量数据管理方面,Oracle、DB2和SQL Server都提供了一系列完整的工具,相对于其它产品有着明显的优势;在磁盘空间利用方面,Sybase IQ的压缩比是所有数据库中最好的,而Teradata最为浪费。
另外,SAS公司和BO公司也拥有自己的数据管理能力,但对于大型数据仓库的数据管理,仍然需要使用上述数据库产品,SAS和BO都提供了与这些数据库进行连接的专门接口。
22 ETL技术
数据仓库系统是集成的、与时间相关的数据集合,ETL作为数据仓库的核心,负责将分布的、异构数据源中的数据进行抽取、清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。ETL能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。要实现数据仓库中数据的自动更新运转,ETL技术是必不可少的关键技术之一。
主流数据仓库产品供应商都拥有各自的ETL能力。IBM的ETL工具称为IBM WebSphere DataStage,它为整个ETL过程提供了一个图形化的开发环境,支持对多种 *** 作数据源的数据抽取、转换和维护,并将其输入数据集或数据仓库;Teradata的ETL工具称为ETL Automation,它利用Teradata数据库本身的并行处理能力,通过SQL语句实现数据的转换,提供对ETL流程的支持,包括前后依赖、执行和监控等;SAS的ETL工具称为ETL Studio,提供管理ETL流程和建立数据仓库、数据集市和OLAP结构的单控制点。其他几家公司则将其工具融合在大的数据仓库组件中,如Oracle的Oracle Warehouse Builder (OWB)、SQL Server的Integration Services、Sybase的Data Integration Suite、BO的可扩展数据整合平台Data Integrator。
上述各公司提供的ETL相关工具功能相近,在易用性、效率、价格等方面各有千秋,但就工具的二次开发、集成和开放性而言,与专业的数据集成平台,如Informatica公司的PowerCenter,相比还是存在一定的差距。
23 OLAP技术
联机分析处理(OLAP)是针对特定问题的联机数据访问和分析,通过对信息进行快速、稳定、一致和交互式的存取,对数据进行多层次、多阶段的分析处理,以获得高度归纳的分析结果。联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求,由此出现了多维数据库和多维分析的概念。
目前主流的OLAP产品有Oracle Express/Discoverer、SQL Server Analysis Services、DB2 OLAP Server、SAS OLAP Server等,这些产品都可以生成多维数据立方体,提供多维数据的快速分析,支持所有主流关系型数据库如DB2,Oracle,SQL Server,Sybase等,同时可读取关系数据库中细节数据,实现混合在线分析(HOLAP)或关系型在线分析(ROLAP)。并且,各厂商的OLAP Sever对自己的数据库产品的支持均好于其它数据库,各自的分析工具也都基于开放的OLE DB标准,可以访问支持OLE DB标准的数据立方体。
BO公司和Sybase公司则分别提供了各自的OLAP分析工具OLAP Intelligence和Power Dimension,支持标准OLAP API,如OLEDB for OLAP,能够对Microsoft、IBM等OLAP数据进行划分、钻取等处理,兼容第三方报表和展现工具。Teradata尽管不提供独立的OLAP工具,但提供了相关技术,用于提升运行于Teradata数据库上的OLAP应用系统的性能。
24 报表技术
报表技术主要是将集成在数据模型里的数据,按照复杂的格式、指定行列统计项,计算形成的特殊表格。一般的简单报表可以使用通用的前台展现技术实现,而复杂的报表则需要使用特定的报表技术。主流的报表技术都可以灵活的制定各种报表模版库和指标库,并根据每个区块或单元格的需要引用指标,实现一系列复杂的符合要求的报表的自动生成。
主流数据仓库厂商的报表工具中较为有影响包括IBM的Cognos ReportNet、BO的Crystal Reports、Oracle的Oracle Reports。IBM通过收购Cognos公司获得了完整的报表产品Cognos ReportNet,覆盖了各种报表需求,包括管理报表、商业报表、账单和发票等;BO公司提供了一个完整的企业报表解决方案Crystal Reports Server,支持通过Web快速便捷的创建、管理和交付报表;Oracle Reports工具提供了自由的数据格式方式,可以自动生成个性化字母或矩阵风格的布局,包括动态、数据驱动的图表;SQL Server的报表功能包含在Reporting Services (SSRS)中,包括处理组件、一整套可用于创建和管理报表的工具、在自定义应用程序中集成和扩展数据和报表处理的API。与上述产品相比,Sybase的InfoMaker、Teradata的BTEQ和SAS的Report Studio等报表产品在功能、性能、二次开发等方面都还存在着一定的差距。
总的来说,这些产品在大部分通用软件领域相对国产软件都要优秀,但在有中国特色的报表领域内却是例外,在处理能力存在一定的不适应性。另外这些产品的数学模型都是基于SQL/OLAP理论设计的,在技术上也不能满足国内复杂报表的制作需求。
25 数据挖掘技术
当数据积累到一定数量时,某些潜在联系、分类、推导结果和待发现价值隐藏在其中,可以使用数据发掘工具帮助发现这些有价值的数据。数据挖掘就是从海量数据中,提取隐含在其中的、人们事先不知道的但又可能有用的信息和知识的过程。通过数据挖掘能找出数据库中隐藏的信息,实现用模型来拟合数据、探索型数据分析,数据驱动型的发现,演绎型学习等功能。
目前,IBM公司的IBM Intelligent Miner支持典型数据集自动生成、关联发现、序列规律发现、概念性分类和可视化呈现,可以自动实现数据选择、数据转换、数据发掘和结果呈现这一整套数据发掘 *** 作;Oracle公司提供的数据挖掘平台称为Oracle Data Miner,它提供了的一个图形用户界面,通过简单易用的向导来指导完成数据准备、数据挖掘、模型评估和模型评价过程,根据需要自动生成将数据挖掘步骤转换成一个集成的数据挖掘/BI应用程序所需的代码;SAS公司的SAS Enterprise Miner将数据挖掘过程简单流程化,支持关联、聚类、决策树、神经元网络和经典的统计回归技术;Teradata公司的挖掘工具称为Teradata Warehouse Miner,它通过将数据挖掘技术整合到数据仓库来简化数据挖掘流程,该工具还可实现将多家厂商的数据挖掘技术嵌入Teradata企业级数据仓库环境中运行;Microsoft数据挖掘平台不同于传统数据挖掘应用程序,它支持组织中数据的整个开发生命周期,允许第三方添加自定义算法以支持特定的挖掘需求,支持实时根据挖掘的数据集进行数据验证。对比于上述公司,Sybase和BO公司并没有推出专门的数据挖掘平台或工具。
和前几项支撑技术相比,数据挖掘技术的专业性更强,与应用领域的特殊背景结合得更加紧密。上述产品除了在性能、通用性、数据展示、二次开发上有一定差异外,没有一个能够占据绝对技术和市场优势,反而是一些专门领域内的专业挖掘工具更具竞争性,如Fair Isaac公司占据了全球xyk积分市场近7成的份额。
3 市场分析
国际权威市场分析机构IDC将数据仓库平台工具市场细分为数据仓库生成(Data Warehouse Generation)工具市场和数据仓库管理(Data Warehouse Management)工具市场两个部分,前者涵盖数据仓库的设计和ETL过程的各种工具,后者指数据仓库后台数据库的管理工具,如DBMS。根据IDC发布的《全球数据仓库平台工具2006年度供应商市场份额》分析报告,2006年该市场增长率为125%,规模达到57亿美元,其中数据仓库生成工具和数据仓库管理工具两个市场的比重分别为233%和767%,相对于数据仓库管理工具市场,数据仓库生成工具市场的增长进一步放缓。可以预见,整个数据仓库市场将进一步向拥有强大后台数据库系统的传统厂商倾斜。从供应商看,Oracle公司继续占据数据仓库管理领域的领先供应商地位,并且与其主要竞争者IBM之间的这种领先优势正逐渐扩大。Microsoft紧追IBM之后,与其之间的差距则在逐渐缩小。
在国内,商业智能已经成为企业信息化中最重要的组成部分,而数据仓库相关技术在其中扮演着无可替代的重要角色。据ChinaBI统计,2007年中国大陆地区的BI市场份额约为20亿元人民币,同比2006年增长35%,其中BI产品许可证约为9亿元人民币,BI系统集成约为11亿元人民币。现有BI厂商包括产品提供商、集成商、分销商、服务商等有近500家,在未来几年内商业智能市场需求旺盛,市场规模增长迅速。从国内数据仓库实践看,根据ChinaBI评选的2007年中国十大数据仓库的初步结果,传统数据库厂商占据7个,分别是IBM 3个、Oracle 3个、SQL Server 1个,其余3个属于NCR/Teradata公司;从数据仓库规模来看,传统数据库厂商更占有巨大优势,总数据量为5363T,Teradata则为54T。涉及的行业包括通信、邮政、税务、证券和保险等。
在数据仓库市场快速发展的同时,市场竞争也日趋激烈,其中尤其以Oracle收购Hyperion、SAP收购BO、IBM收购Cognos具有代表意义。截至2007年底,混乱的市场已经基本明朗化,三个层次逐渐浮现出来。Oracle,IBM,Microsoft和SAP位居第一层次,能够提供全面的解决方案;第二层次是NCR Teradata和SAS等产品相对独立的供应商,可以提供解决方案中的部分应用;第三层次是只专注于单一领域的专业厂商,但其在并购的硝烟中日趋难以存活。
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。
1、原理
一般来说,Java应用程序访问数据库的过程是 :
①装载数据库驱动程序;
②通过jdbc建立数据库连接;
③访问数据库,执行sql语句;
④断开数据库连接。
2、代码
3、分析
程序开发过程中,存在很多问题:首先,每一次web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费005s~1s的时间,而且系统还要分配内存资源。这个时间对于一次或几次数据库 *** 作,或许感觉不出系统有多大的开销。可是对于现在的web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。在这种情况下,频繁的进行数据库连接 *** 作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。不是危言耸听,这就是制约某些电子商务网站发展的技术瓶颈问题。其次,对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。
上述的用户查询案例,如果同时有1000人访问,就会不断的有数据库连接、断开 *** 作:
通过上面的分析,我们可以看出来,“数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。就避免了一次建立数据库连接和断开的 *** 作时间消耗。原理如下:
由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池(resource pool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。
我们自己尝试开发一个连接池,来为上面的查询业务提供数据库连接服务:
① 编写class 实现DataSource 接口
② 在class构造器一次性创建10个连接,将连接保存LinkedList中
③ 实现getConnection 从 LinkedList中返回一个连接
④ 提供将连接放回连接池中方法
1、连接池代码
2、使用连接池重构我们的用户查询函数
这就是数据库连接池的原理,它大大提供了数据库连接的利用率,减小了内存吞吐的开销。我们在开发过程中,就不需要再关心数据库连接的问题,自然有数据库连接池帮助我们处理,这回放心了吧。但连接池需要考虑的问题不仅仅如此,下面我们就看看还有哪些问题需要考虑。
1、并发问题
为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如:
2、多数据库服务器和多用户
对于大型的企业级应用,常常需要同时连接不同的数据库(如连接oracle和sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。
对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。
3、事务处理
我们知道,事务具有原子性,此时要求对数据库的 *** 作符合“all-all-nothing”原则即对于一组sql语句要么全做,要么全不做。
在java语言中,connection类本身提供了对事务的支持,可以通过设置connection的autocommit属性为false 然后显式的调用commit或rollback方法来实现。但要高效的进行connection复用,就必须提供相应的事务支持机制。可采用每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。
4、连接池的分配与释放
连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。
对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxconn)如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间超过预定时间timeout 则返回空值(null)。系统对已经分配出去正在使用的连接只做计数,当使用完后再返还给空闲池。对于空闲连接的状态,可开辟专门的线程定时检测,这样会花费一定的系统开销,但可以保证较快的响应速度。也可采取不开辟专门线程,只是在分配前检测的方法。
5、连接池的配置与维护
连接池中到底应该放置多少连接,才能使系统的性能最佳?系统可采取设置最小连接数(minconn)和最大连接数(maxconn)来控制连接池中的连接。最小连接数是系统启动时连接池所创建的连接数。如果创建过多,则系统启动就慢,但创建后系统的响应速度会很快;如果创建过少,则系统启动的很快,响应起来却慢。这样,可以在开发时,设置较小的最小连接数,开发起来会快,而在系统实际使用时设置较大的,因为这样对访问客户来说速度会快些。最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。
如何确保连接池中的最小连接数呢?有动态和静态两种策略。动态即每隔一定时间就对连接池进行检测,如果发现连接数量小于最小连接数,则补充相应数量的新连接以保证连接池的正常运转。静态是发现空闲连接不够时再去检查。
理解了连接池的原理就可以了,没有必要什么都从头写一遍,那样会花费很多时间,并且性能及稳定性也不一定满足要求。事实上,已经存在很多流行的性能优良的第三方数据库连接池jar包供我们使用。如:
其中c3p0已经很久没有更新了。DBCP更新速度很慢,基本处于不活跃状态,而Druid和HikariCP处于活跃状态的更新中。
PB105用ODBC连接SQL anywhere
首先检查ODBC是否存在,ODBC可以不用设置 用户名和密码
可以在PB里面设置,这样下次打开就ok
特别是远程数据库ODBC的话,TCP/IP里面地址和端口要正确
cp852是东欧字符集,你用cp852来存储汉字的话,
也只能什么格式存进去再用什么格式取出来。
试试:URL="jdbc:sybase:Tds:127001:2638/cccharset=cp936
如果不行的话,建议修改asa的字符集。
数据库URL就是数据库的地址,也就是自己的数据文件的目录地址。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等 *** 作。
统一资源定位符(英语:Uniform Resource Locator,缩写:URL;或称统一资源定位器、定位地址、URL地址,俗称网页地址或简称网址)是因特网上标准的资源的地址,如同在网络上的门牌。
统一资源定位符不但被用作网页地址,JDBC 客户端也使用统一资源定位符连接其数据库服务器。作为对比,ODBC 的连接字符串作用相同,但并不采用 URL 格式,而是分号和等号分隔的键值对。
以下是一个 Oracle 数据库的统一资源定位符:
jdbc:datadirect:oracle://myserver:1521;sid=testdb
扩展资料
数据库共有3种类型,为关系数据库、非关系型数据库和键值数据库。
1、关系数据库
MySQL、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Percona Server(MySQL的代替品·)、PostgreSQL、Microsoft Access、Microsoft SQL Server、Google Fusion Tables、FileMaker、Oracle数据库、Sybase、dBASE、Clipper、FoxPro、foshub。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
2、非关系型数据库(NoSQL)
BigTable(Google)、Cassandra、MongoDB、CouchDB。
3、键值(key-value)数据库
Apache Cassandra(为Facebook所使用):高度可扩展、Dynamo、LevelDB(Google)。
以上就是关于数据仓库与数据挖掘问题全部的内容,包括:数据仓库与数据挖掘问题、搞软件开发,请你来谈谈数据库连接池的原理吧、powerbuilder sql=08001 [sybase] [odbc driver][SQL anywhere] 未找到数据库服务器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)