在這個資訊爆炸的時代,要怎麼找到一些好的教學文件變成是一個很不容易的事情
所以在這篇文章中我會放在我從別人那邊推薦,我也覺得不錯的內容,整理到這篇文章中
資料庫
https://use-the-index-luke.com/
這個的主軸是在介紹,身為一個工程師,如果需要跟資料庫(特別是關聯式資料庫)溝通時,遇到搜尋速度不夠,要添加index時,應該有什麼樣的背景知識
在這篇文章中,我覺得最重要的部分是,要怎麼設計index,不該是dba的事,而是主要使用這些query的人,因此這本書的目標課群是所有會需要跟db打交道的工程師們
主要著重在觀念
推薦指數:5/5
困難程度:(2+1)/5(英文佔一分)
isolation level介紹
這些的主軸會放在如何在資料庫中避免各種的race condition,在各種特殊的條件下應該要用什麼方法來避免問題發生
在ddia的部分,要特別注意書中的圖片,因為race condition的狀況都跟前後順序有關,在未來應該也會挪出一些篇幅介紹這個部分
推薦程度:5/5
困難程度:4/5
分散式系統
DDIA
這本書真的是經典中的經典,每次我在遇到一些程式上的困難,跑去請教同事時,他就會說,這個問題在DDIA的第幾章就有出現喔,你是不是沒認真讀阿😏
這本書我覺得經典的原因是
身為初學者,在看這本書的時候可以知道說原來分散式系統需要考慮到的事情有這麼多(讓自己知道自己不足什麼)
有相關經驗後,在看這本書可以發現,原來之前遇到的這個狀況,原來可以用這個方式來解釋,還能意外發現一些更為成熟的解決方案
我自己覺得這本書如果入門的工程師要讀,我會建議可以試著將你讀完的內容,找機會跟資深工程師討論裡面遇到的問題跟狀況,因為這本書裡面很多觀念都放在一些專有名詞的用詞上,如果沒有相關經驗的工程師,很容易會忽略這些名詞,而錯過一些很重要的重點
比如
serial(有序的)/serializable(可序列化的)
這兩個名詞在文章裡面會提到,但這兩個形容詞並不相同
Serial:
兩個事件一定要是一前一後的發生
Serializable:
兩件事可以平行發生,只要最後執行的結果可以被歸類為一前一後就可以了
這件事我也會放到後面用例子來舉例
總之,這本書是一個適合一讀再讀的好書,最近好像有計畫在寫第二版(Released December 2025),有興趣的也可以關注一下
https://www.oreilly.com/library/view/designing-data-intensive-applications/9781098119058/
推薦程度:5/5
困難程度:4/5