首頁 > 常見問題 > 主體

如何選擇資料庫

coldplay.xixi
發布: 2020-10-29 16:13:20
原創
7385 人瀏覽過

選擇資料庫的方法:1、標的;2、功能;3、多少人用,了解並發問題;4、安全性和穩定性;5、所用的作業系統。

如何選擇資料庫

相關免費學習推薦:mysql影片教學

#選擇資料庫的方法:

整體從5個方面平衡自己的需求:

(1)標的

(2)功能

(3)多少人用(並發問題)

#(4)安全性與穩定性

(5)所用的操作系統(UNIX、linux、windows)

對於用過的資料庫有:

  • dBase/FoxBase/FoxPro in the DOS/Novell/Windows 3.x world

• MS SQL Server 

  • Oracle

  • Sybase SQL/ASE Servers 

  • Sybase IQ

  • Informix/Dynamic 

  • Informix/Dynamic #•#    MySQL

  • PostGreSQL/EnterpriseDB

對於一些關鍵需求的選擇:  

  關鍵任務(OLTP)和高效能係統

##  關鍵任務(OLTP)和高效能係統

############ #   如果我們需要資料庫在關鍵業務系統中發揮更重要的作用,並希望做到無故障時間/高可用/集群,可靠性(性能和數據量),災難複製和自動生成報告等目標,或需要實現極端高速和低延遲(HPC,高效能運算)效果,那麼我們可能需要資料庫的企業級功能,但這樣的成本也更高。 ######  HA(高可用)叢集功能######  各資料庫平台的叢集功能如下:######  • Oracle RAC最適合HA集群,負載平衡與擴充;#####  • Oracle RAC最適合HA集群,負載平衡與擴充;#### ##  • MS SQL Server提供HA故障轉移功能,但無負載平衡;######  • Sybase ASE 15叢集與Oracle RAC功能相當;######  • TeraData本身就是一個分散式資料庫平台; ######  • MySQL叢集聲稱TPC-C效能基準測試比Oracle RAC還高;######  • IBM DB2/UDB在執行AIX HACMP(高可用叢集多處理)的IBM P系列/Power伺服器和Veritas VCS/Sun等叢集上運作得很好。 ######  高效能/低延遲/記憶體資料庫######  • Oracle提供TimesTen記憶體資料庫;######  • MySQL的叢集使用記憶體儲存引擎;######  • Sybase提供ASE記憶體資料庫;######  • 另外,我們也可以使用RAMSAN/SSD(固態硬碟)安裝SQL Server資料庫,所有與資料庫相關的磁碟I/O都發生在SSD上,而不是傳統硬碟上,因此我們可以大幅減少磁碟I/O延遲,提供I/O吞吐量,並提高資料庫的整體效能;######  • 還有其它的記憶體資料庫,如SQLite或eXtremeDB,但它們大多數要么只支援嵌入式系統,要么同一時間只支援單一用戶或單連接。 #########  可擴充性/效能#########  • 使用Oracle RAC和Sybase ASE 15叢集時,如果現有硬體無法滿足效能要求,我們只需要向叢集新增一台功能更強大的伺服器,然後逐步替換掉其它節點;######  • 使用SQL Server叢集時,因為它僅支援主動/被動模式,在實例層級沒有可擴展性,如果現有硬體滿足不了需要,我們必須更換整個集群;######  • MySQL集群也支援向所有節點都處於活動的集群添加節點,但它是一個無共享集群,節點越多意味著有更多的資料庫副本,更多的儲存和在所有節點之間複製資料時需要更多的網路流量。 ######  複製######  • Sybase:Sybase擁有最好的複製解決方案,超過了Oracle的資料衛士和SQL Server的複製解決方案(即使用它的鏡像/日誌傳送/交易複製,SQL Server的複製仍遠差於Sybase的複製伺服器);######  Sybase的異質複製和同質複製是Sybase公司上世紀90年代被華爾街排除但卻受到許多大公司使用的主要原因之一。 ######  Sybase複製可以在資料庫層級(主動/主動複製,比SQL Server的映像更好),交易級(與SQL Server的交易複製類似),表級,儲存過程級,函數級,MSA (多站點可用)以及透過日誌傳送(複製世界中窮人的解決方案)實現,它的鏡像啟動器結合EMC/SRDF可以真正保證在計劃內和計劃外停機時ZDL(零數據丟失)。 ######  • SQL Server:SQL Server複製可以透過日誌傳送和資料庫映像實作(主動/被動,R/W或唯讀),支援物件層級(表)粒度交易複製。 ######  • Oracle:Oracle的資料衛士是資料庫複製和災難復原最佳解決方案之一(使用RMAN)。 ######  • MySQL:MySQL提供無共享集群,基本上所有活動節點都是同步複製的,它的非同步複製也支援事務和物件級複製。 ###

  • 儲存層級解決方案:使用EMC的BCV,NetApp的快照管理器,日立的快照,Veritas的磁碟區複製器,資料複製可以發生在磁碟區塊級和磁碟區級。

  混合系統

  通常情況下,後端資料庫儲存了大量的數據,在檢索資料(資料排序,分組,匯總和計算)時會出現效能問題,當運轉速度變慢時,會影響到資料寫入過程。

  因此,對於這些類型的應用程序,我們希望資料庫能很好地處理大量數據,也可以很好地處理讀取/寫入阻塞問題。

  • Oracle

  Oracle是這種系統的最佳選擇,因為在Oracle中,讀取/寫入程式不會互相阻止對方,資料在整個讀取過程/會話/事務中都是一致的,系統開銷主要發生了記憶體鎖和重做日誌。

  • SQL Server

  SQL Server 2005的新快照隔離使用了Oracle同樣的行版本化功能,但在tempdb中會產生更多的IO。

  • Sybase ASE

  Sybase ASE的讀取/寫入程式會互相阻塞對方,但Sybase IQ使用快照版本化管理解決了這個阻斷問題。

  • 其它資料庫

  還有其它一些資料庫也不存在阻塞問題,但其中一些甚至不遵從ACID(原子性,一致性,隔離性和持久性)標準。

  資料倉儲

  企業建立資料倉儲/歸檔所有歷史數據,以及他們認為需要放在資料庫中的數據,通常,非規範化的資料進入數據倉庫,多維度為OLAP和商業智慧(BI)解決方案提供快速檢索。

  資料倉儲也用於新的或增強的業務策略回溯測試,此外,資料倉儲中的資料是呈指數成長而非線性成長的。

  基於列的關係資料庫優勢

  基於列的關係資料庫具有很大的優勢,因為它天生就是多維的,每一列都是自我索引的( B tree)。

  典型的基於列的資料庫有Google的Big Table,Sybase IQ,Vertica和基於MySQL建構的KickFire。

  平均而言,這些基於列的資料庫比傳統的基於行的關聯式資料庫(如Oracle,SQL Server,Sybase ASE,TeraData,DB2和MySQL)在資料擷取速度上要快60到100倍,但在基於行級進行資料更新時它們的速度較慢,到目前為止,Sybase IQ似乎是這一領域的領頭羊,號稱世界上最大的資料倉儲(超過1P位元組)就是用的Sybase IQ。

  整體而言,基於行的關聯式資料(SQL Server,Oracle,Informix,DB2/UDB,MySQL,Sybase ASE等)適合OLTP應用,而基於列的關聯式資料庫(Sybase IQ,KickFire,Vertica等等)更適合OLAP/DSS和資料倉儲應用。

  注意:那些時間序列資料庫如OneTick,kdb 和Vhayu都不能算是關係資料庫,它們的儲存結構是基於文件的,每一列的資料都使用一個單獨的文件存儲,基本上算是基於列的資料庫,基於列的資料庫也可用於回溯測試。此外,基於行的資料倉儲(立方體)中的資料是呈指數級增長,但基於列的資料倉儲中的資料是呈線性增長的。

  傳統上,Oracle在資料倉儲領域處於領先的優勢,但現在在基於列的關聯式資料庫(如Sybase IQ,Vertica和KickFire)面前已經失去優勢,Google正在使用的Big Table也是一種基於列的資料庫/儲存系統。

以上是如何選擇資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板