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

當(dāng)前數(shù)據(jù)庫分為關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫

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

關(guān)系型數(shù)據(jù)庫:指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。
關(guān)系模型指的就是二維表格模型赠法,而一個(gè)關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織蓬痒。

關(guān)系模型中常用的概念:
關(guān)系:一張二維表扯键,每個(gè)關(guān)系都具有一個(gè)關(guān)系名,也就是表名
元組:二維表中的一行蜒程,在數(shù)據(jù)庫中被稱為記錄
屬性:二維表中的一列税弃,在數(shù)據(jù)庫中被稱為字段
域:屬性的取值范圍纪岁,也就是數(shù)據(jù)庫中某一列的取值限制
關(guān)鍵字:一組可以唯一標(biāo)識元組的屬性,數(shù)據(jù)庫中常稱為主鍵钙皮,由一個(gè)或多個(gè)列組成
關(guān)系模式:指對關(guān)系的描述蜂科。其格式為:關(guān)系名(屬性1,屬性2短条, ... ... 导匣,屬性N),在數(shù)據(jù)庫中成為表結(jié)構(gòu)

關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn):

1.容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界的一個(gè)概念茸时,關(guān)系模型相對網(wǎng)狀贡定、層次等其他模型來說更容易理解
2.使用方便:通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便
3.易于維護(hù):豐富的完整性(實(shí)體完整性、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率

關(guān)系型數(shù)據(jù)庫存在的問題

1.網(wǎng)站的用戶并發(fā)性非常高可都,往往達(dá)到每秒上萬次讀寫請求缓待,對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說,硬盤I/O是一個(gè)很大的瓶頸
2.網(wǎng)站每天產(chǎn)生的數(shù)據(jù)量是巨大的渠牲,對于關(guān)系型數(shù)據(jù)庫來說旋炒,在一張包含海量數(shù)據(jù)的表中查詢,效率是非常低的
3.在基于web的結(jié)構(gòu)當(dāng)中签杈,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的瘫镇,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時(shí)候,數(shù)據(jù)庫卻沒有辦法像web serverapp server那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力答姥。當(dāng)需要對數(shù)據(jù)庫系統(tǒng)進(jìn)行升級和擴(kuò)展時(shí)铣除,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。
4.性能欠佳:在關(guān)系型數(shù)據(jù)庫中鹦付,導(dǎo)致性能欠佳的最主要原因是多表的關(guān)聯(lián)查詢尚粘,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢。為了保證數(shù)據(jù)庫的ACID特性敲长,必須盡量按照其要求的范式進(jìn)行設(shè)計(jì)郎嫁,關(guān)系型數(shù)據(jù)庫中的表都是存儲一個(gè)格式化的數(shù)據(jù)結(jié)構(gòu)。

數(shù)據(jù)庫事務(wù)必須具備ACID特性祈噪,ACID分別是Atomic原子性泽铛,Consistency一致性,
Isolation隔離性钳降,Durability持久性。

當(dāng)今十大主流的關(guān)系型數(shù)據(jù)庫

Oracle腌巾,Microsoft SQL Server遂填,MySQL铲觉,PostgreSQLDB2吓坚,
Microsoft Access撵幽, SQLiteTeradata礁击,MariaDB(MySQL的一個(gè)分支)盐杂,SAP

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

非關(guān)系型數(shù)據(jù)庫:指非關(guān)系型的,分布式的哆窿,且一般不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)链烈。

非關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)

非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,且結(jié)構(gòu)不固定挚躯,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對码荔,不局限于固定的結(jié)構(gòu)漩勤,可以減少一些時(shí)間和空間的開銷。

優(yōu)點(diǎn)

1.用戶可以根據(jù)需要去添加自己需要的字段缩搅,為了獲取用戶的不同信息越败,不像關(guān)系型數(shù)據(jù)庫中,要對多表進(jìn)行關(guān)聯(lián)查詢硼瓣。僅需要根據(jù)id取出相應(yīng)的value就可以完成查詢究飞。
2.適用于SNS(Social Networking Services)中,例如facebook巨双,微博噪猾。系統(tǒng)的升級,功能的增加筑累,往往意味著數(shù)據(jù)結(jié)構(gòu)巨大變動袱蜡,這一點(diǎn)關(guān)系型數(shù)據(jù)庫難以應(yīng)付,需要新的結(jié)構(gòu)化數(shù)據(jù)存儲慢宗。由于不可能用一種數(shù)據(jù)結(jié)構(gòu)化存儲應(yīng)付所有的新的需求坪蚁,因此,非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫镜沽,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合敏晤。

不足:

只適合存儲一些較為簡單的數(shù)據(jù),對于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù)缅茉,關(guān)系型數(shù)據(jù)庫顯的更為合適嘴脾。不適合持久存儲海量數(shù)據(jù)

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

非關(guān)系型數(shù)據(jù)庫都是針對某些特定的應(yīng)用需求出現(xiàn)的,因此,對于該類應(yīng)用译打,具有極高的性能耗拓。依據(jù)結(jié)構(gòu)化方法以及應(yīng)用場合的不同,主要分為以下幾類:

面向高性能并發(fā)讀寫的key-value數(shù)據(jù)庫:

key-value數(shù)據(jù)庫的主要特點(diǎn)是具有極高的并發(fā)讀寫性能
Key-value數(shù)據(jù)庫是一種以鍵值對存儲數(shù)據(jù)的一種數(shù)據(jù)庫奏司,類似Java中的map乔询。可以將整個(gè)數(shù)據(jù)庫理解為一個(gè)大的map韵洋,每個(gè)鍵都會對應(yīng)一個(gè)唯一的值竿刁。
主流代表為RedisAmazon DynamoDB搪缨, Memcached食拜,
Microsoft Azure Cosmos DBHazelcast

面向海量數(shù)據(jù)訪問的面向文檔數(shù)據(jù)庫:

這類數(shù)據(jù)庫的主要特點(diǎn)是在海量的數(shù)據(jù)中可以快速的查詢數(shù)據(jù)
文檔存儲通常使用內(nèi)部表示法,可以直接在應(yīng)用程序中處理勉吻,主要是JSON监婶。JSON文檔也可以作為純文本存儲在鍵值存儲或關(guān)系數(shù)據(jù)庫系統(tǒng)中。
主流代表為MongoDB齿桃,Amazon DynamoDB惑惶,Couchbase
Microsoft Azure Cosmos DBCouchDB

面向搜索數(shù)據(jù)內(nèi)容的搜索引擎:

搜索引擎是專門用于搜索數(shù)據(jù)內(nèi)容的NoSQL數(shù)據(jù)庫管理系統(tǒng)短纵。
主要是用于對海量數(shù)據(jù)進(jìn)行近實(shí)時(shí)的處理和分析處理带污,可用于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘
主流代表為ElasticsearchSplunk香到,Solr鱼冀,MarkLogicSphinx

面向可擴(kuò)展性的分布式數(shù)據(jù)庫:

這類數(shù)據(jù)庫的主要特點(diǎn)是具有很強(qiáng)的可拓展性
普通的關(guān)系型數(shù)據(jù)庫都是以行為單位來存儲數(shù)據(jù)的,擅長以行為單位的讀入處理悠就,比如特定條件數(shù)據(jù)的獲取千绪。因此,關(guān)系型數(shù)據(jù)庫也被成為面向行的數(shù)據(jù)庫梗脾。相反荸型,面向列的數(shù)據(jù)庫是以列為單位來存儲數(shù)據(jù)的,擅長以列為單位讀入數(shù)據(jù)炸茧。
這類數(shù)據(jù)庫想解決的問題就是傳統(tǒng)數(shù)據(jù)庫存在可擴(kuò)展性上的缺陷瑞妇,這類數(shù)據(jù)庫可以適應(yīng)數(shù)據(jù)量的增加以及數(shù)據(jù)結(jié)構(gòu)的變化,將數(shù)據(jù)存儲在記錄中梭冠,能夠容納大量動態(tài)列辕狰。由于列名和記錄鍵不是固定的,并且由于記錄可能有數(shù)十億列控漠,因此可擴(kuò)展性存儲可以看作是二維鍵值存儲蔓倍。
主流代表為CassandraHBaseMicrosoft Azure Cosmos DB偶翅,
Datastax EnterpriseAccumulo

CAP理論

NoSQL的基本需求就是支持分布式存儲他去,嚴(yán)格一致性與可用性需要互相取舍
CAP理論:一個(gè)分布式系統(tǒng)不可能同時(shí)滿足C(一致性)、A(可用性)倒堕、P(分區(qū)容錯(cuò)性)三個(gè)基本需求,并且最多只能滿足其中的兩項(xiàng)爆价。對于一個(gè)分布式系統(tǒng)來說垦巴,分區(qū)容錯(cuò)是基本需求,否則不能稱之為分布式系統(tǒng)铭段,因此需要在C和A之間尋求平衡
C(Consistency)一致性
一致性是指更新操作成功并返回客戶端完成后骤宣,所有節(jié)點(diǎn)在同一時(shí)間的數(shù)據(jù)完全一致。與ACID的C完全不同
A(Availability)可用性
可用性是指服務(wù)一直可用序愚,而且是正常響應(yīng)時(shí)間憔披。
P(Partition tolerance)分區(qū)容錯(cuò)性
分區(qū)容錯(cuò)性是指分布式系統(tǒng)在遇到某節(jié)點(diǎn)或網(wǎng)絡(luò)分區(qū)故障的時(shí)候,仍然能夠?qū)ν馓峁M足一致性和可用性的服務(wù)爸吮。

關(guān)系型與非關(guān)系型數(shù)據(jù)庫的比較

1.成本:Nosql數(shù)據(jù)庫簡單易部署芬膝,基本都是開源軟件,不需要像使用Oracle那樣花費(fèi)大量成本購買使用形娇,相比關(guān)系型數(shù)據(jù)庫價(jià)格便宜锰霜。
2.查詢速度:Nosql數(shù)據(jù)庫將數(shù)據(jù)存儲于緩存之中,而且不需要經(jīng)過SQL層的解析桐早,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲在硬盤中癣缅,自然查詢速度遠(yuǎn)不及Nosql數(shù)據(jù)庫。
3.存儲數(shù)據(jù)的格式:Nosql的存儲格式是key,value形式哄酝、文檔形式友存、圖片形式等等,所以可以存儲基礎(chǔ)類型以及對象或者是集合等各種格式陶衅,而數(shù)據(jù)庫則只支持基礎(chǔ)類型屡立。
4.擴(kuò)展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機(jī)制的限制導(dǎo)致擴(kuò)展很艱難。Nosql基于鍵值對万哪,數(shù)據(jù)之間沒有耦合性侠驯,所以非常容易水平擴(kuò)展。
5.持久存儲:Nosql不使用于持久存儲奕巍,海量數(shù)據(jù)的持久存儲吟策,還是需要關(guān)系型數(shù)據(jù)庫
6.數(shù)據(jù)一致性:非關(guān)系型數(shù)據(jù)庫一般強(qiáng)調(diào)的是數(shù)據(jù)最終一致性,不像關(guān)系型數(shù)據(jù)庫一樣強(qiáng)調(diào)數(shù)據(jù)的強(qiáng)一致性的止,從非關(guān)系型數(shù)據(jù)庫中讀到的有可能還是處于一個(gè)中間態(tài)的數(shù)據(jù)檩坚,
Nosql不提供對事務(wù)的處理。

最近的數(shù)據(jù)庫排名

網(wǎng)站地址:https://db-engines.com/en/ranking

image.png

可以發(fā)現(xiàn)現(xiàn)在主流的還是關(guān)系型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫中Redis和MongoDB最受歡迎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匾委,一起剝皮案震驚了整個(gè)濱河市拖叙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赂乐,老刑警劉巖薯鳍,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挨措,居然都是意外死亡挖滤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門浅役,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斩松,“玉大人,你說我怎么就攤上這事觉既【屙铮” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵瞪讼,是天一觀的道長钧椰。 經(jīng)常有香客問我,道長符欠,這世上最難降的妖魔是什么演侯? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮背亥,結(jié)果婚禮上秒际,老公的妹妹穿的比我還像新娘。我一直安慰自己狡汉,他們只是感情好娄徊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盾戴,像睡著了一般寄锐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尖啡,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天橄仆,我揣著相機(jī)與錄音,去河邊找鬼衅斩。 笑死盆顾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畏梆。 我是一名探鬼主播您宪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奈懒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宪巨?” 一聲冷哼從身側(cè)響起磷杏,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捏卓,沒想到半個(gè)月后极祸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怠晴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年贿肩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龄寞。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汤功,靈堂內(nèi)的尸體忽然破棺而出物邑,到底是詐尸還是另有隱情,我是刑警寧澤滔金,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布色解,位于F島的核電站,受9級特大地震影響餐茵,放射性物質(zhì)發(fā)生泄漏科阎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一忿族、第九天 我趴在偏房一處隱蔽的房頂上張望锣笨。 院中可真熱鬧,春花似錦道批、人聲如沸错英。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭岩。三九已至,卻和暖如春璃赡,著一層夾襖步出監(jiān)牢的瞬間判哥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工碉考, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塌计,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓侯谁,卻偏偏與公主長得像夺荒,于是被迫代替她去往敵國和親瞒渠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容