数据仓库
企业建立数据仓库存储/归档所有历史数据,以及他们认为需要放在数据库中的数据,通常,非规范化的数据进入数据仓库,多维度为OLAP和商业智能(BI)解决方案提供快速检索。
数据仓库也用于新的或增强的业务战略回溯测试,此外,数据仓库中的数据是呈指数增长而非线性增长的。
基于列的关系数据库优势
基于列的关系数据库具有很大的优势,因为它天生就是多维的,每一列都是自我索引的(B tree)。
典型的基于列的数据库有Google的Big Table,Sybase IQ,Vertica和基于MySQL构建的KickFire。
平均而言,这些基于列的数据库比传统的基于行的关系数据库(如Oracle,SQL Server,Sybase ASE,TeraData,DB2和MySQL)在数据检索速度上要快60到100倍,但在基于行级进行数据更新时它们的速度较慢,到目前为止,Sybase IQ似乎是这一领域的领头羊,号称世界上最大的数据仓库(超过1P字节)就是用的Sybase IQ。
请访问这些数据库的网站了解更详细的信息:
• http://www.kickfire.com/Solutions/Resource-Center
• http://www.sybase.com/products/datawarehousing/sybaseiq
更多有关基于列的关系数据库信息
用Oracle和SQL Server作数据仓库时都需要建立多维数据立方体,需要的存储空间也会更多,我个人认为,用基于行的关系数据库作的数据仓库将会很快被基于列的数据仓库取代。
总体而言,基于行的关系数据(SQL Server,Oracle,Informix,DB2/UDB,MySQL,Sybase ASE等)适合OLTP应用,而基于列的关系数据库(Sybase IQ,KickFire,Vertica等)更适合OLAP/DSS和数据仓库应用。
注意:那些时间序列数据库如OneTick,kdb+和Vhayu都不能算是关系数据库,它们的存储结构是基于文件的,每一列的数据都使用一个单独的文件存储,基本上算是基于列的数据库,基于列的数据库也可用于回溯测试。此外,基于行的数据仓库(立方体)中的数据是呈指数级增长,但基于列的数据仓库中的数据是呈线性增长的。
传统上,Oracle在数据仓库领域处于领先的优势,但现在在基于列的关系数据库(如Sybase IQ,Vertica和KickFire)面前已经失去优势,Google正在使用的Big Table也是一种基于列的数据库/存储系统。
迁移思考
承受能力和现有数据库上已有的投资是另一个需要考虑的事情。
我见过不少从Sybase迁移到SQL Server的成功案例,反之亦然,但还很少看到从Sybase/SQL Server迁移到Oracle的,反之亦然。
根据数据库的规模和应用范围,要迁移Sybase/SQL Server存储过程,重写应用程序并进行测试可能需要很长一段时间,即使有Oracle迁移工作台的帮助(现在我们可以使用SQL Developer),每个存储过程都得重写,如果应用程序只使用了ODBC/JDBC/ADO.NET,并且无存储过程/临时表,那么迁移会比较容易。
原生支持的编程语言
前面已经说过,Oracle对Java的支持是最好的,我们可以在Oracle中存储Java代码,并将其作为原生Oracle功能使用,这使得Oracle的扩展性非常好(有点象开放源码),此外,Sybase也原生支持Java代码。SQL Server和Sybase支持扩展存储过程,基本上是指数据库中调用外部动态库的一个接口,它可以用不同的编程语言实现。
拥有成本
当我们在研究这些数据库的功能时,有一点必须要记住,那就是成本和时间范围,即使你有一个经验丰富的数据库团队,如果所选数据库平台超过了3个也就没有什么意义了,此外,将所有数据库合并到一个数据库平台也没有太大意义,因为大部分异构数据库都可以通过SQL Server的链接服务,Oracle网关,或使用一些数据库复制和ETL工具代替。当你在考虑数据库的维护成本时,不要孤立数据库成本,相反,要将其作为你的应用程序和基础设施的一部分看待。
我希望这篇文章对那些将要或正在为其应用程序挑选数据库的人们有所帮助,不会为自己做出的选择而后悔。
如何明智选择数据库平台 使你不再后悔
0
相关文章