【文末有福利】
1、PostgreSQL
PostgreSQL聽(tīng)起來(lái)比較陌生,其實(shí)這種關(guān)系數(shù)據(jù)庫(kù)解決方案自1997年以來(lái)一直存在,并且是Ruby,Python,Go等社區(qū)中的首選。
將PostgreSQL作為下一個(gè)項(xiàng)目的數(shù)據(jù)庫(kù)解決方案,您絕不會(huì)失望(國(guó)內(nèi)郵儲(chǔ)銀行開(kāi)始全面使用PostgreSQL作為oracle的替代品,騰訊正在大量使用PostgreSQL)。市面上已經(jīng)有大量不錯(cuò)的SQL客戶(hù)端可用于連接到PostgreSQL數(shù)據(jù)庫(kù)進(jìn)行管理和開(kāi)發(fā)。
與其他關(guān)系數(shù)據(jù)庫(kù)(特別是MySQL)相比,PostgreSQL具有一些引人入勝的功能,例如:
數(shù)組,Range(范圍),UUID,地理位置等的內(nèi)置數(shù)據(jù)類(lèi)型。
支持文檔存儲(chǔ)(JSON樣式),XML以及key-value存儲(chǔ)(Hstore)。
同步、異步復(fù)制
引入了使用其它程序語(yǔ)言編寫(xiě)函數(shù)的能力,可在PL,Perl,Python等中編寫(xiě)腳本
全文搜索
何時(shí)使用PostgreSQL
如果您正在開(kāi)始一個(gè)新項(xiàng)目,之前被MySQL事務(wù)鎖定打敗過(guò),那么現(xiàn)在是考慮PostgreSQL的好時(shí)機(jī)。
如果需要部分NoSQL功能用于混合數(shù)據(jù)模型,則PostgreSQL也具有明顯的優(yōu)勢(shì)。由于天然支持文檔和key-value存儲(chǔ),因此您無(wú)需去尋找,安裝,學(xué)習(xí)和維護(hù)另一個(gè)數(shù)據(jù)庫(kù)解決方案。
2、MariaDB
MariaDB是由開(kāi)發(fā)MySQL的同一人創(chuàng)建的,以替代MySQL。奇怪不?在2010年MySQL被甲骨文接管之后(通過(guò)收購(gòu)Sun Microsystems,這也是甲骨文控制Java的方式),MySQL的追隨者們開(kāi)始了一個(gè)新的開(kāi)源項(xiàng)目MariaDB。
MariaDB是使用與MySQL相同的代碼庫(kù)創(chuàng)建。顯而易見(jiàn),MariaDB可以用作MySQL的完全替代品。從MySQL遷移到MariaDB基本上做到零成本。不過(guò)切記,從MariaDB返回MySQL是不可能的,這可能導(dǎo)致永久性數(shù)據(jù)損壞!
盡管MariaDB本質(zhì)上是MySQL的克隆,但事實(shí)上并非如此。兩者之間的差異一直在增長(zhǎng)。采用MariaDB必須是您經(jīng)過(guò)深思熟慮的決定。MariaDB中有很多新特性:
真正的自由和開(kāi)放:由于沒(méi)有單個(gè)公司實(shí)體控制MariaDB,無(wú)需擔(dān)心突然而來(lái)的掠奪性許可。
滿(mǎn)足特定需求的存儲(chǔ)引擎。例如,用于分布式事務(wù)的Spider引擎;ColumnStore用于海量數(shù)據(jù)倉(cāng)庫(kù);ColumnStore引擎,用于并行,分布式存儲(chǔ);
與MySQL相比,速度有所提高,尤其是Aria存儲(chǔ)引擎可處理復(fù)雜的查詢(xún)。
更好的復(fù)制功能(多源復(fù)制)
JSON數(shù)據(jù)格式支持
虛擬列。對(duì)表的每一行都可以有一個(gè)“虛擬列”,該列可以用于保存一個(gè)對(duì)象的不同屬性,每個(gè)屬性在各行之間可以完全不同,“虛擬列”的個(gè)數(shù)和內(nèi)容完全有應(yīng)用程序來(lái)控制和解釋。
動(dòng)態(tài)列。動(dòng)態(tài)列允許在一個(gè)表中每個(gè)行可以存儲(chǔ)不同的列的集合。
何時(shí)使用MariaDB
如果您想真正地替代MySQL,希望保持創(chuàng)新并且不打算再次返回MySQL,則應(yīng)該使用MariaDB。例如可以在MariaDB中使用新的存儲(chǔ)引擎來(lái)補(bǔ)充項(xiàng)目中現(xiàn)有的關(guān)系數(shù)據(jù)模型。
3、CockroachDB
CockroachDB背后的團(tuán)隊(duì)似乎由受虐狂組成。有了這樣的產(chǎn)品名稱(chēng)"蟑螂"。
估計(jì)“蟑螂”的邏輯是無(wú)論發(fā)生什么事蟑螂都能生存繁殖。CockroachDB背后的團(tuán)隊(duì)(由前Google工程師組成)在使用傳統(tǒng)SQL解決方案時(shí)感到局限性。因?yàn)閺臍v史上看,SQL解決方案應(yīng)該托管在一臺(tái)機(jī)器上(數(shù)據(jù)不是那么大)。長(zhǎng)期以來(lái),沒(méi)有運(yùn)行SQL的數(shù)據(jù)庫(kù)集群。即使MySQL,PostgreSQL和MariaDB中使用各種復(fù)制技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)集群。事實(shí)上,通過(guò)復(fù)制功能來(lái)實(shí)現(xiàn)集群,使用起來(lái)還是復(fù)雜。
CoackroachDB希望改變這一點(diǎn),為SQL世界帶來(lái)輕松的分片,集群和高可用性。
何時(shí)使用CockroachDB
如果您一直使用SQL并且對(duì)MongoDB的擴(kuò)展功能有所了解,那么您會(huì)喜歡CockroachDB。CockroachDB可以快速設(shè)置集群,對(duì)集群進(jìn)行查詢(xún),我們終于不需要使用數(shù)據(jù)庫(kù)中間件這種臨時(shí)產(chǎn)物來(lái)實(shí)現(xiàn)集群數(shù)據(jù)庫(kù)了。
4、Neo4j【文末有福利】
近十年來(lái)最重要的發(fā)展之一就是關(guān)聯(lián)數(shù)據(jù)。幾乎事物都相互關(guān)聯(lián)。社交網(wǎng)絡(luò)是一個(gè)很好的例子。使用SQL乃至文檔數(shù)據(jù)庫(kù)構(gòu)建類(lèi)似的數(shù)據(jù)模型就是一場(chǎng)噩夢(mèng)。這些解決方案的理想數(shù)據(jù)結(jié)構(gòu)是圖形,它是完全不同的結(jié)構(gòu)。您可以考慮Neo4j這樣的圖形數(shù)據(jù)庫(kù)。
圖形數(shù)據(jù)庫(kù)本身是獨(dú)特的,Neo4j幾乎是使用圖形唯一選擇。它具有的任何功能都是獨(dú)一無(wú)二的。
支持事務(wù)應(yīng)用程序和圖形分析。
數(shù)據(jù)轉(zhuǎn)換能力,可將大型表格數(shù)據(jù)提取為圖形。
用于查詢(xún)圖形數(shù)據(jù)庫(kù)的專(zhuān)用查詢(xún)語(yǔ)言(Cypher)
可視化和發(fā)現(xiàn)功能
如果您需要數(shù)據(jù)之間基于圖形的關(guān)系,則需要Neo4j。
5、MongoDB
MongoDB是第一個(gè)在技術(shù)行業(yè)引起轟動(dòng)的非關(guān)系數(shù)據(jù)庫(kù),并且占據(jù)相當(dāng)大的關(guān)注份額。
與關(guān)系數(shù)據(jù)庫(kù)不同,MongoDB是一個(gè)“文檔數(shù)據(jù)庫(kù)”,這意味著它以大塊形式存儲(chǔ)數(shù)據(jù),而相關(guān)數(shù)據(jù)聚集在同一塊中。MongoDB具有一些獨(dú)特的功能,這些功能使您再也不想使用關(guān)系數(shù)據(jù)庫(kù):
適用于特殊/不可預(yù)測(cè)靈活模式。
簡(jiǎn)單的分片和聚類(lèi)。您只需要為集群設(shè)置配置。
從集群中添加或刪除節(jié)點(diǎn)非常簡(jiǎn)單。
分布式事務(wù)鎖。早期版本中缺少此功能,最終已經(jīng)包含。
它針對(duì)寫(xiě)入進(jìn)行了優(yōu)化,使其非常適合作為緩存系統(tǒng)的分析數(shù)據(jù)。
何時(shí)使用MongoDB
MongoDB是結(jié)構(gòu)化SQL到無(wú)序NoSQL的橋梁。您真正需要擴(kuò)展時(shí)。是的,您可以使用云SQL服務(wù)來(lái)解決數(shù)據(jù)庫(kù)擴(kuò)展問(wèn)題,最后,有些場(chǎng)景用基于SQL的解決方案根本做不到。例如,如果您正在創(chuàng)建一個(gè)像Canva這樣的產(chǎn)品,用戶(hù)可以在其中創(chuàng)建任意復(fù)雜的設(shè)計(jì),并可以在以后編輯它們,如果選擇使用關(guān)系數(shù)據(jù)庫(kù),那就呵呵了!
6、RethinkDB
顧名思義,當(dāng)涉及到實(shí)時(shí)應(yīng)用程序時(shí),RethinkDB會(huì) “重新考慮”數(shù)據(jù)庫(kù)的思想和功能。
數(shù)據(jù)庫(kù)更新后,應(yīng)用程序?qū)o(wú)法及時(shí)感知。公認(rèn)的方法是應(yīng)用程序在有更新時(shí)立即發(fā)出通知,該更新通過(guò)復(fù)雜的網(wǎng)橋推送到前端(PHP-> Redis-> Node-> Socket.io是一個(gè)示例)。但是,如果可以將更新直接從數(shù)據(jù)庫(kù)推送到前端怎么辦?是的,這就是RethinkDB的承諾。
因此,如果您要制作一個(gè)真正的實(shí)時(shí)應(yīng)用程序(游戲,市場(chǎng),分析等),Rethink DB值得一看。
7、redis
提起數(shù)據(jù)庫(kù),很容易忽略Redis。這是因?yàn)镽edis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù),主要用于緩存等支持功能。
Redis是一個(gè)簡(jiǎn)單的K-V存儲(chǔ),存儲(chǔ)的是帶有到期時(shí)間的字符串(當(dāng)然,可以設(shè)置為無(wú)窮大)。Redis喪失了部分實(shí)用性,獲得性能方面巨大提升。由于它完全位于RAM中,因此讀寫(xiě)速度非??欤棵霐?shù)十萬(wàn)次操作并非聞所未聞)。Redis具有完善的pub-sub系統(tǒng),該系統(tǒng)使該“數(shù)據(jù)庫(kù)”的吸引力提高了N倍。
如果您有一個(gè)可以從緩存中受益或具有一些分布式組件的項(xiàng)目,則Redis是首選。
8、SQLite
SQLite是一個(gè)輕量級(jí)的C庫(kù),提供了一個(gè)關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)引擎。該數(shù)據(jù)庫(kù)中的所有內(nèi)容都保存在一個(gè)文件中(擴(kuò)展名為.sqlite),您可以將其放在文件系統(tǒng)中的任何位置。這就是使用它所需要的全部!是的,無(wú)需安裝任何“服務(wù)器”軟件,也沒(méi)有要連接的任何服務(wù)。
即使SQLite是MySQL之類(lèi)的數(shù)據(jù)庫(kù)的輕量級(jí)替代品,它也帶來(lái)了很大的沖擊。其令人震驚的功能包括:
通過(guò)COMMIT,ROLLBACK和BEGIN完全支持事務(wù)。
每張表格支持32,000列
JSON支持
64路JOIN支持
子查詢(xún),全文搜索等
最大數(shù)據(jù)庫(kù)大小為140 TB!
最大行大小為1 GB!
比文件I / O快35%
何時(shí)使用SQLite
SQLite是一個(gè)非常專(zhuān)業(yè)的數(shù)據(jù)庫(kù)。如果您的應(yīng)用程序相對(duì)簡(jiǎn)單,并且您不希望擁有龐大的數(shù)據(jù)庫(kù),那么SQLite是一個(gè)不錯(cuò)的選擇。對(duì)于中小型CMS應(yīng)用、演示應(yīng)用程序、嵌入式系統(tǒng),值得您考慮。
9、Cassandra
Cassandra屬于所謂的“ columnar”數(shù)據(jù)庫(kù)家族。Cassandra中的存儲(chǔ)抽象是一列而不是一行。它將所有數(shù)據(jù)物理上存儲(chǔ)在磁盤(pán)的同一列上,最大程度地減少查找時(shí)間。
獨(dú)特的功能
Cassandra設(shè)計(jì)時(shí)考慮了一個(gè)特定的用例——處理寫(xiě)重負(fù)載和對(duì)停機(jī)時(shí)間的零容忍。這些成為其獨(dú)特的賣(mài)點(diǎn)。
極快的寫(xiě)入性能。在處理繁重的寫(xiě)入負(fù)載時(shí),Cassandra可以說(shuō)是目前最快的數(shù)據(jù)庫(kù)。
線性可伸縮性。也就是說(shuō),您可以繼續(xù)向群集中添加任意數(shù)量的節(jié)點(diǎn),群集的復(fù)雜性或脆弱性將零增加。
無(wú)與倫比的分區(qū)容限。也就是說(shuō),即使Cassandra群集中的多個(gè)節(jié)點(diǎn)出現(xiàn)故障,數(shù)據(jù)庫(kù)也可以不喪失完整性。
static 類(lèi)型。(聲明為 static 的列只有一個(gè)值的,只存儲(chǔ)一份)。
何時(shí)使用Cassandra
日志記錄和分析是Cassandra的兩個(gè)最佳用例。
當(dāng)您需要處理非常大的數(shù)據(jù)量(蘋(píng)果公司有Cassandra部署,可以處理400 PB以上的數(shù)據(jù),而在Netflix,每天處理1萬(wàn)億個(gè)請(qǐng)求)
當(dāng)您需要停機(jī)時(shí)間幾乎為零(高可用性是Cassandra的標(biāo)志之一)。
10、Timescale【福利請(qǐng)查收】
Timescale時(shí)序數(shù)據(jù)庫(kù)是物聯(lián)網(wǎng)(IoT)需要的最好的開(kāi)源數(shù)據(jù)庫(kù)之一。
與傳統(tǒng)數(shù)據(jù)庫(kù)的區(qū)別在于,它主要關(guān)注的是海量數(shù)據(jù)集的分析和可視化。時(shí)間序列數(shù)據(jù)庫(kù)很少會(huì)看到已有的數(shù)據(jù)的變化;比如:溫室中的傳感器發(fā)送的溫度讀數(shù)-新數(shù)據(jù)保持每秒積累,這對(duì)于分析和報(bào)告很重要。
Timescale DB跟同類(lèi)的其他數(shù)據(jù)庫(kù)相比具有一些令人興奮的功能:
它建立在PostgreSQL之上(目前最好的開(kāi)源關(guān)系數(shù)據(jù)庫(kù))。如果您的項(xiàng)目已經(jīng)在運(yùn)行PostgreSQL,Timescale可以重點(diǎn)考慮。
通過(guò)熟悉的SQL語(yǔ)法進(jìn)行查詢(xún),從而減少了學(xué)習(xí)難度。
極快的寫(xiě)入速度-每秒數(shù)百萬(wàn)次的插入。
數(shù)十億行或PB的數(shù)據(jù),對(duì)于Timescale來(lái)說(shuō)沒(méi)什么大不了的。
模式具有真正的靈活性-可以根據(jù)需要選擇關(guān)系模式或無(wú)模式。
如果物聯(lián)網(wǎng)是您的領(lǐng)域,或者您追求類(lèi)似的數(shù)據(jù)庫(kù)特性,那么Timescale值得一看。
小編最近熬了幾天夜整理出了最新的架構(gòu)技術(shù)高清視頻以及面試問(wèn)題答案
就希望能夠幫助有需要的小伙伴們,來(lái)個(gè)小關(guān)注私信小編微【資料】即可免費(fèi)獲取資料哦