常見的主流數據庫(DBMS)


關係型數據庫
1. MySQL數據庫

    [下載地址]
  MySQL是最受歡迎的開源SQL數據庫管理系統,它由 MySQL AB開發、發佈和支持。MySQL AB是一家基於MySQL開發人員的商業公司,它是一家使用了一種成功的商業模式來結合開源價值和方法論的第二代開源公司。MySQL是MySQL AB的註冊商標。
  MySQL是一個快速的、多線程、多用戶和健壯的SQL數據庫服務器。MySQL服務器支持關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass- deployed)的軟件中去。
  MySQL
  1、定位:
  開源、多平臺、關係型數據庫
  目前使用最廣泛、流行度最高的的開源數據庫。
  2、特點:
    (1)支持事務,符合關係型數據庫原理,符合ACID,支持多數SQL規範,以二維表方式組織數據,有插件式存儲引擎,支持多種存儲引擎格式
    (2)用編譯安裝的方式,或者二進制包的方式,按照“安裝軟件-創建實例-庫表用戶初始化”,可以很快完成數據庫部署
    (3)使用標準的SQL語句進行數據庫管理,簡單SQL語句的併發和性能較好,對視圖、存儲過程、函數、觸發器等支持的不是太好
    (4)在命令行界面有一些常用的命令顯示狀態和性能,在圖形界面方面,有比較多的開源監控工具來監控和記錄數據庫的狀態,比如zabbix,nagios,cacti,lepus等
    (5)邏輯備份 mysqldump/mysqldumper ,物理備份 用xtrabackup等工具進行備份;
    (6)MySQL高可用有多種方案,官方有基礎的master-slave主從複製,新版本的innodb cluster,第三方的有MHA等高可用方案;
    (7)MySQL水平拆分,可以通過水平拆分proxy中間進行邏輯映射和拆分,擴大MySQL數據庫的併發能力和吞吐量。
    3、適用場景:
    默認的innodb存儲引擎,支持高併發,簡單的絕大部分OLTP場景;
    Tokudb存儲引擎,使用高併發insert的場景;
    Inforbright存儲引擎,可以進行列壓縮和OLAP統計查詢場景;
    4、選擇注意:
    使用MySQL進行OLTP業務時,需要注意數據量級,如果數據量級過大,需要進行水平拆分;
    如果有OLAP需求,可以結合其他架構綜合考慮。


2. Microsoft SQL Server數據庫

    [官網下載地址] [破解下載地址]
    SQL Server是由微軟開發的數據庫管理系統,是Web上最流行的用於存儲數據的數據庫,它已廣泛用於電子商務、銀行、保險、電力等與數據庫有關的行業。
    目前最新版本是SQL Server 2005,它只能在Windows上運行,操作系統的系統穩定性對數據庫十分重要。並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。
    SQL Server 提供了衆多的Web和電子商務功能,如對XML和Internet標準的豐富支持,通過Web對數據進行輕鬆安全的訪問,具有強大的、靈活的、基於Web的和安全的應用程序管理等。而且,由於其易操作性及其友好的操作界面,深受廣大用戶的喜愛。
SQL Server
    1、定位:
    商業、Windows平臺、關係型數據庫
    最早接觸、與微軟體系結合緊密的的商業數據庫,屬於“微軟技術體系”
    2、特點:
    (1)支持事務,符合關係型數據庫原理,符合ACID,支持多數SQL規範,以二維表方式組織數據
    (2)在Windows平臺,用圖形界面進行軟件安裝;
    使用:在Windows平臺,使用SQL Server Mangement Studio圖形界面進行安裝;
    (3)一般通過Windows資源管理和SQL server圖形工具進行系統和數據庫性能顯示;
    (4)通常用第三方備份恢復軟件進行備份恢復;
    高可用:通過共享存儲和雙機熱備的方式,可以實現SQL Server數據庫的高可用;
    (5) SQL Server數據庫集羣採用共存存儲的方式,通過硬件垂直升級來對數據庫集羣進行擴展;
    3、適用場景:
    大多數OLTP場景(與微軟體系配合)
    4、選擇注意:
    SQL Server與微軟技術體系結合比較緊密,絕大多數工作,都是通過圖形界面完成,對於習慣使用命令行的DBA可能會有不習慣;
    SQL server對雙引號,大小寫,元信息的管理和處理方式,與其他數據庫很不相同,需要注意;
    使用SQL Server滿足OLTP業務,會有比較好的效果,但對於大數據量的OLAP業務,最好還是選用專門的OLAP架構,不要在同一個SQL Server實例上混用OLTP和OLAP業務;
    SQL server屬於商業軟件,需要注意版權和licence授權費用;


3. Oracle數據庫

    [下載地址]
    Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關係數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關係數據庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。
    1、定位:
    商業、多平臺、關係型數據庫
    功能最強大、最複雜、市場佔比最高的商業數據庫
    2、特點:
    (1)支持事務,符合關係型數據庫原理,符合ACID,支持多數SQL規範,以二維表方式組織數據
    (2)Oracle單實例數據庫部署相對容易,但Oracle RAC集羣環境,部署的步驟和依賴條件都比較多;
    (3)通常使用命令行工具,進行各種數據庫的管理,通常也可以用shell腳本和python腳本提高Oracle數據庫管理效率;各種管理功能,都比較強大;
    (4)Oracle官方有比較全面的監控工具,常用的第三方監控平臺,如zabbix,cacti,lepus等都有對Oracle數據庫的各項指標的完善監控;
    (5)支持冷備份和熱備份,可以用 exp/imp , expdp/impdp等進行邏輯備份和恢復,可以使用強大的RMAN工具進行專業的物理熱備份和恢復;
    (6)Oracle數據庫的高可用架構,可以用第三方雙機熱備軟件,結合Oracle單實例實現;可以使用Oracle Dataguard,實現master和standby的備份;可以使用 Oracle RAC集羣實現實例級別的高可用和負載均衡,使用ASM實現存儲級別的高可用;
    (7)由於Oracle集羣採用共享存儲的方式,一般只能通過垂直硬件升級進行升級;
    3、適用場景:
    絕大多數OLTP場景,部分OLAP
    4、選擇注意:
    Oracle從架構到運維,可以說是最難的數據庫,學習和使用難度較高。


4. Postgresql數據庫

    [下載地址]
    PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名爲PostgreSQL,版本 4.2爲基礎的對象關係型數據庫管理系統(ORDBMS)。PostgreSQL支持大部分 SQL標準並且提供了許多其他現代特性:複雜查詢、外鍵、觸發器、視圖、事務完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的數據類型、函數、操作符、聚集函數、索引。免費使用、修改、和分發 PostgreSQL,不管是私用、商用、還是學術研究使用。
    PostgreSQL 是一個免費的對象-關係數據庫服務器(數據庫管理系統),它在靈活的 BSD-風格許可證下發行。它提供了相對其他開放源代碼數據庫系統(比如 MySQL 和 Firebird),和專有系統(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一種選擇。
PostgreSQL
    1、定位:
    開源、多平臺、關係型數據庫,功能最強大的開源數據庫。
    2、特點:
    (1)支持事務,符合關係型數據庫原理,符合ACID,支持多數SQL規範,以二維表方式組織數據;
    (2)postgresql需要先準備好Python等環境,然後編譯安裝軟件,初始化數據庫,啓動實例,整個部署過程相對比較清晰;
    (3)postgresql數據庫可以使用命令行方式進行管理,也可以通過pgadmin圖形工具進行管理;各種管理功能,都比較強大;
    (4) 可以再命令行中查看各種性能視圖和狀態視圖;相對其他其他數據庫,並沒有太好的圖形監控工具和平臺;
    (5)支持冷備份和熱備份,可以用 COPY命令進行邏輯導出和導入;用pgdump和pgrestore進行物理備份和恢復;
    (6)postgresql 官方支持 master-standby複製;也可以用Slony-I第三方組件進行數據庫同步;
    (7)postgresql可以通過修改源碼實現的postgres-XC實現水平擴展;
    3、適用場景:
    絕大多數OLTP場景,部分OLAP
    適合目前互聯網需要的一些信息,比如地理位置信息處理;
    以postgresql作爲底層數據庫的greenplum數據倉庫,是主流的MPP數據倉庫;
    基於postgresql的TimeScaleDB,是目前比較火的時序數據庫之一;
    4、選擇注意:
    Postgresql的架構、使用難度、功能性介於Oracle數據庫和MySQL數據庫之間,但因其開源的推動,各方面也有不錯的發展;
    Postgresql目前還沒有比較主流和好用的監控平臺,這是postgresql數據庫目前存在的一個不足。

5. Sybase數據庫

    [下載地址]
    美國Sybase公司研製的一種關係型數據庫系統,是一種典型的UNIX或WindowsNT平臺上客戶機/服務器環境下的大型數據庫系統。
    Sybase提供了一套應用程序編程接口和庫,可以與非Sybase數據源及服務器集成,允許在多個數據庫之間複製數據,適於創建多層應用。系統具有完備的觸發器、存儲過程、規則以及完整性定義,支持優化查詢,具有較好的數據安全性。
    Sybase通常與SybaseSQLAnywhere用於客戶機/服務器環境,前者作爲服務器數據庫,後者爲客戶機數據庫,採用該公司研製的PowerBuilder爲開發工具,在我國大中型系統中具有廣泛的應用。
SYBASE


6. DB2數據庫

    [下載地址]
    DB2主要應用於大型應用系統,具有較好的可伸縮性,可支持從大型機到單用戶環境,應用於所有常見的服務器操作系統平臺下。
    DB2提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模應用程序的執行能力,具有與平臺無關的基本功能和SQL命令。DB2採用了數據分級技術,能夠使大型機數據很方便地下載到LAN數據庫服務器,使得客戶機/服務器用戶和基於LAN的應用程序可以訪問大型機數據,並使數據庫本地化及遠程連接透明化。
    DB2以擁有一個非常完備的查詢優化器而著稱,其外部連接改善了查詢性能,並支持多任務並行查詢。 DB2具有很好的網絡支持能力,每個子系統可以連接十幾萬個分佈式用戶,可同時激活上千個活動線程,對大型分佈式應用系統尤爲適用。
DB2


7. Access數據庫

    [官網下載地址] [破解下載地址]
    Microsoft Office Access是由微軟發佈的關係數據庫管理系統。它結合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項特點,是 Microsoft Office 的系統程序之一。
    Microsoft Office Access是微軟把數據庫引擎的圖形用戶界面和軟件開發工具結合在一起的一個數據庫管理系統。它是微軟OFFICE的一個成員, 在包括專業版和更高版本的office版本里面被單獨出售。
    MS ACCESS以它自己的格式將數據存儲在基於Access Jet的數據庫引擎裏。它還可以直接導入或者鏈接數據(這些數據存儲在其他應用程序和數據庫)。
    軟件開發人員和數據架構師可以使用Microsoft Access開發應用軟件,“高級用戶”可以使用它來構建軟件應用程序。和其他辦公應用程序一樣,ACCESS支持Visual Basic宏語言,它是一個面向對象的編程語言,可以引用各種對象,包括DAO(數據訪問對象),ActiveX數據對象,以及許多其他的ActiveX組件。可視對象用於顯示錶和報表,他們的方法和屬性是在VBA編程環境下,VBA代碼模塊可以聲明和調用Windows操作系統函數。
Access
    (1)完善地管理各種數據庫對象,具有強大的數據組織、用戶管理、安全檢查等功能。
    (2)強大的數據處理功能
    (2)強大的數據處理功能(3)可以方便地生成各種數據對象,利用存儲的數據建立窗體和報表,可視性好
    (4)作爲Office套件的一部分,可以與Office集成,實現無縫連接
    (5)能夠利用Web檢索和發佈數據,實現與Internet的連接。 Access主要適用於中小型應用系統,或作爲客戶機/服務器系統中的客戶端數據庫。



非關係型數據庫
1. Mongodb數據庫

    [下載地址]
    MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
    MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
mongoDB
    1、定位:
    開源、多平臺、文檔型nosql數據庫
    非常主流的文檔型nosql數據庫,“最像關係型數據庫”,定位於“靈活”的nosql數據庫
    2、特點:
    (1)數據文件存儲格式爲BSON,模式自由,整體架構與關係型數據庫有對應關係,具有較好的高可用性和伸縮性,有插件式存儲引擎,新版本默認是writedtiger存儲引擎;
    (2)部署比較簡答,下載軟件,設置好配置文件即可啓動服務;
    (3)不支持SQL語句,使用與SQL對應的json方式管理數據庫;
    (4)有比較豐富的監控和性能命令,官方有比較完善的圖形監控系統,但需要購買;
    (5)支持冷備份和熱備份,可以使用mongoexport/mongimport進行邏輯備份,也可以使用基於oplog的mongodump/mongorestore物理熱備份;
    (6)MongoDB master-slave主從複製:在master節點上加 --master參數,從數據庫加 -slave和-source參數,就可以實現同步,這種目前不建議;ReplicaSets複製集,在mongodb 1.6之後,開發了新的 replicaset,着呢家了故障自動切換和自動修復成員節點,各個DB將數據一致,建議使用這種方式;可以測試讀寫分離和故障轉移;
    (7)mongodb海量數據水平拆分,將數據分別存儲在sharding各個節點上,構建出分佈式集羣。Sharding架構由 底層多個mongodb Shared Server,config水平拆分配置庫config server,前端路由 route process,三部分構成。Sharding集羣底層可以是mongodb單實例,也可以高可用的replicaSet複製集。
    3、適用場景:
    網站後臺數據庫:mongodb非常適合實話實說插入、更新與查詢,並可以實時複製和高伸縮性,適合更新迭代快、需求變更多、以對象爲主的網站應用;
    小文件系統:對於json文件,二進制數據,適合用mongodb進行存儲和查詢
    日誌分析系統:對於數據量大的日誌文件,IM會話消息記錄,適合用mongodb來保存和查詢;
    緩存系統:mongodb數據庫也會使用大量的內存,合理的設計,也可以作爲緩存系統使用;不過目前緩存系統使用更多的方案是 memcached和redis。
    4、選擇注意:
    Mongodb不適合的場景:
    高度事務性的系統:即傳統的OLTP業務,mongodb,乃至其他nosql,對事務性支持都不太好;
    傳統的統計分析應用:即傳統的OLAP業務,需要高度優化的查詢方式,mongodb支持不好;
    使用SQL語句比較方便的業務:mongodb是json類型的查詢方式,雖然也靈活,但不如用SQL方便,如果業務和適合SQL,則就不太合適mongodb了。


2. Redis數據庫

    [下載地址]
    redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
    Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹複製。存盤可以有意無意的對數據進行寫操作。由於完全實現了發佈/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發佈記錄。同步對讀取操作的可擴展性和數據冗餘很有幫助。
Redis
    1、定位:
    開源、Linux平臺、key-value鍵值型Nosql數據庫
    簡單穩定,非常主流的、全數據in-momory、定位於“快”的鍵值型nosql數據庫
    2、特點:
    (1)命令執行速度非常看,讀寫性能可達10萬/秒;數據結構是key-value類似字典的功能,可以鍵過期-緩存,發佈訂閱-消息系統,簡單的事物功能;
    (2)用下載軟件介質,編譯安裝的方式,可以很快完成數據庫部署;服務啓動redis-server,可以用默認配置、運行參數配置、配置文件啓動,三種方式;redis在Linux平臺支撐較好,官方沒有Windows版本,微軟維護了一個分支;
    (3)用redis-cli客戶端連接,一般用簡單的 set ,get,del 進行數據管理; 在單實例redis的基礎上,進行可以數據持久化,主從複製,高可用和分佈式等功能;
    (4)在命令行界面有一些常用的命令顯示狀態和性能,在圖形界面方面,有開源監控工具來監控和記錄數據庫的狀態,比如cachecloud;
    (5)直接備份成物理問價的RDB持久化,基於AOF日誌的實時AOF持久化
    (6)官方的 redis sentinel哨兵高可用集羣
    (7)官方基於分配槽的 redis cluster分佈式集羣
    3、適用場景:
    緩存
    基礎消息隊列系統
    排行榜系統
    計數器使用
    社交網站的點贊、粉絲、下拉刷新等應用;
    4、選擇注意:
    Redis的使用場景,是redis適合的解決的問題,也有不適合解決的問題。
    從數據規模角度講,小數據規模使用redis比較合適,大數據規模使用redis不合適;(大數據規模,在一定程度上,可以用SSDB替代redis使用);
    從數據冷熱角度看,熱數據適合放在redis中,冷數據不適合放在redis中。


3. Hbase數據庫

    [下載地址]
    HBase是一個分佈式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分佈式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。
    HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另一個不同的是HBase基於列的而不是基於行的模式。
HBASE
    1、定位:
    開源、Linux平臺、列存儲nosql數據庫
    可用於海量數據存儲、與Hadoop生態圈結合、定位於“大”的列存儲nosql數據庫
    2、特點:
    (1)命令執行速度非常看,讀寫性能可達10萬/秒;數據結構是key-value類似字典的功能,可以鍵過期-緩存,發佈訂閱-消息系統,簡單的事物功能;
    (2)相對其他數據庫,hbase的部署比較複雜,依賴Hadoop,zookeeper等組件,Hbase集羣包括一個mater節點,多個regionServer,zookeeper管理所有regionServer,需要依次部署Hadoop、zookeeper之後,再部署HBASE集羣;
    (3)用redis-cli客戶端連接,一般用簡單的 set ,get,del 進行數據管理; 在單實例redis的基礎上,進行可以數據持久化,主從複製,高可用和分佈式等功能;
    (4)在命令行界面有一些常用的命令顯示狀態和性能,在圖形界面方面,有開源監控工具來監控和記錄數據庫的狀態,比如cachecloud;
    (5)Hbase一般用作海量數據的倉庫,本身通過多層副本來保證數據安全性,不用進行專門的備份
    (6)HBASE集羣基於Hadoop,需要依次部署Hadoop單機模式、集羣模式、HA模式,通過Hadoop HA實現高可用;
    (7)HBASE以集羣形式,依次是單機模式,僞分佈模式,完全分佈模式,底層基於HDFS,zookeeper可以很好地進行擴展;
    3、適用場景:
    兩大用途:
    用於簡單數據寫入和海量、結構簡單數據查詢的業務場景;
    用於成爲其他數據庫備份和下沉的數據庫;
    4、選擇注意:
    Hbase不適合的場景:對數據分析需求高,需要能夠用sql或者簡單的MapReduce實現分析需求的業務場景,不適合用Hbase;
    單表數據量,不超過千萬時,使用Hbase,體現不出Hbase的優勢,而且會比較慢,不適合用Hbase。


4. Memcaced數據庫

    [下載地址]
    Memcaced是一個開源的、高性能的、具有分佈式內存對象的緩存系統。通過它可以減輕數據庫負載,加速動態的web應用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年開發完成。目前全球有非常多的用戶都在使用它來架構主機的大負載網站或提升主機的高訪問網站的響應速度。注意:Memcache 是這個項目的名稱,而Memcached是服務端的主程序文件名。
    緩存一般用來保存一些進程被存取的對象或數據,通過緩存來存取對象或數據要比在磁盤上存取塊很多,前者是內存,後者是磁盤、Memcached是一種純內存緩存系統,把經常存取的對象或數據緩存在memcached的內存中,這些被緩存的數據被程序通過API的方式被讀取,memcached裏面的數據就像一張巨大的hash表,數據以key-value對的方式存在。Memcached通過緩存經常被存取的對象或數據,從而減輕頻繁讀取數據庫的壓力,提高網站的響應速度,構建出快速更快的可擴展的Web應用。
Memcached



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章