之前对合并/打通这两种账号的交互做了概念区分及处理方式的讲解,接下来会分为两篇分别对账号合并、打通后的历史数据处理方法进行说明。

先回顾账号合并:

概念:一个系统内,一个用户的多个账号合并成一个账号。

场景:一个系统内,相同类型的账号合并/不同类型的账号合并;

要求:一个系统中一个用户身份只有一个账号,且所有登录方式产生的数据都迁移累计在该账号下。

由上可知,不论是哪种合并场景,其本质都是将多个账号的同类型数据进行了合并,将所有数据都合并到一个用户纬度,因此本文将围绕“历史数据的合并处理方法”展开讨论。以下为本文大纲:

开始的开始,举个栗子

所有的解决方案是依附具体背景存在的,因此本文依附以下案例展开讨论:

你负责一个问答社群平台的账号系统,现在接到一个需求:

给用户提供账号合并的功能,用户可以对名下多个账号发起合并请求,实现对多个账号名下收藏关注的文章用户、阅读签到等产生的成就权益等数据进行统一管理。

在合并完成后,后续该用户所有操作产生的数据都会进入合并后的账号。那么在合并前,几个待合并账号内产生的数据呢,这些数据也属于该用户,也就是本文所指的历史数据。历史数据就是在进行合并之前,系统中已经存在的原始数据。

为了后续该用户可以通过合并后的账号顺利调用历史数据,完成指定的业务操作,我们需要将所有账号的历史数据合并入最终的账号内,即要对历史数据进行合并操作。数据合并就是将同类型的多个入口的输入数据集合并为新的单个输出数据集,为数据消费者提供唯一数据出口的数据集成方式。

技术实现合并后,发现几个问题:

待合并的两个账号,关注了相同的用户。合并后账号产生了重复关注的用户,导致总数统计错误,数据冗余。

待合并的两个账号,成就勋章分别是1级与3级,合并后用户依据勋章级别开放的权限出现了业务冲突。

可见,历史数据的合并不是简单的1+1=2,若是处理不规范,可能会产生类似上述的异常。本文就从合并每种类型历史数据可能产生的异常入手,分析对应的处理方案。

01

数据有哪些类型

从业务角度入手,笔者将数据拆分为以下五种类型:标示类、定义类、关系类、权限类、业务类。

▋标示类

定义:对身份进行标示定义的唯一数据,例如上例的用户昵称、性别。与userid为同一级别,标示用户身份,一般为存储在数据库user表中的用户数据;

特征:所有账号的标示类数据格式统一,且该类参数在用户纬度内唯一。

▋定义类

定义:用户自己设置或系统对其配置的定义个人属性的参数。例如上例的用户签名、用户自己配置的系统设置项、电商系统的收货地址。这类数据是对用户本人、及操作习惯等的定义;

特征:此类参数在用户纬度内不唯一,但是不可重复。

▋关系类

定义:由于用户本人的操作,用户与系统中本人、非本人数据产生的关系。例如上例的文章收藏夹、关注用户即为与非本人数据产生的关系;印象笔记中的笔记本与笔记即为与本人数据产生的关系。关联的数据之间可以产生更多的交互业务。

特征:该类参数在用户纬度内的限制根据业务决定。

▋权限类

定义:用户付费、申请或系统赋予的用户权限,不同的权限对应用户不同的操作、可视数据。例如上例的用户成就勋章。

获取方式:

权限类数据一般有两种获取方式:付费购买、系统赋予。

系统授予又分为:主动与被动两种获取方式。

  • 主动:由用户发起的权限申请,例如申请成为专栏作家;

  • 被动:系统根据用户使用情况授予的权限,例如用户积分对应的权限;系统根据用户在系统中所处的角色授予的权限,例如将某用户配置为管理员、将某用户配置为试用期。

权限一般分为以下类型:

  • 配置类:直接授予、获取的角色权限、操作权限、数据权限;

  • 积累类:根据用户操作经验产生的积分,对应不同的权限。

权限类数据特征:

权限类数据可能不仅是一个最终结果,也可能是一个未完结的申请流程。该类参数在用户纬度内限制根据业务决定。

▋业务类

定义:由于用户操作或使用生成的业务流水/创造的数据。例如上例中用户发布的文章、用户设置的收藏文章标签、消息、后台的每日使用人数。

特征:该类参数在用户纬度内的限制根据业务决定。

02

历史数据合并处理方式

▋标示类

场景:用户持有A、B两个账号,两个账号的昵称分别为小王、小李,现对两个账号发起合并,并指定账号A为主账号。

问题:数据合并后用户昵称有两个,不知道使用哪个。

案例中的用户昵称为标示类数据,标示类数据是对用户身份的标示,与userID同一级别,因此在一个账号内有唯一性。在上例没有正确处理该数据,产生了数据冲突的异常,最终无法精准定位。

所以标示类数据的正确合并方式为:由发起合并的用户指定保留数据的账号,覆盖掉其余待合并账号的数据。

注意:最终保留的所有标示类数据需都取自同一个账号,若不同用户的标示数据拼合在一起,可能影响后续业务数据调用。

▋定义类

场景:用户持有A、B两个账号。分别对某些用户设置了黑名单,屏蔽他们的消息,两个账号设置的内容有重复项。现对两个账号发起合并申请。

问题:数据合并后黑名单出现重复项。

案例中的黑名单设置即为定义类数据,该类参数定义个人属性,因此在个人维度是不可重复的。在上例中没有正确处理该数据,产生了数据重复的异常,使得最终数据统计错误、数据冗余,严重的话会引发bug,数据失效。

所以定义类数据的正确合并方式为:由于定义类参数定义个人属性,因此合并后的账号需要将所有待合并账号的定义类数据累计起来;为了避免重复,需要进行去重

▋关系类

场景:对A、B两个账号发起合并,用户C关注了B账号。合并处理后仅保留A为代表用户身份的主账号,并将所有数据都迁移累计到A账号下,B账号作废。

问题:用户C无法再访问关注名单中的B账号。

案例中的关注关系即为关系类数据,该类数据是用户与系统中非本人数据产生的关系,因此要求合并后的账号与历史其他非本人数据的关系依旧保存。在上例中没有正确处理该数据,产生了数据失位的异常,导致历史的关系无法定位追踪。

场景:一个文章可以打多个不同的标签。用户对A、B两个账号发起合并,两个账号的收藏夹内有相同文章、相同的标签。合并过程中直接将两个账号中这两个参数进行合并去重,未考虑对应关系。

问题:数据是完完整整都合并入最终账号内,但是每个文章的标签是什么呢?

案例中的标签与文章存在关联关系,在合并时没有考虑这部分关系,导致最终的数据错位,数据间的关联关系没办法恢复。

综上,关系类数据的正确合并方式为:待合并账号与系统中本人、非本人数据产生的关系,需要迁移到最终合并后的账号。

例如第一例中,需要将C账号收藏夹中的B账号,切换为A账号,实现关联关系的迁移。当然了,处理这类需求时要考虑业务场景。不同的场景可能有不同的处理方法。若为强交互的产品,如社交类产品,需要让其他用户及时准确定位到合并后的账号。因此需要将B账号切换为A账号;若为弱交互的产品,如资讯类产品,只需要让用户知道将来如何继续跟踪B账号。因此,在用户主动查询、点击B账号时,再提醒其已经合并作废,并提供合并后的A账号路径即可。

▋权限类

场景:系统规定,用户成就勋章对于一个账号是唯一且分等级的,不同的等级对应不同的用户权益。用户对A、B两个账号发起合并,两个账号的勋章分别是“笔杆子10级”与“笔杆子3级”。合并处理后仅保留A为代表用户身份的主账号,并将所有数据都迁移累计到A账号下。

问题:A的勋章为“笔杆子10级”与“笔杆子3级”。现在用户到底算是10级还是3级?级别相关的权益如何判定?

案例中的勋章即为权限类数据,此类权限类的数据具有唯一性,在上例没有正确处理该数据,产生了数据冲突的异常,最终无法精准提供后续的服务。

与标示类数据处理方式类似,具有唯一性的权限类数据的合并最终只需保留一个权限,处理方式也是覆盖。但是具体保留哪个账号的数据与具体的业务场景相关。

再举个例子,后台对帐号A的角色配置为编辑,对帐号B的角色配置为运营,现对两个帐号发起合并,合并后用户的角色应该是什么?若系统支持一人多角色,那么合并后用户的权限为运营+编辑,反之就要去抉择保留哪个角色。

由此可见,权限类数据对合并规则与业务息息相关,例如从不同获取方式来看:

付费购买:此类权限是用户付出金钱成本置换到的权限所有权,因此保留最高权限,维护用户的利益;

系统赋予:

1)配置类:由具体业务限制决定是去重合并or保留一种权限;

2)积累类:虽然积分是用户操作积累的,但考虑到合并的开发难度,也可以结合实际业务场景决定是只保留主账户积分or进行累计。可以换算成现金的积分需要进行累计,例如信用卡积分。

▋业务类

业务类数据是由于用户操作或使用生成的业务流水/创造的数据,本着“数据是用户操作产生的,用户有对其的使用权及控制权,非用户本人主观操作数据不可变动,在操作时要避免历史数据的丢失”的原则,对此类业务数据使用累计+重新排序的方式进行合并,一般是按照时间顺序,例如用户消息、订单流水。此处就不对其进行展开描述。

总结

由上述全文可知,在处理合并账号的历史数据时,需要保证对所有历史数据的兼容,保留所有原始数据;也要进行相应的限制,避免数据处理错误导致的数据错误等风险。

所以,【兼容】【限制】就是历史数据处理的原则。万变不离其宗,下一篇对系统打通历史数据的处理,也会由这两个原则出发,请大家拭目以待~

↘好文推荐:

王慧文清华产品课

写给未来产品总监的一封信

菜鸟网络 | 寄件业务的产品逻辑

点个“在看”吧

账号体系——账号合并的历史数据处理相关推荐

  1. 万字长文 | 一文带你读懂账号体系

    本文由作者 阿境 于社区发布 经手过诸多项目,行业各异,类型各异,但却有个共同点:均涉及到账号体系,看似不难,但深究起来,却也值得思考,细细品味. 于是乎,便有了这篇文章. 阿境这次将从里到外仔细剖析 ...

  2. 一文读懂账号体系产品设计

    一.账号体系的概念及价值 账号体系是用户在各平台上的通行证. 平台给与用户可持续的服务,用户在平台上获取价值,中间的媒介,便是账号体系. 阿境将其理解为维系用户与平台之间的枢纽. 注:本文中,账号=账 ...

  3. 如何构建一个相对安全的账号体系?

    目录 一.你的账号安全吗? 二.设计一个相对安全的账号体系 三.认证 -- 我是谁 1.认证解决了什么问题 2.认证发展的三个阶段 2.2.What you have -- 我拥有A的某个关键东西,证 ...

  4. 常被混淆的账号体系与账户体系

    账户体系是任意一款互联网产品都必有的基础体系,而账户体系的产品设计文章却寥寥无几.本文小编将从互联保险产品的账户体系入手,来聊一聊如何基于复杂业务场景构建一套完整账户体系. 账户体系.账号体系.用户体 ...

  5. 一文看透账号体系与账户体系的区别

    账户体系是任意一款互联网产品都必有的基础体系,而账户体系的产品设计文章却寥寥无几.本文将从互联保险产品的账户体系入手,来聊一聊如何基于复杂业务场景构建一套完整账户体系. 01 账户体系.账号体系.用户 ...

  6. 微信支付开发(2) 微信支付账号体系

    本文介绍微信支付账号体系各参数. 商户在微信公众平台提交申请资料以及银行账户资料,资料审核通过并签约后,可以获得表6-4所示帐户(包含财付通的相关支付资金账户),用于公众帐号支付. 帐号 作用 app ...

  7. nodebb接入已有的账号体系及实现单点登陆、更改nodebb样式及页面

    一.前言 首先,当接到这个实现nodebb单点登陆这个功能需求时,自己还不太了解单点登陆的概念或者说过程原理.所以就只能一步一步入手,从接入自己的账号体系,覆盖已有的登陆体系开始. 二.接入自己的账号 ...

  8. 如何快速建立一个优秀的账号体系

    在2014年下半年开始,只支持第三方账号登陆的应用在提交苹果的appstore审核的时候被拒绝,拒信如下: If we chose to log in with 微信, we were require ...

  9. 如何打通微信账号体系?

    如果你的微信应用使用同一微信主体注册,Authing 会将终端用户自动识别为同一个用户,不需要你进行额外操作. 准备工作 你一共需要准备以下内容: 注册 Authing 开发者账号 使用同一个微信主体 ...

最新文章

  1. linux下C++ 插件(plugin)实现技术
  2. BW:BW增量更新方法(假增量)
  3. Servlet跳转到JSP页面后的路径问题相关解释
  4. nmon监控linux内存,使用Nmon监控Linux系统性能
  5. CYQ.Data V4.5.5 版本发布[顺带开源Emit编写的快速反射转实体类FastToT类]
  6. JavaWeb开发必会技巧1——导入jar包
  7. 用于创建此对象的程序是package_21个最佳Flutter软件包,用于简化Flutter应用开发...
  8. Y COMBINATOR的六大强悍女人-转自应用电台
  9. 小白帽从病毒视角聊企业安全建设
  10. 【Android驱动】高通串口驱动,串口驱动中的msm_serial.c
  11. 软件测试动态分析,静态分析工具和动态测试工具
  12. Windows开机启动项/自启动项文件夹位置
  13. chimera添加氨基序列
  14. 关于refresh token的总结
  15. 计算机网络 第五章 课后题答案
  16. 【Day4.4】堵车去暹罗商圈吃午餐
  17. Oracle数据库将数字金额转换为大写汉字
  18. C语言定义数组起始地址对齐方式(IAR C99 Kinetis K66)
  19. NLM-P (使用积分图像进行算法的优化)
  20. vue校验密码的三种写法

热门文章

  1. 电子书下载|2020 年云原生年货小红书来啦!
  2. 格莱泽检验matlab,计量经济学实验指导书
  3. macos 全局快捷键 打开 iterm_在 macOS 上实用的十大软件!你get了吗?
  4. redis五种数据类型的应用场景_Redis五种不同的数据类型
  5. rtsp 分辨率信息_SDP在RTSP、国标GB28181、WebRTC中的实践
  6. php随机数字总和固定,php 随机生成固定长度整数、各种服务器请求方法
  7. java ftl 标签_Freemarker-标签使用
  8. 【杂谈】图像识别书看完了感觉不过瘾?这些拓展资料值得你关注一下
  9. 【CV秋季划】模型优化很重要,如何循序渐进地学习好?
  10. 【杂谈】为了让大家学好深度学习模型设计和优化,有三AI都做了什么