Re: [請益]如何設計 facebook , g+ 按讚或者+1的功能

看板PHP作者 (銀色)時間12年前 (2013/03/24 16:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《tao2tw (smile_ting)》之銘言: : 有個問題想與各位前輩討論, : 我們都知道 facebook 有 按"讚"的功能。 : 如果把一篇文章當做一個 table 中的item 。 : 姑且稱之 Post item . : 該Post item 可能包含許多欄位 : owner_id , content , date , ... : 那麼如果要實作按讚功能, : 就需要新增一筆 like 欄位 到 Post Table : 如果有user C 針對該篇文章 "按讚" : 該 Post item 的 like 欄位 , 就會被 update , 並且增加 點讚人的user_id ? : 比如說原本該POST 按讚人數 已經有兩人 "A,B" : 則ABC按下去之後 先讀取 users = "A,B" : 接下來 users+=","+current_user_id : 將 "A,B,C" 回存 : 感覺上似乎有一點沒效率。 : 但是直覺上的想法大概就是這樣,不曉得前輩是否有更聰明的想法? : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 119.77.136.156 : → FMDream:我會選擇在開一個表 post_item uesr_id is_like 03/24 14:56 : → kerash:這樣設計會變成只要有一個人按讚其他人都會跟著變讚或者 03/24 14:57 : → kerash:別人按讚自己的紀錄會被 update 掉吧 03/24 14:58 : → hSATAC:再開個表 原本表只記按讚數 03/24 15:04 : ※ 編輯: tao2tw 來自: 119.77.136.156 (03/24 15:22) : 推 kerash:我會用一樓的作法 03/24 15:32 剛好哄完小孩睡覺來回一下文… 我們公司的產品正好有類似的功能(叫做「棒」 XDD), 可以提一下我們是怎麼做的, 首先聲明我的資料庫頗弱,所以方式不一定是最好, 希望有其他前輩願意出來指點一二 (其實這篇好像應該算是 Database 的範圍?) 我們家的作法和推文的大大們所說的差不多, 一共有兩個表,post / post_like (加上 reply / reply_liek 就是四個表了), post 純記 like 數量, post_like 塞 post_id + member_id, 所以每次按讚就是: 1. 去查 post_like 的紀錄,這個 user 有沒有讚過這篇文章 2. 沒有讚過,post_like 新增一筆 3. 新增成功的話,post 的 like += 1 展開版面上的文章時: 1. 取出可以被瀏覽的 post 2. 拿所有 post id + user id 去 post_like 拉 like 紀錄 3. 穿插「棒」、「你說這真棒」、「你和 xx 人說這棒」之類的進文章尾 這樣解應該是很基本的方式, 另外有個好處是 post_like 這張表根本就是 key-value pair, 很適合直接用 memcache 或 redis 直接從記憶體作掉(拉和塞都是) 然後定時 crontab 更新 post_like 就好 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.175.40.79
文章代碼(AID): #1HJhDQCa (PHP)
文章代碼(AID): #1HJhDQCa (PHP)