摘要:無限級(jí)回復(fù)朋友圈也類似,只是有限制層級(jí)為級(jí)很多人會(huì)感興趣網(wǎng)易那種蓋樓的評(píng)論的實(shí)現(xiàn),實(shí)際上可以理解為是單個(gè)回復(fù)的進(jìn)化版,只是它把所有引用的回復(fù)的記錄下來了,在展示的時(shí)候進(jìn)行顯示出來而已。
相信大家在平常的系統(tǒng)開發(fā)中,或多或少會(huì)涉及到一些評(píng)論系統(tǒng)的設(shè)計(jì)。小到某些工具自己做一些備注(實(shí)際上也可以理解為評(píng)論),大到類似淘寶天貓這種,都需要一些評(píng)論的支撐。
當(dāng)然,評(píng)論有簡單,也有復(fù)雜:
簡單的當(dāng)然就是只有一層的回復(fù)了,不能對(duì)回復(fù)進(jìn)行另外的回復(fù),類似現(xiàn)在很多迷你社區(qū)帶的@系統(tǒng),可以把它看成是只有單層的回復(fù)。
稍微更進(jìn)一步的就是可以對(duì)回復(fù)進(jìn)行評(píng)論的,類似現(xiàn)在的很多XX頭條就是這樣的
稍微更進(jìn)一步的是可以對(duì)回復(fù)進(jìn)行回復(fù),即類似引用,但只可以是單層的,如朋友圈。再復(fù)雜一點(diǎn)就是可以多層級(jí)的回復(fù)了,網(wǎng)易的蓋樓就是這樣的實(shí)現(xiàn),它們的設(shè)計(jì)可以類似,只是一個(gè)字段存放的內(nèi)容的多好而已。
下面我們就針對(duì)上面的幾種評(píng)論系統(tǒng)作一下描述,當(dāng)然,只是個(gè)人之見,如有不對(duì),還請(qǐng)指出。
單層回復(fù)單層回復(fù)就是像很多微型社區(qū)里面的@,這個(gè)可以簡單地理解為回復(fù)。@只是在保存的時(shí)候使用正則進(jìn)行相關(guān)的匹配,給那些被@的用戶發(fā)通知。
column | type | comment |
---|---|---|
id | bigint | 主鍵ID |
uid | bigint | 用戶ID |
biz_id | bigint | 業(yè)務(wù)ID |
content | text | 評(píng)論內(nèi)容 |
biz_type | tinyint | 業(yè)務(wù)類型 |
create_time | timestamp | 創(chuàng)建時(shí)間 |
modify_time | timestamp | 修改時(shí)間 |
deleted | tinyint | 是否被刪除 |
表結(jié)構(gòu)大概就如上了,當(dāng)然,很多東西還是要根據(jù)業(yè)務(wù)來增減的,比如回復(fù)可以發(fā)圖片,那么把圖片多帶帶出來放在一個(gè)字段會(huì)容易處理得多。
回復(fù)可以評(píng)論這是回復(fù)的進(jìn)化版,它可以對(duì)回復(fù)進(jìn)行評(píng)論,而用戶還可以對(duì)評(píng)論進(jìn)行評(píng)論,類似現(xiàn)在的一些XX頭條基本上都是這樣的。
column | type | comment |
---|---|---|
id | bigint | 主鍵 |
uid | bigint | 用戶ID |
biz_id | bigint | 業(yè)務(wù)ID |
biz_type | tinyint | 業(yè)務(wù)類型 |
content | text | 評(píng)論內(nèi)容 |
create_time | timestamp | 創(chuàng)建時(shí)間 |
modify_time | timestamp | 修改時(shí)間 |
deleted | tinyint | 是否被刪除 |
comment_id | bigint | 回復(fù)ID |
parent_id | bigint | 父ID |
表結(jié)構(gòu)大概跟上面的基礎(chǔ)版類似,只是增加了一個(gè)comment_id,它用于記錄需要評(píng)論的回復(fù)ID(只有是評(píng)論的情況下才有值),而parent_id用于記錄評(píng)論的父評(píng)論ID,只有當(dāng)對(duì)評(píng)論進(jìn)行評(píng)論的時(shí)候,這個(gè)值才會(huì)大于0。
無限級(jí)回復(fù)(朋友圈也類似,只是有限制層級(jí)為1級(jí))很多人會(huì)感興趣網(wǎng)易那種蓋樓的評(píng)論的實(shí)現(xiàn),實(shí)際上可以理解為是單個(gè)回復(fù)的進(jìn)化版,只是它把所有引用的回復(fù)的ID記錄下來了,在展示的時(shí)候進(jìn)行顯示出來而已。
column | type | comment |
---|---|---|
id | bigint | 主鍵 |
uid | bigint | 用戶ID |
biz_id | bigint | 業(yè)務(wù)ID |
biz_type | tinyint | 業(yè)務(wù)類型 |
content | text | 評(píng)論內(nèi)容 |
create_time | timestamp | 創(chuàng)建時(shí)間 |
modify_time | timestamp | 修改時(shí)間 |
deleted | tinyint | 是否被刪除 |
parent_ids | text | 引用評(píng)論ID(按順序) |
這里我們新增的是一個(gè)parent_ids列,它用于保存引用的評(píng)論ID列表,它的順序按照發(fā)表的評(píng)論的時(shí)間來排,當(dāng)我們進(jìn)行蓋樓評(píng)論的時(shí)候,會(huì)拿到之前評(píng)論的ID,查到它的parent_ids,合并生成新的parent_ids,然后就可以生成新的評(píng)論了。
設(shè)計(jì)原因評(píng)論ID->parent_ids->合并新的parent_ids>生成新的評(píng)論
我們會(huì)看到第二種區(qū)分評(píng)論和回復(fù)的設(shè)計(jì)比第一種和第三種都麻煩一些,而且在查詢的時(shí)候也要進(jìn)行區(qū)分。而第一種和第三種實(shí)際上可以合為一個(gè)(如果parent_ids為空,則表示是第一級(jí)回復(fù),否則則表示是對(duì)回復(fù)的引用),但考慮到業(yè)務(wù)可以會(huì)有一些特殊性,在設(shè)計(jì)的時(shí)候盡量應(yīng)該區(qū)分會(huì)更好處理一些。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11740.html
摘要:真正要做高性能的系統(tǒng),不僅需要在數(shù)據(jù)結(jié)構(gòu)與算法層面深入,更要從硬件操作系統(tǒng)文件系統(tǒng)底層原理等多個(gè)領(lǐng)域做更多的研究例如阿里云自研的系統(tǒng)使用了裸盤技術(shù)。 《CDN之我見》共由三個(gè)篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業(yè)術(shù)語,想深入了解和感受 CDN 究竟是什么的同學(xué)。本次由白金老師繼續(xù)為大家分享《CDN之我見》系列二,主要講解緩存是什么、工...
摘要:真正要做高性能的系統(tǒng),不僅需要在數(shù)據(jù)結(jié)構(gòu)與算法層面深入,更要從硬件操作系統(tǒng)文件系統(tǒng)底層原理等多個(gè)領(lǐng)域做更多的研究例如阿里云自研的系統(tǒng)使用了裸盤技術(shù)。 《CDN之我見》共由三個(gè)篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業(yè)術(shù)語,想深入了解和感受 CDN 究竟是什么的同學(xué)。本次由白金老師繼續(xù)為大家分享《CDN之我見》系列二,主要講解緩存是什么、工...
摘要:系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。傳統(tǒng)架構(gòu)升級(jí)困難。新的輕量級(jí)協(xié)議容器化的出現(xiàn)。熔斷處理在微服務(wù)出現(xiàn)問題時(shí)防止出現(xiàn)雪崩效應(yīng)。 聊完Spring Boot,我們來看看Spring Boot最重要的一方面的應(yīng)用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我們先聊聊微服務(wù)。 ...
摘要:即使秒殺系統(tǒng)崩潰了,也不會(huì)對(duì)網(wǎng)站造成影響。動(dòng)態(tài)生成隨機(jī)下單頁面的為了避免用戶直接訪問下單需要將動(dòng)態(tài)化,用隨機(jī)數(shù)作為參數(shù),只能秒殺開始的時(shí)候才生成。架構(gòu)設(shè)計(jì)如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機(jī)數(shù)。 秒殺背景 電商中為了吸引顧客、聚集人氣,經(jīng)常會(huì)策劃一些秒殺活動(dòng)?;顒?dòng)中售賣的商品,要么價(jià)格遠(yuǎn)低于市場(chǎng)價(jià)格,要么比較稀缺(如一些新發(fā)布的商品)。這些商品電商一般都會(huì)限...
閱讀 2361·2021-11-24 11:16
閱讀 2047·2021-09-30 09:47
閱讀 2019·2021-09-10 10:51
閱讀 1330·2019-08-30 14:08
閱讀 3150·2019-08-30 13:47
閱讀 1536·2019-08-30 13:02
閱讀 3241·2019-08-29 12:29
閱讀 3212·2019-08-26 17:05