現在大家使用 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
同時也有5部Youtube影片,追蹤數超過139萬的網紅Jessica Vu,也在其Youtube影片中提到,I finally moved out! Welcome to my first slice of life vlog ? (a cinematic journal / diary entry video format) ? Made in partnership with Function of...
「custom planner」的推薦目錄:
custom planner 在 Rockkhound Facebook 的最讚貼文
"ผมว่าการถ่าย Wedding ไม่ว่าจะ Pre-Wedding หรือ Reception คือการที่เราได้ฝึก Skill เกือบจะทุกแบบเลยนะ แล้วผมชอบมันมากๆ"
สิ่งที่ผมเรียนรู้มาจากพี่ผม (พี่พจน์ Sixtysix Visual)ตลอดเวลาสามปีที่ผ่านมาคือการถ่าย Wedding แต่ละคู่มันคืองาน Custom ไม่มีคู่ไหนเหมือนกัน เราไม่สามารถเอา Pattern ทั้งหมดหรือกรอบมาใส่ให้แต่ละคู่ได้เลย คิดง่ายๆ "คนเราไม่เหมือนกัน" เพราะฉะนั้นทุกคู่คือเราต้องช่วยบ่าวสาวเล่าเรื่องราว และส่วนประกอบทั้งหมดของคู่นั้นๆ แล้วเล่าผ่านภาพและวีดีโอในสไตล์ของเรา
ผมเรียนรู้ว่าการถ่าย Wedding(ทั้งPre และ Reception) คือการฝึกการถ่ายวีดีโอและภาพนิ่งแทบทุกแบบตั้งแต่ Portrait, Landscape, Macro ก็มี บางคู่มี Prop เราก็จะต้องรู้การถ่ายบุคคลกับตัว Product ให้ไปด้วยกัน ส่วนมากการถ่าย Pre-Wedding นอกสถานที่ เราต้องพึ่งแสงธรรมชาติ เราก็ต้องดูแสงให้เป็น และเตรียมตัวดูน้ำขึ้น-น้ำลงผ่าน App ให้เป็นถ้าเราเลือก Location ถ่ายที่ทะเล
การถ่ายนอกสถานที่นั้นเราต้องแข่งกับ Limit หลายอย่าง อุปกรณ์ที่เราเลือกไปใช้ ก็ต้องเหมาะสมกับสถานการณ์ที่เราต้องใช้ความเร็ว แบกไปเยอะๆก็คงจะไม่เวิร์ค ถึงแม้ว่าบางทีจะสามารถเอา LED ไปใช้ได้บ้าง นั่นก็หมายความว่า เราเรียนรู้วิธีการเลือกใช้และการจัดแสง มันคือการปรับตัวหน้างานตลอดเวลา
อีกสิ่งที่ยากมากๆคือ มันจะมีสักกี่คู่ที่เป็นนักแสดง? เราจะทำยังไงให้ท่าทาง ดวงตา รอยยิ้ม การโพส ออกมาในภาพแล้วไม่แข็ง? เราเลือกชุด เลือกสถานที่ยังไงให้มันไม่ฝืนธรรมชาติ ที่สำคัญที่สุด ภาพและวีดีโอที่ออกมา จะทำยังไงให้เพื่อนๆหรือคนรู้จักของบ่าวสาวได้ดูแล้วรู้สึกว่า "เออ มันเป็นแบบนี้จริงๆ" หมายถึงว่าพวกเขาได้เป็นตัวเอง แต่ถูก Polish หรือปรุงแต่งขึ้นมาในปริมาณที่เหมาะสม อย่าลืมคิดไปถึงภาพรวมว่า Pre-Wedding ที่ถ่าย ถ้ามันมาอยู่ในงานมันก็ควรจะไปในทิศทางเดียวกัน
อีกสิ่งสำคัญมากในงาน Wedding คือ เราต้องร่วมงานกับ Wedding Planner การสื่อสารกันก่อนงาน ขณะงาน คือสิ่งที่ขาดไม่ได้เลย อยากรู้ Flow งานตรงไหนให้ถาม Planner ไม่ใช่ไปถามบ่าวสาว วันนั้นพวกเขาเหนื่อยมากแล้ว แล้วมันไม่ใช่แค่เรามาทำงานของเรา ถ่ายๆเสร็จแล้วกลับ จะทำยังไงให้เราและทีม อยู่ถูกที่ถูกเวลาตลอด เพราะการถ่ายงานแต่ง ไม่มีเหตุการณ์ไหนเกิดขึ้นสองครั้ง ยิ่งงานไหนมี Speech เราและทีมยิ่งต้องแบ่งหน้าที่
ก็คือพูดง่ายๆว่าผมชอบงาน Wedding มากเลยเพราะมันท้าทายดี
ผมชอบที่จะต้องมาคิดว่าแต่ละคู่จะถ่ายยังไง จะตัดยังไง จะใส่ Surprise อะไรลงไปในแต่ละงานที่ไม่เคยเหมือนกันเลย
สุขสันต์วันวาเลนไทน์ครับ
Sixtysix Visual X Rockkhound
custom planner 在 Pakar diari hati Facebook 的最讚貼文
Wah! Rotan sekarang dah jadi trend sebab design yang endless. Tak lapok dek zaman!
Lagi pulak design yang cantik & modern macam ni. Taknak ke raya nanti rumah nampak minimalist dan exclusive dengan premium rotan dari Booming Plus? Oh ya! Untuk wedding planner pon taknak ke kerusi rotan yang cantik dan sesuai didekorasikan atas pelamin? Jom check https://plus.boomingplanner.com
Kenapa rotan? Sebab rotan ada lah bahan semula jadi. Memberi permandangan yang segar, lembut dan tidak padat. Membuatkan ruang menjadi lapang dengan natural color. Kalau nak tahu, perabot rotan hangat pada musim sejuk dan sejuk pada musim panas. Maksudnya perabot rotan ni membantu dalam mengimbangkan suhu dalam rumah kita tau.
Sekarang tengah buka order tu. Nak custom design pon boleh tau. Banyak lagi design yang boleh diorder. Jom wasap http://bplus.wasap.my (Eyka)
custom planner 在 Jessica Vu Youtube 的精選貼文
I finally moved out! Welcome to my first slice of life vlog ? (a cinematic journal / diary entry video format) ? Made in partnership with Function of Beauty - get your own custom skincare + 20% off any product/bundle with a free spa headband with my link: http://cen.yt/fobskinjessicavu
Fluent in more than one language? Help me + other viewers by adding subtitles for this video in your language here! ?♀️ http://bit.ly/3b3tg4T
FOLLOW ME!
✧ ?PODCAST: https://anchor.fm/volumeup
✧ IG: https://instagram.com/jessyluxe
✧ TIKTOK: https://tiktok.com/@jessyluxe
✧ TWITTER: https://twitter.com/luxejessy
✧ SOUNDCLOUD: https://soundcloud.com/jessyluxe
✧ SPOTIFY: https://open.spotify.com/user/x39pm9yrqj1nklvv9ptgvsd3d?si=k8uDK8-URZ2Ihw_y80eNtA
﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍
Hi all! How do you like this video style? It felt kind of weird editing things out of chronological order, but I really liked this more laid back type of video without much talking directly to the camera. Please let me know what you think!
Now that I've finally settled into my new apartment, I feel a lot more energized. It's crazy how a simple change in environment can make such a huge difference. Thank you to everyone who has been checking up on me and my apartment situation (*꒦ິ꒳꒦ີ) I appreciate you all very much and can't wait to make new videos for you in my new home ♡
♡ xo
﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍
I N T H I S V I D E O
‹ use yesstyle codes "JESSICA10" + "JESSICAVU" for $ off ›
SKINCARE ⁺
˖ Function of Beauty Moisturizer http://cen.yt/fobskinjessicavu
WEARING ⁺
˖ Yosemite Bear Embroidered Long Sleeve Sweatshirt https://bit.ly/2NGJ5pi
˖ Hana Lee x Ana Luisa Jewelry Gold Dagger Earrings https://bit.ly/3uGVTwo
˖ JINS x Pokemon Pikachu Glasses http://bit.ly/3uGbtIG
˖ Hair Roller https://bit.ly/3pu9AeM
ETC ⁺
˖ Brita Plastic Water Filter Bottle 26 oz. ("Sea Glass") https://amzn.to/2ZZXCyK
˖ The 100-Day Happiness Planner ("Blue & White") http://bit.ly/2O51g7L
˖ The Humans: A Novel by Matt Haig https://amzn.to/3sON3er
˖ White String Fairy Lights https://bit.ly/3dWmHCM
︾
T E C H
˖ CAMERA
Sony ZV-1 Digital Camera
https://amzn.to/3sG8caz
˖ EDITING PROGRAM
Final Cut Pro X 10.5
︾
M U S I C
˖ 방탄소년단 (BTS) - Life Goes On Piano Cover by Pair Piano https://youtu.be/adpQxotIrIQ
https://youtu.be/dBYT0qRt67w
˖ Joe Hisaishi - Spring Piano Cover by Pair Piano https://youtu.be/dBYT0qRt67w
﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍
? BUSINESS EMAIL: jessica@rare.global
FTC: Sponsored by Function of Beauty ? Some links listed are affiliate links and some products used I received in PR („• ֊ •„)
custom planner 在 Peanut Butter Youtube 的精選貼文
นั่งทำงานก็ได้ นั่งอ่านหนังสือก็ดี Productive ไปด้วยกันยาวๆเลยค้า ?
☁️ สมุดและสติ๊กเกอร์ที่ใช้ตกแต่งใน iPad ค้าบ
https://fahfahsworld.com/house/the-butter-and-scotch/
☁️iPad case
https://www.instagram.com/somethingelse__shop/?hl=en
✨Promotion พิเศษจากทางร้าน
สำหรับใครที่สนใจสั่งซื้อ Custom iPad Case (แบบที่เราใช้ในคลิป)
ให้ Capture คลิปเราไปได้เลย ?? ทางร้านแถม!! ปลอกปากกา + สติ๊กเกอร์ + ส่งฟรี!
☁️ปลอก Apple Pencil
https://www.instagram.com/applesheepth/?hl=en
☁️Griptok
https://www.instagram.com/plaifah.postcard/?hl=en
☁️ ปฏิทินตั้งโต๊ะ
https://www.instagram.com/liveoutloud_thailand/?hl=en
____________________________________
?My Store
Stationary: https://www.instagram.com/thebutterandscotch/
Digital Product: https://fahfahsworld.com/house/the-butter-and-scotch/
?Find me more
Instagram: https://www.instagram.com/peanut.bt
Facebook: https://www.facebook.com/peanut.butterstation/
Contact for Work: [email protected]
#studywithme #productive #พีนัทบัตเตอร์
custom planner 在 Lollalane Youtube 的最讚貼文
I must say the experience is such a breeze to collaborate with LeCow & Le-Right. I am so impressed with their attention to details as well as the craftsmanship. I strongly recommend you all to check out their web store if you are looking for custom made covers for your journals, you won't be disappointed!
LeCow & Le-Right Traveler's Notebook
shop webpage:https://lecow.store/
Etsy Shop: https://www.etsy.com/shop/LeRight
Instagram: lecow_tn
Facebook: https://www.facebook.com/groups/lecow/
------------------------------------------------------------------------------------------------
Soundtrack:
Mild Wild - Say Goodnight
-------------------------------------------------------------------------------------------
Please comment down below if you have any question or feedback, would love to hear from you all.
Don't forget to subscribe and show me some love if you want to see more updates from me!
-------------------------------------------------------
You may also reach me at
Instagram: Lollalane
Email: lollalanejournal@gmail.com