java处理大数据量

nicylc 发布于 2013/04/17 08:47
阅读 7K+
收藏 2

sqlserver 2个表,每个表有100W条数据,要将这两个表的数据取出来进行计算,用java如何实现,谁有比较好的思路,尽可能提高取数据和计算的性能,计算不是纯java计算,有高手帮忙提下建议吗?

以下是问题补充:

@nicylc:数据库有国产数据库,不能交给数据库来处理 (2013/04/17 10:40)
加载中
0
StormFour
StormFour
这种计算的东西应该直接交给数据库来计算,秒杀java数百倍
StormFour
StormFour
回复 @赵霖 : 没什么怀疑的,除非你没用过数据库
霖vv
霖vv
数据库的计算能力 很强?表示怀疑
0
r
roywang
以前项目用到过一个内存数据库,直接把查出来的list当table,写sql在内存中计算,当然需要大内存支持
0
魔力猫
魔力猫
太模糊了。要不hadoop吧
0
amonxu
amonxu
感觉用数据库处理更好一些。
0
andying
andying

楼主这样需求在Visual Foxpro中很好实现,把要求数据拉到前台生成cursor再进行二次加工运算,加上索引速度奇快,本人也是从foxer转过来学java的,一直在思考java是否也有类似功能,还是说是只能依赖数据库存储过程SQL运算出结果,再返回前端?,这样无疑会加重服务器负担,盼牛人解惑。

andying
andying
回复 @张亦俊 : 当然不是把原始数据全抓下来,先是筛选出一部分数据,再在客户端来深加工处理,以前有个考勤系统,考勤算法用存储过程,在服务器端运算,3000人的月考勤计算至少要等10多分钟,后来改成到客户端一分钟都不要,VFP的cursor及Rushmore功能是非常强大了。只是现在都B/S化了。
张亦俊
张亦俊
回复 @andylauxin : 这种实现也太号流量了。LZ这种数据就可以预见一台Client十几M的流量,如果数据再大一点,一般的办公网络根本吃不消的,而且网络会把整体性能拖下来的。
andying
andying
回复 @张亦俊 : 如果用foxpro,请注意我是说把所需的数据拉到前端处理,现在电脑客户端的硬件配置已相当高了,拉到前端进行业务逻辑处理,肯定是减小服务器的压力,只能会多占用一些网络数据传输量,这在C/S模式下没有什么影响。并不是所有的业务运算都放在服务器端就是好,当然,这在B/S模式下是必然,必尽前端JS还没有这样的数据处理能力,除非你是JS高高手.
张亦俊
张亦俊
难道用Foxpro算就不会加重服务器负担了……
0
xiaoxia
xiaoxia

引用来自“魔力猫”的答案

太模糊了。要不hadoop吧
表示这是在害LZ啊。。 ,这点数据用hadoop还不如单机分批计算。
算法与编程之美
算法与编程之美
回复 @魔力猫 : 两张表加起来也就200w的数据,还是太少了,不太适合用hadoop
魔力猫
魔力猫
因为太模糊了嘛。实在不知道他都要进行什么运算。数据量小但是需要大量计算的话,也得考虑分布式。我只是提了一个可能的方向而已。
0
算法与编程之美
算法与编程之美
我对数据库这块不是特别的了解,但我感觉大数据的处理 一般是采用分治策略(divide and conquer)。
0
空香沾手
空香沾手
用memcached,把数据放到 memcached中,需要的时候取出来一部分。这样节省了tomcat内存,而且比从数据库取数据快了很多。
0
猫猫小毛

引用来自“StormFour”的答案

这种计算的东西应该直接交给数据库来计算,秒杀java数百倍
个人意见:现要看你应用的场景。 说实话100W这数据量真不大。。。。 
0
牛路涵
牛路涵
用云计算吧
返回顶部
顶部