日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 關(guān)系型數(shù)據(jù)庫(kù)的本質(zhì)是什么,mongodb為什么不是關(guān)系型數(shù)據(jù)庫(kù)?

關(guān)系型數(shù)據(jù)庫(kù)的本質(zhì)是什么,mongodb為什么不是關(guān)系型數(shù)據(jù)庫(kù)?

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-13 12:28:32 1697171312

一、關(guān)系型數(shù)據(jù)庫(kù)的本質(zhì)是什么,mongodb不是關(guān)系型數(shù)據(jù)庫(kù)的原因

關(guān)系型數(shù)據(jù)庫(kù)的本質(zhì)是“relation”。這里中文翻譯成“關(guān)系”有點(diǎn)籠統(tǒng),因?yàn)檫€有一個(gè)詞叫“relationship”也被說成“關(guān)系”?!皉elation”是個(gè)數(shù)學(xué)概念,定義如下:給定n個(gè)集合S1、S2、 S3、 …、 Sn, R是一個(gè)n元數(shù)組(n-tuples),它的名列前茅個(gè)元素取自集合S1,第二個(gè)元素取自集合S2,以此類推。我們將R稱之為基于該n 個(gè)集合的一個(gè)Relation,Sj為R的第j個(gè)域(Domain)。

這個(gè)定義有點(diǎn)抽象,舉個(gè)例子:有這樣一個(gè)“relation”,它由以下集合組成:學(xué)號(hào),姓名,性別,班級(jí)。每個(gè)集合都是一個(gè)給定的有限集合,比如學(xué)號(hào)的范圍定義為10000~99999,姓名也是個(gè)有限集合,性別就是男和女,班級(jí)也是個(gè)有限的集合。從這些有限的集合中各取一個(gè)值,組成一個(gè)元組“tuple”。理論上這些元組也是一個(gè)有限集合,稱之為“關(guān)系”,即“relation”。而我們更習(xí)慣稱之為“表”,即”table”。此外,這種建模思想能促進(jìn)重用,例如“性別”這個(gè)值域也可用在“教師”這個(gè)表里。這點(diǎn)在建立大型信息系統(tǒng)是極有價(jià)值的。

不能將MongoDB叫做關(guān)系型數(shù)據(jù)庫(kù)是因?yàn)樗婚_始的設(shè)計(jì)理念是“對(duì)象”,而不是“關(guān)系”。不管在工程上你怎么用它,它只能被喚做對(duì)象或者文檔型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)在誕生之時(shí),主要解決的問題之一是消除訪問路徑依賴。當(dāng)你用MongoDB的時(shí)候,你可以根據(jù)一個(gè)對(duì)象的任意屬性去訪問相應(yīng)的對(duì)象實(shí)體。但如果兩個(gè)不同類型的對(duì)象存在某種關(guān)系(relationship) ,你想通過對(duì)象A的某個(gè)屬性訪問到對(duì)象B的某個(gè)屬性會(huì)比較困難。你必須在A中保存B的一些關(guān)聯(lián)信息,然后自己在應(yīng)用層面去實(shí)現(xiàn)類似SQL JOIN的關(guān)聯(lián)訪問。這就是說你的應(yīng)用程序可能存在只能通過A去訪問B的限制。也許在開始的時(shí)候,這樣的限制無所謂。

二、關(guān)系型數(shù)據(jù)庫(kù)概述

1、簡(jiǎn)介

關(guān)系型數(shù)據(jù)庫(kù),是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫(kù),其以行和列的形式存儲(chǔ)數(shù)據(jù),以便于用戶理解,關(guān)系型數(shù)據(jù)庫(kù)這一系列的行和列被稱為表,一組表組成了數(shù)據(jù)庫(kù)。用戶通過查詢來檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù),而查詢是一個(gè)用于限定數(shù)據(jù)庫(kù)中某些區(qū)域的執(zhí)行代碼。關(guān)系模型可以簡(jiǎn)單理解為二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的關(guān)系組成的一個(gè)數(shù)據(jù)組織。

2、特點(diǎn)

存儲(chǔ)方式:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)采用表格的儲(chǔ)存方式,數(shù)據(jù)以行和列的方式進(jìn)行存儲(chǔ),要讀取和查詢都十分方便。存儲(chǔ)結(jié)構(gòu):關(guān)系型數(shù)據(jù)庫(kù)按照結(jié)構(gòu)化的方法存儲(chǔ)數(shù)據(jù),每個(gè)數(shù)據(jù)表都必須對(duì)各個(gè)字段定義好,再根據(jù)表的結(jié)構(gòu)存入數(shù)據(jù),這樣做的好處就是由于數(shù)據(jù)的形式和內(nèi)容在存入數(shù)據(jù)之前就已經(jīng)定義好了,所以整個(gè)數(shù)據(jù)表的可靠性和穩(wěn)定性都比較高,但帶來的問題就是一旦存入數(shù)據(jù)后,如果需要修改數(shù)據(jù)表的結(jié)構(gòu)就會(huì)十分困難。存儲(chǔ)規(guī)范:關(guān)系型數(shù)據(jù)庫(kù)為了避免重復(fù)、規(guī)范化數(shù)據(jù)以及充分利用好存儲(chǔ)空間,把數(shù)據(jù)按照最小關(guān)系表的形式進(jìn)行存儲(chǔ),這樣數(shù)據(jù)管理的就可以變得很清晰、一目了然,當(dāng)然這主要是一張數(shù)據(jù)表的情況。如果是多張表情況就不一樣了,由于數(shù)據(jù)涉及到多張數(shù)據(jù)表,數(shù)據(jù)表之間存在著復(fù)雜的關(guān)系,隨著數(shù)據(jù)表數(shù)量的增加,數(shù)據(jù)管理會(huì)越來越復(fù)雜。擴(kuò)展方式:由于關(guān)系型數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)表中,數(shù)據(jù)操作的瓶頸出現(xiàn)在多張數(shù)據(jù)表的操作中,而且數(shù)據(jù)表越多這個(gè)問題越嚴(yán)重,如果要緩解這個(gè)問題,只能提高處理能力,也就是選擇速度更快性能更高的計(jì)算機(jī),這樣的方法雖然可以一定的拓展空間,但這樣的拓展空間一定有非常有限的,也就是關(guān)系型數(shù)據(jù)庫(kù)只具備縱向擴(kuò)展能力。查詢方式:關(guān)系型數(shù)據(jù)庫(kù)采用結(jié)構(gòu)化查詢語(yǔ)言(即SQL)來對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,SQL早已獲得了各個(gè)數(shù)據(jù)庫(kù)廠商的支持,成為數(shù)據(jù)庫(kù)行業(yè)的標(biāo)準(zhǔn),它能夠支持?jǐn)?shù)據(jù)庫(kù)的CRUD(增加,查詢,更新,刪除)操作,具有非常強(qiáng)大的功能,SQL可以采用類似索引的方法來加快查詢操作。規(guī)范化:在數(shù)據(jù)庫(kù)的設(shè)計(jì)開發(fā)過程中開發(fā)人員通常會(huì)面對(duì)同時(shí)需要對(duì)一個(gè)或者多個(gè)數(shù)據(jù)實(shí)體進(jìn)行操作,這樣在關(guān)系型數(shù)據(jù)庫(kù)中,一個(gè)數(shù)據(jù)實(shí)體一般首先要分割成多個(gè)部分,然后再對(duì)分割的部分進(jìn)行規(guī)范化,規(guī)范化以后再分別存入到多張關(guān)系型數(shù)據(jù)表中,這是一個(gè)復(fù)雜的過程。事務(wù)性:關(guān)系型數(shù)據(jù)庫(kù)強(qiáng)調(diào)ACID規(guī)則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)),可以滿足對(duì)事務(wù)性要求較高或者需要進(jìn)行復(fù)雜數(shù)據(jù)查詢的數(shù)據(jù)操作,而且可以充分滿足數(shù)據(jù)庫(kù)操作的高性能和操作穩(wěn)定性的要求。并且關(guān)系型數(shù)據(jù)庫(kù)十分強(qiáng)調(diào)數(shù)據(jù)的強(qiáng)一致性,對(duì)于事務(wù)的操作有很好的支持。讀寫性能:關(guān)系型數(shù)據(jù)庫(kù)十分強(qiáng)調(diào)數(shù)據(jù)的一致性,并為此降低讀寫性能付出了巨大的代價(jià),雖然關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)和處理數(shù)據(jù)的可靠性很不錯(cuò),但一旦面對(duì)海量數(shù)據(jù)的處理的時(shí)候效率就會(huì)變得很差,特別是遇到高并發(fā)讀寫的時(shí)候性能就會(huì)下降的非常厲害。授權(quán)方式:關(guān)系型數(shù)據(jù)庫(kù)常見的有 Oracle,SQLServer,DB2,Mysql,除了Mysql大多數(shù)的關(guān)系型數(shù)據(jù)庫(kù)如果要使用都需要支付一筆價(jià)格高昂的費(fèi)用,即使是免費(fèi)的Mysql性能也受到了諸多的限制。

3、設(shè)計(jì)步驟

關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)的過程可大體分為四個(gè)時(shí)期。

用戶需求分析時(shí)期,主要是了解和分析用戶對(duì)數(shù)據(jù)的功能需求和應(yīng)用需求,是整個(gè)設(shè)計(jì)過程的基礎(chǔ),事關(guān)整個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)的成敗。數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)期,主要是將用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的數(shù)據(jù)模型,可用實(shí)體—聯(lián)系模型來表示,然后將其轉(zhuǎn)換為已選好的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)RDBMS所支持的一組關(guān)系模式并為其選取一個(gè)適合應(yīng)用環(huán)境的物理結(jié)構(gòu),包括存儲(chǔ)結(jié)構(gòu)和存取方法。數(shù)據(jù)庫(kù)實(shí)現(xiàn)時(shí)期,包括數(shù)據(jù)庫(kù)結(jié)構(gòu)創(chuàng)建階段和應(yīng)用行為設(shè)計(jì)與實(shí)現(xiàn)階段,是根據(jù)數(shù)據(jù)庫(kù)的物理模型創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、創(chuàng)建索引、創(chuàng)建聚簇等。數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)階時(shí)期,最后一個(gè)階段則是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)經(jīng)過試運(yùn)行后即可投入正式運(yùn)行。

4、設(shè)計(jì)原則

在進(jìn)行關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)過程中,要遵循以下幾個(gè)原則,借此可以提高數(shù)據(jù)庫(kù)的存儲(chǔ)效率、數(shù)據(jù)完整性和可擴(kuò)展性。

命名規(guī)范化:在概念模型設(shè)計(jì)中,對(duì)于出現(xiàn)的實(shí)體、屬性及相關(guān)表的結(jié)構(gòu)要統(tǒng)一。例如在數(shù)據(jù)庫(kù)設(shè)計(jì)中,指定學(xué)生Sstudent,專指本科生,相關(guān)的屬性有:學(xué)號(hào)、姓名、性別、出生年月等,及每個(gè)屬性的類型、長(zhǎng)度、取值范圍等都要進(jìn)行確定,這樣就能保證在命名時(shí)不會(huì)出現(xiàn)同名異義或異名同義、屬性特征及結(jié)構(gòu)沖突等問題。數(shù)據(jù)的一致性和完整性:在關(guān)系型數(shù)據(jù)庫(kù)中可以采用域完整性、實(shí)體完整性和參照完整性等約束條件來滿足其數(shù)據(jù)的一致性和完整性,用check、default、null、主鍵和外鍵約束來實(shí)現(xiàn)。數(shù)據(jù)冗余:數(shù)據(jù)庫(kù)中的數(shù)據(jù)應(yīng)盡可能地減少冗余,這就意味著重復(fù)數(shù)據(jù)應(yīng)該減少到最少。例如:若一個(gè)部門職員的電話存儲(chǔ)在不同的表中,假設(shè)該職員的電話號(hào)碼發(fā)生變化時(shí),冗余數(shù)據(jù)的存在就要求對(duì)多個(gè)表進(jìn)行更新操作,若某個(gè)表不幸被忽略了,那么就會(huì)造成數(shù)據(jù)不一致的情況。所以在數(shù)據(jù)庫(kù)設(shè)計(jì)中一定要盡可能存在少地冗余。范式理論:在關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),一般是通過設(shè)計(jì)滿足某一范式來獲得一個(gè)好的數(shù)據(jù)庫(kù)模式,通常認(rèn)為3NF在性能、擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了較好的平衡,因此,一般數(shù)據(jù)庫(kù)設(shè)計(jì)要求達(dá)到3NF,消除數(shù)據(jù)依賴中不合理的部分,最終實(shí)現(xiàn)使一個(gè)關(guān)系僅描述一個(gè)實(shí)體或者實(shí)體間一種聯(lián)系的目的。

三、MangoDB的特點(diǎn)

面向文檔存儲(chǔ),基于JSON/BSON 可表示靈活的數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)DDL能力,沒有強(qiáng)Schema約束,支持快速迭代高性能計(jì)算,提供基于內(nèi)存的快速數(shù)據(jù)查詢?nèi)菀讛U(kuò)展,利用數(shù)據(jù)分片可以支持海量數(shù)據(jù)存儲(chǔ)豐富的功能集,支持二級(jí)索引、強(qiáng)大的聚合管道功能,為開發(fā)者量身定做的功能,如數(shù)據(jù)自動(dòng)老化、固定集合等等跨平臺(tái)版本、支持多語(yǔ)言SDK

延伸閱讀1:什么是MongoDB

MongoDB 是一個(gè)跨平臺(tái)的,面向文檔的數(shù)據(jù)庫(kù),是當(dāng)前 NoSQL 數(shù)據(jù)庫(kù)產(chǎn)品中最熱門的一種。它介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的產(chǎn)品。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似 JSON 的 BSON 格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
如果同一條記錄同時(shí)多個(gè)進(jìn)程可能對(duì)不同的字段進(jìn)行修改,怎么保證列鎖?

一、如果同一條記錄同時(shí)多個(gè)進(jìn)程可能對(duì)不同的字段進(jìn)行修改,怎么保證列鎖沒聽說有列鎖的機(jī)制,主流的方式就是行鎖。我覺得你這種需求可以歸到“...詳情>>

2023-10-13 14:18:11
PC端網(wǎng)站,手機(jī)版網(wǎng)站,APP,三者可以實(shí)現(xiàn)共用同一數(shù)據(jù)庫(kù),能同步更新嗎?

一、PC端網(wǎng)站,手機(jī)版網(wǎng)站,APP,三者可以實(shí)現(xiàn)共用同一數(shù)據(jù)庫(kù)同步更新一般網(wǎng)站實(shí)現(xiàn)pc端與移動(dòng)端適配的需求,方案有兩個(gè):1、一套頁(yè)面,從設(shè)計(jì)時(shí)...詳情>>

2023-10-13 14:10:53
怎么看待oracle的exadata與share nothing系列的hadoop等,以及優(yōu)缺點(diǎn)相互對(duì)比、各自的前途對(duì)未來的影?

一、怎么看待oracle的exadata與share nothing系列的hadoop等exadata的架構(gòu)我也仔細(xì)思考過很久,個(gè)人愚見,exadata引進(jìn)了部分MPP思想,當(dāng)并非MPP...詳情>>

2023-10-13 13:58:16
MySQL數(shù)據(jù)庫(kù)char類型的長(zhǎng)度是什么意思?

一、MySQL數(shù)據(jù)庫(kù)char類型的長(zhǎng)度是什么意思MySQL數(shù)據(jù)庫(kù)char類型的長(zhǎng)度是指該字段所占用的字節(jié)數(shù)。char數(shù)據(jù)類型是MySQL中固定長(zhǎng)度的字符類型。 我...詳情>>

2023-10-13 13:51:32
“數(shù)據(jù)庫(kù)”領(lǐng)域里面的“數(shù)據(jù)字典”到底是什么?

一、“數(shù)據(jù)庫(kù)”領(lǐng)域里面的“數(shù)據(jù)字典”到底是什么數(shù)據(jù)字典是一個(gè)存放有數(shù)據(jù)庫(kù)所用的有關(guān)信息,在數(shù)據(jù)庫(kù)設(shè)計(jì)的初期將數(shù)據(jù)庫(kù)中的各類數(shù)據(jù)的描述集...詳情>>

2023-10-13 13:49:07
快速通道
主站蜘蛛池模板: 基隆市| 浦县| 台山市| 勃利县| 修文县| 常山县| 南皮县| 秦皇岛市| 靖宇县| 桓仁| 德令哈市| 鄂托克前旗| 高要市| 金寨县| 天长市| 澄城县| 金乡县| 宁远县| 阜康市| 河池市| 临汾市| 格尔木市| 松滋市| 沾益县| 启东市| 大渡口区| 霸州市| 泉州市| 诏安县| 泰来县| 禹城市| 鸡东县| 堆龙德庆县| 阿合奇县| 砚山县| 淮北市| 江都市| 洛扎县| 维西| 岑巩县| 旬阳县|