
小白學(xué)數(shù)據(jù):一篇文章看懂NoSQL數(shù)據(jù)庫
如果你關(guān)注大數(shù)據(jù)科技動向,可能聽說過一個叫NoSQL數(shù)據(jù)庫的名詞,這可能讓人有些云里霧里。其實我們處在一個激動人心的技術(shù)更迭時代,以甲骨文為代表的SQL數(shù)據(jù)庫已經(jīng)稱霸了企業(yè)市場30年,而近年來的NoSQL則是強有力的更新?lián)Q代的競爭者。這篇文章就通過問答的方式來給小白解釋NoSQL數(shù)據(jù)庫系統(tǒng)是什么,無論你的技術(shù)背景如何都能看得懂。對于數(shù)據(jù)分析從業(yè)人員來說,了解數(shù)據(jù)庫的趨勢可以讓你的職業(yè)生涯如虎添翼;而對于工程師來說,了解新的基礎(chǔ)系統(tǒng)更是必不可少的行業(yè)知識。
幾個基本問題
小白問:數(shù)據(jù)庫是什么東西,可以吃嗎?
答:……不可以。數(shù)據(jù)庫呢,就是存儲數(shù)據(jù)的地方,就像冰箱是存儲食物的地方一樣。
小白問:誒?我的數(shù)據(jù)就存儲在自己電腦里面的excel表里里,還要數(shù)據(jù)庫干嘛?
答:自己的數(shù)據(jù)的確很方便,但是對于企業(yè)來說就不一樣了。一個公司里面可能有成千上萬的Excel表格,還在不同的電腦上,而他們的員工和客戶需要實時看到企業(yè)給他們提供的所有數(shù)據(jù),這種文件管理的方法就很麻煩,總不能每分鐘都把一個新的巨大無比的excel文件發(fā)給所有客戶呀!而且數(shù)據(jù)庫更有用的是進行查詢,企業(yè)會給內(nèi)部或者客戶開發(fā)不同的應(yīng)用,而這些應(yīng)用需要數(shù)據(jù)的時候可以直接實用數(shù)據(jù)庫的查詢語句快速得到結(jié)果。
小白問:哦,那是說所有的人都直接在這個系統(tǒng)上查數(shù)據(jù)和改數(shù)據(jù)嗎?
答:是的,數(shù)據(jù)庫也會幫助你處理“并發(fā)”,也就是如果多個人同時在改數(shù)據(jù)的情況。比如你在支付寶給小灰轉(zhuǎn)賬,而小灰這個時候又偏偏剛好在給你轉(zhuǎn)賬,這時候數(shù)據(jù)庫系統(tǒng)就要保證你們兩個人最后余額都是正確的,并且在你們進行交易的時候別人如果同時查詢你們倆人的余額都會得到精確的結(jié)果。在一個企業(yè)系統(tǒng)中,一秒鐘可能有成千上萬個這樣的查詢和改動發(fā)生呢。
小白問:那SQL又是什么鬼?
答:SQL是一種可以查詢關(guān)系型數(shù)據(jù)庫的語言,關(guān)系型數(shù)據(jù)庫也叫SQL數(shù)據(jù)庫。
所謂關(guān)系型數(shù)據(jù)庫就是數(shù)據(jù)是以表格的形式進行存儲的,就和你電腦上的Excel表一樣,數(shù)據(jù)是一行一列整整齊齊的躺著的。表格之間有著這樣或那樣的關(guān)系,可以通過某信息連接在一起 。想查這些表格里的任何數(shù)據(jù)的程序員們就可以把他們想要的數(shù)據(jù)形式轉(zhuǎn)化成SQL語句然后發(fā)給數(shù)據(jù)庫,得到數(shù)據(jù)結(jié)果。比如你可以有一個食物管理的數(shù)據(jù)庫,里面有兩個表(食物表和主人表),長成下面的這個樣子:
食物編號食物名稱數(shù)量 喜愛程度主人編號
1 獼猴桃 4 53
2 菠菜 10 2 2
3巧克力 99 1001
主人編號主人姓名 主人性別
1小白 女
2小黑 男
3小灰 男
我們可以寫一句簡單的SQL語句直接調(diào)出所有男主人擁有的食品及數(shù)量。
SELECT 主人姓名,食物名稱,數(shù)量
FROM 食物表,主人表
WHERE 食物表.主人編號=主人表.主人編號 AND 主人性別=‘男’
=>
主人姓名食物名稱數(shù)量
小黑菠菜10
小灰獼猴桃 4
深入聊聊
小白問:哦,那NoSQL到底有什么過人之處呢?
答:因為近年來企業(yè)要處理的數(shù)據(jù)越來越多,越來越復(fù)雜,就出現(xiàn)了兩個之前關(guān)系型數(shù)據(jù)庫解決不了的問題:快速增長的數(shù)據(jù)規(guī)模和日漸復(fù)雜的數(shù)據(jù)模型。
第一個問題就是數(shù)據(jù)越來越多,公司以前買的裝關(guān)系型數(shù)據(jù)庫的那臺電腦放不下了,那這個時候就有兩種選擇:
一種就是直接去買一臺更大空間的計算機取代現(xiàn)有的機器。這個方法是有限制的,因為這種機器的價格一般非常昂貴,而且這個空間總是有一個上限的。
另外一種選擇就是再買一臺機器,然后把新的數(shù)據(jù)放到新機器里的另外一個SQL數(shù)據(jù)庫里面,這個過程也叫“分片”(sharding)。 這個時候程序員要開始杯具的加班了。因為這個轉(zhuǎn)換的過程非常容易出問題,而且會給使用數(shù)據(jù)庫的應(yīng)用增加很多的復(fù)雜度。比如我們之前的例子,在查詢食品和數(shù)量的語句的時候我們要將同樣的語句同時發(fā)給兩個服務(wù)器,然后把最后的結(jié)果綜合起來,給應(yīng)用的開發(fā)增加了很多不必要的負擔。分片還有很多別的缺點我就不一一贅述了。
而NoSQL數(shù)據(jù)庫的服務(wù)器本身就支持很多個機器存儲數(shù)據(jù)進行分布式查詢,這樣當空間不夠用的時候就直接去扛一臺新的機器回來連接到已有的計算機集群上裝好數(shù)據(jù)庫即可,程序員可以回家睡個好覺啦。
小白問:明白了,那另外一個關(guān)系型數(shù)據(jù)庫沒有解決的問題呢?
答:另外的一個問題就是把數(shù)據(jù)放到SQL數(shù)據(jù)之前要進行數(shù)據(jù)建模,也就是要考慮好每一個表里面每一列都代表什么,不同的表格之間要怎樣相互關(guān)聯(lián)起來。這對很多公司來說是一件非常耗費時間和精力的事情,因為他們的數(shù)據(jù)源的種類太多了。而且在數(shù)據(jù)進入數(shù)據(jù)庫之后,如果在表中增加新的一列(比如想把食物的種類加進第一個表中)或者是要改變某一列的特性的話,對于系統(tǒng)來說是非常困難的,因為表中的數(shù)據(jù)已經(jīng)一行行的存好了。
而NoSQL數(shù)據(jù)庫就減輕了數(shù)據(jù)建模的負擔,比如上面的表里面的一行可以變成下面JSON文檔的樣子:
{
食物名稱:獼猴桃,
數(shù)量:4,
喜愛程度:5,
主人:{
姓名:小灰,
性別:男
}
}
這樣很方便的可以修改數(shù)據(jù)模型的樣子,而且從源數(shù)據(jù)不需要怎么改就可以放入數(shù)據(jù)庫。目前用有一個行業(yè)叫做ETL,就是專門做數(shù)據(jù)形狀轉(zhuǎn)化的:他們將不同的源數(shù)據(jù)打磨到想要的表格的模子里,然后放入關(guān)系型數(shù)據(jù)庫。這個行業(yè)價值好幾十億美元呢,很瘋狂吧?用了NoSQL,公司可以節(jié)省好多時間和人民幣呢。
答:NoSQL其實有很多不同的種類的,適用在不同的情況中并且分別有不同的存儲方法。JSON是文檔類NoSQL的典型格式,我們平時使用的word和pdf文件都可以很容易放入文檔型數(shù)據(jù)庫進行查詢。而其他種類的NoSQL也可能是用圖或者哈希表的模型來存儲數(shù)據(jù)。如果你的數(shù)據(jù)存儲的是一個社交網(wǎng)絡(luò)類型的應(yīng)用,那么對你來說用一個基于圖的數(shù)據(jù)庫可能更加合適,因為你關(guān)心的社交網(wǎng)絡(luò)場景中的問題都可以得到比較快速的回答。
答:哪有,NoSql其實是Not Only SQL,就是不僅僅是SQL,有一些NoSQL數(shù)據(jù)庫還支持直接用SQL來做查詢呢。兩者的區(qū)別主要是我上面提到的兩點: 1.對數(shù)據(jù)建模的要求不同:NoSQL的建模程序比較簡單靈活;2.對數(shù)據(jù)增加的處理方式不同:使用NoSQL可以直接進行分布式處理。在數(shù)據(jù)規(guī)模增長需要增加新的機器的時候,不需要程序員對使用數(shù)據(jù)庫的應(yīng)用進行代碼進行改動,直接在數(shù)據(jù)庫集群中增加一臺新的計算機就可以啦。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10