讨论:有关各种数据库的优缺点(主要讨论Sybase、Oracle和Microsoft三大公司的数据库产品)--------------参与有分

luofs 2004-07-29 03:28:28
小弟以前用过的数据库只有Microsoft公司的Access和SQL Sever 2000.现在根据正准备学Sybase的数据库.虽然以前用了Microsoft的产品,但是对它们的优缺点不是很明白。
某人说:存在即合理。既然这些数据库产品都在用,那么必然有它们的优点。任何东西要发挥它的最大作用,采用的根本方法就是:扬长避短。因此:充分了解这些产品的优缺点是非常有必要且非常重要的。


希望大家根据自己的经验,总结出来(没有多少经验的帮忙顶一顶)。


我建议大家根据--性能---市场占有率(包含用户认同程度)---这些公司的前景---产品资料(培训)--等四大方面进行评价,其中性能又可以分为--速度--安全--等等。

还有一个就是如何发挥这些产品的优点(主要只技术方面,该怎么使用他们?要学习那些知识?)

还有一点是最好详细到不同产品.比如Sybase 的 ASE 和 SQL Anywhere 分开说明


谢谢大家..........
...全文
981 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
enhydraboy 2004-08-18
  • 打赏
  • 举报
回复
呵呵,价格上来看。
Oracle>Sybase>SQL Server。
gegegeg 2004-08-18
  • 打赏
  • 举报
回复
以前一直用oracle,现在用sybase,个人感觉sybase与oracle比就是垃圾!不稳定,唯一的优点就是便宜。
enhydraboy 2004-08-13
  • 打赏
  • 举报
回复
Sybase的诞生是因为,Sybase的目标是认为,达到oracle的性能更本不需要那么昂贵的硬件需求。
我认为,这就是Sybase和oracle从体系架构上来说的最大差别。ORACLE体系架构是多进程的概念(此时尚未有NT系统),因此,ORACLE要获得性能的优势,与操作系统调度这些进程大有关系,自然对于硬件的要求就高。
Sybase采取的做法,就是单进程模式下的多线程方式(NT编程上的Thread有点类似),其实就是把任务调度和资源协调的工作有Sybase自己来做,这样可以大大降低对于硬件的要求。也是是节省投资,用更低的配置达到Oracle相等的性能。
我认为,sybase做到了。就如事物是两面性的一样,当你的系统的硬件投入加大的时候(如多个CPU)的时候,ORACLE很容易就获得了性能的提升,对于Sybase来说,你必须还要依靠它的实现代码。
至于Microsoft SQL Server,其体系架构照搬Sybase,甚至更简化了些。也大致如此吧。
dongdongxiao 2004-08-06
  • 打赏
  • 举报
回复
我们公司用的有ASE 11.5 sql server 2000
Kanfu 2004-08-05
  • 打赏
  • 举报
回复
SQL Server VS Sybase ASE
1.我从SQL server6.0一直用到2000,越来越灵活好用,稳定,易用,但问题依然存在,非常频繁操作的表容易坏;突然断电会造成数据库的损坏,但还能读,不能写数据库了;碰到过最要命的一会,就把我搞的够呛,78G的数据库坏了.
2.Sybase ASE系列也用了一段时间,其实和SQL Server真很像,特别两个的早期版本,出现的问题基本也差不多,毕竟两个是同祖同宗。
3.ASE支持多平台,SQL Server只支持Windows
4.ASE体系似乎复杂一些了,支持EJB;但SQL SERVER有个强项无缝集成OLAP,微软的OLAP工具是目前市面上最强大的联机分析处理工具了,据说Oracle自己虽然也有,但内部也是用微软的。
5.微软的提供的工具DTS工具包容易实现大数据的插入和迁移,转换,而且可以进行事务控制,可编程;Sybase ASE只提供BCP工具,不可编程。
6.Sybase的数据库产品形成了一个系列Wireless(Mobile)DB ,ASA ,ASE;微软有个Access但没有Sybase那么完善的数据库产品链

个人认为,SQL Server更适合中小企业,ASE更适合大型企业,当然对于大型企业一般什么数据库都会在使用,我碰到过一个企业内部什么数据库都有:ASE,DB2 , Oracle,SQL Server
sky125 2004-08-05
  • 打赏
  • 举报
回复
这种比较很多
但我觉得主要看你公司的实际需要
Alern 2004-08-03
  • 打赏
  • 举报
回复
说这些用用吗?


我比较喜欢sybase
fy2219 2004-08-03
  • 打赏
  • 举报
回复
dfyj
xfkk 2004-08-02
  • 打赏
  • 举报
回复
up
xieyongan 2004-08-02
  • 打赏
  • 举报
回复
2、性能优越,跨平台移植比较方便?
hobbylu 2004-07-30
  • 打赏
  • 举报
回复
比如????
SybaseASE 2004-07-30
  • 打赏
  • 举报
回复
东方,多字段count是怎么实现的:)?
bambooboy 2004-07-30
  • 打赏
  • 举报
回复
小弟也是这几天转向Sybase的学习(工作的需要耶)
我们的培训经理说了这数据库有几大优点:
1、价格便宜
2、性能优越,跨平台移植比较方便
3、早晨多中操作系统

我们公司开发的手机增值、和电信合作的邮箱、还有游戏,
都用的是Sybase数据库,还有用Python
PeeGoo 2004-07-30
  • 打赏
  • 举报
回复
SYBASE在LINUX上的有免费的版本!
zanglinfeng 2004-07-30
  • 打赏
  • 举报
回复
up !
hobbylu 2004-07-29
  • 打赏
  • 举报
回复
http://www.sybase.com.cn/cn/content/news/news0628_Oracle.htm
pfares 2004-07-29
  • 打赏
  • 举报
回复
1.开放性:

SQL Server

只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.

Oracle

能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

DB2

能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.


2.可伸缩性,并行性

SQL server DB2

并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。Oracle 平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。

如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。

DB2 DB2具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境.数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点


3.安全性

SQL server

没有获得任何安全证书。

Oracle Server

获得最高认证级别的ISO标准认证。

DB2

获得最高认证级别的ISO标准认证。


4.性能

SQL Server

多用户时性能不佳

Oracle

性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。

DB2

适用于数据仓库和在线事物处理

性能较高。


5.客户端支持及应用模式

SQL Server

C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.

Oracle

多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接

DB2

跨平台,多层结构,支持ODBC,JDBC等客户



6.操作简便

SQL Server

操作简单,但只有图形界面.

Oracle

较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同

DB2

操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同



7.使用风险

SQL server

完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。

Oracle

长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。

DB2

在巨型企业得到广泛的应用,向下兼容性好。风险小。
luofs 2004-07-29
  • 打赏
  • 举报
回复
谢谢hobbylu(东方一剑) 这么精彩的贴子,我们可以从中学到很多东西,也能作为以后作出选择的参考.
hobbylu 2004-07-29
  • 打赏
  • 举报
回复
Oracle9i与ASE12.5分别是世界主流数据库厂商ORACLE、SYBASE公司的主打产品,拥有相当大的市场份额。本文抛开两者之间在体系结构、技术路线上的差异,纯粹从使用者的角度出发,整理了Oracle9i与SYBASE Adaptive Server Enterprise 12.5 (简称ASE12.5)相比的几个不足,至于ASE12.5与Oracle9i相比的不足则不在本文的讨论范围。

1 不支持正则表达式:熟悉Unix/Linux及ASE12.0/12.5的人都知道正则表达式的灵活、功能强大。像“查找所有包含数字的表名称”这样的需求,在ASE12.5中极其简单:

select name from sysobjects where type=”U” and name like “%[0-9]%” (这里sysobjects相当于Oracle9i中的all_objects),而Oracle9i的实现要颇费一番周折了,一般情况下很多人都是写一个函数实现,以下就是刚学Oracle的时候写的一个实现该功能的函数:

CREATE OR REPLACE function is_number(p_str in varchar2)

return number

as

w_char char(1);

i number :=1;

begin

while i <= length(p_str) loop

w_char := substr(p_str,i,1);

if w_char >='0' and w_char <='9' then

return 1;

end if;

i:=i+1;

end loop;

return 0;

end;

/

在Oracle9i调用一个自定义的PL/SQL函数开销会很大;远不及ASE12.5的内部实现。

2 UPDATE语句的“蹩脚”,在数据库的应用中,两个表关联update是很常见的,如有如下两个表:t_a(id,name,point,…),t_b(id,point,…) id均为主键或unique index,现要实现根据id的对应关系将t_b表上point加至t_a表point。我们来看Oracle9i与ASE12.5的实现:

/** For Oracle9i **/

Update t_a a

Set a.point=a.point+(select b.point from t_b b where b.id=a.id)

Where exists (select 1 from from t_ b where b.id=a.id)

/

/** For ASE12.0/12.5 **/

Update t_a

Set point=a.point+b.point

From t_a a,t_b b

Where a.id=b.id

Go

Oracle9i的语句似乎不顾清晰、容易误解,而且查看执行计划发现t_b表或索引扫描了2遍!ASE12.5只扫描了1遍。虽然第2遍是逻辑读,但总觉得不甘心;

有时如果t_b表较小,且id上无索引,我宁愿采用cursor方式,多次试验表明

比Create INDEX+关联UPDATE要快得多。还有就是采用Oracle9i的OLAP特性,用merge 语句来完成。

3临时表技术的比较:



ITEM
存储位置
DDL
数据生命周期

ORACLE9i
任何表空间
用户自己维护,表名是全局(数据库用户)唯一
Session / Transaction

ASE12.5
Tempdb库
用户create;用户drop或系统drop,表名Session级唯一
Session









虽然两者各有所长,但我觉得ASE12.5的实现似乎更得”临时”的精髓—在每个会话期间,“召之即来”,不用担心与别人重名,#11 #22 #aa #bb随个人喜好创建,”挥之即去”, 会话结束亦不必显式删除,由系统代劳,不必担心垃圾表存在。

4 Count的问题还是Distinct的问题?在select 语句使用 distinct 关键字修饰以返回唯一的行集,这在统计分析、剔除重复数据尤为重要,但是有时仅想统计一个总数呢?我第一次是这样写的:

Select count(distinct a,b,c) from my_table 结果语法不对,只好修改为:

Select count(*) from ( select distinct a,b,c from my_table ) 方得以通过,心想这一定是distinct惹的祸,但随后发现distinct 被冤枉了,因为即使是:

Select count(a,b,c) from my_table 也是不行的。只能写成:

Select count(*) from ( select a,b,c from my_table )

但在ASE12.5上无论是Select count(distinct a,b,c) from my_table 还是Select count(a,b,c) from my_table 均能得出正确结果。

5 数据导入导出工具的比较:Exp/Imp在备份和恢复方面用的比较多,且受版本(高低版本、32bit/64bit)、语言影响较大,且sqlldr 只能算作导入工具,严格来说Oracle9i没有表数据的文本级的导出工具!相反,ASE12.5的bcp 的在表数据导入导出方面的很灵活,格式也很简单,很容易做应用程序的输入。还有视图、存储过程、触发器的导出工具defncopy也很好用;至于Oracle9i,我N+1次遇到以下情况:

问:我怎么得到某个存储过程的代码啊?

答:有没有装client阿?

问:装了!

答:打开Enterprise Manager Console,登录后在方案下面找吧

……

问:怎么麻烦阿?

答:那你有没有装Toad或者PL/Develop阿,这些工具好用点

问:没有啊!

答:L

或者

问:我怎么得到某个存储过程的代码啊?

答:有没有装client阿?

问:装了,可我在主机上啊!

答:那你用sqlplus看罢,

set long 300

select text from all_source where name=’YourName’

go

问:哇,怎么麻烦阿

答:L

要是在ASE12.0

问:我怎么得到某个存储过程的代码啊?

答:用defncopy 吧

问:怎么用啊

答:我靠,这么简单!你还用问阿!J

6 联机备份:虽然Oracle9i提供了冷、热备份技术,但是与ASE12.5基于Open Server技术的联机实时备份Backup Server相比似乎逊色不少,将备份的介质直接拿到另外一台ASE12.5进行Load,很快很简单就能获得一个时效性极强的”镜像”数据库环境。而我觉得Exp/Imp比较琐碎,且限制也较多。

Oracle9i附带的命令行工具如sqlplus exp/imp sqlldr等,执行时无一例外都将输出时间、版本、版权信息,给像我这样喜欢用shell处理结果的人来说徒增不少麻烦,相比ASE12.5的isql bcp defncopy 的干净利落,是Oracle9i的无聊和”自恋”,还是埃里克森的霸气呢?

luofs 2004-07-29
  • 打赏
  • 举报
回复
我在三版块(数据库开发---Sybase;数据库开发---MS-SQL Sever--基础类;数据库开发---Oracle--开发)都了开这个帖子,非常欢迎大家去其他版块看讨论结果。
加载更多回复(2)

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧