賬號(hào)體系(2):賬號(hào)合并的歷史數(shù)據(jù)處理

3 評(píng)論 9524 瀏覽 103 收藏 16 分鐘

在上一章中作者對(duì)合并/打通這兩種賬號(hào)的交互做了概念區(qū)分及處理方式的講解,詳情:《賬號(hào)合并/打通的區(qū)分及處理》;接下來(lái)會(huì)分為兩篇分別對(duì)賬號(hào)合并、打通后的歷史數(shù)據(jù)處理方法進(jìn)行說(shuō)明,我們一起來(lái)看一下。

先回顧賬號(hào)合并:

  • 概念:一個(gè)系統(tǒng)內(nèi),一個(gè)用戶(hù)的多個(gè)賬號(hào)合并成一個(gè)賬號(hào);
  • 場(chǎng)景:一個(gè)系統(tǒng)內(nèi),相同類(lèi)型的賬號(hào)合并/不同類(lèi)型的賬號(hào)合并;
  • 要求:一個(gè)系統(tǒng)中一個(gè)用戶(hù)身份只有一個(gè)賬號(hào),且所有登錄方式產(chǎn)生的數(shù)據(jù)都遷移累計(jì)在該賬號(hào)下。

由上可知,不論是哪種合并場(chǎng)景,其本質(zhì)都是將多個(gè)賬號(hào)的同類(lèi)型數(shù)據(jù)進(jìn)行了合并,將所有數(shù)據(jù)都合并到一個(gè)用戶(hù)緯度,因此本文將圍繞“歷史數(shù)據(jù)的合并處理方法”展開(kāi)討論。

以下為本文大綱:

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

一、開(kāi)始的開(kāi)始,舉個(gè)“栗子”

所有的解決方案是依附具體背景存在的,因此本文依附以下案例展開(kāi)討論:

你負(fù)責(zé)一個(gè)問(wèn)答社群平臺(tái)的賬號(hào)系統(tǒng),現(xiàn)在接到一個(gè)需求:給用戶(hù)提供賬號(hào)合并的功能,用戶(hù)可以對(duì)名下多個(gè)賬號(hào)發(fā)起合并請(qǐng)求,實(shí)現(xiàn)對(duì)多個(gè)賬號(hào)名下收藏關(guān)注的文章用戶(hù)、閱讀簽到等產(chǎn)生的成就權(quán)益等數(shù)據(jù)進(jìn)行統(tǒng)一管理。

在合并完成后,后續(xù)該用戶(hù)所有操作產(chǎn)生的數(shù)據(jù)都會(huì)進(jìn)入合并后的賬號(hào);那么在合并前,幾個(gè)待合并賬號(hào)內(nèi)產(chǎn)生的數(shù)據(jù)呢?這些數(shù)據(jù)也屬于該用戶(hù),也就是本文所指的歷史數(shù)據(jù);歷史數(shù)據(jù)就是在進(jìn)行合并之前,系統(tǒng)中已經(jīng)存在的原始數(shù)據(jù)。

為了后續(xù)該用戶(hù)可以通過(guò)合并后的賬號(hào)順利調(diào)用歷史數(shù)據(jù),完成指定的業(yè)務(wù)操作,我們需要將所有賬號(hào)的歷史數(shù)據(jù)合并入最終的賬號(hào)內(nèi),即要對(duì)歷史數(shù)據(jù)進(jìn)行合并操作;數(shù)據(jù)合并就是將同類(lèi)型的多個(gè)入口的輸入數(shù)據(jù)集合并為新的單個(gè)輸出數(shù)據(jù)集,為數(shù)據(jù)消費(fèi)者提供唯一數(shù)據(jù)出口的數(shù)據(jù)集成方式。

技術(shù)實(shí)現(xiàn)合并后,發(fā)現(xiàn)幾個(gè)問(wèn)題:

  • 待合并的兩個(gè)賬號(hào),關(guān)注了相同的用戶(hù);合并后賬號(hào)產(chǎn)生了重復(fù)關(guān)注的用戶(hù),導(dǎo)致總數(shù)統(tǒng)計(jì)錯(cuò)誤,數(shù)據(jù)冗余。
  • 待合并的兩個(gè)賬號(hào),成就勛章分別是1級(jí)與3級(jí),合并后用戶(hù)依據(jù)勛章級(jí)別開(kāi)放的權(quán)限出現(xiàn)了業(yè)務(wù)沖突。

可見(jiàn),歷史數(shù)據(jù)的合并不是簡(jiǎn)單的1+1=2,若是處理不規(guī)范,可能會(huì)產(chǎn)生類(lèi)似上述的異常;本文就從合并每種類(lèi)型歷史數(shù)據(jù)可能產(chǎn)生的異常入手,分析對(duì)應(yīng)的處理方案。

二、數(shù)據(jù)有哪些類(lèi)型

從業(yè)務(wù)角度入手,筆者將數(shù)據(jù)拆分為以下五種類(lèi)型:標(biāo)示類(lèi)、定義類(lèi)、關(guān)系類(lèi)、權(quán)限類(lèi)、業(yè)務(wù)類(lèi)。

1. 標(biāo)示類(lèi)

定義:對(duì)身份進(jìn)行標(biāo)示定義的唯一數(shù)據(jù),例如上例的用戶(hù)昵稱(chēng)、性別;與userid為同一級(jí)別,標(biāo)示用戶(hù)身份,一般為存儲(chǔ)在數(shù)據(jù)庫(kù)user表中的用戶(hù)數(shù)據(jù)。

特征:所有賬號(hào)的標(biāo)示類(lèi)數(shù)據(jù)格式統(tǒng)一,且該類(lèi)參數(shù)在用戶(hù)緯度內(nèi)唯一。

2. 定義類(lèi)

定義:用戶(hù)自己設(shè)置或系統(tǒng)對(duì)其配置的定義個(gè)人屬性的參數(shù)。例如上例的用戶(hù)簽名、用戶(hù)自己配置的系統(tǒng)設(shè)置項(xiàng)、電商系統(tǒng)的收貨地址;這類(lèi)數(shù)據(jù)是對(duì)用戶(hù)本人、及操作習(xí)慣等的定義。

特征:此類(lèi)參數(shù)在用戶(hù)緯度內(nèi)不唯一,但是不可重復(fù)。

3. 關(guān)系類(lèi)

定義:由于用戶(hù)本人的操作,用戶(hù)與系統(tǒng)中本人、非本人數(shù)據(jù)產(chǎn)生的關(guān)系;例如上例的文章收藏夾、關(guān)注用戶(hù)即為與非本人數(shù)據(jù)產(chǎn)生的關(guān)系;印象筆記中的筆記本與筆記即為與本人數(shù)據(jù)產(chǎn)生的關(guān)系,關(guān)聯(lián)的數(shù)據(jù)之間可以產(chǎn)生更多的交互業(yè)務(wù)。

特征:該類(lèi)參數(shù)在用戶(hù)緯度內(nèi)的限制根據(jù)業(yè)務(wù)決定。

4. 權(quán)限類(lèi)

定義:用戶(hù)付費(fèi)、申請(qǐng)或系統(tǒng)賦予的用戶(hù)權(quán)限,不同的權(quán)限對(duì)應(yīng)用戶(hù)不同的操作、可視數(shù)據(jù),例如上例的用戶(hù)成就勛章。

獲取方式:

權(quán)限類(lèi)數(shù)據(jù)一般有兩種獲取方式:付費(fèi)購(gòu)買(mǎi)、系統(tǒng)賦予。

系統(tǒng)授予又分為:主動(dòng)與被動(dòng)兩種獲取方式。

  • 主動(dòng):由用戶(hù)發(fā)起的權(quán)限申請(qǐng),例如申請(qǐng)成為專(zhuān)欄作家;
  • 被動(dòng):系統(tǒng)根據(jù)用戶(hù)使用情況授予的權(quán)限,例如用戶(hù)積分對(duì)應(yīng)的權(quán)限;系統(tǒng)根據(jù)用戶(hù)在系統(tǒng)中所處的角色授予的權(quán)限,例如將某用戶(hù)配置為管理員、將某用戶(hù)配置為試用期。

權(quán)限類(lèi)型:

權(quán)限一般分為以下類(lèi)型:

  • 配置類(lèi):直接授予、獲取的角色權(quán)限、操作權(quán)限、數(shù)據(jù)權(quán)限;
  • 積累類(lèi):根據(jù)用戶(hù)操作經(jīng)驗(yàn)產(chǎn)生的積分,對(duì)應(yīng)不同的權(quán)限。

權(quán)限類(lèi)數(shù)據(jù)特征:權(quán)限類(lèi)數(shù)據(jù)可能不僅是一個(gè)最終結(jié)果,也可能是一個(gè)未完結(jié)的申請(qǐng)流程,該類(lèi)參數(shù)在用戶(hù)緯度內(nèi)限制根據(jù)業(yè)務(wù)決定。

5. 業(yè)務(wù)類(lèi)

定義:由于用戶(hù)操作或使用生成的業(yè)務(wù)流水/創(chuàng)造的數(shù)據(jù)。例如上例中用戶(hù)發(fā)布的文章、用戶(hù)設(shè)置的收藏文章標(biāo)簽、消息、后臺(tái)的每日使用人數(shù)。

特征:該類(lèi)參數(shù)在用戶(hù)緯度內(nèi)的限制根據(jù)業(yè)務(wù)決定。

三、歷史數(shù)據(jù)合并處理方式

1. 標(biāo)示類(lèi)

場(chǎng)景:用戶(hù)持有A、B兩個(gè)賬號(hào),兩個(gè)賬號(hào)的昵稱(chēng)分別為小王、小李,現(xiàn)對(duì)兩個(gè)賬號(hào)發(fā)起合并,并指定賬號(hào)A為主賬號(hào)。

問(wèn)題:數(shù)據(jù)合并后用戶(hù)昵稱(chēng)有兩個(gè),不知道使用哪個(gè)。

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

案例中的用戶(hù)昵稱(chēng)為標(biāo)示類(lèi)數(shù)據(jù),標(biāo)示類(lèi)數(shù)據(jù)是對(duì)用戶(hù)身份的標(biāo)示,與userID同一級(jí)別,因此在一個(gè)賬號(hào)內(nèi)有唯一性;在上例沒(méi)有正確處理該數(shù)據(jù),產(chǎn)生了數(shù)據(jù)沖突的異常,最終無(wú)法精準(zhǔn)定位。

所以標(biāo)示類(lèi)數(shù)據(jù)的正確合并方式為:由發(fā)起合并的用戶(hù)指定保留數(shù)據(jù)的賬號(hào),覆蓋掉其余待合并賬號(hào)的數(shù)據(jù)。

注意:最終保留的所有標(biāo)示類(lèi)數(shù)據(jù)需都取自同一個(gè)賬號(hào),若不同用戶(hù)的標(biāo)示數(shù)據(jù)拼合在一起,可能影響后續(xù)業(yè)務(wù)數(shù)據(jù)調(diào)用。

2. 定義類(lèi)

場(chǎng)景:用戶(hù)持有A、B兩個(gè)賬號(hào)。分別對(duì)某些用戶(hù)設(shè)置了黑名單,屏蔽他們的消息,兩個(gè)賬號(hào)設(shè)置的內(nèi)容有重復(fù)項(xiàng),現(xiàn)對(duì)兩個(gè)賬號(hào)發(fā)起合并申請(qǐng)。

問(wèn)題:數(shù)據(jù)合并后黑名單出現(xiàn)重復(fù)項(xiàng)。

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

案例中的黑名單設(shè)置即為定義類(lèi)數(shù)據(jù),該類(lèi)參數(shù)定義個(gè)人屬性,因此在個(gè)人緯度是不可重復(fù)的。在上例中沒(méi)有正確處理該數(shù)據(jù),產(chǎn)生了數(shù)據(jù)重復(fù)的異常,使得最終數(shù)據(jù)統(tǒng)計(jì)錯(cuò)誤、數(shù)據(jù)冗余,嚴(yán)重的話(huà)會(huì)引發(fā)bug,數(shù)據(jù)失效。

所以定義類(lèi)數(shù)據(jù)的正確合并方式為:由于定義類(lèi)參數(shù)定義個(gè)人屬性,因此合并后的賬號(hào)需要將所有待合并賬號(hào)的定義類(lèi)數(shù)據(jù)累計(jì)起來(lái);為了避免重復(fù),需要進(jìn)行去重。

3. 關(guān)系類(lèi)

場(chǎng)景:對(duì)A、B兩個(gè)賬號(hào)發(fā)起合并,用戶(hù)C關(guān)注了B賬號(hào);合并處理后僅保留A為代表用戶(hù)身份的主賬號(hào),并將所有數(shù)據(jù)都遷移累計(jì)到A賬號(hào)下,B賬號(hào)作廢。

問(wèn)題:用戶(hù)C無(wú)法再訪(fǎng)問(wèn)關(guān)注名單中的B賬號(hào)。

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

案例中的關(guān)注關(guān)系即為關(guān)系類(lèi)數(shù)據(jù),該類(lèi)數(shù)據(jù)是用戶(hù)與系統(tǒng)中非本人數(shù)據(jù)產(chǎn)生的關(guān)系,因此要求合并后的賬號(hào)與歷史其他非本人數(shù)據(jù)的關(guān)系依舊保存;在上例中沒(méi)有正確處理該數(shù)據(jù),產(chǎn)生了數(shù)據(jù)失位的異常,導(dǎo)致歷史的關(guān)系無(wú)法定位追蹤。

場(chǎng)景:一個(gè)文章可以打多個(gè)不同的標(biāo)簽,用戶(hù)對(duì)A、B兩個(gè)賬號(hào)發(fā)起合并,兩個(gè)賬號(hào)的收藏夾內(nèi)有相同文章、相同的標(biāo)簽;合并過(guò)程中直接將兩個(gè)賬號(hào)中這兩個(gè)參數(shù)進(jìn)行合并去重,未考慮對(duì)應(yīng)關(guān)系。

問(wèn)題:數(shù)據(jù)是完完整整都合并入最終賬號(hào)內(nèi),但是每個(gè)文章的標(biāo)簽是什么呢?

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

案例中的標(biāo)簽與文章存在關(guān)聯(lián)關(guān)系,在合并時(shí)沒(méi)有考慮這部分關(guān)系,導(dǎo)致最終的數(shù)據(jù)錯(cuò)位,數(shù)據(jù)間的關(guān)聯(lián)關(guān)系沒(méi)辦法恢復(fù)。

綜上,關(guān)系類(lèi)數(shù)據(jù)的正確合并方式為:待合并賬號(hào)與系統(tǒng)中本人、非本人數(shù)據(jù)產(chǎn)生的關(guān)系,需要遷移到最終合并后的賬號(hào)。

例如第一例中,需要將C賬號(hào)收藏夾中的B賬號(hào),切換為A賬號(hào),實(shí)現(xiàn)關(guān)聯(lián)關(guān)系的遷移。

當(dāng)然了,處理這類(lèi)需求時(shí)要考慮業(yè)務(wù)場(chǎng)景,不同的場(chǎng)景可能有不同的處理方法:

  • 若為強(qiáng)交互的產(chǎn)品,如社交類(lèi)產(chǎn)品,需要讓其他用戶(hù)及時(shí)準(zhǔn)確定位到合并后的賬號(hào);因此需要將B賬號(hào)切換為A賬號(hào);
  • 若為弱交互的產(chǎn)品,如資訊類(lèi)產(chǎn)品,只需要讓用戶(hù)知道將來(lái)如何繼續(xù)跟蹤B賬號(hào);因此,在用戶(hù)主動(dòng)查詢(xún)、點(diǎn)擊B賬號(hào)時(shí),再提醒其已經(jīng)合并作廢,并提供合并后的A賬號(hào)路徑即可。

4. 權(quán)限類(lèi)

場(chǎng)景:系統(tǒng)規(guī)定,用戶(hù)成就勛章對(duì)于一個(gè)賬號(hào)是唯一且分等級(jí)的,不同的等級(jí)對(duì)應(yīng)不同的用戶(hù)權(quán)益。

用戶(hù)對(duì)A、B兩個(gè)賬號(hào)發(fā)起合并,兩個(gè)賬號(hào)的勛章分別是“筆桿子10級(jí)”與“筆桿子3級(jí)”;合并處理后僅保留A為代表用戶(hù)身份的主賬號(hào),并將所有數(shù)據(jù)都遷移累計(jì)到A賬號(hào)下。

問(wèn)題:A的勛章為“筆桿子10級(jí)”與“筆桿子3級(jí)”,現(xiàn)在用戶(hù)到底算是10級(jí)還是3級(jí)?級(jí)別相關(guān)的權(quán)益如何判定?

賬號(hào)體系(2)| 賬號(hào)合并的歷史數(shù)據(jù)處理

案例中的勛章即為權(quán)限類(lèi)數(shù)據(jù),此類(lèi)權(quán)限類(lèi)的數(shù)據(jù)具有唯一性,在上例沒(méi)有正確處理該數(shù)據(jù),產(chǎn)生了數(shù)據(jù)沖突的異常,最終無(wú)法精準(zhǔn)提供后續(xù)的服務(wù)。

與標(biāo)示類(lèi)數(shù)據(jù)處理方式類(lèi)似,具有唯一性的權(quán)限類(lèi)數(shù)據(jù)的合并最終只需保留一個(gè)權(quán)限,處理方式也是覆蓋,但是具體保留哪個(gè)賬號(hào)的數(shù)據(jù)與具體的業(yè)務(wù)場(chǎng)景相關(guān)。

再舉個(gè)例子,后臺(tái)對(duì)帳號(hào)A的角色配置為編輯,對(duì)帳號(hào)B的角色配置為運(yùn)營(yíng),現(xiàn)對(duì)兩個(gè)帳號(hào)發(fā)器合并,合并后用戶(hù)的角色應(yīng)該是什么?若系統(tǒng)支持一人多角色,那么合并后用戶(hù)的權(quán)限為運(yùn)營(yíng)+編輯,反之就要去抉擇保留哪個(gè)角色。

由此可見(jiàn),權(quán)限類(lèi)數(shù)據(jù)對(duì)合并規(guī)則與業(yè)務(wù)息息相關(guān),例如從不同獲取方式來(lái)看:

付費(fèi)購(gòu)買(mǎi):此類(lèi)權(quán)限是用戶(hù)付出金錢(qián)成本置換到的權(quán)限所有權(quán),因此保留最高權(quán)限,維護(hù)用戶(hù)的利益;

系統(tǒng)賦予:

  • 配置類(lèi):由具體業(yè)務(wù)限制決定是去重合并or保留一種權(quán)限;
  • 積累類(lèi):雖然積分是用戶(hù)操作積累的,但考慮到合并的開(kāi)發(fā)難度,也可以結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景決定是只保留主賬戶(hù)積分or進(jìn)行累計(jì)??梢該Q算成現(xiàn)金的積分需要進(jìn)行累計(jì),例如信用卡積分。

5. 業(yè)務(wù)類(lèi)

業(yè)務(wù)類(lèi)數(shù)據(jù)是由于用戶(hù)操作或使用生成的業(yè)務(wù)流水/創(chuàng)造的數(shù)據(jù),本著“數(shù)據(jù)是用戶(hù)操作產(chǎn)生的,用戶(hù)有對(duì)其的使用權(quán)及控制權(quán),非用戶(hù)本人主觀(guān)操作數(shù)據(jù)不可變動(dòng),在操作時(shí)要避免歷史數(shù)據(jù)的丟失”的原則,對(duì)此類(lèi)業(yè)務(wù)數(shù)據(jù)使用累計(jì)+重新排序的方式進(jìn)行合并;一般是按照時(shí)間順序,例如用戶(hù)消息、訂單流水,此處就不對(duì)其進(jìn)行展開(kāi)描述。

四、總結(jié)

由上述全文可知,在處理合并賬號(hào)的歷史數(shù)據(jù)時(shí),需要保證對(duì)所有歷史數(shù)據(jù)的兼融,保留所有原始數(shù)據(jù);也要進(jìn)行相應(yīng)的限制,避免數(shù)據(jù)處理錯(cuò)誤導(dǎo)致的數(shù)據(jù)錯(cuò)誤等風(fēng)險(xiǎn)。

所以,【兼融】、【限制】就是歷史數(shù)據(jù)處理的原則。

萬(wàn)變不離其宗,下一篇對(duì)系統(tǒng)打通歷史數(shù)據(jù)的處理,也會(huì)由這兩個(gè)原則出發(fā),請(qǐng)大家拭目以待~

 

作者:橘子;公眾號(hào):橘子周思錄;我是3年產(chǎn)品橘子,每周分享自己對(duì)日常工作的總結(jié)思考,希望與您一同成長(zhǎng)。

本文由 @橘子 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫(xiě)的很有用,請(qǐng)問(wèn)下一篇什么時(shí)候更新呀

    來(lái)自上海 回復(fù)
  2. 總的來(lái)說(shuō)分為兩類(lèi):唯一類(lèi)和非唯一類(lèi)數(shù)據(jù)。

    來(lái)自上海 回復(fù)
  3. 寫(xiě)的很有用,請(qǐng)問(wèn)下一篇什么時(shí)候更新呀

    來(lái)自山東 回復(fù)