两张表全量比较,有没有好的比较少算法?

OSC_代码审查官 发布于 2016/06/21 11:23
阅读 324
收藏 1

现在从大数据那边每天拿到了约80万条数据,第一天的数据存到nosql中,接着拿第二天的数据,第二天的数据是在第一天的数据上添加或修改的结果,现在想从第二天的数据中找出,哪些数据在第一天数据上发送了修改或者添加。 这些数据中有 a b c 三个属性标识数据的唯一性,也就是说,如果第二天的某一条数据的a b c三个字段的属性跟第一天某一条数据的a b c三个属性一直,则认为他们是同一条数据,如果其他字段不相同,则认为发生了修改。如果第二天中某条数据 a b c 三个字段在第一天数据中找不到匹配则认为是新增。

那么问题来了,有没有什么好的解决方案能快速的实现比较?

加载中
0
那天早上
foy
foy
回复 @起得再长也上不了热门 : 做hash理论上复杂度是O(N)的预处理,O(1)的查询,理论上感觉很难做到复杂度更低了:)
OSC_代码审查官
OSC_代码审查官
回复 @foy : 没什么问题!我现在是想问问大家有没有更快速的解决方案?
foy
foy
回复 @起得再长也上不了热门 : abc hash 作为key,全部字段hash为val 第一天80w数据作为比较对象 第二天数据去比较。 这样有什么问题?
OSC_代码审查官
OSC_代码审查官
想过这个方案,a b c做一个hash ,非a b c做一个hash
0
Ambitor
Ambitor
。。如果nosql没有联合索引的话 就自己写一个Btree的索引树吧,哈哈  再或者用搜索引擎做好前一天的数据的倒排表 也就是索引。都是方案啊,我觉得你这个需求要求不是实时性的,做索引会比较合适。
Ambitor
Ambitor
回复 @碳素云信息技术 : 应该是要把当天的数据在整个历史数据中查询吧?
碳素云信息技术
碳素云信息技术
八十万数据不多嘛,你在每天的表中添加一个字段,字段值为你的abc值按-分割的字符串,然后在第二天的表中查询这个字段值不在上一天的范围内的记录就行。
返回顶部
顶部