{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫有什么區(qū)別?

alinalin 回答0 收藏1
問題描述:mongdb和redis怎么選擇,mongdb優(yōu)勢在哪?
收藏問題

5條回答

tangr206

tangr206

回答于2022-06-28 14:02

先說說關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫有什么區(qū)別

這里的關(guān)系型和非關(guān)系型,主要是數(shù)據(jù)存儲(chǔ)格式的區(qū)別,我們常見的關(guān)系型數(shù)據(jù)庫有Mysql、Oracle、DB2、SQL Server等,都是通過關(guān)系模型來組織數(shù)據(jù),也就是二維表格模型。

而非關(guān)系型數(shù)據(jù)庫,就不是按照這個(gè)二維表格來存儲(chǔ)數(shù)據(jù)了,例如Redis是使用鍵值對(key-value)來組織數(shù)據(jù),MongoDB是采用BSON的格式(可以想象成JSON);并且不局限于固定的結(jié)構(gòu)。

關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫之間的關(guān)系,也不是有你沒有,二者選其一,通常都是配合起來使用的。

各自的優(yōu)缺點(diǎn)

  • 關(guān)系型數(shù)據(jù)庫,容易理解,使用方便(通過SQL語言操作),易于維護(hù);但是因?yàn)閿?shù)據(jù)在磁盤上存儲(chǔ),I/O會(huì)成為一個(gè)很大的瓶頸,如果在高并發(fā)的場景下,性能降低的很快;另外,對于關(guān)系型數(shù)據(jù)庫,當(dāng)單表數(shù)據(jù)量增加到一定程度的時(shí)候,表的操作效率也會(huì)很低;表結(jié)構(gòu)固定,當(dāng)數(shù)據(jù)量比較大的時(shí)候,對表結(jié)構(gòu)的擴(kuò)展會(huì)是災(zāi)難性的。

  • 非慣性數(shù)據(jù)庫因?yàn)閿?shù)據(jù)結(jié)構(gòu)的“隨性”,用戶可以根據(jù)需要增加字段,關(guān)系型數(shù)據(jù)習(xí)慣設(shè)計(jì)成多張表,然后通過表關(guān)聯(lián)查詢,而非關(guān)系型數(shù)據(jù)庫(文檔性)會(huì)把所有字段放到一個(gè)集合中,避免多表的關(guān)聯(lián)。不過缺點(diǎn)也非常明顯,“隨性”也就意味著沒有標(biāo)準(zhǔn),單集合有好處也有壞處,沒有完整性約束,對于復(fù)雜的業(yè)務(wù)場景支持比較差。

至于MongoDB和Redis怎么選擇,兩者差別還是很大的,適用場景也不同

  • Redis的數(shù)據(jù)存儲(chǔ)格式是key-value,支持持久化、 支持事務(wù),經(jīng)常用于緩存、高并發(fā)下的讀寫(計(jì)數(shù)器、最新列表、秒殺),因?yàn)閱尉€程的機(jī)制也會(huì)用于分布式鎖。

  • MongoDB的數(shù)據(jù)存儲(chǔ)格式為BSON(類似于JSON),支持快速讀寫,特別是大吞吐量的寫操作;如果表結(jié)構(gòu)不明確,未來可能會(huì)發(fā)生很大的變化,非常適合使用MongoDB。

  • 架構(gòu)中可以同時(shí)包含關(guān)系型數(shù)據(jù)庫、Redis和MongoDB,各司其職。

我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。

評論0 贊同0
  •  加載中...
huayeluoliuhen

huayeluoliuhen

回答于2022-06-28 14:02

歡迎關(guān)注我,一個(gè)程序員老司機(jī),和你分享編程、運(yùn)營、需求等等經(jīng)驗(yàn)和趣事。

作為一個(gè)多年的程序員,兩種數(shù)據(jù)庫都使用過現(xiàn)在將自己的一些感受和你分享一下。

最大的區(qū)別



兩種數(shù)據(jù)庫的最大區(qū)別在于存儲(chǔ)方式,關(guān)系數(shù)據(jù)庫是將關(guān)系存儲(chǔ)到數(shù)據(jù)庫里面,什么關(guān)系呢?就是一對一、一對多和多對多關(guān)系,這樣存儲(chǔ)進(jìn)去之后就能夠通過sql命令查詢到符合客觀需求的數(shù)據(jù),但是將關(guān)系存儲(chǔ)進(jìn)行查詢時(shí),有時(shí)需要關(guān)聯(lián)很多個(gè)數(shù)據(jù)表才能夠得到需要的數(shù)據(jù),于是就誕生的分關(guān)系數(shù)據(jù)庫,也就是nosql數(shù)據(jù)庫。

兩種常見的非關(guān)系數(shù)據(jù)庫

一種是redis數(shù)據(jù)庫,這種數(shù)據(jù)庫主要做為緩存使用,它一般配合關(guān)系數(shù)據(jù)庫一起用,也就是先從關(guān)系數(shù)據(jù)庫獲取或者計(jì)算數(shù)據(jù),然后保存到redis數(shù)據(jù)庫里面,而mongodb數(shù)據(jù)庫除了具備redis的特點(diǎn),也具備關(guān)系數(shù)據(jù)庫的特點(diǎn),所以一般業(yè)務(wù)數(shù)據(jù)還是用它來保存。

那為什么不用mongodb來代替redis

因?yàn)閞edis非常小巧和專業(yè),已經(jīng)將緩存做到了極致。

評論0 贊同0
  •  加載中...
Sourcelink

Sourcelink

回答于2022-06-28 14:02

相信不少人在工作中都遇到過以下對話:

程序員A:又要到流量高峰期了,感覺數(shù)據(jù)庫要崩。

程序員B:嗯嗯,趕緊擴(kuò)容吧。

雖然數(shù)據(jù)庫很耳熟,但是它究竟是何方神圣呢?今天就給大家科普一下。

數(shù)據(jù)庫,其實(shí)就是互聯(lián)網(wǎng)業(yè)務(wù)存儲(chǔ)、查詢數(shù)據(jù)的倉庫。通過幾十年的發(fā)展歷史讓數(shù)據(jù)庫衍生出了各種不同的類型。

1、關(guān)系型數(shù)據(jù)庫

關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。例如,某個(gè)學(xué)生的信息——姓名:張三,性別:男,學(xué)號(hào):12345,班級:二年級一班,每一個(gè)信息之間是有聯(lián)系的,而數(shù)據(jù)也是以表格形式存儲(chǔ)的。

這就是最早的數(shù)據(jù)庫形態(tài),1970年IBM的研究員E.F.Codd博士首先提出關(guān)系模型,在之后的幾十年中,關(guān)系模型的概念得到了充分的發(fā)展并逐漸成為主流數(shù)據(jù)庫結(jié)構(gòu)的主流模型。Oracle、DB2、Microsoft SQL Server、MySQL等都屬于這一范疇。

但是,這類數(shù)據(jù)庫的特點(diǎn)是一致性強(qiáng),缺點(diǎn)是讀寫性能差。

2、非關(guān)系型數(shù)據(jù)庫(NoSQL)

顧名思義,非關(guān)系型數(shù)據(jù)庫是相對關(guān)系型數(shù)據(jù)庫的一個(gè)概念,起初指的是“沒有SQL”的數(shù)據(jù)庫,但現(xiàn)在已經(jīng)公認(rèn)為“no relational”(非關(guān)系型)。非關(guān)系型數(shù)據(jù)庫是根據(jù)特定的應(yīng)用場景設(shè)計(jì)出來的,沒有明確的分類標(biāo)準(zhǔn),但根據(jù)應(yīng)用場景大致可分為幾類:1、文檔數(shù)據(jù)庫,沒研究過定義,通常mongodb 就是文檔數(shù)據(jù)庫,特點(diǎn)就是數(shù)據(jù)定義比較靈活。2、Kv數(shù)據(jù)庫,提供的是kv的數(shù)據(jù)表示模式。單機(jī)的rocksdb,分布式的tikv之類。3、圖數(shù)據(jù)庫。數(shù)據(jù)可以用圖來定義。4、列式數(shù)據(jù)庫。hbase之類,這里可能有爭議,很多人把hbase 定義為列存。

非關(guān)系型數(shù)據(jù)庫的代表是MongoDB、Redis以及Hbase,其特點(diǎn)與關(guān)系型數(shù)據(jù)庫相反。


3、云原生數(shù)據(jù)庫

之前提到的數(shù)據(jù)庫都屬于傳統(tǒng)數(shù)據(jù)庫和開源數(shù)據(jù)庫,但到了云計(jì)算時(shí)代,無論是云服務(wù)提供商還是用戶,都需要一個(gè)完全為云打造的數(shù)據(jù)庫,于是誕生了全新的產(chǎn)品形態(tài)——云原生數(shù)據(jù)庫。

作為云計(jì)算領(lǐng)域的先行者,亞馬遜在2014年11月召開的AWS re:Invent 年度大會(huì)上,發(fā)布了云原生數(shù)據(jù)庫Aurora, 讓數(shù)據(jù)庫行業(yè)發(fā)生了翻天覆地的變化。

在亞馬遜之后,許多云廠商也紛紛投入云原生數(shù)據(jù)庫研究。比如2017年9月,ucloud云在國內(nèi)率先發(fā)布自研的云原生數(shù)據(jù)庫POLARDB,它采用了自主研發(fā)分布式存儲(chǔ)引擎,計(jì)算服務(wù)器和存儲(chǔ)數(shù)據(jù)分離的架構(gòu)。

如今,國際社會(huì)公認(rèn),與傳統(tǒng)商業(yè)數(shù)據(jù)庫相比,云原生數(shù)據(jù)庫擁有以下幾個(gè)大優(yōu)勢,是未來的大勢所趨。


1)價(jià)格更低

傳統(tǒng)商業(yè)數(shù)據(jù)庫按年、按CPU這樣的方式進(jìn)行售賣,對大體量的企業(yè)而言,每年需要數(shù)百萬甚至千萬的費(fèi)用。

云原生數(shù)據(jù)庫按使用量付費(fèi),讓用戶可以以非常低的價(jià)格就享受到企業(yè)級數(shù)據(jù)庫的服務(wù)。用戶可以根據(jù)自己的業(yè)務(wù)實(shí)際發(fā)展情況,按需的購買,可以大大降低企業(yè)在早期發(fā)展過程的成本。

此外,云原生數(shù)據(jù)庫天然是規(guī)?;模?guī)?;瘯?huì)帶來成本的下降。這也大大降低單個(gè)用戶的成本。例如,ucloud云PolarDB價(jià)格僅為商業(yè)數(shù)據(jù)庫的1/10。

2)更強(qiáng)的性能

用戶使用傳統(tǒng)的數(shù)據(jù)庫需要多帶帶購買硬件,然而傳統(tǒng)的數(shù)據(jù)庫廠商則更傾向于去適配通用的硬件,對于一些特定的、前沿的硬件,不會(huì)去專門適配,所以傳統(tǒng)數(shù)據(jù)庫用戶無法享受新硬件的紅利。

而云原生數(shù)據(jù)庫的架構(gòu)可以重復(fù)享受硬件變革帶來的紅利,從而實(shí)現(xiàn)更強(qiáng)的性能。

3)更快速的迭代,讓數(shù)據(jù)庫更安全穩(wěn)定

云原生數(shù)據(jù)庫可以做到以周,甚至以天為單位來迭代數(shù)據(jù)庫,這是傳統(tǒng)的數(shù)據(jù)庫不可能做到的。當(dāng)系統(tǒng)出現(xiàn)問題時(shí),云原生數(shù)據(jù)庫可以快速進(jìn)行升級,而傳統(tǒng)數(shù)據(jù)庫升級的周期通常是年,級別是出現(xiàn)了非常嚴(yán)重的漏洞,升級的周期也是以月為單位來計(jì)算的。

4)無需關(guān)注部署、運(yùn)維等,全力專注業(yè)務(wù)開發(fā)

現(xiàn)在是一個(gè)快速創(chuàng)新的時(shí)代,每家企業(yè)都希望將重要的資源聚焦在自己的核心業(yè)務(wù)開發(fā)上。使用云原生數(shù)據(jù)庫,讓企業(yè)不再需要關(guān)注數(shù)據(jù)庫的部署與運(yùn)維,開箱即用,全力專注在自己的業(yè)務(wù)開發(fā)和用戶價(jià)值上。

對于關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別就先介紹這么多,如果還有更多想知道的,歡迎留言提問。覺得云原生數(shù)據(jù)庫不錯(cuò)的,也可以試用一下,也許你會(huì)愛上它。

評論0 贊同0
  •  加載中...
dadong

dadong

回答于2022-06-28 14:02

關(guān)系型數(shù)據(jù)庫在關(guān)系代數(shù)為基礎(chǔ)建立起來的一種應(yīng)用,經(jīng)過嚴(yán)密的完備性證明。也就是說理論上關(guān)系型數(shù)據(jù)庫可用于所有場景。當(dāng)然這僅僅是理論上的說法,實(shí)際上,很多文檔和圖形數(shù)據(jù)很難采用統(tǒng)一的結(jié)構(gòu),而且這些數(shù)據(jù)通常都是海量的。為了提高這些數(shù)據(jù)的處理效率,人們針對不同的場景設(shè)計(jì)了不同的算法,這就是非關(guān)系型數(shù)據(jù)庫。值得注意的是非關(guān)系型數(shù)據(jù)庫中保留了關(guān)系型數(shù)據(jù)庫的特征,是對關(guān)系型數(shù)據(jù)庫應(yīng)用的一種擴(kuò)展。NoSQL=Not Only SQL,不僅僅是SQL。

關(guān)系型數(shù)據(jù)庫概要

只要是每行的列都相同的表格都是關(guān)系型數(shù)據(jù)表。這叫第一范型。每行數(shù)據(jù)都是唯一的關(guān)系表叫第二范型。每行數(shù)據(jù)唯一且能由特定字段確定的關(guān)系表叫第三范式,這些特定的字段被稱為主鍵。通常所說的數(shù)據(jù)庫都滿足第三范型,也就是可用主鍵進(jìn)行查詢。關(guān)系型數(shù)據(jù)庫有基本的四則運(yùn)算可以增減列或增減行:選擇,投影,并,交。SQL就是根據(jù)這些規(guī)則設(shè)計(jì)出來的。

非關(guān)系型數(shù)據(jù)庫

非關(guān)系型數(shù)據(jù)庫是根據(jù)特定的應(yīng)用場景設(shè)計(jì)出來的,沒有明確的分類標(biāo)準(zhǔn),但根據(jù)應(yīng)用場景大致可分為:鍵值存儲(chǔ),列存儲(chǔ),文檔型和圖型等幾類。題主所說的Redis是鍵值存儲(chǔ)型的,它不關(guān)心文檔的內(nèi)容,用哈希表存儲(chǔ)了文檔的特征屬性,方便快速查找文檔,多用于文件管理。MongoDb是文檔型數(shù)據(jù)庫,管理結(jié)構(gòu)化或者半結(jié)構(gòu)化的格式文檔,可對文檔內(nèi)容進(jìn)行高速地全文檢索,也可以建立復(fù)雜的文檔分類結(jié)構(gòu),是鍵值存儲(chǔ)的升級版。至于如何選擇,主要看需求,不需要檢索內(nèi)容時(shí)可使用Redis,輕便易安裝。反之,用MongoDb功能強(qiáng)大。

關(guān)系型數(shù)據(jù)庫是一種基本的數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫的擴(kuò)展應(yīng)用。我個(gè)人很討厭非關(guān)系型數(shù)據(jù)庫這個(gè)叫法,它容易讓人產(chǎn)生誤解,以為NoSQL=No SQL。實(shí)際上,還有很多使用其他原理的數(shù)據(jù)庫,比如,在人工智能領(lǐng)域用一定應(yīng)用的邏輯型數(shù)據(jù)庫。這類數(shù)據(jù)庫比較小眾鮮為人知,稱它們?yōu)榉顷P(guān)系型數(shù)據(jù)庫比較貼切。

評論0 贊同0
  •  加載中...
Nino

Nino

回答于2022-06-28 14:02

相信大家在二級數(shù)據(jù)庫考試的時(shí)候都做過這么一道題,關(guān)系型數(shù)據(jù)庫中的關(guān)系是什么意思?答案是:數(shù)據(jù)模型符合滿足一定條件的二維表格式,即是這張二維表中的行都是一個(gè)個(gè)元素,而列是一個(gè)個(gè)的屬性,這種結(jié)構(gòu)化的數(shù)據(jù)通過結(jié)構(gòu)化的查詢語言(SQL)可以以不同的方式進(jìn)行存?。?br/>

所以說,SQL的定義和執(zhí)行就代表著關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)的數(shù)據(jù)存取,從where,groupby,order等命令,sum,count等函數(shù)就能一目了然的知道,關(guān)系型數(shù)據(jù)庫可以通過字段方便的篩選,分組,統(tǒng)計(jì)和運(yùn)算,并且性能十分高效!

總結(jié)來說,關(guān)系型數(shù)據(jù)庫不僅維護(hù)著一張二維表中行和列的關(guān)系,還維護(hù)著多張表中一對多,多對多的關(guān)系,并能通過SQL處理這種關(guān)系進(jìn)行存取,還提供事務(wù)支持!

而非關(guān)系型數(shù)據(jù)庫是以key-value形式存儲(chǔ)數(shù)據(jù),可認(rèn)為是只有一個(gè)主鍵(key),加一個(gè)屬性(value)構(gòu)成的二維表,其value中的屬性之間的關(guān)系無法體現(xiàn),很難通過其中的某個(gè)屬性進(jìn)行統(tǒng)計(jì),分組等關(guān)系型數(shù)據(jù)庫中的常規(guī)操作!

非關(guān)系型數(shù)據(jù)庫更容易維護(hù)與擴(kuò)展,關(guān)系型數(shù)據(jù)庫卻因?yàn)榉直矸謳斓扔幸欢y度!非關(guān)系型數(shù)據(jù)庫不支持事務(wù),只能使用別的方式支持?jǐn)?shù)據(jù)一致性

mongodb和redis比較的話,redis更適合用做緩存,消息隊(duì)列等,而mongodb適用于文檔結(jié)構(gòu)(json等)等的大容量數(shù)據(jù)存?。?br/>

關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫在不同的場景都大有所為,可根據(jù)實(shí)際情況擇優(yōu)使用!

非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫的區(qū)別就說到這,本人持續(xù)更新更多的技術(shù)分享,敬請關(guān)注!

評論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<