Oracle和MySQL的对比

 

1、概述

1.1 Oracle

1.1.1 优势

  • 开放性:Oracle 能全部主流平台上运行(包括 windows)彻底支持全部工业标准采用彻底开放策略使客户选择适合解决方案对开发商全力支持;
  • 可伸缩性,并行性:Oracle 并行服务器经过使组结点共享同簇工做来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能知足须要用户把数据库移UNIXOracle并行服务器对各类UNIX平台集群机制都有着至关高集成度;
  • 安全性:得到最高认证级别的ISO标准认证。  
  • 性能:Oracle 性能高 保持开放平台下TPC-D和TPC-C世界记录;
  • 客户端支持及应用模式:Oracle 多层次网络计算支持多种工业标准用ODBC、JDBC、OCI等网络客户链接 ;
  • 使用风险:Oracle 长时间开发经验彻底向下兼容得普遍应用地风险低 。
  • 对硬件的要求很高;
  • 价格比较昂贵;
  • 管理维护麻烦一些;
  • 操做比较复杂,须要技术含量较高。
  • 体积小、速度快、整体拥有成本低,开源;
  • 支持多种操做系统;
  • 是开源数据库,提供的接口支持多种语言链接操做
  • MySql的核心程序采用彻底的多线程编程。线程是轻量级的进程,它能够灵活地为用户提供服务,而不过多的系统资源;
  • MySql有一个很是灵活并且安全的权限和口令系统。当客户与MySql服务器链接时,他们之间全部的口令传送被加密,并且MySql支持主机认证;
  • 支持大型的数据库, 能够方便地支持上千万条记录的数据库。做为一个开放源代码的数据库,能够针对不一样的应用进行相应的修改。
  • 拥有一个很是快速并且稳定的基于线程的内存分配系统,能够持续使用面没必要担忧其稳定性; 
  • MySQL同时提供高度多样性,可以提供不少不一样的使用者介面,包括命令行客户端操做,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。
  • 不支持热备份;
  • MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变;
  • 没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制;

1.1.2 缺点

1.2 MySql

1.2.1 优势:

1.2.2 缺点:

2、Mysql应用场景

2.1 Web网站系统

Web站点,是MySQL最大的客户群,也是MySQL发展史上最为重要的支撑力量。mysql

MySQL数据库的安装配置都很是简单,使用过程当中的维护也不像不少大型商业数据库管理系统那么复杂,并且性能出色。 程序员

2.2 日志记录系统

MySQL数据库的插入和查询性能都很是的高效,,对须要大量的插入和查询日志记录的系统来讲,MySQL是很是不错的选择。好比处理用户的登陆日志,操做日志等,都是很是适合的应用场景。redis

2.3 数据仓库系统

随着如今数据仓库数据量的飞速增加,咱们须要的存储空间愈来愈大。数据量的不断增加,使数据的统计分析变得愈来愈低效,也愈来愈困难。sql

有几个主要的解决思路:mongodb

一、一是采用昂贵的高性能主机以提升计算性能,用高端存储设备提升I/O性能,效果理想,可是成本很是高;数据库

二、二是经过将数据复制到多台使用大容量硬盘的廉价pcserver上,以提升总体计算性能和I/O能力,效果尚可,存储空间有必定限制,成本低廉;编程

三、经过将数据水平拆分,使用多台廉价的pcserver和本地磁盘来存放数据,每台机器上面都只有全部数据的一部分,解决了数据量的问题,全部pcserver一块儿并行计算,也解决了计算能力问题,经过中间代理程序调配各台机器的运算任务,既能够解决计算性能问题又能够解决I/O性能问题,成本也很低廉。windows

在上面的3个方案中,第2和第3个的实现,MySQL都有较大的优点。经过MySQL的简单复制功能,能够很好的将数据从一台主机复制到另一台,不只仅在局域网内能够复制,在广域网一样能够。 浏览器

2.4 嵌入式系统

嵌入式环境对软件系统最大的限制是硬件资源很是有限,在嵌入式环境下运行的软件系统,必须是轻量级低消耗的软件。安全

MySQL在资源的使用方面的伸缩性很是大,能够在资源很是充裕的环境下运行,也能够在资源很是少的环境下正常运行。它对于嵌入式环境来讲,是一种很是合适的数据库系统,并且MySQL有专门针对于嵌入式环境的版本。

2.5 对比其余数据

  • mysql:常规关系型数据库;
  • redis:注重高性能,适用于即时性要求高的业务,好比说秒杀、库存;
  • mongodb:注重大数量,适用于插入大量低价值业务数据的场景,好比说日志系统。

3、Oracle VS MySQL

3.1 数据安全

对于Oracle和MySQL数据库用户来讲,MySQL使用一系统的受权表来管理和跟踪用户权限。当对用户进行验证、受权、访问控制时,MySQL使用这些受权表。

3.1.1 数据库验证

与Oracle及其余多数数据库经过用户名和密码进行验证的机制不一样,MySQL使用附加的location参数对用户时行验证。这个location参数经查是主机名称、IP地址或者为一个通配字符串。经过这个附加的参数,MySQL能够限制用户访问域中的某些主机。更进一步能够作到经过不一样的主机登录时有不一样的密码和用户权限。也就是说用户名相同,但登录主机的名称不一样时,多是不一样的用户。

3.1.2 权限

MySQL的权限系统是经过继承造成的分层结构。权限授于高层时,其余低层隐式继承被授于的权限,固然低层也可改写这些权限。

按受权范围不一样,MySQL有如下种受权方式:

一、全局;

二、基于每一个主机;

三、基于表;

四、基于表列。

每一级在数据库中都有一个受权表。当进行权限检查时,MySQL从高到低检查每一张表,低范围受权优先于高范围受权。

与Oracle不一样,MySQL没有角色的概念。也就是说,若是对一组用户授于一样的权限,须要对每个用户分别受权。

3.2 模式迁移

模式包含表、视图、索引、用户、约束、存储过程、触发器和其余数据库相关的概念。多数关系型数据库都有类似的概念。

本节包含如下内容:

一、模式对象的类似性;

二、模式对象的名称;

三、表设计时的关注点;

四、多数据库整合;

五、MySQL模式整合的关注点。

3.2.1 模式对象的类似性

就模式对象,Oracle和MySQL存储诸多的类似,但也有一些不一样。

表3-1 模式对象

Oracle

MySQL

AFTER trigger

trigger

BEFORE trigger

trigger

Check constraint

Check constraint

Column default

Column default

Database

Database

Foreign key

Foreign key

Index

Index

Package

N/A

PL/SQL function

Routine

PL/SQL procedure

Routine

Primary key

Primary key

Role

N/A

Schema

Schema

Sequence

AUTO_INCREMENT for a column

Snapshot

N/A

Synonym

N/A

Table

Table

Tablespace

N/A

Temporary table

Temporary table

Trigger for each row

Trigger for each row

Unique key

Unique key

User

User

View

View

3.2.2 模式对象的名称

Oracle是大小写不敏感的,而且模式对象是以在写时行存储。在Oracle的世界中,列、索引、存储过程、触发器以及列别名都是大小写不敏感,而且在全部的平台都是如此。MySQL是大小写敏感的,如数据库相对的存储路径、表对应的文件都是如此。

当把关键字用引号引发来时,Oracle和MySQL都容许把这些关键字用于模式对象。但MySQL对于一些关键字,不加引号也行。

3.2.3 表设计的关注点

本节主要讨论当把MySQL转为Oracle时须要注意的地方。主要包含如下两点:

一、字符数据的类型;

二、列默认值。

3.2.3.1 字符数据类型

MySQL和Oracle在字符型数据保存和读取上存在一些不一样。MySQL的字符类型,如CHAR和VARCHAR的长度小于65535字节。Oracle支持4种字体类型:CHAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大长度为2000字节,NVARCHAR2和VARCHAR2最大长度为4000字节。

MySQL的CHAR在按必定长度存储时,是用空格填充的右对齐方式,在读取时去掉空格。

3.2.3.2 列默认值

MySQL会处理列默认值,不容许他为空,这点和Oracle不一样。在Oracle中若是向表插入数据,须要对有全部不容许为NULL列的值。

3.2.4 多数据库迁移

若是多个MySQL数据库位于同一个数据库服务上,支持迁移。

3.2.5 数据存储概念

MySQL的数据库对应于服务器上数据目录内的了目录,这一数据存储方式与多数据数据库不一样,也包括Oracle。数据库中的表对应一个或者多个数据库目录下的文件,并取表存储时的存储引擎。

一个Oracle数据库包含一个或者多个表空间。表空间对应数据在磁盘上的物理存储。表空间是从一个或者多个数据文件开始构建的。数据文件是文件系统中的文件或者原始存储的一块空间。

相关文章
相关标签/搜索