評估大量因素
我們將要在中途改變方向
在這部分
我將涉及與性能無關的話題
在下一個並且是最後一部分
我將全面研究基准測試並以最終結論結束
一般差別
不同於PostgreSQL
MySQL和mSQL不是真正的關系數據庫管理系統
我看到有人在新聞組裡把MySQL稱為
只是一個快速存儲工具
並且mSQL甚至被稱為了一個玩具
不敢恭維
至少mSQL實現了部分一個完整的SQL DBM應該提供的功能
如果一個人需要一個真實的RDBMS
三者中唯一可行的選擇是PostgreSQL
如果計算原始的性能表現
特別是如果對數據庫所做的存取並不復雜並且大多數是自動的
一個更小的系統可能更好一些
因此
mSQL和MySQL被宣傳為網數據庫系統
許可證
PostgreSQL以一個BSD風格許可證被分發
在所有相關的方面均是自由的(也許對一些狂熱者來說太自由了)
如果版權聲明被保留
基本上一個人可以用該軟件做任何事情
MySQL是免費的並且在某些條件下源代碼允許被修改
但是禁止為了商業目的的再分發
mSQL對非商業性組織的使用是免費的
但在一個
天評估時期以後
購買一個許可證是必要的
因為這些差別
在使用他們之一的企業的人們需要仔細地考慮許可條件
ANSI 標准的實現
這
個系統都是在叫喊是完全實現 ANSI SQL 標准的
公平地講
這在我看來有點可怕
當MySQL實現了開發者已經定義好的一個子集時
mSQL甚至沒有嘗試真正遵循ANSI 標准
PostgreSQL 最後定位在與 ANSI 完全兼容
但是它仍然有一條長路要走
PostgreSQL確實還沒有支持參考完整性(RI)
但是只測試了DBMS的事務(transaction)
另外
新的SQL特征像SQLSTATE變量也沒有實現
MySQL既不支持事務也不保證參考完整性
對事務存取數據庫表能明確地為鎖定和解鎖
mSQL缺乏 ANSI SQL 的大多數特征
它僅僅實現了一個最最少的API
沒有事務和參考完整性
APIs
所有
個系統測試的API大部分對處理是透明的
發生任何問題通常是由於不正確的文檔
而不是API本身
mSQL和MySQL都沒有嵌入式SQL(ESQL)預處理器功能
隨著ESQL的誕生
現在我相當喜歡它
但是使用mSQL 和 MySQL 本身提供的C API並不困難
有同樣光標的含義
但以一個不同的方法實現
並且把字符串傳遞給C函數僅比在代碼中使用碼嵌入式 SQL語句稍難一點兒
除了提到的ESQL API
PostgreSQL帶有C API
C++聯編
JDBC
ODBC
Perl聯編
Python和Tcl聯編(bindings)
MySQL對Win
平台有附加的ODBC支持
語言聯編 (接口)至少有C++
Eiffel
Java
Perl
Python
PHP和Tcl可以得到
mSQL與Lite(一種類似C的腳本語言
與分發一起發行)緊密結合
可以得到一個稱為 W
mSQL的一個網站集成包
它是JDBC
ODBC
Perl和PHP API
注意我沒有測試那些任何附加的綁定和特征
他們的質量和文檔的表述不是很好
能獲得很多對這
個系統的第三方擴展
本文不再贅述
文檔和更多
PostgreSQL以DocBook SGML格式記錄文檔
手冊分為管理員指南
程序員指南
用戶指南和一本教程
另外
FAQ和各種各樣的說明文件涉及一些話題
軟件的好多領域缺乏足夠的文檔
MySQL以GNU Texinfo格式記錄文檔
手冊看起來完全
mSQL有一個單個文件的手冊(沒有超文本)
它有PostScript和HTML形式
作為能從一個商業軟件產品的的角度所期望的
它覆蓋了所有的特征
認證和一般的安全
這時我還沒談及的一個話題
但是需要在這個比較中提及的是存取認證
ANSI SQL 對於存取控制提供很復雜且很精致的機制
也就是GRANT和REVOKE語句
PostgreSQL和MySQL能理解這些標准語句
但內部處理存取控制是不同的
可以得到mSQL的網站集成包中的一個認證增強程序(W
mSQL)
但是在它基本形態中
大多數數據庫系統似乎沒有任何內置的存取控制支持
不像safe_mysqld和postmaster
mSQL數據庫守護程序假定有root運行的
它可以可能造成安全隱患
任何大型數據庫都需要一個安全概念
就像它需要一個徹底的數據庫設計一樣
不可能說他們中支持認證系統(即 PostgreSQL或MySQL)的哪一個是更安全的
這裡
任何事情均取決於設計
From:http://tw.wingwit.com/Article/program/Oracle/201311/18353.html