資料工程師妹子養成手記 資料庫篇

2021-09-12 17:22:02 字數 2954 閱讀 9807

這篇文章沒有**,請放心閱讀。

程式設計師最寶貴的東西是生命,生命屬於程式設計師只有一次。乙個程式設計師的一生應該這樣度過:當她回首往事的時候,她不會因為搭建環境浪費時間而悔恨,也不會因為集群無法執行而羞恥。這樣,在她開發的時候,她能夠說:「我的整個生命和全部精力,都已經獻給了開發中最重要的事情——設計程式,實現程式和調bug。」 ——p醬。

p醬是公司新來的實習生妹子。聽說是乙個文科生。文科生應該會去文案組或者策劃組吧。什麼?來資料組?讓我來帶?

於是我和p醬生活工作在了一起。

當乙個文科妹子說自己喜歡寫**的時候,整個辦公室熱鬧了起來。

「p醬,聽說你喜歡寫**,那你寫過什麼東西嗎?」新人介紹會議結束以後,我問p醬。

「真不敢相信你是文科生。這麼說你的興趣是資料分析方向咯?」

「其實我對**你做的爬蟲很有興趣。但是聽說會經常和**發生對抗?女孩子還是不要打打殺殺的好~」

於是我讓p醬負責對爬蟲的原始資料進行清洗、整理並做簡單的分析。

「p醬,爬蟲抓到的原始資料是存放在mongodb裡面的,你的python還不錯吧,你試一試用python來讀寫mongodb看看。」

「mongodb是什麼呀?」

「是乙個和mysql不太一樣的資料庫。」

「mysql我知道,mongodb和mysql有什麼不一樣呢?」

「我舉個例子,當你要插入資料的時候,你需要做的,就是『插入』。咳咳,你不要臉紅,我是指你不需要寫sql語句、不需要建表、不需要提前定義字段。僅僅只需要一行**就能夠實現了。我這裡給你寫了一篇文件,講到了mongodb的增刪改查,你試一試。資料庫已經給你搭建好了,你直接連上去用吧」

半天以後。

「**,我已經會使用mongodb啦。」

「你讀爬蟲的原始資料,主要涉及到的就是查詢操作,為了鞏固插入、修改和刪除的操作,再給你乙個小任務吧。試一試寫乙個人員管理系統吧。」

「p醬,你看起來很高興的樣子啊。」

「因為我覺得mongodb比起mysql太簡單了啊~」

「你確定?那我看看你怎麼對整行資料去重的?」

「**,我知道distinct關鍵字可以對乙個欄位去重。但是整行資料我是讀出來用python來去重的。」

「這個時候你就要用到mongodb的聚合查詢了。文件已經給你寫好了,拿去看吧。」

「還有還有,這裡你把店鋪資訊和選單資訊放在了兩個集合裡面,我怎麼樣才能把他們聯表查詢出來呢?」

「聯表查詢是mysql裡面的操作,在mongodb裡面,沒有,只有集合,所以叫做聯集合查詢更恰當一些。這也是要用到聚合查詢,也在這個文件裡面了。」

「p醬,之前讓你做的爬蟲資料監控系統怎麼樣了?」

「功能已經做好了,但是有乙個地方查詢起來特別慢。我已經加過索引了,但還是很慢。懷疑是同時聯了四個集合的資料造成的。」

「這邊的資料實際上每小時才更新一次,你沒有必要每次重新整理頁面都去查詢mongodb的。我覺得是時候讓你用一下redis做快取了。」

「redis就是那個記憶體資料庫嗎?我知道我知道。」

「給你寫了乙份文件,包含redis裡面的各種資料型別和使用方式。你試一試把redis和mongodb結合起來看看能不能提高速度。」

「p醬,你怎麼在爬蟲監控系統的網頁上加了乙個廣播視窗?」

「呀,被**發現了。因為我想到同乙個爬蟲可能會被幾個人監控,所以就用redis的發布訂閱功能做出來了這個廣播的功能。一旦爬蟲狀態發生改變,所有人都能收到推送。」

「既然你這麼閒,那不如加上賬號登入功能,把許可權驗證也做上去?不同的人只能看到自己負責的爬蟲。順便你可以試一試用redis實現……」

「實現布隆過濾器和session管理是嗎?」

「你怎麼知道我要說什麼?」

「因為我早上看到你在文件上面更新了布隆過濾器和session管理相關的內容啊~」

「****,你知道什麼是redlock嗎?」

「你學得這麼快?都知道redlock了?redlock是redis官方給出的分布式鎖的演算法。已經有很多程式語言實現它了。」

「原來redlock只是乙個演算法啊……」

「****,我覺得很奇怪啊,為什麼mongodb和redis我學得這麼快呢?難道是因為他們本來就簡單?還是因為我太聰明了?」

「為什麼你不說是因為你**教的好呢?「

「因為這是事實啊~不用我說出來~」

「咳咳,實際上是因為兩個原因。一是你一直通過專案驅動來學習,先有需求,然後再去學習實現這個需求所要涉及到的技能。所以你知道你學的東西能用來幹什麼,自然就能學得快……」

「那第二個原因是什麼呢?」

「第二個原因,我先問你乙個問題,你會搭建redis集群嗎?會搭建mongodb集群嗎?知道什麼叫做哨兵嗎?你知道如何優化mongodb的啟動引數嗎?」

「這…………好像都不知道額…………」

「因為你的角色是資料工程師,不是資料庫工程師,所以資料庫搭建、底層優化這些內容我都給你跳過了。」

「這些聽起來都很重要啊,**你會教我嗎?」

「你想經常值夜班嗎?想半夜3點被人打**叫起來修資料庫嗎?認清自己的定位啊,資料庫工程師的技能當然很重要,但你是要成為資料工程師的人,技能樹應該點在合適的方向。」

後來,p醬成了別人的女朋友。

幸好我還有左手和右手,於是我把我給p醬總結的文件編撰成了《左手mongodb,右手redis——從入門到商業實戰》這本書。本書現在已經在京東、亞馬遜、**上架。

這本書的定位是mongodb和redis的應用,所以有意弱化了資料庫的搭建、維護和底層優化。所以本書可能不適合資料庫工程師。

希望本書能夠給那些一直想掌握mongodb、redis,但是又不知道從何處下手的讀者,提供乙個學習的方向。

資料工程師妹子養成手記 資料庫篇

程式設計師最寶貴的東西是生命,生命屬於程式設計師只有一次。乙個程式設計師的一生應該這樣度過 當她回首往事的時候,她不會因為搭建環境浪費時間而悔恨,也不會因為集群無法執行而羞恥。這樣,在她開發的時候,她能夠說 我的整個生命和全部精力,都已經獻給了開發中最重要的事情 設計程式,實現程式和調bug。p醬。...

資料工程師妹子養成手記 資料庫篇

這篇文章沒有 請放心閱讀。程式設計師最寶貴的東西是生命,生命屬於程式設計師只有一次。乙個程式設計師的一生應該這樣度過 當她回首往事的時候,她不會因為搭建環境浪費時間而悔恨,也不會因為集群無法執行而羞恥。這樣,在她開發的時候,她能夠說 我的整個生命和全部精力,都已經獻給了開發中最重要的事情 設計程式,...

隨手記 資料庫太大篇

演示的時候反饋說系統太慢,剛看完 叢林赤子心 講狗狗的,我喜歡。忍不住想弄下,優化下。jsp頁面載入為什麼這麼慢,著手優化了頁面效果甚微。考慮到後台了,一檢查嚇一跳。查詢資料庫的時候足足快接近五秒。能不慢嗎!檢查了sql再看資料庫。驚奇的發現這個表有九百多萬條資料!是有問題的。應該是同步的時候沒弄好...