数亿级别数据 随意输入一个关键字在最短时间内检索出来,如何处理?

数亿级别数据 随意输入一个关键字在最短时间内检索出来,如何处理?(可从三方面考虑1 数据结构,2 算法,3数据库)面试被问到这个,没大数据处理的经验,不知如何作答,各位有何思路?

只能用分布式了,10亿数据,100台机器,每台机器处理一部分数据,再另上时时输出。
1,单机处理不可能满足最短时间的要求。
2,如果用分布式处理,那么每台机器的处理数据,如何划分,是关键。

大数据算法

大数据处理用在这里做检索了? 这么大量的数据要检索出来并不是大数据处理要做的事吧? 存的话可用集群可用HBase存储,定好索引 。。。。。及时用mysql都可行 定好分区分表,加好索引,也能弄。

亿万级的数据检索是很复杂的处理,不是通过单一的技术可以实现,从你的问题上,其实是可以想到一些技术的,数据库方面,从库到表,到索引等都有要处理的,首先,从数据库实例的层次来说 可以采用读写分离,分布式集群的手段,讲压力分散,而从表的角度来说,好的表设计是非常必要,这些优化有很多不一一介绍,从比较高的层次来说,就是采用分区,分表的形式,来减少单表查询的压力,当然这里最好是使用分表的方式,这个涉及到两种方式的底层数据存储,有时间可以找找这些资料看看,而索引方面,适当的建立索引是非长必要和有效的手段,至于用哪种索引则要全方便考虑!而后端的程序也是要优化,主要就是优化sql,那么有哪些手法,自己找资料!当然甚至从后端服务程序的角度,也是可以做很多事情的,你比方说分布式!而所谓的算法和数据结构,在你无法修改数据库的底层的时候,就要看后端的服务程序来优化了,具体怎么做,自己分析了!这些是底层知识的考察!当然数据库还有一个很重要的考虑点就是存储引擎!其实技术有很多,一时也不可能总结全!慢慢学习吧!

可以采用nosql类型的数据库,例如mongodb,本身对分布式,大数量数据索引和查询支持完善;如果采用传统的关系型数据库,就要做好数据库分区
表, 如果条件运行,将关键字字段用做聚集索引(唯一的物理数据索引,此索引有且只有一个,是稀缺资源)