今天的一个面试题。
100万数据上传如何处理?
当时的思路?
1:如此多的数据如果单条上传然后单条存到数据库,I/O消耗肯定特别大;所以要分批次;
2:分批以后采用多线程处理,比如每个线程处理20W。相当于分治。以大化小。
然后又问如何校验数据和处理事务回滚的脏数据?
使用线程就需要callback,等待任务的结果;然后使用全局变量统一返回;
现在想想至少还能优化;
第一:fork join的分治算法,采用了秘取算法的双端队列;
第二:假如数据是一千万,这个时候需要放到不同的机器上计算;
挺有意思的一个考题,考察软件工程思想;记录一下思路。