日期:2014-05-20  浏览次数:20706 次

关于一个项目的整体框架与设计问题!
目前由于公司内部需要开展一个项目,该项目目前只停留在概念与想法阶段,同时,该项目的目标是成为一个公司长期运营的支撑平台,并通过运营该平台获得收益。
主要想法是在全国布上千个实地采集信息点,各个点有专人负责每天或每几天将信息格式化录入到系统中形成基础数据,然后系统根据这些基础数据定期进行数据分析、统计并为一个面向internet的应用提供数据展示,并能够结合gis系统的数据展示。
按照这个思路,由于目前初步的估计,假设实地信息采集点为2000个,每天上传一条数据,对应到数据库中,就是一条记录,但由于这些格式化数据可能要随时间推移不停的增加新的属性,也就是说,不能将目前的属性就等同与一张表的字段,但加入将所有属性做成1..N主从表的形式,那么随着时间推移,一年之内可能就会产生上亿条记录,那么这些数据如果直接面向internet的访问,显然存在效率问题。
请教各位几个问题:1、这个系统是否适合基于j2ee框架下的搭建,或者将整个系统拆分成几个独立的小系统,根据不同需要采用不同的技术平台实现更好;
2、类似这种初期数据属性不完整或不确定,考虑将来的扩展性与系统执行性能,采用什么样的设计模式或具体的设计方案
3、数据库采用什么样的数据库更合适
4、j2ee的框架是否适合这种大数据量,同时又是面向internet的web应用
欢迎大家讨论,感谢各位指点

------解决方案--------------------
你这个应该属于准大型应用了,不能简单的说用J2EE或者其它的单一技术来解决,建议可以参考校内网、搜狐、新浪等大型网站的做法,采用分布式多层缓存方式来解决,大概的思路如下:
1、分为web层、业务中间件层、缓存层、持续存储层;
2、把数据尽可能放在缓存层里,可以采用squid、memcache等开源缓存系统;
3、业务中间件层采用开源的消息中间件,把各种业务逻辑都封装起来;
4、web只与业务中间件层打交道,可灵活根据业务变更;
5、持续存储层只用来实现数据的存储,采用mysql等开源数据库即可,按业务逻辑、时间等方式分表;