通常来说海量数据的最大瓶颈是在数据的查询上,下面给出一些解决方法。


一、数据库
  1、建表:每张表的数据量不能太大,数据库理论一般建议最大为100万条,每张表根据数据量的大小可划分成按天、按月、按年等来建立表。
  2、建库:
    方案一:如果历史数据也总需要查询的话,可将数据库分成历史库和现有库,历史库数据用于查询历史数据,现存库只用于查询现在的数据,这样可提高数据操作的性能;
    方案二:将数据库划分成主、从库。从库将数据库只用于查询不能修改,主库主要用于插入等,选择一个适当的时间或一些其他的数据同步技能实现主从库的同步(有些数据库提供该功能,相当也可以自己去写)。
  3、建立适当的索引、视图、存储过程。 
  当然,以前方案在实际运行中,可根据具体的情况来选择合适的方案。另外,上述方案是可以选择几个同时运用的,基本是不冲突的。


二、服务器端
  1、对于数据库操作的SQL语句,要尽可能的使用索引,以提高其查询效率,避免使用全表查询,具体如何使用索引,请查看我博客中的其他文章。另外,要适时的使用视图和存储过程。
  2、在服务器端,如果硬件允许多缓存一些常用的数据,如一些配置、参数等,以减少和数据库的交互,减轻数据的负担。但是,一定要设立更新缓存或清除缓存的功能,以保证缓存数据是最新的。


三、负载均衡
  采用好的负载均衡策略,可以提高数据的并发量,以减轻部分服务器的压力,平均分配到各个服务器上。对于负载均衡我的BLOG上也有些肤浅的建解,欢迎查阅。
  实现负载均衡有软件实现和硬件实现两种。
  1、软件实现上可以借助第三方的负载均衡软件,如IBM公司的CICS,在WEB方面,也可以借助开源NginX;也可以自己去实现,如QQ。
  2、硬件实现当然只能去买相应的负载均衡器了,这个东西,性能通常来说比软件实现要好,但不绝对,但价钱比较昂贵。


四、硬件
  在硬件方面,CPU、内存、主板等都是必不可少的东西,这个配置一定要高。在硬件还有个重要的就是硬盘,这个东西是非常重要的,具我现在所知道的磁盘阵列就是非常不错,他可以做RAID,这不仅能提高I/O的读写能力,又能提高数据的安全性。


  以上就是我对海量数据的一些认识,有不对的地方希望大家能给与指正,并希望大家有什么更好的方案,拿出来给大家分享一下,谢谢!