我從零開始構建MySQL資料處理系統(用Python)學到這7個教訓!
作者:Galina Olejnik
在撰寫這篇文章之前,我首先需要說的是,我並不認為自己是一名優秀的資料科學家或機器學習工程師。但我有一些有趣且不可思議的(對我而言)工作經歷,我僅僅是想分享從中學到的一些見解。
我是一名自然語言處理/機器學習科學家,而我不認為具有良好的電腦科學背景就能夠成功地在這個領域工作。我所認識的傑出研究人員可能由於某些原因而不具有熟練的技能,無法成為實時開發和儲存庫團隊的一部分。所以,我仍然想分享它們,也許有人會發現這些資訊很有用。
我希望人們會喜歡我所講的故事。
(1)處理異常是至關重要的
當我第一次嘗試連線到儲存在谷歌雲上的這個特定MySQL資料庫時,曾遇到許多不同的錯誤。當設定代理時,對很多代理進行了體驗。問題是,在程式碼開發的第一階段,最好是處理所有的錯誤,特別是與連線有關的錯誤,如果需要的話,引發這些錯誤,否則呼叫Exchange語句。
這聽起來很簡單,但在我的例子中,可能有環境變數,其中有UNIX套接字名稱和節點環境名稱,它們的值可能不正確,資料庫憑據也可能不正確,我可以擁有它所有的東西。我在處理這些例子期間花費幾個小時,但節省了很多時間,我很高興將這段時間用於這個階段的專案開發。
(2)適當的抽象類是無價的
在處理抽象類時,你需要記住的最重要的事情是,可能需要花費大量時間和注意力來定義它,並且也確實需要它。我的儲存庫的結構基於這樣一個事實,即我必須建立許多.csv檔案,這些檔案具有非常相似的模式(唯一鍵)。事實上,我有很多類似的提取器、演算法、資料後置處理器等工具,所有這些都被簡化為基本抽象類,這使得下一個模組的建立更加容易。
當你編寫第n個模組時,可以意識到你的類已經完成了,並且明白編譯過程中沒有定義的建構函式和一些方法已經實現了,因此不需要為它們煩惱。
(3)靈活的儲存庫結構總是最好的
有時它可能看起來有點難看(例如,在一個資料夾中有1個檔案),但如果看到需要更改一些關鍵模組(例如文字前處理器)並且這樣做,只需更改1-2個檔案,那就很好了。
我並不是一名軟體架構師,所以很難說出這個領域的優點和錯誤,但我認為元件的高度碎片化和獨立性總是良好的。我自己開發的repoI有大量的小資料夾,並且引向它們比嘗試使整個架構更加容易(也許更漂亮)。
(4)資料科學模型的測試是值得的
我沒有足夠的時間來完成涵蓋所有案例的完美測試。我仍然提到這一點的原因是,如果你沒有那麼明顯的ML/NLP模型行為,最好至少為了自己而進行測試。
我沒有很多NLP/ML演算法(其中大部分演算法都很簡單),但如果沒有實施哪怕最簡單的測試的話,它們的其他部分就無法支援。此外,在更好的模型理解方面,測試通常是有用的,這是因為通過斷言語句,當希望在頭腦中重新整理演算法時,一些演算法概念可能變得更加清晰。
(5)使資料庫符合第三正規化
有時這可能是人們討論的一部分,但是如果不使所有3個語句完全適用於資料庫,就無法編寫有效的資料處理系統。如果沒有它們,一些不明顯的查詢問題經常發生,甚至無法找到問題所在。
這裡有一個簡短而簡單的SQL NF指南,我認為最好多看幾遍。( https://www.geeksforgeeks.org/database-normalization-normal-forms/ )
(6)記錄錯誤
在實現記錄時,通常不會檢視收到三年所有的警告和錯誤,但有些錯誤可能不可重複,而且日誌記錄幫助理解發生了什麼事。我是在我的本地機器上實施的,當伺服器上的某些東西沒有工作時,通過檢視類似的案例,可以節省幾個小時的時間。
(7)除非資料庫非常簡單,否則不需要物件關係對映(ORM)
在這個專案工作的很長一段時間裡,我真的很擔心需要用物件關係對映(ORM)重寫所有內容。但是我錯了。
實際上,像SQLAlchemy和Peewee這樣的東西適合小型的簡單資料庫,但是它們不適合像複雜資料庫(有時它需要4個分組和5個連線來編寫一個查詢)。它們很優雅,有時非常簡單和美觀,但無論如何,如果你只使用聯結器API,就不能擁有儘可能多的控制權。我決定使用MySQL Connector,因為用物件關係對映(ORM)編寫所有內容可能會使棘手的事情變得更加複雜。
結論
這個註釋與ML/ NLP演算法解釋及其效能討論無關,但我仍然認為它很有用。我希望在開始研究這個專案之前已經知道了上面描述的所有陳述,但也確定,只有花費一些時間來修復bug,並尋找實際問題之後,它們中的一些問題才會變得清晰易懂。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2212923/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《MySQL 8從零開始學(影片教學版)》MySql
- 使用Python構建MySQL資料處理系統的操作方法PythonMySql
- JavaWeb——從零開始構建一個客戶管理系統(一)JavaWeb
- Python 從零開始構建自己的比特幣區塊鏈系統Python比特幣區塊鏈
- 從零開始用 Python 構建迴圈神經網路Python神經網路
- 從零開始學機器學習——構建一個推薦web應用機器學習Web
- Python資料處理從零開始----第三章(pandas)③資料標準化Python
- 從零開始構建Web應用-PART 1Web
- 從零開始構建react應用(一)前言React
- 從零開始構建一個webpack專案Web
- 從零開始學PythonPython
- 從零開始學Python:第九課-常用資料結構之字串Python資料結構字串
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- 【從零開始學習 MySql 資料庫】(1) 建表與簡單查詢MySql資料庫
- 從零開始學Python:第十一課-常用資料結構之列表Python資料結構
- 《Python程式設計從零開始學(影片教學版)》資源免費下載Python程式設計
- 從零開始學typescript構建一個rest風格web服務TypeScriptRESTWeb
- 圖資料庫|如何從零到一構建一個企業股權圖譜系統?資料庫
- 圖資料庫|如何從零到一構建一個企業股權圖譜系統資料庫
- 【教程】如何從零開始構建深度學習專案?深度學習
- 從Debezium到Snowflake在生產中構建資料複製的經驗教訓 - Shippeo
- 從零開始學Python:第十二課-常用資料結構之元組Python資料結構
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 資料科學家的必備讀物:從零開始用Python構建迴圈神經網路(附程式碼)資料科學Python神經網路
- 《Django 3 Web應用開發從零開始學(影片教學版)》簡介DjangoWeb
- Python資料處理從零開始----第四章(視覺化)(5)(韋恩圖)Python視覺化
- 用webpack4從零開始構建react腳手架WebReact
- 從零開始構建自己的第一個vue專案Vue
- 想做資料科學家/工程師?從零開始系統規劃大資料學習之路資料科學工程師大資料
- 從零開始的Python學習Episode 7——檔案基本操作Python
- 從零開始學Python—第六課:迴圈結構Python
- 使用Kafka和Flink構建實時資料處理系統Kafka
- 從新建資料夾開始構建UtopiaEngine(1)
- 從0開始構建一個瀚高資料庫Docker映象資料庫Docker
- 從零開始學Python:19課-使用PyCharm開發Python應用程式PythonPyCharm
- 從零開始構建一個vue專案 --- webpack歷險記VueWeb
- 從零開始學Spring Boot系列-整合MySQLSpring BootMySql
- 從零開始學資料結構和演算法(三)棧與棧的應用資料結構演算法