數據庫對比:
1.常用關系型數據庫對比:
數據庫 | 優點 | 缺點 | 使用場景 |
---|---|---|---|
MySQL數據庫 | 1.使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性; 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統; 3.為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等; 4.支持多線程,充分利用CPU資源; 5.價格便宜:Mysql是開源的,所以不需要支付額外的費用; 6.MySQL使用標准的SQL數據語言形式; 7.Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。 |
1.比較難學; 2.MySQL也缺乏一些存儲程序的功能; 3.使用缺省的ip端口,但是有時候這些ip也會被一些黑客闖入; 4.使用myisam配置,如果你不慎損壞數據庫,結果可能會導致所有的數據丟失。 |
廣泛地應用在Internet上的中小型網站中 LAMP(Linux+Apache+Mysql+Php) mysql的優勢在於免費,如果業務系統數據庫不是極其龐大,可用mysql |
Oracle數據庫 | 1.能在所有主流平台上運行(包括 windows)。完全支持所有的工業標准。采用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支持; 2.安全性方面,性能最高; 3.采用標准的SQL結構化查詢語言; 4.具有豐富的開發工具,覆蓋開發周期的各階段; 5.支持大型數據庫,數據類型支持數字、字符、大至2GB的二進制數據,為數據庫的面向對象存儲提供數據支持; 6.具有字符界面和圖形界面,易於開發; 7.具有數據透明、網絡透明,支持異種網絡、異構數據庫系統。並行處理采用動態數據分片技術; 8.支持客戶機/服務器體系結構及混合的體系結構(集中式、分布式、客戶機/服務器); 9.數據安全保護措施:沒有讀鎖,采取快照SNAP方式完全消除了分布讀寫沖突。自動檢測死鎖和沖突並解決。數據安全級別為C2級(最高級); 10.在中國的銷售份額占50%以上,市場份額高 |
1.管理維護麻煩一些; 2.數據庫崩潰后恢復很麻煩,因為他把很多東西放在內存里; 3.數據庫連接要慢些,最好用連接池; 4.大對象不好用,vchar2字段太短,不夠用; 5.管理員的工作煩,且經驗非常重要; 6.對硬件的要求很高; 7.價格昂貴。 |
大部分企事業單位都用oracle,在電信行業占用最大的份額。 |
SQL Server數據庫 | 1.安全性和可用性高; 2.超快的性能; 3.企業安全性; 4.快速的數據發現 5.方便易用; 6.高效的數據壓縮功能; 7.集成的開發環境。 |
1.開放性。只能運行在微軟的windows平台,沒有絲毫的開放性可言; 2.可伸縮性,並行性。並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限; 3.性能穩定性。SQLServer當用戶連接多時性能會變的很差,並且不夠穩定; 4.使用風險。SQLServer完全重寫的代碼,經歷了長期的測試,不斷延遲,許多功能需時間來證明。並不十分兼容早期產品。使用需要冒一定風險; 5.客戶端支持及應用模式,只支持C/S模式; 6.安全性。Oracle的安全認證獲得最高認證級別的ISO標准認證,而SQL Server並沒有獲得什么安全認證。 |
主機操作系統為window,主要用於web網站的建設,承載中小型web后台數據。在租賃的虛擬主機中一般會預安裝SQL Server作為數據庫軟件。 |
PostgreSQL | 1.PostgreSQL 的穩定性極強, Innodb 等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足進步。 2.PG 性能高速度快。任何系統都有它的性能極限,在高並發讀寫,負載逼近極限下,PG的性能指標仍可以維持雙曲線甚至對數曲線,到頂峰之后不再下降。 3.PG 多年來在 GIS 領域處於優勢地位,因為它有豐富的幾何類型,實際上不止幾何類型,PG有大量字典、數組、bitmap 等數據類型。 4.PG 的“無鎖定”特性非常突出,甚至包括 vacuum 這樣的整理數據空間的操作,這個和PGSQL的MVCC實現有關系。PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的唯一的一種自由軟件的數據庫管理系統 5.PG對數據量大的文本以及SQL處理較快,可以使用函數和條件索引,這使得PG數據庫的調優非常靈活。 |
1.關於mvcc 的多版本控制。會生成很多個版本。定期要清理 2.pg的分布式集群。bug很多實用需要謹慎 3.pg數據庫的並發性問題:pg采用搶占資源的方式,如果有一個大的SQL在跑,可能就會阻塞其他的進程,不管其他的進程是小SQL還是大SQL。好在pg有個優先級設置,還能變通一下。 4.pg的數據庫擴容問題:擴容花費的時間很長。 5.pg的segment和mirror同步問題:某個實例有問題,如果是在線恢復,特別慢。 如果把所有的應用停掉則速度還算可以。 |
OLAP數據庫,適用於電信、金融的分析 |
SQLlite | 1.源代碼不受版權限制,真正的自由,開源和免費. 2.無服務器,不需要一個單獨的服務器進程或者操作的系統 3.一個SQLite 數據庫是存儲在一個單一的跨平台的磁盤文件 4.零配置,因為其本身就是一個文件,不需要安裝或管理,輕松攜帶 5.不需要任何外部的依賴,所有的操作等功能全部都在自身集成. 6.輕量級,SQLite本身是C寫的,體積很小,經常被集成到各種應用程序中. |
1.缺乏用戶管理和安全功能 2.只能本地嵌入,無法被遠程的客戶端訪問,需要上層應用來處理這些事情; 3.不適合大數據 4.適合單線程訪問,對多線程高並發的場景不適用; 5.各種數據庫高級特性它都不支持,比如管理工具、分析工具、維護等等; |
小型網站、嵌入式設備、數據庫教學、本地應用程序 |
DB2數據庫 | 1.能在所有主流平台上運行(包括windows)。最適於海量數據; 2.具有很好的並行性。DB2把數據庫管理擴充到了並行的、多節點的環境; 3.獲得最高認證級別的ISO標准認證; 4.客戶端支持及應用模式; 5.跨平台,多層結構,支持ODBC,JDBC等客戶; 6.操作簡單,同時提供GUI和命令行,在windowsNT和unix下操作相同。 |
1.在巨型企業得到廣泛的應用,向下兼容性好。風險小。 | 性能較高適用於數據倉庫和在線事務處理。DB2 超大型數據庫,與ORACLE類似 ,數據倉庫和數據挖掘相當的不錯,特別是集群技術可以使DB2的可擴性能達到極致。 |
2.常用非關系型數據庫對比:
數據庫 | 優點 | 缺點 | 使用場景 |
---|---|---|---|
Redis | 1、Redis不僅僅只支持簡單的K-V形式的數據存儲,還支持list、set、hash、zset等等集合類數據的存儲; 2、Redis支持實時的數據備份,即使宕機,也可以把數據恢復過來; 3、Redis支持數據的持久化,可以存放在內存memory中的數據直接保存在磁盤上; |
數據庫容量受到物理內存的限制,因此不便對海量數據進行高性能讀寫,適用場景局限在數據量較小的高性能操作和運算上; | 查找最新的回復、排行問題、緩存、刪除過期數據 |
MemCache | 1、穩定。 2、配置簡單 3、速度快 4、分布式擴展 |
1.不能持久化存儲 2.存儲數據有限制:1M 【大於1M,認為就行分割】(內存碎片) 3.mm存儲數據只能key-value 4.集群數據沒有復制和同步機制 【崩潰不會影響程序,會從數據庫中取數據】 5.內存回收不能及時 LRU(算法):未使用內存》過期內存》最近最少使用內存 這是惰性刪除 |
分布式應用、數據庫前段緩存、服務器間數據共享 |
MongoDB數據庫 | 1、文檔結構的存儲方式,能夠更便捷的獲取數據 2、內置GridFS,支持大容量的存儲 3、內置Sharding,分片簡單 4、海量數據下,性能優越 5、支持自動故障恢復(復制集) |
1.不支持事務操作 2.占用空間過大 3.MongoDB沒有如MySQL那樣成熟的維護工具 4.無法進行關聯表查詢,不適用於關系多的數據 5.復雜聚合操作通過mapreduce創建,速度慢 6.模式自由, 自由靈活的文件存儲格式帶來的數據錯誤 |
各種應用服務的日志存儲、敏捷開發、地理位置信息存儲、json存儲 |