一同事去某公司面java开发,面试的时候说到系统设计,面试官问了个问题:一个系统每小时插入4亿条数据,需要考虑什么问题?
他当时没有回答出来,回来听到这个问题,我也没有答案。一般rdbms每秒钟顶多上千事务吧,像这种秒10w多的并发插入,怎么处理呢?
这种大的数据库量处理瓶颈在于一个是传输.一个是存储.存储可以通过队列,缓存方案着手.传输这块目前没有好的办法.只能是从硬件来看.
你目前的问题太泛了.不好具体到代码实现.应针对具体的环境来分析
其实面试官考的不是你技术方面的东西.对于这种问题很好回答.你可以列举一二三来回答.面试官主要看你对于问题的认识和分析.而不是单纯从技术方面来考你.
你可以回答.首先从设计上来考虑.对于这种大的并发数据,在系统一开始的时候先从设计上来针对大的数据量进行分析和设计.比如架构层,底层等的设计.从架构上设计时应该充分考虑这种设计.比如多多线程,分布式,云存储等.反正都是忽悠.
第二你可以回答.从技上考虑.对于数据库的分表.事务.以及采用缓存方案.
反正一句话.他不可能问题的很细.因为这种问题更多的考的是你应变能力.他不可能问的太细...
面试官问题你问题时你能说出个一二三来.就行.
并且这种一二三你要站在不同的角色去分析和看待问题.
补充一下哈.这种大的数据量.并不仅仅是程序员考虑的问题.还包括硬件.服务器.采用的哪种数据库.甚至集群等.这些工作并不都是程序员干的事情.
我觉得这样的大数据,首先需要加一个前面的预处理器,而不是直接的将数据全部丢给数据库处理