數(shù)據(jù)庫(kù)的操作越來(lái)越成為整個(gè)應(yīng)用的性能瓶頸了,這點(diǎn)對(duì)于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫(kù)的性能,這并不只是DBA才需要擔(dān)心的事,而這更是我們程序員需要去關(guān)注的事情。當(dāng)我們?nèi)ピO(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu),對(duì)操作數(shù)據(jù)庫(kù)時(shí)(尤其是查表時(shí)的SQL語(yǔ)句)下面就有小編為您帶來(lái)數(shù)據(jù)庫(kù)有哪幾種的相關(guān)介紹。
MySQL是最受歡迎的開源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它由 MySQL AB開發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來(lái)結(jié)合開源價(jià)值和方法論的第二代開源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。
MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫(kù)服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass- deployed)的軟件中去。
開源、多平臺(tái)、關(guān)系型數(shù)據(jù)庫(kù)
目前使用最廣泛、流行度最高的的開源數(shù)據(jù)庫(kù)。
(1)支持事務(wù),符合關(guān)系型數(shù)據(jù)庫(kù)原理,符合ACID,支持多數(shù)SQL規(guī)范,以二維表方式組織數(shù)據(jù),有插件式存儲(chǔ)引擎,支持多種存儲(chǔ)引擎格式
(2)用編譯安裝的方式,或者二進(jìn)制包的方式,按照“安裝軟件-創(chuàng)建實(shí)例-庫(kù)表用戶初始化”,可以很快完成數(shù)據(jù)庫(kù)部署
(3)使用標(biāo)準(zhǔn)的SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)管理,簡(jiǎn)單SQL語(yǔ)句的并發(fā)和性能較好,對(duì)視圖、存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器等支持的不是太好
(4)在命令行界面有一些常用的命令顯示狀態(tài)和性能,在圖形界面方面,有比較多的開源監(jiān)控工具來(lái)監(jiān)控和記錄數(shù)據(jù)庫(kù)的狀態(tài),比如zabbix,nagios,cacti,lepus等
(5)邏輯備份 mysqldump/mysqldumper ,物理備份 用xtrabackup等工具進(jìn)行備份;
(6)MySQL高可用有多種方案,官方有基礎(chǔ)的master-slave主從復(fù)制,新版本的innodb cluster,第三方的有MHA等高可用方案;
(7)MySQL水平拆分,可以通過(guò)水平拆分proxy中間進(jìn)行邏輯映射和拆分,擴(kuò)大MySQL數(shù)據(jù)庫(kù)的并發(fā)能力和吞吐量。
默認(rèn)的innodb存儲(chǔ)引擎,支持高并發(fā),簡(jiǎn)單的絕大部分OLTP場(chǎng)景;
Tokudb存儲(chǔ)引擎,使用高并發(fā)insert的場(chǎng)景;
Inforbright存儲(chǔ)引擎,可以進(jìn)行列壓縮和OLAP統(tǒng)計(jì)查詢場(chǎng)景;
使用MySQL進(jìn)行OLTP業(yè)務(wù)時(shí),需要注意數(shù)據(jù)量級(jí),如果數(shù)據(jù)量級(jí)過(guò)大,需要進(jìn)行水平拆分;
如果有OLAP需求,可以結(jié)合其他架構(gòu)綜合考慮。
SQL Server是由微軟開發(fā)的數(shù)據(jù)庫(kù)管理系統(tǒng),是Web上最流行的用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù),它已廣泛用于電子商務(wù)、銀行、保險(xiǎn)、電力等與數(shù)據(jù)庫(kù)有關(guān)的行業(yè)。
目前最新版本是SQL Server 2005,它只能在Windows上運(yùn)行,操作系統(tǒng)的系統(tǒng)穩(wěn)定性對(duì)數(shù)據(jù)庫(kù)十分重要。并行實(shí)施和共存模型并不成熟,很難處理日益增多的用戶數(shù)和數(shù)據(jù)卷,伸縮性有限。
SQL Server 提供了眾多的Web和電子商務(wù)功能,如對(duì)XML和Internet標(biāo)準(zhǔn)的豐富支持,通過(guò)Web對(duì)數(shù)據(jù)進(jìn)行輕松安全的訪問,具有強(qiáng)大的、靈活的、基于Web的和安全的應(yīng)用程序管理等。而且,由于其易操作性及其友好的操作界面,深受廣大用戶的喜愛。
商業(yè)、Windows平臺(tái)、關(guān)系型數(shù)據(jù)庫(kù)
最早接觸、與微軟體系結(jié)合緊密的的商業(yè)數(shù)據(jù)庫(kù),屬于“微軟技術(shù)體系”
(1)支持事務(wù),符合關(guān)系型數(shù)據(jù)庫(kù)原理,符合ACID,支持多數(shù)SQL規(guī)范,以二維表方式組織數(shù)據(jù)
(2)在Windows平臺(tái),用圖形界面進(jìn)行軟件安裝;
使用:在Windows平臺(tái),使用SQL Server Mangement Studio圖形界面進(jìn)行安裝;
(3)一般通過(guò)Windows資源管理和SQL server圖形工具進(jìn)行系統(tǒng)和數(shù)據(jù)庫(kù)性能顯示;
(4)通常用第三方備份恢復(fù)軟件進(jìn)行備份恢復(fù);
高可用:通過(guò)共享存儲(chǔ)和雙機(jī)熱備的方式,可以實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)的高可用;
(5) SQL Server數(shù)據(jù)庫(kù)集群采用共存存儲(chǔ)的方式,通過(guò)硬件垂直升級(jí)來(lái)對(duì)數(shù)據(jù)庫(kù)集群進(jìn)行擴(kuò)展;
大多數(shù)OLTP場(chǎng)景(與微軟體系配合)
SQL Server與微軟技術(shù)體系結(jié)合比較緊密,絕大多數(shù)工作,都是通過(guò)圖形界面完成,對(duì)于習(xí)慣使用命令行的DBA可能會(huì)有不習(xí)慣;
SQL server對(duì)雙引號(hào),大小寫,元信息的管理和處理方式,與其他數(shù)據(jù)庫(kù)很不相同,需要注意;
使用SQL Server滿足OLTP業(yè)務(wù),會(huì)有比較好的效果,但對(duì)于大數(shù)據(jù)量的OLAP業(yè)務(wù),最好還是選用專門的OLAP架構(gòu),不要在同一個(gè)SQL Server實(shí)例上混用OLTP和OLAP業(yè)務(wù);
SQL server屬于商業(yè)軟件,需要注意版權(quán)和licence授權(quán)費(fèi)用;
Oracle Database,又名Oracle RDBMS,或簡(jiǎn)稱Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它是在數(shù)據(jù)庫(kù)領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品??梢哉f(shuō)Oracle數(shù)據(jù)庫(kù)系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的 適應(yīng)高吞吐量的數(shù)據(jù)庫(kù)解決方案。
商業(yè)、多平臺(tái)、關(guān)系型數(shù)據(jù)庫(kù)
功能最強(qiáng)大、最復(fù)雜、市場(chǎng)占比最高的商業(yè)數(shù)據(jù)庫(kù)
(1)支持事務(wù),符合關(guān)系型數(shù)據(jù)庫(kù)原理,符合ACID,支持多數(shù)SQL規(guī)范,以二維表方式組織數(shù)據(jù)
(2)Oracle單實(shí)例數(shù)據(jù)庫(kù)部署相對(duì)容易,但Oracle RAC集群環(huán)境,部署的步驟和依賴條件都比較多;
(3)通常使用命令行工具,進(jìn)行各種數(shù)據(jù)庫(kù)的管理,通常也可以用shell腳本和python腳本提高Oracle數(shù)據(jù)庫(kù)管理效率;各種管理功能,都比較強(qiáng)大;
(4)Oracle官方有比較全面的監(jiān)控工具,常用的第三方監(jiān)控平臺(tái),如zabbix,cacti,lepus等都有對(duì)Oracle數(shù)據(jù)庫(kù)的各項(xiàng)指標(biāo)的完善監(jiān)控;
(5)支持冷備份和熱備份,可以用 exp/imp , expdp/impdp等進(jìn)行邏輯備份和恢復(fù),可以使用強(qiáng)大的RMAN工具進(jìn)行專業(yè)的物理熱備份和恢復(fù);
(6)Oracle數(shù)據(jù)庫(kù)的高可用架構(gòu),可以用第三方雙機(jī)熱備軟件,結(jié)合Oracle單實(shí)例實(shí)現(xiàn);可以使用Oracle Dataguard,實(shí)現(xiàn)master和standby的備份;可以使用 Oracle RAC集群實(shí)現(xiàn)實(shí)例級(jí)別的高可用和負(fù)載均衡,使用ASM實(shí)現(xiàn)存儲(chǔ)級(jí)別的高可用;
(7)由于Oracle集群采用共享存儲(chǔ)的方式,一般只能通過(guò)垂直硬件升級(jí)進(jìn)行升級(jí);
絕大多數(shù)OLTP場(chǎng)景,部分OLAP
Oracle從架構(gòu)到運(yùn)維,可以說(shuō)是最難的數(shù)據(jù)庫(kù),學(xué)習(xí)和使用難度較高。
PostgreSQL是以加州大學(xué)伯克利分校計(jì)算機(jī)系開發(fā)的 POSTGRES,現(xiàn)在已經(jīng)更名為PostgreSQL,版本 4.2為基礎(chǔ)的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)。PostgreSQL支持大部分 SQL標(biāo)準(zhǔn)并且提供了許多其他現(xiàn)代特性:復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴(kuò)展,比如, 通過(guò)增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引。免費(fèi)使用、修改、和分發(fā) PostgreSQL,不管是私用、商用、還是學(xué)術(shù)研究使用。
PostgreSQL 是一個(gè)免費(fèi)的對(duì)象-關(guān)系數(shù)據(jù)庫(kù)服務(wù)器(數(shù)據(jù)庫(kù)管理系統(tǒng)),它在靈活的 BSD-風(fēng)格許可證下發(fā)行。它提供了相對(duì)其他開放源代碼數(shù)據(jù)庫(kù)系統(tǒng)(比如 MySQL 和 Firebird),和專有系統(tǒng)(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一種選擇。
開源、多平臺(tái)、關(guān)系型數(shù)據(jù)庫(kù),功能最強(qiáng)大的開源數(shù)據(jù)庫(kù)。
(1)支持事務(wù),符合關(guān)系型數(shù)據(jù)庫(kù)原理,符合ACID,支持多數(shù)SQL規(guī)范,以二維表方式組織數(shù)據(jù);
(2)postgresql需要先準(zhǔn)備好Python等環(huán)境,然后編譯安裝軟件,初始化數(shù)據(jù)庫(kù),啟動(dòng)實(shí)例,整個(gè)部署過(guò)程相對(duì)比較清晰;
(3)postgresql數(shù)據(jù)庫(kù)可以使用命令行方式進(jìn)行管理,也可以通過(guò)pgadmin圖形工具進(jìn)行管理;各種管理功能,都比較強(qiáng)大;
(4) 可以在命令行中查看各種性能視圖和狀態(tài)視圖;相對(duì)其他其他數(shù)據(jù)庫(kù),并沒有太好的圖形監(jiān)控工具和平臺(tái);
(5)支持冷備份和熱備份,可以用 COPY命令進(jìn)行邏輯導(dǎo)出和導(dǎo)入;用pgdump和pgrestore進(jìn)行物理備份和恢復(fù);
(6)postgresql 官方支持 master-standby復(fù)制;也可以用Slony-I第三方組件進(jìn)行數(shù)據(jù)庫(kù)同步;
(7)postgresql可以通過(guò)修改源碼實(shí)現(xiàn)的postgres-XC實(shí)現(xiàn)水平擴(kuò)展;
絕大多數(shù)OLTP場(chǎng)景,部分OLAP
適合目前互聯(lián)網(wǎng)需要的一些信息,比如地理位置信息處理;
以postgresql作為底層數(shù)據(jù)庫(kù)的greenplum數(shù)據(jù)倉(cāng)庫(kù),是主流的MPP數(shù)據(jù)倉(cāng)庫(kù);
基于postgresql的TimeScaleDB,是目前比較火的時(shí)序數(shù)據(jù)庫(kù)之一;
Postgresql的架構(gòu)、使用難度、功能性介于Oracle數(shù)據(jù)庫(kù)和MySQL數(shù)據(jù)庫(kù)之間,但因其開源的推動(dòng),各方面也有不錯(cuò)的發(fā)展;
Postgresql目前還沒有比較主流和好用的監(jiān)控平臺(tái),這是postgresql數(shù)據(jù)庫(kù)目前存在的一個(gè)不足。
美國(guó)Sybase公司研制的一種關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),是一種典型的UNIX或WindowsNT平臺(tái)上客戶機(jī)/服務(wù)器環(huán)境下的大型數(shù)據(jù)庫(kù)系統(tǒng)。
Sybase提供了一套應(yīng)用程序編程接口和庫(kù),可以與非Sybase數(shù)據(jù)源及服務(wù)器集成,允許在多個(gè)數(shù)據(jù)庫(kù)之間復(fù)制數(shù)據(jù),適于創(chuàng)建多層應(yīng)用。系統(tǒng)具有完備的觸發(fā)器、存儲(chǔ)過(guò)程、規(guī)則以及完整性定義,支持優(yōu)化查詢,具有較好的數(shù)據(jù)安全性。
Sybase通常與SybaseSQLAnywhere用于客戶機(jī)/服務(wù)器環(huán)境,前者作為服務(wù)器數(shù)據(jù)庫(kù),后者為客戶機(jī)數(shù)據(jù)庫(kù),采用該公司研制的PowerBuilder為開發(fā)工具,在我國(guó)大中型系統(tǒng)中具有廣泛的應(yīng)用。
DB2主要應(yīng)用于大型應(yīng)用系統(tǒng),具有較好的可伸縮性,可支持從大型機(jī)到單用戶環(huán)境,應(yīng)用于所有常見的服務(wù)器操作系統(tǒng)平臺(tái)下。
DB2提供了高層次的數(shù)據(jù)利用性、完整性、安全性、可恢復(fù)性,以及小規(guī)模到大規(guī)模應(yīng)用程序的執(zhí)行能力,具有與平臺(tái)無(wú)關(guān)的基本功能和SQL命令。
DB2采用了數(shù)據(jù)分級(jí)技術(shù),能夠使大型機(jī)數(shù)據(jù)很方便地下載到LAN數(shù)據(jù)庫(kù)服務(wù)器,使得客戶機(jī)/服務(wù)器用戶和基于LAN的應(yīng)用程序可以訪問大型機(jī)數(shù)據(jù),并使數(shù)據(jù)庫(kù)本地化及遠(yuǎn)程連接透明化。
DB2以擁有一個(gè)非常完備的查詢優(yōu)化器而著稱,其外部連接改善了查詢性能,并支持多任務(wù)并行查詢。 DB2具有很好的網(wǎng)絡(luò)支持能力,每個(gè)子系統(tǒng)可以連接十幾萬(wàn)個(gè)分布式用戶,可同時(shí)激活上千個(gè)活動(dòng)線程,對(duì)大型分布式應(yīng)用系統(tǒng)尤為適用。
Microsoft Office Access是由微軟發(fā)布的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它結(jié)合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項(xiàng)特點(diǎn),是 Microsoft Office 的系統(tǒng)程序之一。
Microsoft Office Access是微軟把數(shù)據(jù)庫(kù)引擎的圖形用戶界面和軟件開發(fā)工具結(jié)合在一起的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。它是微軟OFFICE的一個(gè)成員, 在包括專業(yè)版和更高版本的office版本里面被單獨(dú)出售。
MS ACCESS以它自己的格式將數(shù)據(jù)存儲(chǔ)在基于Access Jet的數(shù)據(jù)庫(kù)引擎里。它還可以直接導(dǎo)入或者鏈接數(shù)據(jù)(這些數(shù)據(jù)存儲(chǔ)在其他應(yīng)用程序和數(shù)據(jù)庫(kù))。
軟件開發(fā)人員和數(shù)據(jù)架構(gòu)師可以使用Microsoft Access開發(fā)應(yīng)用軟件,“高級(jí)用戶”可以使用它來(lái)構(gòu)建軟件應(yīng)用程序。和其他辦公應(yīng)用程序一樣,ACCESS支持Visual Basic宏語(yǔ)言,它是一個(gè)面向?qū)ο蟮木幊陶Z(yǔ)言,可以引用各種對(duì)象,包括DAO(數(shù)據(jù)訪問對(duì)象),ActiveX數(shù)據(jù)對(duì)象,以及許多其他的ActiveX組件。可視對(duì)象用于顯示表和報(bào)表,他們的方法和屬性是在VBA編程環(huán)境下,VBA代碼模塊可以聲明和調(diào)用Windows操作系統(tǒng)函數(shù)。
(1)完善地管理各種數(shù)據(jù)庫(kù)對(duì)象,具有強(qiáng)大的數(shù)據(jù)組織、用戶管理、安全檢查等功能。
(2)強(qiáng)大的數(shù)據(jù)處理功能
(2)強(qiáng)大的數(shù)據(jù)處理功能(3)可以方便地生成各種數(shù)據(jù)對(duì)象,利用存儲(chǔ)的數(shù)據(jù)建立窗體和報(bào)表,可視性好
(4)作為Office套件的一部分,可以與Office集成,實(shí)現(xiàn)無(wú)縫連接
(5)能夠利用Web檢索和發(fā)布數(shù)據(jù),實(shí)現(xiàn)與Internet的連接。 Access主要適用于中小型應(yīng)用系統(tǒng),或作為客戶機(jī)/服務(wù)器系統(tǒng)中的客戶端數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
開源、多平臺(tái)、文檔型nosql數(shù)據(jù)庫(kù)
非常主流的文檔型nosql數(shù)據(jù)庫(kù),“最像關(guān)系型數(shù)據(jù)庫(kù)”,定位于“靈活”的nosql數(shù)據(jù)庫(kù)
(1)數(shù)據(jù)文件存儲(chǔ)格式為BSON,模式自由,整體架構(gòu)與關(guān)系型數(shù)據(jù)庫(kù)有對(duì)應(yīng)關(guān)系,具有較好的高可用性和伸縮性,有插件式存儲(chǔ)引擎,新版本默認(rèn)是writedtiger存儲(chǔ)引擎;
(2)部署比較簡(jiǎn)答,下載軟件,設(shè)置好配置文件即可啟動(dòng)服務(wù);
(3)不支持SQL語(yǔ)句,使用與SQL對(duì)應(yīng)的json方式管理數(shù)據(jù)庫(kù);
(4)有比較豐富的監(jiān)控和性能命令,官方有比較完善的圖形監(jiān)控系統(tǒng),但需要購(gòu)買;
(5)支持冷備份和熱備份,可以使用mongoexport/mongimport進(jìn)行邏輯備份,也可以使用基于oplog的mongodump/mongorestore物理熱備份;
(6)MongoDB master-slave主從復(fù)制:在master節(jié)點(diǎn)上加 --master參數(shù),從數(shù)據(jù)庫(kù)加 -slave和-source參數(shù),就可以實(shí)現(xiàn)同步,這種目前不建議;ReplicaSets復(fù)制集,在mongodb 1.6之后,開發(fā)了新的 replicaset,著呢家了故障自動(dòng)切換和自動(dòng)修復(fù)成員節(jié)點(diǎn),各個(gè)DB將數(shù)據(jù)一致,建議使用這種方式;可以測(cè)試讀寫分離和故障轉(zhuǎn)移;
(7)mongodb海量數(shù)據(jù)水平拆分,將數(shù)據(jù)分別存儲(chǔ)在sharding各個(gè)節(jié)點(diǎn)上,構(gòu)建出分布式集群。Sharding架構(gòu)由 底層多個(gè)mongodb Shared Server,config水平拆分配置庫(kù)config server,前端路由 route process,三部分構(gòu)成。Sharding集群底層可以是mongodb單實(shí)例,也可以高可用的replicaSet復(fù)制集。
網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù):mongodb非常適合實(shí)話實(shí)說(shuō)插入、更新與查詢,并可以實(shí)時(shí)復(fù)制和高伸縮性,適合更新迭代快、需求變更多、以對(duì)象為主的網(wǎng)站應(yīng)用;
小文件系統(tǒng):對(duì)于json文件,二進(jìn)制數(shù)據(jù),適合用mongodb進(jìn)行存儲(chǔ)和查詢
日志分析系統(tǒng):對(duì)于數(shù)據(jù)量大的日志文件,IM會(huì)話消息記錄,適合用mongodb來(lái)保存和查詢;
緩存系統(tǒng):mongodb數(shù)據(jù)庫(kù)也會(huì)使用大量的內(nèi)存,合理的設(shè)計(jì),也可以作為緩存系統(tǒng)使用;不過(guò)目前緩存系統(tǒng)使用更多的方案是 memcached和redis。
Mongodb不適合的場(chǎng)景:
高度事務(wù)性的系統(tǒng):即傳統(tǒng)的OLTP業(yè)務(wù),mongodb,乃至其他nosql,對(duì)事務(wù)性支持都不太好;
傳統(tǒng)的統(tǒng)計(jì)分析應(yīng)用:即傳統(tǒng)的OLAP業(yè)務(wù),需要高度優(yōu)化的查詢方式,mongodb支持不好;
使用SQL語(yǔ)句比較方便的業(yè)務(wù):mongodb是json類型的查詢方式,雖然也靈活,但不如用SQL方便,如果業(yè)務(wù)和適合SQL,則就不太合適mongodb了。
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。這使得Redis可執(zhí)行單層樹復(fù)制。存盤可以有意無(wú)意的對(duì)數(shù)據(jù)進(jìn)行寫操作。由于完全實(shí)現(xiàn)了發(fā)布/訂閱機(jī)制,使得從數(shù)據(jù)庫(kù)在任何地方同步樹時(shí),可訂閱一個(gè)頻道并接收主服務(wù)器完整的消息發(fā)布記錄。同步對(duì)讀取操作的可擴(kuò)展性和數(shù)據(jù)冗余很有幫助。
開源、Linux平臺(tái)、key-value鍵值型Nosql數(shù)據(jù)庫(kù)
簡(jiǎn)單穩(wěn)定,非常主流的、全數(shù)據(jù)in-momory、定位于“快”的鍵值型nosql數(shù)據(jù)庫(kù)
(1)命令執(zhí)行速度非常快,讀寫性能可達(dá)10萬(wàn)/秒;數(shù)據(jù)結(jié)構(gòu)是key-value類似字典的功能,可以鍵過(guò)期-緩存,發(fā)布訂閱-消息系統(tǒng),簡(jiǎn)單的事物功能;
(2)用下載軟件介質(zhì),編譯安裝的方式,可以很快完成數(shù)據(jù)庫(kù)部署;服務(wù)啟動(dòng)redis-server,可以用默認(rèn)配置、運(yùn)行參數(shù)配置、配置文件啟動(dòng),三種方式;redis在Linux平臺(tái)支撐較好,官方?jīng)]有Windows版本,微軟維護(hù)了一個(gè)分支;
(3)用redis-cli客戶端連接,一般用簡(jiǎn)單的 set ,get,del 進(jìn)行數(shù)據(jù)管理; 在單實(shí)例redis的基礎(chǔ)上,進(jìn)行可以數(shù)據(jù)持久化,主從復(fù)制,高可用和分布式等功能;
(4)在命令行界面有一些常用的命令顯示狀態(tài)和性能,在圖形界面方面,有開源監(jiān)控工具來(lái)監(jiān)控和記錄數(shù)據(jù)庫(kù)的狀態(tài),比如cachecloud;
(5)直接備份成物理問價(jià)的RDB持久化,基于AOF日志的實(shí)時(shí)AOF持久化
(6)官方的 redis sentinel哨兵高可用集群
(7)官方基于分配槽的 redis cluster分布式集群
緩存
基礎(chǔ)消息隊(duì)列系統(tǒng)
排行榜系統(tǒng)
計(jì)數(shù)器使用
社交網(wǎng)站的點(diǎn)贊、粉絲、下拉刷新等應(yīng)用;
Redis的使用場(chǎng)景,是redis適合的解決的問題,也有不適合解決的問題。
從數(shù)據(jù)規(guī)模角度講,小數(shù)據(jù)規(guī)模使用redis比較合適,大數(shù)據(jù)規(guī)模使用redis不合適;(大數(shù)據(jù)規(guī)模,在一定程度上,可以用SSDB替代redis使用);
從數(shù)據(jù)冷熱角度看,熱數(shù)據(jù)適合放在redis中,冷數(shù)據(jù)不適合放在redis中。
HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。
HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。
1、定位:
開源、Linux平臺(tái)、列存儲(chǔ)nosql數(shù)據(jù)庫(kù)
可用于海量數(shù)據(jù)存儲(chǔ)、與Hadoop生態(tài)圈結(jié)合、定位于“大”的列存儲(chǔ)nosql數(shù)據(jù)庫(kù)
2、特點(diǎn):
(1)命令執(zhí)行速度非常快,讀寫性能可達(dá)10萬(wàn)/秒;數(shù)據(jù)結(jié)構(gòu)是key-value類似字典的功能,可以鍵過(guò)期-緩存,發(fā)布訂閱-消息系統(tǒng),簡(jiǎn)單的事物功能;
(2)相對(duì)其他數(shù)據(jù)庫(kù),hbase的部署比較復(fù)雜,依賴Hadoop,zookeeper等組件,Hbase集群包括一個(gè)mater節(jié)點(diǎn),多個(gè)regionServer,zookeeper管理所有regionServer,需要依次部署Hadoop、zookeeper之后,再部署HBASE集群;
(3)用redis-cli客戶端連接,一般用簡(jiǎn)單的 set ,get,del 進(jìn)行數(shù)據(jù)管理; 在單實(shí)例redis的基礎(chǔ)上,進(jìn)行可以數(shù)據(jù)持久化,主從復(fù)制,高可用和分布式等功能;
(4)在命令行界面有一些常用的命令顯示狀態(tài)和性能,在圖形界面方面,有開源監(jiān)控工具來(lái)監(jiān)控和記錄數(shù)據(jù)庫(kù)的狀態(tài),比如cachecloud;
(5)Hbase一般用作海量數(shù)據(jù)的倉(cāng)庫(kù),本身通過(guò)多層副本來(lái)保證數(shù)據(jù)安全性,不用進(jìn)行專門的備份
(6)HBASE集群基于Hadoop,需要依次部署Hadoop單機(jī)模式、集群模式、HA模式,通過(guò)Hadoop HA實(shí)現(xiàn)高可用;
(7)HBASE以集群形式,依次是單機(jī)模式,偽分布模式,完全分布模式,底層基于HDFS,zookeeper可以很好地進(jìn)行擴(kuò)展;
3、適用場(chǎng)景:
兩大用途:
用于簡(jiǎn)單數(shù)據(jù)寫入和海量、結(jié)構(gòu)簡(jiǎn)單數(shù)據(jù)查詢的業(yè)務(wù)場(chǎng)景;
用于成為其他數(shù)據(jù)庫(kù)備份和下沉的數(shù)據(jù)庫(kù);
4、選擇注意:
Hbase不適合的場(chǎng)景:對(duì)數(shù)據(jù)分析需求高,需要能夠用sql或者簡(jiǎn)單的MapReduce實(shí)現(xiàn)分析需求的業(yè)務(wù)場(chǎng)景,不適合用Hbase;
單表數(shù)據(jù)量,不超過(guò)千萬(wàn)時(shí),使用Hbase,體現(xiàn)不出Hbase的優(yōu)勢(shì),而且會(huì)比較慢,不適合用Hbase。
Memcaced是一個(gè)開源的、高性能的、具有分布式內(nèi)存對(duì)象的緩存系統(tǒng)。通過(guò)它可以減輕數(shù)據(jù)庫(kù)負(fù)載,加速動(dòng)態(tài)的web應(yīng)用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年開發(fā)完成。目前全球有非常多的用戶都在使用它來(lái)架構(gòu)主機(jī)的大負(fù)載網(wǎng)站或提升主機(jī)的高訪問網(wǎng)站的響應(yīng)速度。注意:Memcache 是這個(gè)項(xiàng)目的名稱,而Memcached是服務(wù)端的主程序文件名。
緩存一般用來(lái)保存一些進(jìn)程被存取的對(duì)象或數(shù)據(jù),通過(guò)緩存來(lái)存取對(duì)象或數(shù)據(jù)要比在磁盤上存取快很多,前者是內(nèi)存,后者是磁盤、Memcached是一種純內(nèi)存緩存系統(tǒng),把經(jīng)常存取的對(duì)象或數(shù)據(jù)緩存在memcached的內(nèi)存中,這些被緩存的數(shù)據(jù)被程序通過(guò)API的方式被讀取,memcached里面的數(shù)據(jù)就像一張巨大的hash表,數(shù)據(jù)以key-value對(duì)的方式存在
Memcached通過(guò)緩存經(jīng)常被存取的對(duì)象或數(shù)據(jù),從而減輕頻繁讀取數(shù)據(jù)庫(kù)的壓力,提高網(wǎng)站的響應(yīng)速度,構(gòu)建出快速更快的可擴(kuò)展的Web應(yīng)用。
特別明顯的是,對(duì)Web應(yīng)用而言,數(shù)據(jù)庫(kù)操作日益成為一個(gè)性能瓶頸。DBA并不只需要為數(shù)據(jù)庫(kù)的性能擔(dān)憂,程序員也應(yīng)該更加關(guān)注數(shù)據(jù)庫(kù)。當(dāng)設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)時(shí),對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作(尤其是SQL語(yǔ)句的查表), 以上就是小編為您介紹的數(shù)據(jù)庫(kù)有哪幾種,希望對(duì)您有所幫助。
[免責(zé)聲明]
文章標(biāo)題: 數(shù)據(jù)庫(kù)有哪幾種?
文章內(nèi)容為網(wǎng)站編輯整理發(fā)布,僅供學(xué)習(xí)與參考,不代表本網(wǎng)站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)溝通。發(fā)送郵件至36dianping@36kr.com,我們會(huì)在3個(gè)工作日內(nèi)處理。