什么是關系型數據庫?
(1)關系型數據庫是依據關系模型來創建的數據庫。
(2)所謂關系模型就是“一對一、一對多、多對多”等關系模型,關系模型就是指二維表格模型,因而一個關系型數據庫就是由二維表及其之間的聯系組成的一個數據組織。
(3)關系型數據可以很好地存儲一些關系模型的數據,比如一個老師對應多個學生的數據(“多對多”),一本書對應多個作者(“一對多”),一本書對應一個出版日期(“一對一”)。
(4)關系模型是我們生活中能經常遇見的模型,存儲這類數據一般用關系型數據庫。
(5)關系模型包括數據結構(數據存儲的問題,二維表)、操作指令集合(SQL語句)、完整性約束(表內數據約束、表與表之間的約束)。
常見的關系型數據庫:
Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL
關系型數據庫的特點:
安全(因為存儲在磁盤中,不會說突然斷電數據就沒有了)。
容易理解(建立在關系模型上)。
但不節省空間(因為建立在關系模型上,就要遵循某些規則,好比數據中某字段值即使為空仍要分配空間)。
現在已經存在了很多優秀的商業數據庫,如甲骨文(Oracle)公司的 Oracle 數據庫、IBM 公司的 DB2 數據庫、微軟公司的 SQL Server 數據庫和 Access 數據庫。同時,還有很多優秀的開源數據庫,如 MySQL 數據庫,PostgreSQL 數據庫等。下面介紹這些常見的數據庫。
Oracle數據庫
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。Oracle 是甲骨文公司的一款關系型數據庫管理系統,在數據庫領域一直處於領先地位的產品,是目前世界上流行的關系型數據庫之一,是一種高效率、可靠性好、適應高吞吐量的數據庫方案。
優點:
(1)Oracle 可移植性好,能在所有主流平台上運行(包括 Windows),完全支持所有工業標准。采用完全開放策略,使客戶可以選擇最適合解決方案。以及對開發商的全力支持。
(2)獲得最高認證級別的 ISO 標准認證,安全性高。
(3)與其它數據庫相比,Oracle 性能最高。保持着開放平台下 TPC-D 和 TPC-C 世界記錄。
(4)多層次網絡計算,支持多種工業標准,可以用 ODBC、JDBC、OCI 等網絡客戶連接 。
(5)完全向下兼容,因此被廣泛應用,且風險低 。
缺點:
(1)對硬件的要求高。
(2)價格比較昂貴。
(3)管理維護麻煩。
(4)操作比較復雜。
使用場景
大部分企事業單位都用oracle,在電信行業占用最大的份額。
SQL Server
美國Microsoft公司推出的一種關系型數據庫管理系統。SQL Server是一個可擴展的、高性能的、為分布式客戶機(處理應用程序、請求服務的計算機)/服務器(處理數據庫的計算機)計算所設計的數據庫管理系統,實現了與WindowsNT的有機結合,提供了基於事務的企業級信息管理系統方案。主要應用於大型的管理系統中
優點:
(1)與微軟的 Windows 系列操作系統的兼容性很好。
(2)高性能設計,可充分利用 WindowsNT 的優勢。
(3)系統管理先進,支持 Windows 圖形化管理工具,支持本地和遠程的系統管理和配置。
(4)強壯的事務處理功能,采用各種方法保證數據的完整性。
(5)支持對稱多處理器結構、存儲過程、ODBC,並具有自主的 SQL 語言。
缺點:
(1)SQL Server 只能在 Windows 系統上運行,沒有絲毫開放性。
(2)沒有獲得任何安全證書。
(3)多用戶時性能不佳 。
(4)只支持 C/S 模式,SQL Server C/S 結構只支持 Windows 客戶用 ADO、DAO、OLEDB、ODBC 連接。
使用場景:
主機操作系統為window,主要用於web網站的建設,承載中小型web后台數據。在租賃的虛擬主機中一般會預安裝SQL Server作為數據庫軟件。
MySQL
MySQL 是一種開放源代碼的關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,屬於 Oracle 旗下產品。因為其速度、可靠性和適應性而備受關注。MySQL 是流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL 是最好的應用軟件之一。
優點:
(1)性能卓越服務穩定,很少出現異常宕機
(2)開放源代碼且無版權制約,自主性強、使用成本低。
(3)歷史悠久、社區及用戶非常活躍,遇到問題,可以很快獲取到幫助。
(4)軟件體積小,安裝使用簡單,並且易於維護,安裝及維護成本低。
(5)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統;
(6)提供多種 API 接口,支持C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等多種開發語言。
(7)MySQL使用標准的SQL數據語言形式;
(8)Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。
(9)使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性;
缺點:
(1)MySQL 最大的缺點是其安全系統,主要是復雜而非標准,只有調用 mysqladmin 來重讀用戶權限才會發生改變。
(2)MySQL 不允許調試存儲過程,開發和維護存儲過程很難。
(3)MySQL 不支持熱備份。
(4)MySQL 的價格隨平台和安裝方式變化。
使用場景:
廣泛地應用在Internet上的中小型網站中
LAMP(Linux+Apache+Mysql+Php)
mysql的優勢在於免費,如果業務系統數據庫不是極其龐大,可用mysql
Microsoft Access
Access 是由 Microsoft(微軟)發布的小型關系數據庫管理系統,是微軟把數據庫引擎的圖形用戶界面和軟件開發工具結合在一起的一個數據庫管理系統。
優點:
(1)存儲方式簡單,易於維護管理。Access 的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為(.mdb 或 .accdb)的數據庫文件中,便於用戶的操作和管理。
(2)Access 是一個面向對象的開發工具,這種基於面向對象的開發方式,使得開發應用程序更為簡便。
(3)界面友好、易操作。Access 是一個可視化工具,風格與 Windows 完全一樣,用戶想要生成對象應用,只要使用鼠標進行拖放即可,非常直觀方便。系統還提供了表生成器、查詢生成器、報表設計器以及數據庫向導、表向導、查詢向導、窗體向導、報表向導等工具,使得操作簡便,容易使用和掌握。
(4)集成環境,可以處理多種數據信息。Access 基於 Windows 操作系統下的集成開發環境,該環境集成了各種向導和生成器工具,極大地提高了開發人員的工作效率,使得建立數據庫、創建表、設計用戶界面、設計數據查詢、報表打印等可以方便有序地進行。
(5)支持廣泛,易於擴展,彈性大。Access 是一個既可以只用來存放數據的數據庫,也可以作為一個客戶端開發工具來進行數據庫應用系統開發。即可以開發方便易用的小型軟件,也可以用來開發大型的應用系統。
缺點:
(1)不支持並發處理。
(2)數據庫存儲量小安全性不夠高。
(3)Access 是小型數據庫,當數據量過大時,一般百M以上(純數據,不包括窗體、報表等客戶端對象)性能會變差。
(4)雖然理論上支持 255 個並發用戶,但實際上根本支持不了那么多,如果以只讀方式訪問大概在 100 個用戶左右,而如果是並發編輯,則大概在10-20個用戶。
(5)單表記錄數過百萬時,性能就會變得較差,如果加上設計不良,這個限度還要降低。
(6)不能編譯成可執行文件(.exe),必須要安裝 Access 運行環境才能使用。
使用場景:
適合數據量少的應用,在處理少量數據和單機訪問的數據庫時是很好的,效率也很高。
DB2
DB2 是美國 IBM 公司開發的一款支持多媒體、Web 的關系型數據庫管理系統。主要應用於大型應用系統,具有較好的可伸縮性,可支持從大型機到單用戶環境。
優點:
(1)相比較 MySQL 和 Oracle 兩種數據庫來說,DB2 提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模地應用程序執行能力,具有與平台無關的基本功能和 SQL 命令。
(2)DB2 采用了數據分級技術,能夠使大型數據很方便的下載到數據庫服務器,使數據庫本地化和遠程連接透明化。
(3)擁有非常完備的查詢優化器,改善了查詢性能,並支持多任務並行查詢。
(4)具有很好的網絡支持能力,每個子系統可以連接十幾萬個分布式用戶,可同時激活上千個活動線程,對大型分布式應用系統更加使用。
(5)DB2 可跨平台使用,多層結構,支持ODBC,JDBC等客戶。
(6)操作簡單,同時提供GUI和命令行,在WindowsNT和unix下操作相同。
缺點:
(1)配置文件和參數多,且命名不規范。
(2)一些 DB2 產品開發不方便。
(3)和 Oracle 相比,命令多,且沒 Oracle 統一規范的好。
(4)由於其設計框架的問題,如果用戶對數據庫的本身優化和應用程序優化做的不足,那么 DB2 容易出現鎖等待現象。
使用場景:
在巨型企業得到廣泛的應用,向下兼容性好。風險小。
PostgreSQL
PostgreSQL 是一款富有特色的自由數據庫管理系統,甚至可以說是最強大的自由軟件數據庫管理系統。該數據庫管理系統支持了目前世界上最豐富的數據類型。是自由軟件數據庫管理系統中唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的自由軟件。
優點:
(1)PostgreSQL 遵循的是 BSD 協議,是一個完全開源、免費、同時非常強大的關系型數據庫。
(2)與 PostgreSQL 配合的有很多分布式集群軟件,如 pgpool、pgcluster、slony、plploxy 等等,很容易做讀寫分離、負載均衡、數據水平拆分等方案,而這些 MySQL 則比較難實現。
(3)PostgreSQL 源代碼寫的很清晰,易讀性比 MySQL 強,所以很多公司基本都是以 PostgreSQL 做二次開發的。
(4)PostgreSQL 是多進程的,而 MySQL 是多線程的。並發不高時,MySQL處理速度快,但當並發高的時候,對於現在多核的單台機器上,MySQL 的總體處理性能不如 PostgreSQL,原因是 MySQL 的線程無法充分利用 CPU 的能力。
(5)PostgreSQL 有很強大的查詢優化器,支持很復雜的查詢處理。
缺點:
(1)對於簡單而繁重的讀取操作,相比較其它數據庫來說,PostgreSQL 性能較低。
(2)PostgreSQL 數據庫擴容花費時間很長。
使用場景:
(1)企業數據庫
如 ERP、交易系統、財務系統涉及資金、客戶等信息,數據不能丟失且業務邏輯復雜,選擇 PostgreSQL 作為數據底層存儲,一是可以幫助您在數據一致性前提下提供高可用性,二是可以用簡單的編程實現復雜的業務邏輯。
(2)含 LBS 的應用
大型游戲、O2O 等應用需要支持世界地圖、附近的商家,兩個點的距離等能力,PostGIS 增加了對地理對象的支持,允許您以 SQL 運行位置查詢,而不需要復雜的編碼,幫助您更輕松理順邏輯,更便捷的實現 LBS,提高用戶粘性。
(3)數據倉庫和大數據
PostgreSQL 更多數據類型和強大的計算能力,能夠幫助您更簡單搭建數據庫倉庫或大數據分析平台,為企業運營加分。
(4)建站或 App
PostgreSQL 良好的性能和強大的功能,可以有效的提高網站性能,降低開發難度。