一,如果要说明三者的区别,首先就要从历史入手。
Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision。 Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去。开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番。
Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文《A Relational Model of Data for Large Shared Data Banks》【1】。作者CODD选取了关系代数的五种运算,并基于运算,架构了一种新型的数据存储模型。基于这种模型,Oracle成为了一个非常典型的关系数据库。因此也变的严谨、安全、高速、稳定,并且变的越来越庞大。
由于其诞生早、结构严谨、高可用、高性能等特点,使其在传统数据库应用中大杀四方,金融、通信、能源、运输、零售、制造等各个行业的大型公司基本都是用了Oracle,早些年的时候,世界500强几乎100%都是Oracle的用户。
MySQL :MySQL的最初的核心思想,主要是开源、简便易用。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台。但依然问题多多,如不支持事务操作、子查询 、外键、存储过程和视图等功能。下图是一个截止至2006年的数据库市场占有率【2】:
图中可以看出,MySQL的爆发实际是在01、02年,尤其是02年发布的4.0 Beta版,正式选定InnoDB作为默认引擎,对事务处理能力及数据缓存能力有了极大的提高。同年4.1版开始支持子查询,至此MySQL终于蜕变成一个成熟的关系型数据库系统。05年的5.0版本又添加了存储过程、服务端游标、触发器、查询优化以及分布式事务功能,但同年被Oracle抄了后路,InnoDB被Oracle收编。08年,MySQL被Sun收购,09年,Oracle收购了Sun和MySQL。
由于MySQL的早期定位,其主要应用场景就是互联网开发。基本上,互联网的爆发成就了MySQL,LAMP架构风靡天下。而由于MySQL更多的的追求轻量、易用,以及早期的事物操作及复杂查询优化的缺失,在传统的数据库应用场景中,份额极少。
SQL Server:一提到SQL Server,大家一般都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase and Ashton-Tate三家公司拦下的生意,是为IBM(又出现了)公司的OS/2操作系统开发的。随着OS/2项目的失败,大家也分道扬镳。 Microsoft自然转向自己的win操作系统,作为windows NT软件方案的一部分。而Sybase则专注于Linux/Unix方向的数据库开发。
MS SQL Server主要面向中小企业。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具,在快速构建商业智能(BI)方面颇有建树。 MS SQL Server是MS公司在软件集成方案中的重要一环,也为WIN系统在企业级应用中的普及做出了很大贡献。
二,典型应用场景
关于“大型数据库”,并没有严格的界定,有说以数据量为准,有说以恢复时间为准。如果综合数据库应用场景来说,大型数据库应用有以下特点:海量数据、高吞吐量;复杂逻辑、高计算量,以及高可用性。从这点上来说,Oracle,DB2就是比较典型的大型数据库,Sybase SQL Server也算是吧。下面分别说明之前三种数据库的应用场景。
Oracle。Oracle的应用,主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。而且由于Oracle对复杂计算、统计分析的强大支持,在互联网数据分析、数据挖掘方面的应用也越来越多。一个典型场景是这样的:
某电信公司(非国内)下属某分公司的数据中心,有4台Oracle Sun的大型服务器用来安装Solaris操作系统和Oracle并提供计算服务,3台Sun Storage磁盘阵列来提供Oracle数据存储,12台IBM小型机,一台Oracle Exadata服务器,一台500T的磁带机用来存储历史数据,San连接内网,使用Tuxedo中间件来保证扩展性和无损迁移。建立支持高并发的Oracle数据库,通过OLTP系统用来对海量数据实时处理、操作,建立高运算量的Oracle数据仓库,用OLAP系统用来分析营收数据及提供自动报表。总预算约750万美金。
MySQL。MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于MySQL的开源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务。一个典型的应用场景是:
某互联网公司,成立之初,仅有PC数台,通过LAMP架构迅速搭起网站框架。随着业务扩张、市场扩大,迅速发展成为6台Dell小型机的中型网站。现在花了三年,终于成为垂直领域的最大网站,计划中的数据中心,拥有Dell机架式服务器40台,总预算20万美金。
MS SQL Server。windows生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱 MS SQL Server 。例如,自建ERP系统、商业智能、垂直领域零售商、餐饮、事业单位等等。
1996年,Bill Gates亲自出手,从Borland挖来了大牛Anders,搞定了C#语言。微软02年搞定了http://ASP.NET。成熟的.NET、Silverlight技术,为 MS SQL Server赢得了部分互联网市场,其中就有曾经的全球最大社交网站MySpace,其发展历程很有代表性,可作为一个比较特别的例子【3】。其巅峰时有超过1.5亿的注册用户及每月400亿的访问量。应该算是MS SQL Server支撑的最大的数据应用了。
三,架构。其实要说执行的区别,主要还是架构的区别。正是架构导致了相同SQL在执行过程中的解释、优化、效率的差异。这里只做粗略说明,就不细说了:
Oracle: 数据文件包括:控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件。这是根据文件功能行进行划分,并且所有文件都是二进制编码后的文件,对数据库算法效率有极大的提高。由于Oracle文件管理的统一性,就可以对SQL执行过程中的解析和优化,指定统一的标准:
RBO(基于规则的优化器)、CBO(基于成本的优化器)
通过优化器的选择,以及无敌的HINT规则,给与了SQL优化极大的自由,对CPU、内存、IO资源进行方方面面的优化。
MySQL:最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT。
SQL Server :数据架构基本是纵向划分,分为:Protocol Layer(协议层), Relational Engine(关系引擎), Storage Engine(存储引擎), SQLOS。SQL执行过程就是逐层解析的过程,其中Relational Engine中的优化器,是基于成本的(CBO),其工作过程跟Oracle是非常相似的。在成本之上也是支持很丰富的HINT,包括:连接提示、查询提示、表提示。
- 浏览: 125129 次
- 来自: 上海
文章分类
- 全部博客 (174)
- java框架 (10)
- 数据库~ALL (20)
- 数据库~oracle (5)
- NoSql (6)
- jdk/tomcate (2)
- java-up (25)
- 分布式框架 (1)
- java基础/面试 (27)
- 前端笔记 (26)
- 有用的小东西 (2)
- 单点登录 (4)
- java开发工具 (16)
- python (3)
- hadoop (1)
- webservice (1)
- worklogging (1)
- java框架~Springboot (4)
- java框架~Spring (7)
- java框架~SpringMVC (3)
- java框架~Mybatis (3)
- Linux (2)
- MQ (1)
- Zookeeper (1)
- 前端框架 (1)
- 异常汇总 (1)
- 网咯编程 (2)
最新评论
发表评论
-
Oracle 增加修改删除字段
2017-09-01 17:05 589Oracle 增加修改删除字段 添加字段的语法:a ... -
【悲观锁 VS 乐观锁】
2017-08-30 15:39 4511、数据库的隔离级别 ... -
oracle数据库创建表的主键id自增长
2017-06-13 10:19 1048将表t_uaer的字段ID设置为自增:(用序列sequenc ... -
oracle中sql中nvl和nvl2函数使用
2017-06-06 10:28 8181、nvl(value1,value2) 这个函数的 ... -
sql积累
2017-05-31 14:22 333一、基础 1、说明:创建数据库 CREATE DATAB ... -
plsql查询的中文怎么是乱码
2017-05-24 15:44 681登陆plsql,执行sql语句,输出的中文标题显示成问号?? ... -
sql数据库面试基础题型
2017-05-15 22:48 919表架构Student(S#,Sname,Sage,Ssex ... -
数据库优化的思路
2017-05-12 22:49 4471.SQL语句优化 1)应尽量避免在 where ... -
乐观锁与悲观锁的区别
2017-03-23 09:17 861为什么需要锁(并发 ... -
sqlserver与oracle的区别
2017-02-24 17:13 372sql server 与 oracle的 ... -
mysql ,sqlserver ,Oracle分页语句
2017-02-24 16:53 485取出 sql表中第31到40的记录(以自动增长 ID为主键) ... -
说出一些数据库优化方面的经验?
2017-02-24 16:46 5931、关键字段建立索引。 2、使用存储过程,它使SQL变得更 ... -
什么是存储过程?存储过程与SQL语句对比,使用存储过程的优点?
2017-02-23 13:20 449存储过程:使用 ... -
数据设计遵循的三大范式
2017-02-23 11:42 583三级范式 第一范式: 如果一个表中没有 ... -
游标的作用?如何知道游标已经到了最后?
2017-02-23 10:44 939关系数据库中的操作会对整个行集起作用。由 SELECT 语 ... -
事务是什么
2017-02-23 09:41 337事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有 ... -
MyBatis中传id字符串到sql中
2016-12-15 19:10 636<if test="typeIds ! ... -
sql server中储存过程的使用
2016-12-13 09:02 509CREATE PROC track_pao ... -
mybatis中对SqlServer,MySQL,oracle的模糊查询语句
2016-08-31 15:58 1761期中SqlServer数据库模糊查询是:name LIKE ...
相关推荐
首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种工具通常能帮助数据库管理员快速获取数据库的定义,便于备份、迁移或在其他环境中...
数据库驱动大全这个资源包含了SQL Server、Oracle以及MySQL等主流数据库系统的ODBC(Open Database Connectivity)驱动程序。ODBC是微软提出的一种标准接口,允许应用程序通过统一的方式与各种不同类型的数据库进行...
SQLserver、Oracle和Mysql是当前最主流的三种关系型数据库管理系统,它们在语法和用法上存在一些共性,但也各自具有特色。以下是对这三种数据库在常用操作上的对比分析。 1. **查看表结构**: - SQL Server 使用 `...
在本配置参考中,我们将探讨如何使用Oracle GoldenGate(简称OGG)来实现SQL Server到Oracle,MySQL到Oracle以及MySQL到MySQL的同步配置。 1. SQL Server到Oracle的同步配置: - 首先,你需要在SQL Server上安装并...
SQL Server、Oracle和MySQL是三种广泛应用的关系型数据库管理系统(RDBMS),各有其特点和优势。以下是对这三种数据库系统的详细对比: 1. **SQL Server** - 开发商:由微软公司开发,主要应用于Windows操作系统。...
Oracle、SQL Server 及 MySQL 是目前最流行的三大关系数据库管理系统,各有其优缺点。本文将从表空间、查询语句、事务、分区表和分区索引、优缺点等方面对三者进行比较。 表空间 MySQL 的表空间有共享表空间和独占...
解决oracle sqldeveloper无法连接mysql、SQLServer问题,sqlDeveloper是ORACLE数据库开发工具,自带的是无法连接MS SQL Server以及mysql的,想连接的话需要第三方工具。 使用方法: 解压出来后将2个jar放入jlib...
数据库驱动包是连接应用程序与不同数据库系统的关键组件,如SQL Server、Oracle和MySQL。这些驱动程序遵循特定的接口规范,例如Java的JDBC(Java Database Connectivity),使得开发人员能够使用统一的方式与各种...
在SQL Server、Oracle和MySQL这三种关系型数据库管理系统(RDBMS)中,它们的SQL语法在很多方面具有相似性,但在某些特定操作上存在差异。以下是对这些系统中一些关键语法和用法的对比: 1. **查看表结构**: - ...
标题 "连接SQL Server、Oracle、MySQL的客户端工具" 指出这是一款支持多数据库系统的通用客户端工具,允许用户方便地与SQL Server、Oracle和MySQL等数据库进行交互。这样的工具通常提供图形用户界面(GUI),使得...
Oracle、SQL Server和MySQL是三大主流的关系型数据库管理系统(RDBMS),它们在功能、性能、安全性、许可证费用以及适用场景上都有所不同。以下是对这三种数据库的主要区别进行的详细概述。 一、Oracle数据库 ...
- **Sqlserver**、**Oracle**、**MySql**、**PostgreSql** 和 **SqlLite** 都提供了丰富的内置函数支持,包括数学、日期时间、字符串处理等多方面功能。 #### 五、分页 分页是数据库中常见的需求之一,不同的...
标题中的“SqlServer,Oracle,MySql数据库结构相互对比同步”是指对这三种主流关系型数据库管理系统(RDBMS)在数据库结构方面的比较和同步方法。这些数据库系统在数据存储、查询语言、安全性、性能优化等方面都有...
MySQL和SQL Server是两种非常流行的DBMS,分别由Oracle公司和Microsoft公司开发。当需要在两者之间进行数据迁移时,就需要用到专门的转换工具。标题提到的“mysql转化成sql server”和“sql转化成mysql工具”就是...
总的来说,理解和掌握SQL Server、MySQL和Oracle的JDBC连接是Java开发中的基础技能,它涉及到数据库的连接建立、SQL语句的执行以及结果的处理等多个方面。对于开发人员来说,灵活运用JDBC可以帮助他们更高效地完成...
Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_Mysql_Sqlserver字段类型转换参考Oracle_...
本资源包含针对三个主流关系型数据库管理系统——Microsoft SQL Server、Oracle和MySQL的JDBC驱动程序,这将极大地简化Java开发者的工作。 1. **Microsoft SQL Server JDBC Driver**:Microsoft SQL Server是一款由...
里面整理了常用数据库的驱动包 sqlServer mysql Oracle.并有三个baseDao,使用jdbc的方式连接数据库。并封装了常用的增删查改的方法。 代码示例 private static final String driver="com.mysql.jdbc.Driver"; //...
在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...
通过"Sqlserver、Oracle和Mysql学习笔记"这个压缩包文件,你将能够深入学习它们的语法、操作和最佳实践,进一步提高你在数据库领域的专业素养。文件名"Kwan1117"可能是笔记作者的标识或者特定章节的代码,具体内容需...