一文講透數(shù)據(jù)庫,以后別說你不懂?dāng)?shù)據(jù)庫
“數(shù)據(jù)分析需要懂?dāng)?shù)據(jù)庫的知識嗎?”
李老頭最近經(jīng)常聽到這樣的問題,很多新人都覺得如果自己只做業(yè)務(wù),不走技術(shù)線,是不是就可以不用學(xué)習(xí)數(shù)據(jù)庫了?是不是面試的時候就不需要準(zhǔn)備了?
畢竟很多新人剛進(jìn)公司,一看到數(shù)據(jù)庫里各種表的復(fù)雜鏈接方式,就開始犯起頭疼了,更有甚者連SQL與數(shù)據(jù)庫的區(qū)別都不知道,數(shù)據(jù)倉庫這些概念就更不用提了。

然而,讓很多人失望的是,數(shù)據(jù)庫知識是我在面試新人時最常問的問題,沒有之一。
數(shù)據(jù)分析需要懂?dāng)?shù)據(jù)庫嗎?
對數(shù)據(jù)庫的了解程度,要看你定位在數(shù)據(jù)分析的哪一種層次,我見過一些數(shù)據(jù)分析人員不懂?dāng)?shù)據(jù)庫,都是基于 Excel 的文件源做數(shù)據(jù)分析,他們更擅長業(yè)務(wù)。
但是,他們通常情況下必須依賴于 IT 部門的支持,需要 IT 部門提供一些基本的分析數(shù)據(jù)。憑借對業(yè)務(wù)的理解,對業(yè)務(wù)數(shù)據(jù)的理解也一樣可以做好數(shù)據(jù)分析工作。
也有一類數(shù)據(jù)分析人員,本身就是從數(shù)據(jù)庫、商業(yè)智能BI的角色轉(zhuǎn)向純粹的數(shù)據(jù)分析人員,通過對業(yè)務(wù)的理解加上數(shù)據(jù)處理的技能和知識在分析領(lǐng)域也可以做的很好。
他們的一大優(yōu)點就是在很大程度上不需要過度依賴IT部門,給他們一定的權(quán)限就可以自己動手直接面對統(tǒng)一的數(shù)據(jù)源做數(shù)據(jù)分析,有時一條SQL就是數(shù)據(jù)分析的一個環(huán)節(jié)。

所以,作為數(shù)據(jù)分析人員,個人覺得技多不壓身,多一種獲取不同數(shù)據(jù)渠道的本領(lǐng),自然是有好處的。
什么是數(shù)據(jù)庫?
首先在了解數(shù)據(jù)庫之前,我們要先了解一下數(shù)據(jù)是怎么儲存的?
我們都知道,當(dāng)我們的祖先還在荒野中茹毛飲血的時候,就學(xué)會了利用結(jié)繩記事來進(jìn)行數(shù)據(jù)儲存,這些被打上結(jié)的繩子就是“數(shù)據(jù)”,雖然這種數(shù)據(jù)很難保存、很難提取。

后來祖先利用甲骨、竹簡、紙張來儲存文字?jǐn)?shù)據(jù),近代發(fā)明了錄音機(jī)、攝像機(jī)儲存音頻數(shù)據(jù),雖然數(shù)據(jù)載體一直在變化,但是數(shù)據(jù)存儲的方式并沒有發(fā)生很大的變化,都屬于傳統(tǒng)存儲方式。
直到信息時代的到來,數(shù)據(jù)存儲的方式才發(fā)生了重大變革并朝著兩分方向發(fā)展:文件與數(shù)據(jù)庫。
1、文件相當(dāng)于把數(shù)據(jù)存放在Excel當(dāng)中,形成讀寫文件后進(jìn)行存儲,然后通過python等工具對文件數(shù)據(jù)進(jìn)行篩選、處理、提取;
2、數(shù)據(jù)庫則是把數(shù)據(jù)按照其結(jié)構(gòu)將其儲存在計算機(jī)中,形成一個具有大數(shù)據(jù)量的數(shù)據(jù)集合,相當(dāng)于存放文件的文件柜。

利用數(shù)據(jù)庫存儲數(shù)據(jù)是目前最為流行的方式,因為數(shù)據(jù)庫擁有持久化存儲、讀寫速度也很高,更關(guān)鍵的是數(shù)據(jù)庫可以極大程度保證數(shù)據(jù)的有效性,而不像是Excel等文件極易容易產(chǎn)生修改錯誤。
數(shù)據(jù)庫分類?
按照早期的數(shù)據(jù)庫理論,比較流行的數(shù)據(jù)庫模型有三種,分別為層次式數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。而在當(dāng)今的互聯(lián)網(wǎng)企業(yè)中,最常用的數(shù)據(jù)庫模式主要有兩種,即關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式)。在關(guān)系型數(shù)據(jù)庫中,對數(shù)據(jù)的操作幾乎全部建立在一個或多個關(guān)系表格上,通過這些關(guān)聯(lián)的表格分類、合并、連接或選取等運算來實現(xiàn)數(shù)據(jù)的管理。

關(guān)系型通俗的理解是,數(shù)據(jù)作為二維數(shù)組存在,你可以理解為圖書館的圖書排列。
書架、樓層你可以理解為關(guān)系型的數(shù)據(jù)結(jié)構(gòu),書作為數(shù)據(jù)存在,而所有圖書館管理員就是數(shù)據(jù)庫的進(jìn)程,用于不同的工作。有人救火(數(shù)據(jù)修復(fù)、備份),有人整理書架、書籍(數(shù)據(jù)整理、歸檔),而用戶進(jìn)程就是指的來到圖書館的顧客,他們看書、移動書籍,而管理員就會對著維護(hù)。
關(guān)系型數(shù)據(jù)庫誕生距今已有40多年了,從理論產(chǎn)生到發(fā)展到實現(xiàn)產(chǎn)品,例如:常見的MySQL和Oracle,oracle在數(shù)據(jù)庫領(lǐng)域里上升到了霸主地位,形成每年高達(dá)數(shù)百億美元的龐大產(chǎn)業(yè)市場,而MySQL也是不容忽視的數(shù)據(jù)庫,以至于被Oracle重金收購了。

非關(guān)系型數(shù)據(jù)庫也被稱為NoSQL數(shù)據(jù)庫,本意是“Not Only SQL”,作為傳統(tǒng)數(shù)據(jù)庫的一個有效補充。NoSQL數(shù)據(jù)庫在特定的場景下可以發(fā)揮難以想象的高效率和高性能。
因為隨著web2.0網(wǎng)站的興起,海量數(shù)據(jù)對關(guān)系型數(shù)據(jù)庫存儲的容量要求高,單機(jī)無法滿足需求,很多時候需要用集群來解決問題,關(guān)系型數(shù)據(jù)庫就顯得力不從心了。

非關(guān)系型數(shù)據(jù)庫因而誕生,實際上非關(guān)系型數(shù)據(jù)庫就是針對特定場景,以高性能和使用便利為目的功能特異化的數(shù)據(jù)庫產(chǎn)品,比如Google的BigTable與Amazon的Dynamo。
SQL與數(shù)據(jù)庫的關(guān)系
這個時候很多人就會把sql與數(shù)據(jù)庫的概念搞混了,很多新人就以為Sql就是用來存儲數(shù)據(jù)的數(shù)據(jù)庫,還有的以為sql是數(shù)據(jù)庫的一種。
為了方便大家理解,我給大家打個比方:
如果數(shù)據(jù)就是一張張的表格,我們就可以按照不同的表格關(guān)系放在不同的文件夾里,這個文件夾就相當(dāng)于數(shù)據(jù)庫的基礎(chǔ)構(gòu)成要素——數(shù)據(jù)表。
而當(dāng)我們的文件夾也非常繁多復(fù)雜的時候,我們就可以將文件夾按照不同的構(gòu)成分類儲存在文件柜中,每個文件柜中可能有非常多的分類用來存放不同的文件夾,這個文件柜就相當(dāng)于數(shù)據(jù)庫。
而當(dāng)我們想要從文件柜中找到某份文件的時候,我們需要按照一定的規(guī)則去尋找,比如說“合同文件放在第三層第四排的架子上”,這種查找規(guī)則的實施就需要數(shù)據(jù)庫管理系統(tǒng)(DBMS)來實現(xiàn),相當(dāng)于一名文件管理員,幫助我們管理數(shù)據(jù)庫中的數(shù)據(jù)。
最常見的數(shù)據(jù)庫管理系統(tǒng)包括SqlServer、MySql、Oracle等。
而我們?nèi)绻胍獙ξ募芾韱T下達(dá)指令,就需要一種溝通語言,這種溝通語言就是SQL,所以SQL就是一種結(jié)構(gòu)化的查詢語言,用來操作數(shù)據(jù)庫管理系統(tǒng)。
他們之間的關(guān)系可以這樣表示:

這樣大家應(yīng)該不會再把SQL當(dāng)做數(shù)據(jù)庫了吧?


































