我现在要对海量的数据通过一个算法进行运算,在一台服务器运算的效率太低,需要做服务器的集群。
例如:我现在的数据库里有1000万条数据,我需要把其中的任意两条数据做对比,也就是说每条数据都要与另外的999万多条数据做一次比较。
     我想把这个计算放在十台服务器中进行,每台服务器只计算其中的十分之一。理论上 速度应该是在单台服务器上的1/10吧?
     程序是javaEE做的,数据库是oracle,服务器是linux的。     请各位大神 给点思路,例如 服务器集群应该怎么做?有什么成熟的技术?oracle应该部署在10台服务器上么,都是完整的数据么?

解决方案 »

  1.   

    集群计算我知道的目前最强大的应该就是hadoop了。也有一些框架,但是总觉得不如hadoop好。咱们先说说计算框架的事情。首先,千万级别处理oracle应该还是毫无压力的。但是这是取决于你的表结构以及计算的逻辑。你的数据是什么形式,计算如何处理。你说的太模糊,无法帮你处理。我猜测你的意思应该是计算一个图结构的数据。你应该搜索一下这方面的数据挖掘的处理包,应该会对你有帮助。另外在nosql上面图结构的处理也日趋成熟,可以考虑使用。但是数据迁移是一件令人恐惧的事情,牵一发而动全身。
      

  2.   


    建议楼主还是先把集群的概念搞明白吧,这根线程调度可不是一回事(虽然原理上都有一个调度器)。Oracle集群,肯定是有10台电脑都装了Oracle。(可以通过文件方式共享数据,这样做就会有10个文件,不断的同步。常见的有采用裸设备,10台服务器共享同一套数据,不需要做数据同步)。
      

  3.   

    1000w条用sql做很快,而且很简单就可以实现。
      

  4.   

    可以试试 Hadoop 的 MapReduce 功能