現在大家使用 Funliday-旅遊規劃 在「景點瀏覽」輸入城市,或者是移動地圖出現的推薦景點,應該都是即時出現,也是最近花了一些時間的成果。下面先筆記一下推薦景點開發的歷程,之後如果有機會應該可以到 PostgreSQL.TW 分享一下完整的內容。
簡單來說,就是一個從 70000ms 的 response time,提升到 200ms 的 response time 過程。
---
## 2019/02 推薦景點第一版
https://www.facebook.com/kewang.information/posts/2268138753462486
## 2019/09 late 加上使用者查詢的 poi history 到推薦景點
1. 如果該 city 最近 30 天的 poi history 景點超過 10 個,則直接使用
2. 如果該 city 最近 30 天的 poi history 景點小於等於 10 個,則加上 KNN+rating 算法所取出的 poi 一起回傳給使用者
3. 使用網路上找到的 uniq,將 poi history 的景點及 KNN+rating 算法的景點去除重覆資料
4. 會將計算後取出的 poi id 存入 Redis,TTL 為 1 天
## 2020/06 late 加快查詢速度
1. 將原本要從 poi_data (超過 2500 萬筆的 POI) 取得 city 的 bbox,改從 city_data (約 200 萬筆的 city) 取得,加快查詢速度
## 2020/07 late 刪除不正確的 poi
1. 刪除該 city 經過 poi history 計算後 count 為 0 的 poi
2. 刪除部分不該出現在推薦景點上的景點類型,如:飲水機、球場、停車場...等
3. 將 KNN+rating 的景點 TTL 設定為 14 天,而從 poi history 計算出來的景點 TTL 一樣為 1 天
## 2020/09 late 重構推薦景點功能,並加上 L2, L3 cache
### 2020/09/22 late 重構推薦景點功能
1. 先從 Redis 取出確認該 city 是否有 cache,有的話就直接回傳,沒有的話寫入 refresh = true 的 flag 到 city_data table,表示該 city 資料必須更新
2. 從 DB 取出確認該 city 是否有 cache,有的話就直接回傳,沒有的話就必須即時計算該 city 的推薦景點
3. 推薦景點的算法與之前相同,包括了 poi history 及 KNN+rating,但移除 uniq,改用 Set 的寫法去除重覆資料
4. 計算完該 city 的推薦景點之後,直接將資料存回 Redis 及 DB,並且回傳計算完的推薦景點
5. 期望這樣跑下來後,之後使用者就算在 Redis 找不到 cache (因為過期),也可以從 DB 找到 cache (因為不會消失)
6. 每天固定跑 scheduler,掃出 refresh flag 為 true 的 city,在 background job 將最新的推薦景點寫回 Redis 及 DB,並將 refresh flag 設定為 false
### 2020/09/23 early 加快預熱 cache 到 DB 的速度
1. 因為目前在 Redis 還有部分 city 的 cache,如果要等一天 (TTL) 之後這些 cache 失效後才能啟動 L2 cache 機制會有點浪費
2. 所以增加若在 Redis 確認該 city 有 cache 且 DB 沒 cache 的話,就將該 cache 寫回 DB,並且回傳
### 2020/09/23 middle 確認是否有最佳化空間
1. 延長 city Redis cache 的 TTL 從 1 天增加到 14 天,避免部分活動過於熱門,導致該區域的推薦景點都被該活動洗掉
### 2020/09/24 early 加上 new relic
1. 加上 new relic 的 custom attributes,記錄該 city 的 IO 相關讀取時間
### 2020/09/24 middle 加上 local cache
1. 因為從 Redis 或 DB 取回來的 id 要再經過一次 DB 查詢,才能組合完整的 response 回傳
2. 所以加上 city id 及使用者語言做為 local cache key,加快同 city id 且同語言的資料回傳速度
3. 如果 city id 或使用者語言在該 cache 找不到,再回 DB 查詢
4. 加上 new relic 的 custom segment,方便判讀 request 的瓶頸是在哪一段
### 2020/09/24 late 調整 poi history 的執行速度
1. 將原本使用 where + group 取得最近 30 的 poi history 語法,改為先做 where,再做 group,將原本放在同一個 CTE 的 query 拆成兩個 CTE 執行
2. 速度從原本的 40 ~ 50 秒,甚至到 70 秒,下降到約 10 秒左右
### 2020/09/25 early 移除不必要的 middleware
1. 在整整一年前將 poi recommend 及 search 拆開成不同檔案的時候,沒有仔細確認,所以每次 request 都要到 Redis 做兩次的 auth check
2. 所以將其中一個 auth check 拿掉,加快約 1ms
### 2020/09/27 early 再次檢視 poi history 計算方式是否有最佳化空間
1. 原本在使用經緯度計算是哪個 city 時,查詢速度大約都 400ms 左右,加上 GiST index 之後,查詢速度提升 1000x,變成只要 0.4ms 就能算出來
2. 整整一年前導入 poi history 到推薦景點時,資料量還沒這麼大,所以在計算時速度都蠻快的
3. 但 poi history 現在資料筆數已經超過 2500 萬筆,都變成 Seq Scan,雖然 planner 會判斷成 Parallel Seq Scan,但速度還是很慢
4. 因為是使用近 30 天的資料做計算,所以將 created_at 加入 index,速度從 10 秒左右降到 1 秒左右
#postgresql #newrelic #redis
同時也有17部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,從JAVA入門到智慧型手機設計(16) 完整教學影音分享申請 http://goo.gl/lsqo7 論壇: http://groups.google.com/group/java2android?hl=zh-TW 課程影音: 01_Intent的動作類型和URI說明 02_Intent類...
「經緯度查詢地圖」的推薦目錄:
- 關於經緯度查詢地圖 在 Kewang 的資訊進化論 Facebook 的最佳解答
- 關於經緯度查詢地圖 在 創夢市集 DIT Startup Facebook 的精選貼文
- 關於經緯度查詢地圖 在 電腦玩物 Facebook 的最佳解答
- 關於經緯度查詢地圖 在 吳老師教學部落格 Youtube 的精選貼文
- 關於經緯度查詢地圖 在 吳老師教學部落格 Youtube 的最佳解答
- 關於經緯度查詢地圖 在 吳老師教學部落格 Youtube 的最佳解答
- 關於經緯度查詢地圖 在 經緯度查詢手機-在PTT/MOBILE01上汽車保養配件評價分析 的評價
- 關於經緯度查詢地圖 在 經緯度查詢手機-在PTT/MOBILE01上汽車保養配件評價分析 的評價
- 關於經緯度查詢地圖 在 谷歌地图如何查看经纬度| 搜索坐标| Google Maps - YouTube 的評價
- 關於經緯度查詢地圖 在 想找輸入經緯度查詢地圖的網站 - Mobile01 的評價
經緯度查詢地圖 在 創夢市集 DIT Startup Facebook 的精選貼文
⚡️ 娛樂生活創新週報 #6 ⚡️
(2018/11/13 - 2018/11/19)
▪️來自美國的 What3words 為地球上的每個地點命名的定位服務。他們將地球切割成 570 兆個 3M X 3M 的方格,用亂數拼湊「三個單詞所組合的名稱」來取代經緯度資訊。
今年 11 月 Airbnb 找上 What3words 合作,希望透過 What3words,共同推動 Airbnb 與蒙古政府簽訂的觀光 MOU 。Airbnb 發現蒙古因為缺少成熟的道路與標誌,讓旅客時常難以精準定位部落景點或旅店位置,導入 What3words 技術後,旅客就能輕鬆發現蒙古之美。
------
▪️在壅擠的城市裡自駕,停車大不易,想解決車位難尋的問題,或許你會對 ParkWhiz 感興趣。ParkWhiz 是個線上預約停車平台,他們與 TomTom 地圖合作,讓用戶可以在手機與電腦上,迅速找到附近的停車場及閒置車位,讓用戶第一時間線上預約位置、完成繳費。今年 9 月 ParkWhiz 已有 4,000 萬位用戶,與超過 4,000 座停車場合作,時隔 2 個月後,ParkWhiz 甫宣布要將平台導入 Amazon Alexa ,讓駕駛可以用語音操作預約及查詢。
想看更多創新趨勢相關新聞 :👇🏻👇🏻
#DIT_Startup_News
經緯度查詢地圖 在 電腦玩物 Facebook 的最佳解答
用 Google 地圖簡單查詢經緯度座標的方法:http://www.playpcesor.com/2014/02/google-map.html
經緯度查詢地圖 在 吳老師教學部落格 Youtube 的精選貼文
從JAVA入門到智慧型手機設計(16)
完整教學影音分享申請
http://goo.gl/lsqo7
論壇:
http://groups.google.com/group/java2android?hl=zh-TW
課程影音:
01_Intent的動作類型和URI說明
02_Intent類型介面設計與程式撰寫
03_安裝APIs版本與如何查詢經緯度
04_正確顯示地圖與位置
05_Ch15_1_選項選單介面設計
06_Ch15_1_選項選單程式設計
07_Ch15_2_AlertDialog
課程理念:Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達500萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成
為各產業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
6.可延伸證照考試解題(TQC+)。
7.提供雲端影音連結
8.提供部落格教學日誌
9.提供論壇登入問題討論
上課用書:
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安 出版社:碁峰 出版日期:2011年12月29日
本學期課程目標:
1.把JAVA融入到Android
2.Android入門
3.Android範例詳解
1.把JAVA融入到Android
於是將拿自己最熟悉的JAVA證照題目,
用最好的開發環境 ECLIPSE開發JAVA變得很重要,
可惜目前要找到如何用 ECLIPSE開發 JAVA的書籍似乎闕如,
但要開發JAVA與Androdi就一定要學好ECLIPSE,
於是劇本流程:
1.ECLIPSE的環境建置。
2.新建JAVA專案,開始寫101題樂透彩模擬程式。
3.轉成視窗介面。
4.輸出程執行檔,可以在WINDOWS、MAC、LINUS等環境執行。
5.將專案改成APP。
上下來還蠻緊湊,因為也要繳交作業,學生開始變得更積極。
回家之後我就變成後製,又搖身一半為部落客,
寫文分享JAVA開發經驗。
從JAVA入門到智慧型手機設計論壇:
http://groups.google.com/group/java2android?hl=zh-TW
Android 教學研習心得分享懶人包:
http://terry55wu.blogspot.com/p/android.html
智慧型手機(Android)設計入門總整理
http://terry55wu.blogspot.tw/p/android_5.html
吳老師教學部落格:
http://terry55wu.blogspot.com/
Android論壇:
https://groups.google.com/group/android_bisic?hl=zh-TW
APP教學,Google Andriod,TQC PLUS,吳清輝老師,吳老師提供,程式開發,線上教學,資訊應用系,雲端計算
經緯度查詢地圖 在 吳老師教學部落格 Youtube 的最佳解答
從JAVA入門到智慧型手機設計(16)
完整教學影音分享申請
http://goo.gl/lsqo7
論壇:
http://groups.google.com/group/java2android?hl=zh-TW
課程影音:
01_Intent的動作類型和URI說明
02_Intent類型介面設計與程式撰寫
03_安裝APIs版本與如何查詢經緯度
04_正確顯示地圖與位置
05_Ch15_1_選項選單介面設計
06_Ch15_1_選項選單程式設計
07_Ch15_2_AlertDialog
課程理念:Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達500萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成
為各產業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
6.可延伸證照考試解題(TQC+)。
7.提供雲端影音連結
8.提供部落格教學日誌
9.提供論壇登入問題討論
上課用書:
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安 出版社:碁峰 出版日期:2011年12月29日
本學期課程目標:
1.把JAVA融入到Android
2.Android入門
3.Android範例詳解
1.把JAVA融入到Android
於是將拿自己最熟悉的JAVA證照題目,
用最好的開發環境 ECLIPSE開發JAVA變得很重要,
可惜目前要找到如何用 ECLIPSE開發 JAVA的書籍似乎闕如,
但要開發JAVA與Androdi就一定要學好ECLIPSE,
於是劇本流程:
1.ECLIPSE的環境建置。
2.新建JAVA專案,開始寫101題樂透彩模擬程式。
3.轉成視窗介面。
4.輸出程執行檔,可以在WINDOWS、MAC、LINUS等環境執行。
5.將專案改成APP。
上下來還蠻緊湊,因為也要繳交作業,學生開始變得更積極。
回家之後我就變成後製,又搖身一半為部落客,
寫文分享JAVA開發經驗。
從JAVA入門到智慧型手機設計論壇:
http://groups.google.com/group/java2android?hl=zh-TW
Android 教學研習心得分享懶人包:
http://terry55wu.blogspot.com/p/android.html
智慧型手機(Android)設計入門總整理
http://terry55wu.blogspot.tw/p/android_5.html
吳老師教學部落格:
http://terry55wu.blogspot.com/
Android論壇:
https://groups.google.com/group/android_bisic?hl=zh-TW
APP教學,Google Andriod,TQC PLUS,吳清輝老師,吳老師提供,程式開發,線上教學,資訊應用系,雲端計算
經緯度查詢地圖 在 吳老師教學部落格 Youtube 的最佳解答
從JAVA入門到智慧型手機設計(16)
完整教學影音分享申請
http://goo.gl/lsqo7
論壇:
http://groups.google.com/group/java2android?hl=zh-TW
課程影音:
01_Intent的動作類型和URI說明
02_Intent類型介面設計與程式撰寫
03_安裝APIs版本與如何查詢經緯度
04_正確顯示地圖與位置
05_Ch15_1_選項選單介面設計
06_Ch15_1_選項選單程式設計
07_Ch15_2_AlertDialog
課程理念:Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達500萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成
為各產業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
6.可延伸證照考試解題(TQC+)。
7.提供雲端影音連結
8.提供部落格教學日誌
9.提供論壇登入問題討論
上課用書:
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安 出版社:碁峰 出版日期:2011年12月29日
本學期課程目標:
1.把JAVA融入到Android
2.Android入門
3.Android範例詳解
1.把JAVA融入到Android
於是將拿自己最熟悉的JAVA證照題目,
用最好的開發環境 ECLIPSE開發JAVA變得很重要,
可惜目前要找到如何用 ECLIPSE開發 JAVA的書籍似乎闕如,
但要開發JAVA與Androdi就一定要學好ECLIPSE,
於是劇本流程:
1.ECLIPSE的環境建置。
2.新建JAVA專案,開始寫101題樂透彩模擬程式。
3.轉成視窗介面。
4.輸出程執行檔,可以在WINDOWS、MAC、LINUS等環境執行。
5.將專案改成APP。
上下來還蠻緊湊,因為也要繳交作業,學生開始變得更積極。
回家之後我就變成後製,又搖身一半為部落客,
寫文分享JAVA開發經驗。
從JAVA入門到智慧型手機設計論壇:
http://groups.google.com/group/java2android?hl=zh-TW
Android 教學研習心得分享懶人包:
http://terry55wu.blogspot.com/p/android.html
智慧型手機(Android)設計入門總整理
http://terry55wu.blogspot.tw/p/android_5.html
吳老師教學部落格:
http://terry55wu.blogspot.com/
Android論壇:
https://groups.google.com/group/android_bisic?hl=zh-TW
APP教學,Google Andriod,TQC PLUS,吳清輝老師,吳老師提供,程式開發,線上教學,資訊應用系,雲端計算
經緯度查詢地圖 在 經緯度查詢手機-在PTT/MOBILE01上汽車保養配件評價分析 的推薦與評價
利用Google Map地圖,查詢某地點的經緯度座標-電腦版&手機版教學。 · GoogleMap搜尋座標教學· 開啟Google Map網頁版,先輸入關鍵字或地址找出要查詢的地點,接著在 ... ... <看更多>
經緯度查詢地圖 在 谷歌地图如何查看经纬度| 搜索坐标| Google Maps - YouTube 的推薦與評價
学习怎么在Google 地图 上查看和搜索 经纬度 /坐标订阅我的频道以便学习更多相关资讯:https://www.youtube.com/channel/UCW5NjvA6xaKycZUOi25LCaQ如果 ... ... <看更多>
經緯度查詢地圖 在 經緯度查詢手機-在PTT/MOBILE01上汽車保養配件評價分析 的推薦與評價
利用Google Map地圖,查詢某地點的經緯度座標-電腦版&手機版教學。 · GoogleMap搜尋座標教學· 開啟Google Map網頁版,先輸入關鍵字或地址找出要查詢的地點,接著在 ... ... <看更多>