[英]How to handle count of how many times some events occurs?
嘗試獲得處理“我喜歡”的書數的最佳實踐。 現在說,我有很多書,每個系列可以有很多書。 現在,當人們在一本書上單擊“我喜歡”時,我想在書上加1,然后在系列中加1,以便以后我可以相應地渲染這些數字。 現在,我在兩種方法上進行掙扎。
1)當單擊一本書時,我將在書籍表的“喜歡”列中添加1,同時在系列表的“喜歡”列中添加1。
2)單擊一本書時,我只在書表的“喜歡”列上添加1。 當我嘗試對系列編號進行渲染時,我對屬於該系列的書籍的“喜歡”列進行了SUM運算。
但是,兩者都有優點和缺點。 1)方法,當我嘗試顯示有多少人喜歡整個系列時,我可以簡單地獲取系列表的“喜歡”列。 這將比2)方式高效,因為不需要聚合,尤其是當許多人嘗試呈現系列頁面時。 但是,當我們單擊“我喜歡”按鈕時,這將需要更多的精力。 即使當人們單擊不同的書時,也會引起該問題。 只要這些書屬於同一系列,就需要更新該系列的編號。 而且它將是並發過程。 相反,如果人們單擊“我喜歡”這本書時,我不對系列表進行更新。 在那個級別上它會更高效,但是當許多人嘗試加載同一系列頁面時,將花費大量的精力進行冗余聚合計算,其中顯示了該系列的“喜歡”數字。
還有其他想法嗎? 如果沒有,有什么更好的解決方案? 1)或2)? 提前致謝。
使用HttpSession
HttpSession session = request.getSession(false);
if (session == null) {
// store value in session
}
else {
// read value from session
}
另一個選擇是將Redux用於較大的“單頁應用程序”,但前提是有意義。
我更喜歡第二種方法。 那里的邏輯更有意義。 不僅可以在每次單擊該書時在系列中加1,還可以對系列中的喜歡總數進行匯總。
將數據存儲在數據庫中,否則在服務器重新啟動時會丟失數據。
我建議使用數據庫。 您可以有一個books表和一個likes表。 當某人喜歡一本書時,您可以獲取他們喜歡的書的ID,並將其添加到Likes表中。
這樣,您還可以存儲喜歡的人的名字,並阻止他們喜歡兩次以上,並且還可以給他們選擇刪除喜歡的人的選項。 例如:
圖書表:
ID,書名,作者(以及其他任何信息)
點贊表:
ID,用戶名,book_id,日期
然后,當計算一本書的喜歡數量時,您可以查詢數據庫並計算book_id =?的行數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.