資料庫與動態規劃

xuexiaogang發表於2022-11-15

    前幾天在處理一個具體問題時候,我被問到有個需求查活躍使用者。比如一個月內登入過,或者一年內登入過。(這個時間可以自己定義,有些平臺可能按周算,比如騰訊。也有些平臺按照年算。這個都可以商量)。那麼判斷使用者登入的依據就是資料庫中使用者登入日誌。也只有這樣獲取我認為才是最為合理的。至於透過文字檔案解析(開發工作量大不說,還不能進行比較和運算,為什麼要比較,我們隨後說)。透過hadoop就更加不可取了,實時性沒有保障,而且開發難度更大。

    我們還是回到資料庫上說,有人提議說就把一年以前登入的使用者排除掉。我說萬萬不可取啊。為什麼?假如有10年的資料,排除9年這個運算量還是很大的。不少迷信大資料的人這時候依然會說用大資料的方式,其實完全不用。我提出的是select max(time),使用者程式碼 from 登入日誌表 時間我取最後一個月。那麼最後一個月都登入過,我管你前面11個月是不是登入過呢?當然這是一個非常粗略的解法,還有很多細節需要討論。只是我這個想法給了大家一點啟示。我們演算法博士說我這種做法叫做動態規劃。

   我去查了一下, 動態規劃是運籌學的一個分支,是求解 最最佳化的過程。20世紀50年代初, 數學家貝爾曼等人在研究多階段決策過程的最佳化問題時,提出了著名的最 ,從而創立了動態規劃。動態規劃的應用極其廣泛,包括 、經濟、工業生產、軍事以及 等領域,並在 、生產經營問題、資金管理問題、 、 和複雜系統可靠性問題等中取得了顯著的效果。

    我想了一下我日常的最佳化大多數都是屬於這一類, 想起了亮劍中李雲龍說的:“原來我也是這樣乾的,只是還不知道有這種線狀本。”

資料庫與動態規劃

    我不是演算法出身,不知道原來自己做的很多有很強的理論,看來以後還是要補短板,多學習。理論和實際相結合。

   今年有一個15萬倍的SQL最佳化,其實就是用到了部分的動態規劃的思想。說的這裡可以明白了,為什麼不需要大資料了吧?。我一直說資料庫底層就是物理學和數學,這次再次證明,資料庫和數學緊密結合是多麼有意義。資料庫和物理學結合就是一體機了。看今天信通院發文準備做一體機的標準了,其實一體機這個領域還是Oracle玩的最好,已經把計算機的發揮到了極致。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2923533/,如需轉載,請註明出處,否則將追究法律責任。

相關文章