C(Chapter)
C-01.數(shù)據(jù)庫概述
1.為什么要用數(shù)據(jù)庫
- 持久化(persistence):把數(shù)據(jù)保存到可掉電式存儲設(shè)備(硬盤)中以供之后使用。大多數(shù)情況下,特別是企業(yè)應(yīng)用,數(shù)據(jù)持久化是將內(nèi)存中的數(shù)據(jù)保存到硬盤上加以"固化",而持久化的實(shí)現(xiàn)過程大多使用各種關(guān)系數(shù)據(jù)庫來完成。
- 持久化的主要作用是將內(nèi)存中的數(shù)據(jù)存到關(guān)系型數(shù)據(jù)庫中,當(dāng)然也可以存儲在磁盤文件,XML數(shù)據(jù)文件中。
2.數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)
2.1 數(shù)據(jù)庫的相關(guān)概念
DB:數(shù)據(jù)庫(Database)。存儲數(shù)據(jù)的倉庫,其本質(zhì)是一個(gè)文件系統(tǒng)。保存了一系列有組織的數(shù)據(jù)。
DBMS:數(shù)據(jù)庫管理系統(tǒng)(Database Management System)。是一種操作和管理數(shù)據(jù)庫的大型軟件,用于建立,使用和維護(hù)數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制。用戶通過數(shù)據(jù)庫管理和訪問數(shù)據(jù)庫中表的數(shù)據(jù)。
SQL:結(jié)構(gòu)化查詢語言(Structured Query Language)。專門用來與數(shù)據(jù)庫交互的語言。
2.2 數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)的關(guān)系
數(shù)據(jù)庫管理系統(tǒng)(DBMS)可以管理多個(gè)數(shù)據(jù)庫,一般開發(fā)人員會針對每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫。為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會在數(shù)據(jù)庫中創(chuàng)建多個(gè)表,以保存程序中用戶的數(shù)據(jù)。
3.MySQL優(yōu)勢
為什么很多廠商選擇MySQL?
- 1.開放源代碼,使用成本低。
- 2.性能卓越,服務(wù)穩(wěn)定。
- 3.軟件體積小,使用簡單,并且易于維護(hù)。
- 4.歷史悠久,社區(qū)用戶活躍,遇到問題容易解決。
- 5.很多互聯(lián)網(wǎng)公司再用,經(jīng)過了時(shí)間的考驗(yàn)。
4.RDBMS與非RDBMS
RDBMS(Relationship Database Management System)
4.1 關(guān)系型數(shù)據(jù)庫(RDBMS)
4.1.1 實(shí)質(zhì)
- 關(guān)系型數(shù)據(jù)庫是最古老的數(shù)據(jù)庫類型,關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(二維表格)。
- 關(guān)系型數(shù)據(jù)庫以行(row)和列(column)的形式存儲數(shù)據(jù),以便于用戶理解。這一系列的行和列被稱為表(table),一組表組成了一個(gè)庫(database)。
- 表和表之間的數(shù)據(jù)記錄有關(guān)系(relationship)?,F(xiàn)實(shí)世界里的各種實(shí)體以及實(shí)體之間的各種關(guān)系均用關(guān)系模型來表示。關(guān)系型數(shù)據(jù)庫,就是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫。
- SQL就是關(guān)系型數(shù)據(jù)庫的交互語言。
4.1.2 優(yōu)勢
- 復(fù)雜查詢 可以用SQL語句方便的在一個(gè)表以及各個(gè)表之間,做非常復(fù)雜的數(shù)據(jù)查詢。
- 事務(wù)支持 使得對于安全性很高的數(shù)據(jù)訪問要求得以實(shí)現(xiàn)。
4.2 非關(guān)系型數(shù)據(jù)庫(非DBMS)
4.2.1 介紹
非關(guān)系型數(shù)據(jù)庫,可以看成關(guān)系型數(shù)據(jù)庫的簡化版本
,基于鍵值對存儲數(shù)據(jù),不需要經(jīng)過SQL層的解析,性能非常高
。同時(shí),減少了很多不常用的功能,進(jìn)一步提高了性能。
目前主流的非關(guān)系型數(shù)據(jù)庫都是免費(fèi)的。
4.2.2 有那些非關(guān)系型數(shù)據(jù)庫
相比于SQL,NoSQL泛指非關(guān)系型數(shù)據(jù)庫,包括了鍵值型數(shù)據(jù)庫,文檔型數(shù)據(jù)庫,搜索引擎和列存儲等,還有圖形數(shù)據(jù)庫。也只有NoSQL才能將這些數(shù)據(jù)庫都概括。
鍵值型數(shù)據(jù)庫
鍵值型數(shù)據(jù)庫,通過key-value鍵值的方式來存儲數(shù)據(jù),其中key和value可以是簡單的對象,也可以是復(fù)雜的對象。key作為唯一的標(biāo)識符,優(yōu)點(diǎn)是查找速度快,而且明顯優(yōu)于關(guān)系型數(shù)據(jù)庫,確定是無法像關(guān)系型數(shù)據(jù)庫一樣使用條件過濾(比如WHERE),如果不知道去哪里找數(shù)據(jù),就會遍歷所有的鍵,消耗大量的CPU資源。
鍵值型數(shù)據(jù)庫典型的使用場景就是作為內(nèi)存緩存。Redis是最流行的鍵值型數(shù)據(jù)庫。
文檔型數(shù)據(jù)庫
可以存放文檔,可以是xml格式,json格式。再數(shù)據(jù)庫中文檔作為處理信息的基本單位,一個(gè)文檔相當(dāng)于一條記錄。文檔數(shù)據(jù)庫所存放的文檔,就相當(dāng)于鍵值數(shù)據(jù)庫所存放的值。MongoDB是最流行的文檔型數(shù)據(jù)庫。此外還有CouchDB等。
搜索引擎數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫雖然采用了索引提升了檢索效率,但是針對全文索引效率卻較低。搜索引擎數(shù)據(jù)庫是應(yīng)用在搜索引擎領(lǐng)域的數(shù)據(jù)存儲形式,由于搜索引擎會爬取大量的數(shù)據(jù),并以特定的格式進(jìn)行存儲,這樣在檢索的時(shí)候,才能保證性能最優(yōu)。核心原理是倒排索引
。
典型產(chǎn)品:ES(Elasticsearch),Solr,Splunk等。
列式數(shù)據(jù)庫
列式數(shù)據(jù)庫是相對于行式存儲的數(shù)據(jù)庫,Oracle,MySQL,SQL Server等數(shù)據(jù)庫都是采用的行式存儲(Row-based),而列式數(shù)據(jù)庫是將數(shù)據(jù)按照列存儲到數(shù)據(jù)庫中,這樣做的好處是可以大量降低系統(tǒng)的I/O,適合于分布式文件系統(tǒng),不足在于功能相對有限。
典型產(chǎn)品:HBase。
圖形數(shù)據(jù)庫
圖形數(shù)據(jù)庫,利用了圖這種數(shù)據(jù)結(jié)構(gòu)存儲了實(shí)體(對象)之間的關(guān)系,圖形數(shù)據(jù)庫最典型的例子就是社交網(wǎng)絡(luò)中人與人的關(guān)系,數(shù)據(jù)模型主要是以節(jié)點(diǎn)和邊(關(guān)系)來實(shí)現(xiàn),特點(diǎn)在于能高效的解決復(fù)雜的關(guān)系問題。
圖形數(shù)據(jù)庫顧名思義,就是一種存儲圖形關(guān)系的數(shù)據(jù)庫,它利用了圖這種數(shù)據(jù)結(jié)構(gòu),存儲了實(shí)體(對象)之間的關(guān)系。關(guān)系型數(shù)據(jù)用于存儲明確關(guān)系的數(shù)據(jù),但對于復(fù)雜關(guān)系的數(shù)據(jù)存儲卻有些力不從心。如社交網(wǎng)絡(luò)中人物之間的關(guān)系,如果使用關(guān)系型數(shù)據(jù)庫會非常復(fù)雜,用圖形數(shù)據(jù)庫將非常簡單。
典型產(chǎn)品:Neo4J,InfoGrid等。
4.2.3 NoSQL的演變
NoSQL對SQL做出了很好的補(bǔ)充,比如實(shí)際開發(fā)中,有很多業(yè)務(wù)需求,其實(shí)并不需要完整的關(guān)系型數(shù)據(jù)庫功能,非關(guān)系型數(shù)據(jù)庫的功能就足夠使用了。這種情況下,使用性能更高
,成本更低的
的非關(guān)系型數(shù)據(jù)庫當(dāng)然是更好的選擇,比如:排行榜,定時(shí)器等。文章來源:http://www.zghlxwxcb.cn/news/detail-747977.html
5.關(guān)系型數(shù)據(jù)庫設(shè)計(jì)規(guī)則
- 關(guān)系型數(shù)據(jù)庫的典型數(shù)據(jù)結(jié)構(gòu)就是
數(shù)據(jù)表
,這些數(shù)據(jù)表的組成都是結(jié)構(gòu)化的(Structured)。 - 將數(shù)據(jù)放到表中,表再放到庫中。
- 一個(gè)數(shù)據(jù)庫中可以有多個(gè)表,每個(gè)表都有一個(gè)名字,用來標(biāo)識自己。表名具有唯一性。
- 表具有一些特性,這些特性定義了數(shù)據(jù)在表中如何存儲,類似Java中“類”的設(shè)計(jì)。
5.1 表,記錄,字段
- E-R(entity-relationship,實(shí)體-聯(lián)系),模型中有三個(gè)主要概念是:
實(shí)體集
,屬性
,聯(lián)系集
。 - 一個(gè)實(shí)體集(Class)對應(yīng)數(shù)據(jù)庫中的一張表(Table),一個(gè)實(shí)體(Instance)則對應(yīng)于數(shù)據(jù)庫表中的一行(Row),也稱為一條記錄(Record)。一個(gè)屬性(Attribute)對應(yīng)于數(shù)據(jù)庫中的一列(Cloumn),也成為一個(gè)字段(Field)。
- ORM思想(Object Relational Mapping)體現(xiàn):數(shù)據(jù)庫中的一張表 <----> Java中一個(gè)類,表中的一條數(shù)據(jù) <----> 類的一個(gè)對象(實(shí)體),
表中的一個(gè)列 <----> 類中的一個(gè)字段,屬性(Field)。
5.2 表的關(guān)聯(lián)關(guān)系
- 表與表之間的數(shù)據(jù)記錄有關(guān)系?,F(xiàn)實(shí)世界的實(shí)體及實(shí)體之間的關(guān)系均用關(guān)系模型來表示。
- 四種,一對一關(guān)系,一對多關(guān)系,多對多關(guān)系,自我引用。
學(xué)習(xí)視頻是尚硅谷宋紅康老師主講的b站視頻,BV1iq4y1u7vj
只是為了記錄自己的學(xué)習(xí)歷程,且本人水平有限,不對之處,請指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-747977.html
到了這里,關(guān)于Restart Study MySQL-01數(shù)據(jù)庫概述(基礎(chǔ))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!