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

資訊專欄INFORMATION COLUMN

數(shù)據(jù)庫的本質(zhì)、概念及其應(yīng)用實踐(一)

William_Sang / 2587人閱讀

摘要:今天這堂課,分為三個大點(diǎn),正如標(biāo)題所指出的,是討論數(shù)據(jù)的本質(zhì)概念與應(yīng)用實踐。采用一些文件型數(shù)據(jù)庫,比如支持訪問的文本數(shù)據(jù)庫,比如比如除了特定的數(shù)據(jù)類型,一般也只保存文本描述數(shù)據(jù)。上面的場景,大多是結(jié)構(gòu)化數(shù)據(jù)的處理場景,像文本數(shù)據(jù)庫數(shù)據(jù)庫。

今天這堂課,分為三個大點(diǎn),正如標(biāo)題所指出的,是討論數(shù)據(jù)的本質(zhì)、概念與應(yīng)用實踐。第一點(diǎn)本質(zhì)的探討是站在一個更高的高度來分析數(shù)據(jù)的產(chǎn)生以及各種使用場景,然后將數(shù)據(jù)相關(guān)的存儲手段,作一個匯總講解。而概念,則是一個串講,主要放在關(guān)系數(shù)據(jù)庫上,因為我們六月份公開課,也將以關(guān)系型數(shù)據(jù)庫為主。第三點(diǎn)就是通過一些實例來鞏固前面兩點(diǎn)所講的內(nèi)容。

一、數(shù)據(jù)庫的出現(xiàn)源起和本質(zhì)
1.1 數(shù)據(jù)庫的起源
想像一下我們的電腦,有目錄,有文件,文件有大小,有位置,有格式,這個是有文件系統(tǒng)開始就有這個概念的,肯定在有一個地方,存儲了這些文件的參數(shù)或者元數(shù)據(jù),而在我們的日常生活中,每一個物體和人,都有其各自不同的特征,當(dāng)一批量的這些可描述的人的特征,想要數(shù)據(jù)化存儲起來的時候,也就需要有一種格式來保存。除了保存數(shù)據(jù)之外,我們還得對數(shù)據(jù)進(jìn)行管理。這就是數(shù)據(jù)庫出現(xiàn)的背景,并且隨著使用場景的越加復(fù)雜,數(shù)據(jù)庫本身也有了更多的衍生版本。
所以數(shù)據(jù)庫起源于對數(shù)據(jù)的存儲以及管理。

1.2數(shù)據(jù)庫的使用場景
那么我們有幾個問題, 基于大家目前的理解,第一個問題是有哪些需要保存的數(shù)據(jù)種類,有哪些存儲方式呢?我們發(fā)散一點(diǎn)來想。

可以得到如下的情況:
A、在程序中自定義,比如數(shù)組,只保存在內(nèi)存里,等程序停止了之后,數(shù)據(jù)就沒有了。這樣可以不可以?
在這個里面存儲的反正是描述型數(shù)據(jù),也可以是二進(jìn)制數(shù)組。

B、保存在一個文本文件里可以不可以,有自己的格式,比如自定義的格式,比如XML,比如JSON格式
這里保存的,只能是描述型數(shù)據(jù)。

C、采用一些文件型數(shù)據(jù)庫,比如支持SQL訪問的文本數(shù)據(jù)庫,比如Sqlite、比如Access
除了特定的數(shù)據(jù)類型,一般也只保存文本描述數(shù)據(jù)。

D、采用 MySQL 這樣基于網(wǎng)絡(luò)和可分布式的數(shù)據(jù)庫系統(tǒng)。
用來保存較多數(shù)據(jù)量的用戶數(shù)據(jù)、關(guān)系數(shù)據(jù)、交易數(shù)據(jù),這些數(shù)據(jù)要實再快速查詢更新。

E、當(dāng)數(shù)據(jù)量大時,一臺設(shè)備就不能滿足要求,這就需要用到分布式數(shù)據(jù)庫,可能是數(shù)據(jù)集群

F、采用 memcached 這樣的軟件保存著緩存的數(shù)據(jù)。
一般用于保存文本數(shù)據(jù)或者計數(shù)。

G、采用 fastdfs 這樣的分布式文件系統(tǒng)來保存著文件數(shù)據(jù)。
不用于保存除文件本身描述之外的其他描述數(shù)據(jù),用于保存大量的文件。

H、采用redis 這樣的KVDB 軟件來保存簡單關(guān)系的描述數(shù)據(jù),或者特定的結(jié)構(gòu)。
比如用于保存微博數(shù)據(jù),用KEY可以迅速定位到微博內(nèi)容。

I、同KVDB類似的,大家有聽過隊列那幾講的同學(xué)嗎?是不是也是特殊的數(shù)據(jù)存儲手段呢?一邊有人生產(chǎn)數(shù)據(jù),一邊有人消費(fèi)數(shù)據(jù)。

J、用于保存地理關(guān)系數(shù)據(jù),并提供運(yùn)算。在英文里叫Spatial Data,也就是空間數(shù)據(jù)。Oracle最擅長,現(xiàn)在MySQL也有空間擴(kuò)展。
http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.html

K、而對于大量的,源源不斷的海量數(shù)據(jù),相對不那么規(guī)則的數(shù)據(jù)存儲,我們可能存儲在Hadoop系統(tǒng)中。

L、最后再談一個場景,像百度這樣的搜索引擎,他會把他的數(shù)據(jù)全放在MySQL里,然后去檢索嗎?顯然不是。有自有的索引格式和支持分布式查詢的系統(tǒng) 。

1.3數(shù)據(jù)庫場景以及分類總結(jié)
總結(jié)一下:
A、在電腦時代以前,人類就產(chǎn)生了大量的信息,而電腦時代以來,更是產(chǎn)生了大量的數(shù)字化的數(shù)據(jù)。而這些數(shù)據(jù)庫的保存的形式,從上面可以看到,依據(jù)不同的場景,不同的保存方式,是多種多樣的。有僅在內(nèi)存中保存,有在文件中保存,有專用嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫系統(tǒng)保存,也有不那么嚴(yán)謹(jǐn)?shù)腒VDB保存。

B、根據(jù)上面的各種存儲場景,我們對數(shù)據(jù),也做兩個簡單的分類,一個是結(jié)構(gòu)化數(shù)據(jù)庫和非結(jié)構(gòu)化數(shù)據(jù)的分類,當(dāng)然,還有再加一種半結(jié)構(gòu)化數(shù)據(jù)的。所謂結(jié)構(gòu)化,就是很規(guī)整地有屬性的一種情況。像一個人,他有身高、體重、年齡,這個描述是結(jié)構(gòu)化的,你給照一張照片,錄一段聲音,拍一段攝像,盡管這也是數(shù)據(jù),但是不是結(jié)構(gòu)化的。對于不同的這兩類數(shù)據(jù),存儲方式也不相同,比如結(jié)構(gòu)化數(shù)據(jù)是典型的二維表的結(jié)構(gòu)。而非結(jié)構(gòu)化數(shù)據(jù)就是只以原始數(shù)據(jù)的形式存儲。
上面的場景,大多是結(jié)構(gòu)化數(shù)據(jù)的處理場景,像文本數(shù)據(jù)庫、MySQL數(shù)據(jù)庫。而在fastdfs上,Hadoop上,就有大量的非結(jié)構(gòu)化數(shù)據(jù)的存儲。

C、根據(jù)數(shù)據(jù)量本身的大小,我們也可以做一個分類?;蛘咛囟ǖ募夹g(shù)應(yīng)用場景。
比如小數(shù)據(jù)量數(shù)據(jù),我們可能為了方便,就以文本的方式來保存。而對于一個正規(guī)的提供服務(wù)的網(wǎng)站,像用戶數(shù)據(jù),比如優(yōu)才網(wǎng)的用戶數(shù)據(jù),就會用MySQL數(shù)據(jù)庫來保存,為了訪問速度,也會用到memcached這樣的緩存軟件。也會用fastdfs來保存小文件。而當(dāng)有大量的日志等數(shù)據(jù)量產(chǎn)生,需要進(jìn)行數(shù)據(jù)分析的時候,比如每天的數(shù)據(jù)量以幾百G,T來計的時候,就會用Hadoop 這樣的軟件。

所以,不同的數(shù)據(jù)量也使用不同的保存方式。小型數(shù)據(jù)、大中型數(shù)據(jù)、海量數(shù)據(jù)或者大數(shù)據(jù)。

D、第四個角度就是從上面可以看出,數(shù)據(jù)的存儲方式,有很多類別,不同類別適用于不同的場景。數(shù)據(jù)庫是很強(qiáng)大的,但是不是所有的場景都合適使用數(shù)據(jù)庫。比如上面講的全文檢索的場景,一般需要用特定的存儲,特定的索引方式。如果具體地講,全文檢索中,使用的一種索引,叫倒排索引。

二、數(shù)據(jù)庫有哪些概念
好的,聊完了數(shù)據(jù)以及相關(guān)軟件的一些使用場景,對于不同場景下使用不同軟件有了概念。下面我們來介紹一下,在數(shù)據(jù)庫的領(lǐng)域常用的 一些術(shù)語,這些術(shù)語,在我們的整個數(shù)據(jù)庫學(xué)習(xí)中都要用到。

由于公開課的時間問題,我們主要交流一下基本概念,對于高級的概念,后面的公開課會持續(xù)地講到。

****2.1 數(shù)據(jù)庫的基本概念****
介紹我們下面數(shù)據(jù)庫的這些概念時,我們以一個公司做為對比。
2.1.1、庫
庫,就相對于一個公司,下面幾乎所有的概念都裝在這個公司里的。
在使用數(shù)據(jù)庫之前,我們得在數(shù)據(jù)庫軟件上創(chuàng)建數(shù)據(jù)庫。
在 MySQL 里,同一個連接,只能附著在同一個庫上,當(dāng)然,只要權(quán)限允許,也可以實現(xiàn)跨庫查詢。
創(chuàng)建數(shù)據(jù)庫的語法是
create database xxx;
只有root 用戶能創(chuàng)建庫。

2.1.2、表
表就相對于,公司的一個部門,這個部門管用戶,那個部門管訂單。就是一個又一個的表。
表由記錄和字段組成。
字段表成的是表定義。
記錄組成的是表數(shù)據(jù)。

CREATE TABLE `hstesttbl` (
  `k` int(11) NOT NULL AUTO_INCREMENT,
  `v` char(255) NOT NULL DEFAULT "",
  PRIMARY KEY (`k`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

字段定義則有字段名,字段類型,是否為空,是否自增長,缺省值等。
記錄則是實際的數(shù)據(jù)值,同一個表的記錄的定義都是一樣的。也就是說有相同的特征。

2.1.3、視圖
視圖類就相當(dāng)于虛擬的項目小組,可以是同一個部門出來的,也可以是跨部門的。
視圖之所以說是虛擬,因為沒有實際存在的數(shù)據(jù)。無論是定義,還是數(shù)據(jù),都是從別的表里組合起來的。

create view hsview as select * from hstesttbl;

mysql> show tables;
+--------------------+
| Tables_in_hstestdb |
+--------------------+
| hstesttbl          |
| hsview             |
+--------------------+
2 rows in set (0.02 sec)

mysql> show create table hsviewG;
*************************** 1. row ***************************
                View: hsview
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `hsview` AS select `hstesttbl`.`k` AS `k`,`hstesttbl`.`v` AS `v` from `hstesttbl`

從上面的命令可以看出,視圖跟表的操作有很多相似。并且從表到視圖還能修改字段名。

2.1.4、索引
索引就是相當(dāng)于部門每個員工的一些用于快速找到員工的屬性。比如職位,比如愛好,比如畢業(yè)學(xué)校。通過這些,就能將部門的人分類,每一次查詢都能縮小結(jié)果集。

對表創(chuàng)建索引是,比如還是上面這個表, alter table hstesttbl add index(xxx);

2.1.5、鍵
鍵就相當(dāng)于部門每個人的一些最快捷且唯一的聯(lián)絡(luò)方式,比如電話、郵箱,微信號,QQ號都是。
添加鍵跟添加索引,類似,刪除鍵這里介紹一下,
比如:

alter table hstesttbl drop primary key;

2.1.6、權(quán)限
是指公司內(nèi)部限制的一些紀(jì)律,比如公司外部人,是不能知道公司內(nèi)部的一些事情的。
我們可以通過

grant ALL PRIVILEGES on dbname.* to "user"@"127.0.0.1" identified by "password" with grant option;

這樣的語句給某用戶授權(quán),全權(quán)訪問某個庫。這個這個用戶只能訪問這個庫,在沒有獲得更多授權(quán)的情況下。

上面說只有root用戶能創(chuàng)建數(shù)據(jù)庫,而對于上面的其他操作,比如創(chuàng)建表,添加視圖,新建、刪除索引和鍵,只要經(jīng)過了上面的授權(quán),就可以做了。

2.1.7、SQL
SQL就相當(dāng)于公司的一些規(guī)定,指令。比如我們在公司里交流說,可以發(fā)布到生產(chǎn)環(huán)境了。聽起來一句簡單的話,包含著可能進(jìn)行了產(chǎn)品確認(rèn),各種測試,可以由運(yùn)維上線了。
SQL是我們同數(shù)據(jù)庫打交道的指令。上面其實在講各個概念時,已經(jīng)都講過了一些SQL命令,我想這里提幾個點(diǎn)。

手寫命令,非常重要,優(yōu)才網(wǎng)要求自己的學(xué)員都要有手寫命令的能力,不能離開phpmyadmin就沒有辦法干活。

SQL上面盡管介紹了這么多,我們對它進(jìn)行一個分類,其實這個分類早有人做了。主要是為DDL、DML、DCL(當(dāng)然還有一個TCL,我們今天不講)。

(1)數(shù)據(jù)定義。(SQL DDL)用于定義SQL模式、基本表、視圖和索引的創(chuàng)建和撤消操作。上面的,大多是DDL。
(2)數(shù)據(jù)操縱。(SQL DML)數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。數(shù)據(jù)更新又分成插入、刪除、和修改三種操作。 這就是我們平常所熟知的增刪改查操作。
(3)數(shù)據(jù)控制(DCL)。包括對基本表和視圖的授權(quán),完整性規(guī)則的描述,事務(wù)控制等內(nèi)容。這個就是我們上面也有涉及,權(quán)限處理。

2.2 學(xué)術(shù)性的概念
?1、范式與冗余
–第一范式,列不可以分割,比如興趣字段,它里面,可能寫了籃球、電影等多項。原則上來講,這個表是不滿足第一范式的。應(yīng)該專門建立一個用戶興趣表,有uid和興趣。然后一個人有多條記錄。
所以在數(shù)據(jù)庫字段定義時,需要顯式地指明數(shù)據(jù)類型,除了文本類型之外,你很難往一個字段里附加多個信息。

–第二范式,主鍵決定了其他全部屬性,比如一個班級學(xué)生表,一個學(xué)號,決定了學(xué)生其他的信息,比如有一個表,里面有學(xué)號、學(xué)院編號、學(xué)生姓名、年齡、學(xué)院、院長。學(xué)號和學(xué)院編號是主鍵,看起來沒有錯,學(xué)生在這個學(xué)院編號里,決定了哪個學(xué)院,院長是誰誰誰。不過這是不滿足第二范式的,因為學(xué)院和院長不是由學(xué)號這個主鍵來決定的,而是由學(xué)院編號來決定的。所以要分拆。

–和三范式,其他屬性全由主鍵決定, 比如還是上面這個表,里面有學(xué)號、學(xué)院編號、學(xué)生姓名、年齡、學(xué)院、院長。學(xué)號是主鍵,看起來沒有錯,學(xué)生在這個學(xué)院里,院長是誰誰誰。不過這是不滿足第二范式的,因為院長不是由學(xué)號這個主鍵來決定的,而是由學(xué)院來決定的。所以要分拆。

?2、ACID:
–原子性 (Atomicity) , 不可中間失敗。比如說,我們買東西,一邊是買家付款,從買家賬戶扣除,另一邊是存錢入賣家賬戶,這分了兩步,這不是原子的。因為可能中間失敗。比如扣錢成功,存錢未成功。

–一致性(Consistency),還是上面這個例子,交易完成后,數(shù)據(jù)一致,收支相抵。不能一邊多,一邊少。

–隔離性(Isolation),避免并發(fā)混亂,很多數(shù)據(jù),一個客戶訪問時沒有問題,多個用戶在高并發(fā)時訪問,也要滿足數(shù)據(jù)不會錯亂。

–持久性(Durability),永久保存,就是不要丟失。不能一關(guān)機(jī)沒有了,即使丟一條也不成。

2.3 更多高級術(shù)語
1、存儲引擎 、事務(wù)、復(fù)合索引、連接池、備份、恢復(fù)
2、主從復(fù)制、行鎖定、表鎖定、慢查詢、二進(jìn)制日志、臨時表、內(nèi)容分發(fā)、同步、數(shù)據(jù)庫分區(qū)、分庫、分表、水平拆分、垂直拆分
這更多的高級術(shù)語,我們在后面再交流,或者在全棧工程師課程中再交流。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17451.html

相關(guān)文章

  • 數(shù)據(jù)庫本質(zhì)、概念及其應(yīng)用實踐(二)

    摘要:通過就可以看到這個文本數(shù)據(jù)庫的運(yùn)行的例子。有兩個特點(diǎn)目前已經(jīng)是非常流行的文件數(shù)據(jù)庫,尤其是嵌入式數(shù)據(jù)庫,在移動應(yīng)用中也應(yīng)用得十分普遍。分別用即將廢棄的和以來操作數(shù)據(jù)庫。 三、各種數(shù)據(jù)庫的關(guān)系、實踐3.1、自制簡單文本格式(甚至在PHP中,用數(shù)據(jù)保存配置) A、比如有一個AngularJS的示例項目,就用json保存示例數(shù)據(jù)的格式。 ![請輸入圖片描述][1] B、PHP保存配置數(shù)據(jù)就...

    int64 評論0 收藏0
  • 詳解云原生應(yīng)用實踐與未來趨勢

    摘要:近日,愛分析在京舉辦了愛分析中國云計算高峰論壇,本次論壇以云化萬物,智動未來為主題,探討云計算行業(yè)的發(fā)展趨勢。演講實錄黃啟功大家好首先做一下自我介紹,我是時速云黃啟功,感謝愛分析的邀請,我今天分享的主題叫云原生應(yīng)用實踐與未來趨勢。 近日,愛分析在京舉辦了 2018 愛分析·中國云計算高峰論壇,本次論壇以云化萬物,智動未來為主題,探討云計算行業(yè)的發(fā)展趨勢。愛分析邀請了云計算領(lǐng)域標(biāo)桿公司時...

    wujl596 評論0 收藏0
  • 擴(kuò)展spring cache 支持緩存多租戶及其自動過期

    摘要:在多租戶下租戶所請求的并不是同一入?yún)㈦m然看起來參數(shù)名參數(shù)值都是一樣的,更不能返回同一個結(jié)果。默認(rèn)的根據(jù)入?yún)韰^(qū)分不能滿足多租戶系統(tǒng)的設(shè)計需求不能實現(xiàn)根據(jù)租戶隔離。 spring cache 的概念 Spring 支持基于注釋(annotation)的緩存(cache)技術(shù),它本質(zhì)上不是一個具體的緩存實現(xiàn)方案(例如 EHCache 或者 OSCache),而是一個對緩存使用的抽象,通過在...

    hover_lew 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<