數(shù)據(jù)工程師妹子養(yǎng)成手記——數(shù)據(jù)庫篇

這篇文章沒有代碼,請放心閱讀醋奠。

程序員最寶貴的東西是生命榛臼,生命屬于程序員只有一次伊佃。一個程序員的一生應(yīng)該這樣度過:當(dāng)她回首往事的時候,她不會因為搭建環(huán)境浪費時間而悔恨沛善,也不會因為集群無法運行而羞恥航揉。這樣,在她開發(fā)的時候金刁,她能夠說:“我的整個生命和全部精力迷捧,都已經(jīng)獻給了開發(fā)中最重要的事情——設(shè)計程序,實現(xiàn)程序和調(diào)Bug胀葱∧铮” ——P醬。

P醬是公司新來的實習(xí)生妹子抵屿。聽說是一個文科生庆锦。文科生應(yīng)該會去文案組或者策劃組吧。什么轧葛?來數(shù)據(jù)組搂抒?讓我來帶?

于是我和P醬生活工作在了一起尿扯。

P醬你會些什么求晶?

“我叫P醬,在XX大學(xué)讀研二衷笋,愛好是拍照和被拍芳杏,大家可以在B站找到我跳舞的視頻,比如av170001辟宗。我的另外一個愛好是寫代碼……”

當(dāng)一個文科妹子說自己喜歡寫代碼的時候爵赵,整個辦公室熱鬧了起來。

“P醬泊脐,聽說你喜歡寫代碼空幻,那你寫過什么東西嗎?”新人介紹會議結(jié)束以后容客,我問P醬秕铛。

“一般都是各種分析程序,我們的專業(yè)要做很多調(diào)查報告缩挑,他們都是用Excel來計算的但两。我喜歡用Python來把這些統(tǒng)計過程自動化。后來也寫過自動寫詩的程序调煎、鬼畜視頻生成器等等镜遣〖喊梗”

“真不敢相信你是文科生士袄。這么說你的興趣是數(shù)據(jù)分析方向咯悲关?”

“其實我對師父你做的爬蟲很有興趣。但是聽說會經(jīng)常和網(wǎng)站發(fā)生對抗娄柳?女孩子還是不要打打殺殺的好~”

于是我讓P醬負(fù)責(zé)對爬蟲的原始數(shù)據(jù)進行清洗寓辱、整理并做簡單的分析。

一種船新的數(shù)據(jù)儲存方式

“P醬赤拒,爬蟲抓到的原始數(shù)據(jù)是存放在MongoDB里面的秫筏,你的Python還不錯吧,你試一試用Python來讀寫MongoDB看看挎挖≌饩矗”

“MongoDB是什么呀?”

“是一個和MySQL不太一樣的數(shù)據(jù)庫蕉朵〈尥浚”

“MySQL我知道,MongoDB和MySQL有什么不一樣呢始衅?”

“我舉個例子冷蚂,當(dāng)你要插入數(shù)據(jù)的時候,你需要做的汛闸,就是‘插入’蝙茶。咳咳诸老,你不要臉紅隆夯,我是指你不需要寫SQL語句、不需要建表别伏、不需要提前定義字段吮廉。僅僅只需要一行代碼就能夠?qū)崿F(xiàn)了。我這里給你寫了一篇文檔畸肆,講到了MongoDB的增刪改查宦芦,你試一試。數(shù)據(jù)庫已經(jīng)給你搭建好了轴脐,你直接連上去用吧”

半天以后调卑。

“師父,我已經(jīng)會使用MongoDB啦大咱√窠В”

“你讀爬蟲的原始數(shù)據(jù),主要涉及到的就是查詢操作碴巾,為了鞏固插入溯捆、修改和刪除的操作,再給你一個小任務(wù)吧厦瓢。試一試寫一個人員管理系統(tǒng)吧提揍∑≡拢”

既然有關(guān)系,就整整齊齊放在一起看吧

“P醬劳跃,你看起來很高興的樣子啊谎仲。”

“因為我覺得MongoDB比起MySQL太簡單了啊~”

“你確定刨仑?那我看看你怎么對整行數(shù)據(jù)去重的郑诺?”

“師父,我知道distinct關(guān)鍵字可以對一個字段去重杉武。但是整行數(shù)據(jù)我是讀出來用Python來去重的辙诞。”

“這個時候你就要用到MongoDB的聚合查詢了轻抱。文檔已經(jīng)給你寫好了倘要,拿去看吧∈穑”

“還有還有封拧,這里你把店鋪信息和菜單信息放在了兩個集合里面,我怎么樣才能把他們聯(lián)表查詢出來呢夭问?”

“聯(lián)表查詢是MySQL里面的操作泽西,在MongoDB里面,沒有缰趋,只有集合捧杉,所以叫做聯(lián)集合查詢更恰當(dāng)一些。這也是要用到聚合查詢秘血,也在這個文檔里面了味抖。”

再給你一個玩具吧灰粮。

“P醬仔涩,之前讓你做的爬蟲數(shù)據(jù)監(jiān)控系統(tǒng)怎么樣了?”

“功能已經(jīng)做好了粘舟,但是有一個地方查詢起來特別慢熔脂。我已經(jīng)加過索引了,但還是很慢柑肴。懷疑是同時聯(lián)了四個集合的數(shù)據(jù)造成的霞揉。”

“這邊的數(shù)據(jù)實際上每小時才更新一次晰骑,你沒有必要每次刷新頁面都去查詢MongoDB的适秩。我覺得是時候讓你用一下Redis做緩存了。”

“Redis就是那個內(nèi)存數(shù)據(jù)庫嗎秽荞?我知道我知道骤公。”

“給你寫了一份文檔蚂会,包含Redis里面的各種數(shù)據(jù)類型和使用方式。你試一試把Redis和MongoDB結(jié)合起來看看能不能提高速度耗式⌒沧。”

你怎么擅自加功能啊刊咳!

“P醬彪见,你怎么在爬蟲監(jiān)控系統(tǒng)的網(wǎng)頁上加了一個廣播窗口余指?”

“呀跷坝,被師父發(fā)現(xiàn)了柴钻。因為我想到同一個爬蟲可能會被幾個人監(jiān)控,所以就用Redis的發(fā)布訂閱功能做出來了這個廣播的功能靠粪。一旦爬蟲狀態(tài)發(fā)生改變毫蚓,所有人都能收到推送∨弦遥”

“既然你這么閑啸澡,那不如加上賬號登錄功能氮帐,把權(quán)限驗證也做上去上沐?不同的人只能看到自己負(fù)責(zé)的爬蟲。順便你可以試一試用Redis實現(xiàn)……”

“實現(xiàn)布隆過濾器和Session管理是嗎龄广?”

“你怎么知道我要說什么?”

“因為我早上看到你在文檔上面更新了布隆過濾器和Session管理相關(guān)的內(nèi)容啊~”

紅色的鎖两入?

“師父師父敲才,你知道什么是RedLock嗎紧武?”

“你學(xué)得這么快?都知道RedLock了朋鞍?RedLock是Redis官方給出的分布式鎖的算法滥酥。已經(jīng)有很多編程語言實現(xiàn)它了恨狈『痰。”

“原來RedLock只是一個算法啊……”

為什么我學(xué)的這么快呢吗氏?

“師父師父弦讽,我覺得很奇怪啊往产,為什么MongoDB和Redis我學(xué)得這么快呢某宪?難道是因為他們本來就簡單?還是因為我太聰明了兴喂?”

“為什么你不說是因為你師父教的好呢蔼囊?“

“因為這是事實啊不用我說出來

“咳咳,實際上是因為兩個原因畏鼓。一是你一直通過項目驅(qū)動來學(xué)習(xí),先有需求云矫,然后再去學(xué)習(xí)實現(xiàn)這個需求所要涉及到的技能。所以你知道你學(xué)的東西能用來干什么让禀,自然就能學(xué)得快……”

“那第二個原因是什么呢挑社?”

“第二個原因,我先問你一個問題堆缘,你會搭建Redis集群嗎普碎?會搭建MongoDB集群嗎?知道什么叫做哨兵嗎缀皱?你知道如何優(yōu)化MongoDB的啟動參數(shù)嗎啤斗?”

“這…………好像都不知道額…………”

“因為你的角色是數(shù)據(jù)工程師钮莲,不是數(shù)據(jù)庫工程師彼水,所以數(shù)據(jù)庫搭建凤覆、底層優(yōu)化這些內(nèi)容我都給你跳過了链瓦。”

“這些聽起來都很重要啊盯桦,師父你會教我嗎慈俯?”

“你想經(jīng)常值夜班嗎?想半夜3點被人打電話叫起來修數(shù)據(jù)庫嗎拥峦?認(rèn)清自己的定位啊贴膘,數(shù)據(jù)庫工程師的技能當(dāng)然很重要,但你是要成為數(shù)據(jù)工程師的人略号,技能樹應(yīng)該點在合適的方向步鉴【疚福”

后記

后來,P醬成了別人的女朋友氛琢。

image

幸好我還有左手和右手喊递,于是我把我給P醬總結(jié)的文檔編撰成了《左手MongoDB,右手Redis——從入門到商業(yè)實戰(zhàn)》這本書阳似。本書現(xiàn)在已經(jīng)在京東骚勘、亞馬遜、淘寶上架撮奏。

image
image
image

這本書的定位是MongoDB和Redis的應(yīng)用俏讹,所以有意弱化了數(shù)據(jù)庫的搭建、維護和底層優(yōu)化畜吊。所以本書可能不適合數(shù)據(jù)庫工程師泽疆。

希望本書能夠給那些一直想掌握MongoDB、Redis玲献,但是又不知道從何處下手的讀者殉疼,提供一個學(xué)習(xí)的方向。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捌年,一起剝皮案震驚了整個濱河市瓢娜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌礼预,老刑警劉巖眠砾,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異托酸,居然都是意外死亡褒颈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門励堡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谷丸,“玉大人,你說我怎么就攤上這事念秧∮倬” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵摊趾,是天一觀的道長币狠。 經(jīng)常有香客問我,道長砾层,這世上最難降的妖魔是什么漩绵? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮肛炮,結(jié)果婚禮上止吐,老公的妹妹穿的比我還像新娘宝踪。我一直安慰自己,他們只是感情好碍扔,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布瘩燥。 她就那樣靜靜地躺著,像睡著了一般不同。 火紅的嫁衣襯著肌膚如雪厉膀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天二拐,我揣著相機與錄音服鹅,去河邊找鬼。 笑死百新,一個胖子當(dāng)著我的面吹牛企软,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饭望,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼仗哨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杰妓?” 一聲冷哼從身側(cè)響起藻治,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碘勉,失蹤者是張志新(化名)和其女友劉穎巷挥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體验靡,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡倍宾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胜嗓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片高职。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辞州,靈堂內(nèi)的尸體忽然破棺而出怔锌,到底是詐尸還是另有隱情,我是刑警寧澤变过,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布埃元,位于F島的核電站,受9級特大地震影響媚狰,放射性物質(zhì)發(fā)生泄漏岛杀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一崭孤、第九天 我趴在偏房一處隱蔽的房頂上張望类嗤。 院中可真熱鬧糊肠,春花似錦、人聲如沸遗锣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精偿。三九已至泪酱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間还最,已是汗流浹背墓阀。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拓轻,地道東北人斯撮。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像扶叉,于是被迫代替她去往敵國和親勿锅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容