網路城邦
上一篇 回創作列表 下一篇   字體:
我從來就沒愛過SQL資料庫,還很討厭它,真的!
2020/09/25 05:12:25瀏覽954|回應0|推薦8

http://www.ezonesoft.com.tw/WebDatabase/

我出版過好多書,大部分是程式語言入門書,後期則是直接跳到網路程式與影像辨識等進階議題,大家不知道的是:我當教授時跟我接觸過的書商,每一個都希望我寫有關資料庫(SQL),以及HTML5 App設計相關的書。但我總是以時機尚未成熟的藉口推掉了!等到我離開教職創業之後當然就更不可能寫這種書了!

他們會希望我出書,是看過我類似上面的教學網頁,很驚艷我有這麼多簡單具體實用的範例!市面上是有好多ASP、資料庫、SQL的書,但都是好厚一本,甚麼理論技術都說了!但是看完還是不知道怎麼實作出自己要的「簡單」功能?但是我的後段班大學的笨學生與懶學生們照著這些教材上完課,實作起來卻一點問題都沒有!

簡單說,我確定是個資料庫SQL的專家,還是個超高效率的好老師,我教過的學生都可以用此專長找到工作。但是我真的從來沒寫過相關的書籍!如果我真的寫了,可以保證一定是排行榜上的暢銷書!我為什麼不想寫呢?因為我覺得這些SQL根本沒必要被使用,這些教材不會是我自己解決問題的方式,只是幫我的學生呼攏半吊子老闆,通過面試得到工作的手段。今天就來回憶一下我與資料庫程式的這一段孽緣吧!

任何程式軟體都會需要處理資料,我30多年前讀研究所寫程式時,也要處理很多地球物理資料,地形、水深、磁力、重力,甚至影像等等。當時還沒資料庫這個概念,資料就是資料,自己寫程式按照一定的格式讀寫,效率不夠好嗎?就用一些二進位資料的技巧壓縮它,只要讀寫速度快一點,方便自己的程式使用就好!我根本不需要也不想學習甚麼資料庫技術的!

到了我開始當教授的Web時代,SQL資料庫技術的瘋迷狂熱程度就跟現在的機器學習一樣,不會資料庫SQL好像面試都過不了,找不到工作了?當時我自己繼續替海洋界寫好多聲納資料處理軟體,資料也都極為龐大複雜,但都沒用到SQL,我試過的!使用SQL效率比我自己設計的二進位檔案還要差好多!

我會努力自學精通SQL資料庫技術,真的完全是為了讓學生與這個愚蠢的世界接軌。過程很累的!我花了幾乎兩年,K完十幾本有關SQL資料庫的磚頭書,才編好教材上課的!因為我知道在Web時代(200X),學生不會SQL資料庫根本找不到工作!我是可以教學生不必用資料庫也能完成所有工作的方法,但是老闆面試時只會先問你會不會SQL?不會嗎?那就下一位請進!

有點像是現在我對於那些AI技術的感覺,不是說它們沒價值,但真實世界之中,有九成的工作根本不必用到那些技術!為了一成機率會碰到的極端問題,所有的學生都會花上好多時間學習這些技術,同時間可以直接解決九成問題的更基礎的技術卻被忽略跳過了?所以學生正式上班時只能殺雞用牛刀,用SQL資料庫處理很簡單的問題,正如用複雜的機器學習過程來處理簡單到一翻兩瞪眼的簡單影像辨識問題一樣!因為他們根本不會用更基本簡單有效的方法

說實話,現在電腦計算速度快了,磁碟讀寫與網路通訊速度也都快了!已經不是九成,而是九成九的資料處理應用,都不需要SQL資料庫技術了!你可以用「原始」的,誰都看得懂,你自己也看得更真切的文字檔案讀寫,就完成所有你需要的資料處理工作了!而且還會比使用SQL資料庫速度更快,系統相容性的無聊問題也不會再困擾你!

我們開公司做商業軟體,做這類的資料庫系統,最害怕不是程式邏輯複雜難寫,而是只要用了資料庫相關的模組與軟體,一樣的程式安裝到到不同的電腦與作業系統時,常常就會莫名其妙卡住?需要做好多相容性障礙排除的工作,簡直是無聊到極點!都是些無事生非的問題,直接使用文字檔案讀寫資料根本就沒這些問題。

但是如果我跟客戶說:我們只是用文字檔案做資料處理,沒用SQL資料庫,那可不得了!半吊子的老闆們就要翻臉了!所以即使不必用,甚至我們根本也沒用SQL,也只能被迫瞎掰說我們有用SQL資料庫,是最新最高階的技術哦!是不是很像現在的AI亂象呢?沒用機器學習深度學習的就一定很LOW?沒人願意討論真正的需求與效率問題?

會想到這個話題,是因為這幾天正在設計停車場的收費與管理軟體,這是典型的「資料庫程式」。但是實際上一個停車場最多只有幾百個車位,也最多只有幾百個月租會員,一整天動態處理的進出車輛也是幾百車次而已。如果你是一個腦筋清楚,程式設計已經入門,但根本沒學過SQL資料庫的人,你其實已經可以將這些問題處理得很好!反而是學過SQL的人會想太多,更難完成這個程式!

我是認真這麼說的!我當然是會用SQL的!但是我已經只用簡單的文字檔案處理完眼前工作的所有問題了!幾百筆資料的文字檔整個重新讀寫一次要多少時間呢?你不會有感的!最多是0.1秒!資料量甚至還不及磁碟預設的一個資料讀寫的Block,譬如512K之類的!你需要如下圖一樣設計複雜的關聯式資料結構嗎?

你的整個專案需要做這些關聯式運算的時機大概只有一兩種狀況,以我目前的專案,依照SQL的邏輯應該建立至少七八個資料表,還要建立它們之間的連動關係,但是我實際上只建立一兩個文字檔案紀錄我的資料,真的就夠用了!就像你家裡需要用到電鋸的時機可能十年都沒一次,但是就是有人會說你非買不可!所以我們家裡就會有很多永遠用不到的東西,為何不是「萬一」需要時再去借用、租用、或請專家處理呢?

資訊世界也是一樣的!我會的技術比一般人(甚至程式師)多好多,但是我強烈建議大家不必學習太多「百年難得一用」的特殊技術,專心學好基本功即可!資料庫是如此,所謂的AI也差不多,先不要盲從投入太多時間與金錢學太多東西,先問自己的工作實際需要解決的問題吧!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:http://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=150924344