数据库与分布式架构策略思考

fmms 13年前

 一直在了解互联网的大数据高并发的架构,以及所采用的各种优化策略。

在建设初期,可以先从两方面进行考虑:

 

一、数据库设计策略。从数据库的扩展性来说,是考虑数据可以方便的进行垂直划分和水平划分,即:

 

垂直切分(Vertical Partition/Sharding):就是把不同格式的数据,存储到不同的数据库,也叫分库

水平切分(Horizontal Partition/Sharding):就是把相同的数据格式的数据,存储到不同的数据库,本文将侧重这点进行讲述,也叫分表

要理解和记忆这两种切分方式,可以大脑回忆一下你的数据库表,横向是字段说明,竖向是记录数据,因此,垂直切分意味是要划垂直的线将表的字段分成几块,也即一张表分成N张不同字段的表;水平切分意味着水平划线,将数据记录分成几块,各块的数据字段其实是一样的,只是记录数值不同。

 

 

1.考虑到后期数据量大的情况。在数据库设计时就要考虑分库,比如同样是新闻信息,就考虑为时政新闻、娱乐新闻

、体育新闻等等建立各自的新闻表,从而达到方便存储的目的

 

2.考虑到中后期访问量大的情况。设计时考虑分表,比如对娱乐新闻,可以根据日期,人物等字段拆分成多种表来存储,从而提高查询的速率。

 

3、综合上面2种情况,可以综合使用。当数据量达千万,并发量上万的适合,考虑建立缓存表。就是在实际表和用户之间在搭建一个临时表,访问数据时,首先访问临时表,如果不存在,则进入实际表中获取,然后放入缓存表中,同时会通过后台线程,定时将缓存表数据同步到实际数据库中,同步时间可以针对系统要求来进行。

 

二、程序优化策略。搭建系统,需要认真考虑选择合适框架,当然公司或者个人的时间能力精力都够多的话,可以考虑自己开发系统框架。

 

1.框架建设

1.Structs2+Spring3+Hibernate33个框架搭建的系统每一年都在更新,不断有变化和进步,这种搭配最适合构建企业信息系统,而要应用于互联网大访问量和高并发量的Web系统,还是比较吃力,需要进一步采取多种优化策略,如静态化,缓存数据,JS压缩等等。

 

2.Spring MVC根据网上对当前热门的几个框架的测试信息得出,Springcontroller还是比Structs的效率高一点,Spring的数据库操作手段Jdbctemplate是对JavaJDBC的简单封装,操作SQL效率是肯定比Structs结合Hibernate效率高。

 

3.Spring+Hibernate该配合的架构访问效率和开发效率都比较不错,适合企业开发和互联网开发。

 

4.Spring+JPA(Hibernate)该配合框架效率在目前开看,效率非常不错,最合适互联网应用,个人非常推荐。

 

2.静态化。推荐使用的框架有freemakervelocity


转自:http://blog.csdn.net/achan2090/article/details/7247540