Oracle和MySQL的對比


 

一、概述

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 缺點:

二、Mysql應用場景

2.1 Web網站系統

Web站點,是MySQL最大的客戶群,也是MySQL發展史上最為重要的支撐力量。

MySQL數據庫的安裝配置都非常簡單,使用過程中的維護也不像很多大型商業數據庫管理系統那么復雜,而且性能出色。 

2.2 日志記錄系統

MySQL數據庫的插入和查詢性能都非常的高效,,對需要大量的插入和查詢日志記錄的系統來說,MySQL是非常不錯的選擇。比如處理用戶的登錄日志,操作日志等,都是非常適合的應用場景。

2.3 數據倉庫系統

隨着現在數據倉庫數據量的飛速增長,我們需要的存儲空間越來越大。數據量的不斷增長,使數據的統計分析變得越來越低效,也越來越困難。

有幾個主要的解決思路:

1、一是采用昂貴的高性能主機以提高計算性能,用高端存儲設備提高I/O性能,效果理想,但是成本非常高;

2、二是通過將數據復制到多台使用大容量硬盤的廉價pcserver上,以提高整體計算性能和I/O能力,效果尚可,存儲空間有一定限制,成本低廉;

3、通過將數據水平拆分,使用多台廉價的pcserver和本地磁盤來存放數據,每台機器上面都只有所有數據的一部分,解決了數據量的問題,所有pcserver一起並行計算,也解決了計算能力問題,通過中間代理程序調配各台機器的運算任務,既可以解決計算性能問題又可以解決I/O性能問題,成本也很低廉。

在上面的3個方案中,第2和第3個的實現,MySQL都有較大的優勢。通過MySQL的簡單復制功能,可以很好的將數據從一台主機復制到另外一台,不僅僅在局域網內可以復制,在廣域網同樣可以。 

2.4 嵌入式系統

嵌入式環境對軟件系統最大的限制是硬件資源非常有限,在嵌入式環境下運行的軟件系統,必須是輕量級低消耗的軟件。

MySQL在資源的使用方面的伸縮性非常大,可以在資源非常充裕的環境下運行,也可以在資源非常少的環境下正常運行。它對於嵌入式環境來說,是一種非常合適的數據庫系統,而且MySQL有專門針對於嵌入式環境的版本。

2.5 對比其他數據

  • mysql:常規關系型數據庫;
  • redis:注重高性能,適用於即時性要求高的業務,比如說秒殺、庫存;
  • mongodb:注重大數量,適用於插入大量低價值業務數據的場景,比如說日志系統。

三、Oracle VS MySQL

3.1 數據安全

對於Oracle和MySQL數據庫用戶來說,MySQL使用一系統的授權表來管理和跟蹤用戶權限。當對用戶進行驗證、授權、訪問控制時,MySQL使用這些授權表。

3.1.1 數據庫驗證

與Oracle及其他多數數據庫通過用戶名和密碼進行驗證的機制不同,MySQL使用附加的location參數對用戶時行驗證。這個location參數經查是主機名稱、IP地址或者為一個通配字符串。通過這個附加的參數,MySQL可以限制用戶訪問域中的某些主機。更進一步可以做到通過不同的主機登陸時有不同的密碼和用戶權限。也就是說用戶名相同,但登陸主機的名稱不同時,可能是不同的用戶。

3.1.2 權限

MySQL的權限系統是通過繼承形成的分層結構。權限授於高層時,其他低層隱式繼承被授於的權限,當然低層也可改寫這些權限。

按授權范圍不同,MySQL有以下種授權方式:

1、全局;

2、基於每個主機;

3、基於表;

4、基於表列。

每一級在數據庫中都有一個授權表。當進行權限檢查時,MySQL從高到低檢查每一張表,低范圍授權優先於高范圍授權。

與Oracle不同,MySQL沒有角色的概念。也就是說,如果對一組用戶授於同樣的權限,需要對每一個用戶分別授權。

3.2 模式遷移

模式包含表、視圖、索引、用戶、約束、存儲過程、觸發器和其他數據庫相關的概念。多數關系型數據庫都有相似的概念。

本節包含以下內容:

1、模式對象的相似性;

2、模式對象的名稱;

3、表設計時的關注點;

4、多數據庫整合;

5、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時需要注意的地方。主要包含以下兩點:

1、字符數據的類型;

2、列默認值。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM