资料整合

背景:

最近在做资料整合的工作,主要是系统之前,有两份用户数据,分别服务两个不同的APP应用,但是,目前要做资料整合,规则就是那边用户的资料新,就用那边的资料。 比如,A 和 B 两个应用,用户C先用了A应用shu,然后用了B应用,B应用那边新增的资料,就相对比较新,整合完后,用户C就统一为B 应用的资料。

看起来很简单,但是有以下难点:

1. A应用,他有自己特殊的数据,比如,签名;B应用,他有自己特殊的数据,比如,头像;如何整合,让以后用户C,使用A应用,就可以获取到A应用特殊的数据;使用B应用,就获取到B用户特殊的数据;

2.资料是采用最新的,存在一个问题,资料有多维属性,但是,时间戳只有一份。如何控制好多维属性的更新,和预估可能的后果。

最初,方案的设想,是后端做数据的汇总,然后统一为一份数据,但是,有两个问题,第一,当时数据中心还没有对应的工具,第二,数据汇总,出错的话,回滚的成本比较高,暂时放弃。(但是,最后还是采用这种方案。)

后面,打算放弃应用B的数据,统一采用应用A的数据,这样实现简单,但是对应用B有一定是损害。

第三,程序层面做汇聚,判断时间戳,为对应的数据源获取数据。采用这种方式,实现相对复杂,但是可控。

由于产品的坚持,最后,使用了第三种方案。原先的计划和方案讨论完,实现后部署到现网,出现了一个大的问题。由于A应用没有头像时间戳(本来产品是计划发布A应用,让A应用有头像时间戳的),而B应用有头像时间戳。会导致一个问题,本来C本来在B应用上面有头像,而在A应用上面没有头像,但是A的数据比较新,则使用A的数据,这样,会导致用户原来的头像没有生效。

后面,讨论多种方案,由于客户端也存在异常的情况,导致该方案回滚,最后,统一采用最初的方案。

经过此次整合,得出的经验如下:

1.数据整合,涉及方方面面,在用户量少的情况下,越快做越好;

2.多维数据的交叉,程序层面做数据的判断,由于可能存在多种异常的情况,分支较多,容易出错,最好,还是从后端的数据汇聚层,做统一的整合。

资料整合

时间: 2024-10-06 22:59:31

资料整合的相关文章

Android + Eclipse + PhoneGap 3.4 安卓最新环境配置,部分资料整合网上资料,已成功安装.

前言:广州花都论坛,打算推出本地服务o2o应用.快速开发手机应用,phonegap 我的小站,http://www.w30.cn/ 如果有什么问题也可以到小组留言,可以的话,贡献一个ip:) phonegap小组 http://www.w30.cn/go/w30 如果有什么问题也可以加入我们的QQ群:64674997 下面是我的安装过程 环境搭建首先要去下载一些安装包: (下载前注意一下,电脑是32位还是64位的请注意选择安装包) java环境的JDK:http://www.oracle.com

spring boot 资料整合

spring boot 资料整合 原文地址:https://www.cnblogs.com/lhuser/p/11087410.html

mina学习资料整合

最好的资料当然是官方文档:https://mina.apache.org/mina-project/userguide/user-guide-toc.html 官方文档,配合源码中的example例子基本上就可以掌握mina了... 下面是其他人写的blog,不错的资料,建议看看.. 系列教程:http://www.cnblogs.com/wucao/tag/MINA/ 深入了解:http://shiyanjun.cn/archives/category/opensource/mina

eigenface资料整合

把图片映射到能最好区分的空间(pca),在这个空间同类是聚集的,而不同类之间间隔大.这相当于一个模型,把验证集也映射到此空间,然后利用knn对验证集分类. pca:https://wenku.baidu.com/view/f2beacac64ce0508763231126edb6f1aff0071b3 代码:https://github.com/bytefish/facerec/tree/master/m/models

cors跨域的前端实现---根据资料整合的

1.服务端 搁response中增加Access-Control-Allow-Origin:'*' eg:  context.Response.AddHeader("Access-Control-Allow-Origin", "*"); 2.前端 同样发送ajax请求 $.ajax({ type:'method'   //GET POST HEAD都行 url:'croll-domain-url', xhrFields:{ withCredentials:true

PEB和TEB资料整合

一.概念 TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据.位于用户地址空间,在比 PEB 所在地址低的地方.进程中的每个线程都有自己的一个TEB.一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000开始的线性内存中,每 4KB为一个完整的TEB,不过该内存区域是向下扩展的.在用户模式下,当前线程的TEB位于独立的4KB段,可通过CPU的FS寄存器来访问该段,一般存储在[FS:0].在用户态下WinDbg中可用命令$t

正则表达式、sed、awk相关资料笔记资料整合

正则表达式元字符: ^   #锚定行的开始.如:/^sed/ 匹配所有以sed开头的行. $   #锚定行的结束.如:/sed$/ 匹配所有以sed结尾的行. .   #匹配一个非换行字符. 如:/s..d/ 匹配s后接任意两个个字符,最后是d. *   #匹配零个或多个字符. 如:/*sed/ 匹配所有模板是一个或多个空格后紧跟sed的行. []   #匹配一个指定范围内的字符. 如/[Ss]ed/ 匹配Sed和sed. [x-y]   #匹配指定范围内的一个字符. 如 /[a-z]ed/ 匹

Unity3D表面着色器(Surface Shader)资料整合

一.Shader 表面着色器语法 Unity 的表面着色器 (Surface Shader) 是一种代码生成方法,用它来编写光照着色器比用低级的顶点/像素着色器程序容易得多 二.编写一个灰度效果的Shader 三.Shader 内置 Shader 之 Normal-Diffuse Normal-Diffuse 是一个简单的光照模型,光照强度随着物体表面和光入射角夹角的减小而减小.光照强度只和入射角度有关,与摄像机无关. 四.Shader 内置 Shader 之 Bumped Diffuse 学习

CSS3资料整合

border-radius:兼容写法: -moz-border-radius: none | <length>{1,4} [/ <length>{1,4} ]? -webkit-border-radius: none | <length>{1,4} [/ <length>{1,4} ]? border-radius: none | <length>{1,4} [/ <length>{1,4} ]? text-shadow:兼容写法: