【文末有福利】
1柳譬、PostgreSQL
PostgreSQL聽起來比較陌生,其實(shí)這種關(guān)系數(shù)據(jù)庫(kù)解決方案自1997年以來一直存在辆沦,并且是Ruby,Python,Go等社區(qū)中的首選赖钞。
將PostgreSQL作為下一個(gè)項(xiàng)目的數(shù)據(jù)庫(kù)解決方案,您絕不會(huì)失望(國(guó)內(nèi)郵儲(chǔ)銀行開始全面使用PostgreSQL作為oracle的替代品聘裁,騰訊正在大量使用PostgreSQL)仁烹。市面上已經(jīng)有大量不錯(cuò)的SQL客戶端可用于連接到PostgreSQL數(shù)據(jù)庫(kù)進(jìn)行管理和開發(fā)。
與其他關(guān)系數(shù)據(jù)庫(kù)(特別是MySQL)相比咧虎,PostgreSQL具有一些引人入勝的功能卓缰,例如:
數(shù)組,Range(范圍)砰诵,UUID征唬,地理位置等的內(nèi)置數(shù)據(jù)類型。
支持文檔存儲(chǔ)(JSON樣式)茁彭,XML以及key-value存儲(chǔ)(Hstore)总寒。
同步、異步復(fù)制
引入了使用其它程序語言編寫函數(shù)的能力理肺,可在PL摄闸,Perl,Python等中編寫腳本
全文搜索
何時(shí)使用PostgreSQL
如果您正在開始一個(gè)新項(xiàng)目妹萨,之前被MySQL事務(wù)鎖定打敗過年枕,那么現(xiàn)在是考慮PostgreSQL的好時(shí)機(jī)。
如果需要部分NoSQL功能用于混合數(shù)據(jù)模型乎完,則PostgreSQL也具有明顯的優(yōu)勢(shì)熏兄。由于天然支持文檔和key-value存儲(chǔ),因此您無需去尋找树姨,安裝摩桶,學(xué)習(xí)和維護(hù)另一個(gè)數(shù)據(jù)庫(kù)解決方案。
2帽揪、MariaDB
MariaDB是由開發(fā)MySQL的同一人創(chuàng)建的硝清,以替代MySQL。奇怪不转晰?在2010年MySQL被甲骨文接管之后(通過收購(gòu)Sun Microsystems芦拿,這也是甲骨文控制Java的方式)砾肺,MySQL的追隨者們開始了一個(gè)新的開源項(xiàng)目MariaDB。
MariaDB是使用與MySQL相同的代碼庫(kù)創(chuàng)建防嗡。顯而易見变汪,MariaDB可以用作MySQL的完全替代品。從MySQL遷移到MariaDB基本上做到零成本蚁趁。不過切記裙盾,從MariaDB返回MySQL是不可能的,這可能導(dǎo)致永久性數(shù)據(jù)損壞他嫡!
盡管MariaDB本質(zhì)上是MySQL的克隆番官,但事實(shí)上并非如此。兩者之間的差異一直在增長(zhǎng)钢属。采用MariaDB必須是您經(jīng)過深思熟慮的決定徘熔。MariaDB中有很多新特性:
真正的自由和開放:由于沒有單個(gè)公司實(shí)體控制MariaDB,無需擔(dān)心突然而來的掠奪性許可淆党。
滿足特定需求的存儲(chǔ)引擎酷师。例如,用于分布式事務(wù)的Spider引擎染乌;ColumnStore用于海量數(shù)據(jù)倉(cāng)庫(kù)山孔;ColumnStore引擎,用于并行荷憋,分布式存儲(chǔ)台颠;
與MySQL相比,速度有所提高勒庄,尤其是Aria存儲(chǔ)引擎可處理復(fù)雜的查詢串前。
更好的復(fù)制功能(多源復(fù)制)
JSON數(shù)據(jù)格式支持
虛擬列。對(duì)表的每一行都可以有一個(gè)“虛擬列”实蔽,該列可以用于保存一個(gè)對(duì)象的不同屬性荡碾,每個(gè)屬性在各行之間可以完全不同,“虛擬列”的個(gè)數(shù)和內(nèi)容完全有應(yīng)用程序來控制和解釋盐须。
動(dòng)態(tài)列玩荠。動(dòng)態(tài)列允許在一個(gè)表中每個(gè)行可以存儲(chǔ)不同的列的集合漆腌。
何時(shí)使用MariaDB
如果您想真正地替代MySQL贼邓,希望保持創(chuàng)新并且不打算再次返回MySQL,則應(yīng)該使用MariaDB闷尿。例如可以在MariaDB中使用新的存儲(chǔ)引擎來補(bǔ)充項(xiàng)目中現(xiàn)有的關(guān)系數(shù)據(jù)模型塑径。
3、CockroachDB
CockroachDB背后的團(tuán)隊(duì)似乎由受虐狂組成填具。有了這樣的產(chǎn)品名稱"蟑螂"统舀。
估計(jì)“蟑螂”的邏輯是無論發(fā)生什么事蟑螂都能生存繁殖匆骗。CockroachDB背后的團(tuán)隊(duì)(由前Google工程師組成)在使用傳統(tǒng)SQL解決方案時(shí)感到局限性。因?yàn)閺臍v史上看誉简,SQL解決方案應(yīng)該托管在一臺(tái)機(jī)器上(數(shù)據(jù)不是那么大)碉就。長(zhǎng)期以來,沒有運(yùn)行SQL的數(shù)據(jù)庫(kù)集群闷串。即使MySQL瓮钥,PostgreSQL和MariaDB中使用各種復(fù)制技術(shù)來實(shí)現(xiàn)數(shù)據(jù)庫(kù)集群。事實(shí)上烹吵,通過復(fù)制功能來實(shí)現(xiàn)集群碉熄,使用起來還是復(fù)雜。
CoackroachDB希望改變這一點(diǎn)肋拔,為SQL世界帶來輕松的分片锈津,集群和高可用性。
何時(shí)使用CockroachDB
如果您一直使用SQL并且對(duì)MongoDB的擴(kuò)展功能有所了解凉蜂,那么您會(huì)喜歡CockroachDB琼梆。CockroachDB可以快速設(shè)置集群,對(duì)集群進(jìn)行查詢窿吩,我們終于不需要使用數(shù)據(jù)庫(kù)中間件這種臨時(shí)產(chǎn)物來實(shí)現(xiàn)集群數(shù)據(jù)庫(kù)了叮叹。
4、Neo4j【文末有福利】
近十年來最重要的發(fā)展之一就是關(guān)聯(lián)數(shù)據(jù)爆存。幾乎事物都相互關(guān)聯(lián)蛉顽。社交網(wǎng)絡(luò)是一個(gè)很好的例子。使用SQL乃至文檔數(shù)據(jù)庫(kù)構(gòu)建類似的數(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ù)應(yīng)用程序和圖形分析翘地。
數(shù)據(jù)轉(zhuǎn)換能力,可將大型表格數(shù)據(jù)提取為圖形癌幕。
用于查詢圖形數(shù)據(jù)庫(kù)的專用查詢語言(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)單的分片和聚類。您只需要為集群設(shè)置配置锁保。
從集群中添加或刪除節(jié)點(diǎn)非常簡(jiǎn)單冠跷。
分布式事務(wù)鎖。早期版本中缺少此功能身诺,最終已經(jīng)包含蜜托。
它針對(duì)寫入進(jìn)行了優(yōu)化,使其非常適合作為緩存系統(tǒng)的分析數(shù)據(jù)霉赡。
何時(shí)使用MongoDB
MongoDB是結(jié)構(gòu)化SQL到無序NoSQL的橋梁橄务。您真正需要擴(kuò)展時(shí)。是的穴亏,您可以使用云SQL服務(wù)來解決數(shù)據(jù)庫(kù)擴(kuò)展問題蜂挪,最后,有些場(chǎng)景用基于SQL的解決方案根本做不到嗓化。例如棠涮,如果您正在創(chuàng)建一個(gè)像Canva這樣的產(chǎn)品,用戶可以在其中創(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法及時(shí)感知悍手。公認(rèn)的方法是應(yīng)用程序在有更新時(shí)立即發(fā)出通知帘睦,該更新通過復(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è)置為無窮大)疲牵。Redis喪失了部分實(shí)用性,獲得性能方面巨大提升榆鼠。由于它完全位于RAM中纲爸,因此讀寫速度非常快(每秒數(shù)十萬次操作并非聞所未聞)妆够。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ù)姜挺。
即使SQLite是MySQL之類的數(shù)據(jù)庫(kù)的輕量級(jí)替代品,它也帶來了很大的沖擊彼硫。其令人震驚的功能包括:
通過COMMIT炊豪,ROLLBACK和BEGIN完全支持事務(wù)。
每張表格支持32,000列
JSON支持
64路JOIN支持
子查詢拧篮,全文搜索等
最大數(shù)據(jù)庫(kù)大小為140 TB词渤!
最大行大小為1 GB!
比文件I / O快35%
何時(shí)使用SQLite
SQLite是一個(gè)非常專業(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ǔ)在磁盤的同一列上饱普,最大程度地減少查找時(shí)間。
獨(dú)特的功能
Cassandra設(shè)計(jì)時(shí)考慮了一個(gè)特定的用例——處理寫重負(fù)載和對(duì)停機(jī)時(shí)間的零容忍状共。這些成為其獨(dú)特的賣點(diǎn)套耕。
極快的寫入性能。在處理繁重的寫入負(fù)載時(shí)峡继,Cassandra可以說是目前最快的數(shù)據(jù)庫(kù)冯袍。
線性可伸縮性。也就是說鬓椭,您可以繼續(xù)向群集中添加任意數(shù)量的節(jié)點(diǎn)颠猴,群集的復(fù)雜性或脆弱性將零增加。
無與倫比的分區(qū)容限小染。也就是說翘瓮,即使Cassandra群集中的多個(gè)節(jié)點(diǎn)出現(xiàn)故障,數(shù)據(jù)庫(kù)也可以不喪失完整性裤翩。
static 類型资盅。(聲明為 static 的列只有一個(gè)值的,只存儲(chǔ)一份)踊赠。
何時(shí)使用Cassandra
日志記錄和分析是Cassandra的兩個(gè)最佳用例呵扛。
當(dāng)您需要處理非常大的數(shù)據(jù)量(蘋果公司有Cassandra部署,可以處理400 PB以上的數(shù)據(jù)筐带,而在Netflix今穿,每天處理1萬億個(gè)請(qǐng)求)
當(dāng)您需要停機(jī)時(shí)間幾乎為零(高可用性是Cassandra的標(biāo)志之一)。
10伦籍、Timescale【福利請(qǐng)查收】
Timescale時(shí)序數(shù)據(jù)庫(kù)是物聯(lián)網(wǎng)(IoT)需要的最好的開源數(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跟同類的其他數(shù)據(jù)庫(kù)相比具有一些令人興奮的功能:
它建立在PostgreSQL之上(目前最好的開源關(guān)系數(shù)據(jù)庫(kù))洛二。如果您的項(xiàng)目已經(jīng)在運(yùn)行PostgreSQL,Timescale可以重點(diǎn)考慮。
通過熟悉的SQL語法進(jìn)行查詢晾嘶,從而減少了學(xué)習(xí)難度妓雾。
極快的寫入速度-每秒數(shù)百萬次的插入。
數(shù)十億行或PB的數(shù)據(jù)变擒,對(duì)于Timescale來說沒什么大不了的君珠。
模式具有真正的靈活性-可以根據(jù)需要選擇關(guān)系模式或無模式寝志。
如果物聯(lián)網(wǎng)是您的領(lǐng)域娇斑,或者您追求類似的數(shù)據(jù)庫(kù)特性,那么Timescale值得一看材部。
小編最近熬了幾天夜整理出了最新的架構(gòu)技術(shù)高清視頻以及面試問題答案
就希望能夠幫助有需要的小伙伴們毫缆,來個(gè)小關(guān)注私信小編微【資料】即可免費(fèi)獲取資料哦