2012/05/07

SQL 資料庫評估

在用了許久的ADO with Access之後,有感於這種資料庫的限制及困擾,一直以來都在尋找替代方案。因了原本接手開發的軟體在資料庫這塊一直都是雜亂且散佈於各模組內,雖然有想用其他的資料庫取而代之,但是更改底層資料庫不是件簡單的事,就只好一直沿用了。

而今,即將開發一全新系統,想當然爾對於要採用的資料庫的評估就是件很重要的事了。因為即將要開發的系統是運作在32位元Windows底下,所以就針對幾項常見的資料庫,做了個簡單的評估:
  • Access
  • SQL Server
  • SQL Server Express
  • SQL Server Compact Edition (SQL CE)
  • SQL Server LocalDB
  • SQLite




Access

Access一直以來都是開發人員在開發簡單的單機程式所會採用的資料庫之一,因為有著一個還算好用的UI介面,加上早期微軟對其的支援,而且大多數在不需要安裝額外軟體的情況下都可以存取,使得Access資料庫的使用率都不算低,簡單歸納優缺點如下:
  • 優點
    • 單一檔案的檔案式資料庫
    • 不須安裝資料庫引擎即可使用(Windows系統大多都已內建Jet Database Engine)
    • 多種方便的存取工具可供使用
  • 缺點
    • 單一檔案2GB限制
    • 僅支援32位元作業系統
    • Jet Database Engine僅支援Access 2003以前的檔案,對於2007之後的檔案不支援,須改用Microsoft Access Database Engine(Microsoft.ACE.OLEDB.12.0),此套件需另外安裝
    • 支援的SQL指令有限,許多較複雜的指令都不支援
    • 有自己獨特的Access-SQL指令集,指令與其他資料庫不相容
    • 對於多語系軟體的使用易受限,雖然Jet支援Unicode,但是Access檔案並不完全支援,若在一中文系統下建立資料庫檔案,並在一不支援東亞語系的系統上以程式存取,常會出現[OleDbException (0x80004005): Selected collating sequence not supported by the operating system.]之類的錯誤


SQL Server

SQL Server是近年來微軟主推的資料庫系統,已慢慢整合進微軟大多數的開發工具內,也是現今許多伺服器主機所使用的資料庫系統。
  • 優點
    • 可支援大型資料庫架構
    • 支援多核心/多CPU系統架構
    • 單一資料庫檔案最大524PB
    • 支援的SQL指令完善
    • 支援Store Procedure
    • 可支援網路架構,不限單機存取
    • 多種方便的存取工具可供使用
    • 已整合進微軟大多數的開發工具內
    • 相關的開發資源多
  • 缺點
    • 主機-用戶端架構
    • 系統龐大,運作所需資源較多
    • 單機運作大材小用
    • 授權金額/採購成本高
 SQL Server是一套很完善的資料庫系統,但也因為支援的功能多,運作所需的資源相對的也很多,若是僅拿來作為本機獨立運作所需的資料庫系統就顯得大材小用了。


SQL Server Express

SQL Server Express是微軟提供的較精簡的資料庫系統,基本上大多SQL Server提供的功能在Express版本上都有支援,只是附屬的功能較為簡化,但大多常用的都完整支援了。
  • 優點
    • 可支援中小型資料庫架構
    • 支援多核心/多CPU系統架構
    • 單一資料庫檔案最大10GB (2008以前版本為4G)
    • 支援的SQL指令完善
    • 支援Stored Procedure
    • 可支援網路架構,不限單機存取
    • 多種方便的存取工具可供使用
    • 已整合進微軟大多數的開發工具內
    • 相關的開發資源多
    • 免費使用,不須授權費用
    • 可擴充升級為SQL Server完整版本
  • 缺點
    • 主機-用戶端架構
    • 系統較大,運作所需資源稍多
    • 資料庫引擎安裝程式約120MB,安裝完約需300MB以上


SQL Server Express拿來做為一個需要資料庫的系統是很足夠的,不僅支援大多數SQL Server的功能,而且還是免費使用,當系統發展擴大後還可升級為完整的SQL Server版本。但對於僅用來儲存資料的本機軟體而言,Express還是過於龐大了。


SQL Server LocalDB 

SQL Server LocalDB是微軟提供的更為精簡的資料庫系統,主要目的是提供給開發人員一個簡易的資料庫系統,不用去處理SQL Server Express以上版本所需的DBA資料庫管理等事項,可以僅專注在開發與資料上,相對的許多功能都被拿掉或精簡了,但大多數基本的SQL是都有支援的。
  • 優點
    • 可支援小型資料庫架構
    • 檔案式資料庫(僅.MDF與.LDF)
    • Process started by application (Child process)
    • 單一資料庫檔案最大10GB
    • 支援大多數的T-SQL指令
    • 支援Stored Procedure
    • 多種方便的存取工具可供使用(需安裝更新)
    • 可整合進微軟大多數的開發工具內(需安裝更新)
    • 相關的開發資源多(針對與SQL Server相容部分)
    • 免費使用,不須授權費用
    • 安裝簡便,幾乎不需設定
  • 缺點
    • 仍需要安裝資料庫引擎
    • 資料庫引擎安裝程式約28MB,安裝完約需160MB以上
    • 相關資源較少,因為LocalDB是蠻新的東西,網路上相關的資料還不多


SQL Server LocalDB拿來做為一個僅需要資料庫作為儲存的系統是很足夠且適合的,支援了基本的SQL Server功能,也是免費使用,當系統發展擴大後可升級為SQL Server Express版本。


SQL Server Compact Edition 

SQL Server Compact Edition (SQL CE)是微軟提供作為行動裝置及嵌入式系統所用的精簡資料庫系統,具備基本的RDBMS支援,可將資料庫系統包含於開發的軟體中。
  • 優點
    • 可支援微型資料庫架構
    • 單一檔案的檔案式資料庫(.SDF)
    • In-Process
    • 單一資料庫檔案最大4GB
    • 可整合進微軟的開發工具內
    • 免費使用,不須授權費用
    • 安裝簡便,幾乎不需設定
  • 缺點
    • 仍需要安裝資料庫引擎
    • 資料庫引擎安裝程式約2.5MB,安裝完約需15MB以上
    • 不支援ODBC,存取須使用OLE DB
    • 僅支援基本的RDBMS
    • 不支援Stored Procedure
    • 不支援View、Trigger



SQLite 

SQLite是一個開放原始碼的嵌入式精簡資料庫系統,具備SQL-92支援,可將資料庫系統包含於開發的軟體中,目前也獲得許多軟體及系統採用。
  • 優點
    • 可支援微型資料庫架構
    • 單一檔案的檔案式資料庫
    • In-Process
    • 單一資料庫檔案最大32TB
    • 免費使用,不須授權費用
    • 不須安裝,可直接呼叫DLL來使用或直接將資料庫引擎內嵌於程式中
    • 可跨平台
    • 文字編碼為UTF-8,較無跨語系問題
    • 資料儲存格式皆為文字,任何型別都可轉為文字存取
    • 對於資源要求低,運作速度快
  • 缺點
    • 不支援Stored Procedure
    • 對於資料型別沒有強制性
    • 較無整合性開發工具



小結

這幾項資料庫系統評估下來,各有優缺點,要使用哪一套端看最後使用的環境需求而定。例如若要開發一個簡單的程式,但需要資料庫來做為程式內部資料的臨時性儲存,或是需要較低資源需求的,那SQLite是一個非常好的選擇;若要開發一個稍微大一點的單機程式,但需要大一些且未來可擴充的資料庫,則可以選擇SQL Server LocalDB;若要開發一套系統程式,單機或是網路架構,需要資料庫系統作為後援資料,那就非SQL Server莫屬,中小型可用Express版本,大型則可選擇Standard乃至Exterprise版本。




參考資料

Comparison of SQL Server Compact, SQL Server Express 2012 and LocalDB

Differences Between SQL Server Compact and SQL Server
Features Supported by the Editions of SQL Server 2012
SQL Server 學習筆記


連結
SQL Server Express 2012 下載
SQL Server Compact 4.0 下載
SQLite

沒有留言: