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數據庫包含一個或者多個表空間。表空間對應數據在磁盤上的物理存儲。表空間是從一個或者多個數據文件開始構建的。數據文件是文件系統中的文件或者原始存儲的一塊空間。

相關文章
相關標籤/搜索