分銷系統(tǒng)高效mysql實現(xiàn)

這篇文章是一篇小小的總結(jié),如有疏漏請指出,萬分感謝。

分銷系統(tǒng)需求

一個分銷系統(tǒng)當中,基本有幾個要點,我以商品二級分銷模型為例子。
1.銷售人員發(fā)展客戶,自己和上級能夠獲得獎勵。
2.當客戶購買產(chǎn)品的時候,銷售人員和上級也能獲得獎勵。
3.發(fā)展用戶或者銷售人員時,需要綁定他們的關(guān)系。
4.銷售人員能夠看自己下級的人員并查看自己的銷售業(yè)績。
That's all.

不堪回首

當時剛接觸這個需求的時候,由于本來用戶表有一個 pid(parent_id) 的字段,來表示自己的上級銷售人員。我當時竟然可怕的是用了 ppid,pppid來表示更上級的人員。。。。。。我的天,居然有人會做出這種事。多么可怕的一段黑歷史。

從文件系統(tǒng)想到分享系統(tǒng)

目前在維護一個有上千億行數(shù)據(jù)的文件系統(tǒng),分表分8192張。表結(jié)構(gòu)里面有一個字段,專門維護文件夾層級,里面的值遵循一定的數(shù)據(jù)格式,長得很像linux的文件系統(tǒng)層級結(jié)構(gòu)(例如:/usr/bin/local/),可以說是一模一樣。突然,這不就是樹結(jié)構(gòu)嗎?然后想到了分銷系統(tǒng)的樹結(jié)構(gòu)

開干!

用戶表字段設計:user_id,parent_id,tree,level,money
這里涉及到一些家喻戶曉的人,分別是,A,B和Cn
他們有相關(guān)從屬的關(guān)系。
用表來表示:
A進了某養(yǎng)生品公司,注冊了會員。
于是A成為了這個系統(tǒng)的第一個用戶

| user_id| parent_id | tree| level| money|
| ------------- |:-------------:| -----:|
|A|沒有爸爸|/|1|0|

這時A走在大街上,看到B,說:“你聽說過安利嗎? blablabla”
然后B掃碼成為了A的下級會員,A獲得一塊錢的發(fā)展會員獎勵,并告訴他,你可以告訴你的新朋好友哦,賣出這么好的產(chǎn)品,可以分成哦。

于是有了

| user_id| parent_id | tree| level| money|
| ------------- |:-------------:| -----:|
|A|沒有爸爸|/|1|1|
|B|A|/A/|2|0|

那么B開始努力推廣安利這個產(chǎn)品
給認識的熟人(C1,C2,C3)安利了一發(fā)

于是有了

| user_id| parent_id | tree| level| money|
| ------------- |:-------------:| -----:|
|A|沒有爸爸|/|1|4(1+3)|
|B|A|/A/|2|3(0+3)|
|C1|B|/A/B/|3|0|
|C2|B|/A/B/|3|0|
|C3|B|/A/B/|3|0|

很明顯了

這個表設計的優(yōu)點
1.可以通過 tree 很快的找到 C1 用戶的所有上級用戶進行相關(guān)操作
2.可以通過 like tree 操作,利用索引,查詢 A 用戶所有的下級進行相關(guān)計數(shù)操作,可以提高 A 的推廣積極性
3.通過用 tree 屬性去關(guān)聯(lián)訂單表,給上級返利或者查詢自己的推廣所得,也是很方便。

tree 與 linux 文件系統(tǒng)忒像了

其實這個分銷的樹形結(jié)構(gòu)像極了文件系統(tǒng)的標識符,我也是在做相關(guān)mysql存儲文件關(guān)系的業(yè)務當中類比出如此高效快速的查詢方法。

缺點

這個設計模式的缺點也很明顯,一旦關(guān)系轉(zhuǎn)移(類似文件夾移動),就會產(chǎn)生大量的tree字段修改。所幸的是:關(guān)系轉(zhuǎn)移可以異步處理,但查詢關(guān)系就必須同步。鑒于這種操作特點,也就可以采取這種模式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,336評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 大理的下關(guān)風是最出名。環(huán)洱海騎行的路上,親身體驗過,差點在上坡的時候連人帶車吹翻,可謂妖風陣陣。 我想走遍千山萬水...
    南方姑娘吖吖吖閱讀 267評論 0 1
  • 資料是我們思考的基礎,它在一定數(shù)量積累后才顯出價值。每天我們見到的人遇到的事看過的文字、視頻都攜帶大量的信息,能不...
    第十二顆星球閱讀 469評論 0 0

友情鏈接更多精彩內(nèi)容