原文:
http://www.itpub.net/thread-746828-1-1.html
难得有人提到了IQ,
我用IQ差不多也有3年多了,简单说一下对IQ的看法。
总的来说,
1、IQ只适合用于OLAP的场景,不适合OLTP场景,尤其对于并发更新的支持尤其的差,
因为sybase与ibm和oracle策略不同,他的oltp和olap分开两个产品线,ase一个(OLTP),
iq一个(OLAP),所以当存在olap和oltp混合压力时ase+IQ是一个做法,
但是个人感觉两者结合并不是太好,
iq的前端引擎是用的ASA,语法与ase的语法还有些不一致,
两者的数据通道除了互建proxy table外也没什么特别好的办法 。所以,
如果是这类应用,不建议用IQ,而应该选择db2或oracle。
2、其实相比较而言,IQ的性价比不错,它可以在比较低配置的机器上,在数据量比较大
的情况下,跑出比较好的效率。我们这里IQ最大的表已经超过100亿,在8cpu 32G内存的
机器上做一些查询,响应时间依然得到很好的保证。
3、IQ有比较强大的索引机制,比如常用的LF,HG,HNG等索引,bit-wise只是其中一种索引
技术,LF就是bit-wise索引,HG则用的是G-ARRRY的存储方式。这些索引在做条件检索,
group by时都可以很好的提高效率。
4、IQ稳定性存在问题,早期的版本比如12.6,有时会莫名其妙的down机。主要是因为前端
的ASA引擎比较脆弱。原来ASA就是个桌面数据库,所以要支撑商业应用可能有点困难。
最近的主流版本已经到12.7 ESD8了,打上ESD8后,IQ的稳定性大大增强了。但仍不建议
在关键的7*24小时的系统中使用IQ。
5、IQ产品成熟度与db2 oracle还是差很多,毕竟是新出来的产品,在一些兼容性问题上可能
没有很好的解决。另外,还有IQ的资料很少,用的人少,当出现问题时,除了
找sybase 工程师和自己摸索之外,没有什么办法。这一点远不如db2和oracle。
6、IQ load是一大特性,尤其是多线程load,速度达到10万/秒是没问题的。
7、IQ的数据压缩显然是一个不错的功能,压缩比达到一般能达到1/3左右,在
充分节省空间的同时,还大大减小了IO。这也是下面要说的multiplex得以实现的基础。
8、IQ有一个号称是multiplex的架构,有点类似于oracle的rac,不过它只能
有一个write server,其他只能是query server(只能读不能写),最新版本
好像支持多个write server了。它的读一致性
通过other version来实现,有点类似于oracle的回滚段。不过,它的other version占用的
是主数据库空间,由于某些原因如果节点间没有及时通讯,
会发生由于other version过大把数据库空间撑满的的情况,这一点很恶心,我已经深受其害。
所以multipex可以酌情使用,如果要用一定要用,补丁一定要达到12。7 ESD8以上。
所以IQ做数据集市还是相当不错的,这些集市数据量大,访问并发度低,基本是只读访问。而且
对稳定性要求没有那些实时系统高。iq充分发挥数据压缩,节省空间,对机器和磁盘要求比较低的优势。
如果要做企业级数据仓库,个人推荐还是用teradata。
要说海量数据的处理能力teradata绝对是首屈一指的。
我们做过实验,在16个节点的情况下,对一张40亿左右的表做10个维度的group by,
结果集为8千多万条记录,插入一张结果空表中,大概需要20分钟左右。
多表join的效率也是很高,一些批处理里经常10多个表join,依然跑得飞快。
teradata的一个工作单位叫做AMP,当数据分布均匀时,16个AMP一起工作的效率是惊人的。
teradata类似于db2,也是share nothing架构,不过它的强大bynet好像比db2之间的分区间
通讯效率高很多。
teradata的稳定性也可以,备份机制也很成熟。
最重要的是它有一套成熟的DW方法论和实施团队,这一点远远强于只卖产品的sybase。
不过teradata也有缺点:
1、TD只适合做DW不适合做OLTP应用。
2、TD实施成本非常昂贵,不光机器设备卖的贵,而且他的磁盘空间也很紧张,一般只能到65%
,其余空间只能做为spool空间,供多表join时数据重分布使用。实施团队的费用也不低,
如果不是大企业建议还是不要用TD了。
3、TD很大程度依赖规模效应,如果只有一两个节点,还不如不用,一旦形成
规模比如16个,其效率估计其他数据库都比不上了。
所以,我们这边的策略是,OLTP用db2,部门集市用IQ,EDW用teradata。
一些OLTP+OLAP的应用就用 db2+IQ的方式,夜间批量通过文件做数据交互。
希望我的回答对楼主有所帮助。