作為架構(gòu)師稚伍,下一次你應(yīng)該考慮的10個(gè)數(shù)據(jù)庫(kù)

【文末有福利】

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)獲取資料哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乐导,隨后出現(xiàn)的幾起案子苦丁,更是在濱河造成了極大的恐慌,老刑警劉巖物臂,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旺拉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棵磷,警方通過查閱死者的電腦和手機(jī)蛾狗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仪媒,“玉大人沉桌,你說我怎么就攤上這事∷惴裕” “怎么了留凭?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)偎巢。 經(jīng)常有香客問我蔼夜,道長(zhǎng),這世上最難降的妖魔是什么压昼? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任求冷,我火速辦了婚禮,結(jié)果婚禮上巢音,老公的妹妹穿的比我還像新娘遵倦。我一直安慰自己,他們只是感情好官撼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布梧躺。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掠哥。 梳的紋絲不亂的頭發(fā)上巩踏,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音续搀,去河邊找鬼塞琼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛禁舷,可吹牛的內(nèi)容都是我干的彪杉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼牵咙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼派近!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洁桌,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤渴丸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后另凌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谱轨,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年吠谢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了土童。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡囊卜,死狀恐怖娜扇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栅组,我是刑警寧澤雀瓢,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站玉掸,受9級(jí)特大地震影響刃麸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜司浪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一泊业、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啊易,春花似錦吁伺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春窟却,著一層夾襖步出監(jiān)牢的瞬間昼丑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工夸赫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菩帝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓茬腿,卻偏偏與公主長(zhǎng)得像呼奢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滓彰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355