万紫网络数据库大型应用解决方案总结
3,优弱点
(1)数据的实时性差:数据不是实时同步到自读服务器上的,当数据写入主服务器后,要在下次同步后才气查询到。
(2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。
(3)同时毗连多个(至少两个)数据库:至少要毗连到两个数据数据库,现实的读写操作是在程序代码中完成的,容易引起杂乱
(4)读具有高性能高可靠性和可伸缩:只读服务器,由于没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以接纳负载平衡,主数据库公布到多个只读服务器上实现读操作的可伸缩性。
三、数据库拆分(漫衍式)
通过某种特定的条件,将存放在统一个数据库中的数据疏散存放到多个数据库上,实现漫衍存储,通过路由规则路由会见特定的数据库,这样一来每次会见面临的就不是单台服务器了,而是N台服务器,这样就可以降低单台机械的负载压力。
垂直(纵向)拆分:是指按功效模块拆分,好比分为订单库、商品库、用户库…这种方式多个数据库之间的表结构差别。
水平(横向)拆分:将统一个表的数据举行分块生存到差别的数据库中,这些
数据库中的表结构完全相同。1,实现原理:使用垂直拆分,主要要看应用类型是否合适这种拆分方式,如系统可以分为,订单系统,商品治理系统,用户治理系统营业系统比力明的,垂直拆分能很好的起到疏散数据库压力的作用。营业模块不明晰,耦合(表关联)度比力高的系统不适合使用这种拆分方式。可是垂直拆分方式并不能彻底解决所有压力问题,例若有一个5000w的订单表,操作起来订单库的压力仍然很大,如我们需要在这个表中增添(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建设索引,5000w行数据建设索引的系统开销照旧不容忽视的,反过来,如果我们将这个表分成100个table呢,从table_001一直到table_100,5000w行数据平均下来,每个子内外边就只有50万行数据,这时间我们向一张只有50w行数据的table中insert数据后建设索引的时间就会呈数目级的下降,极大了提高了DB的运行时效率,提高了DB的并发量,这种拆分就是横向拆分
2,实现要领:垂直拆分,拆分方式实现起来比力简朴,凭据表名会见差别的数据库就可以了。横向拆分的规则许多,这里总结前人的几点,
(1)顺序拆分:如可以按订单的日前按年份才分,2003年的放在db1中,2004年的db2,以此类推。固然也可以按主键尺度拆分。
优点:可部门迁徙
弱点:数据漫衍不均,可能2003年的订单有100W,2008年的有500W。
(2)hash取模分:对user_id举行hash(或者若是user_id是数值型的话直接使用user_id的值也可),然后用一个特定的数字,好比应用中需要将一个数据库切分成4个数据库的话,我们就用4这个数字对user_id的hash值举行取模运算,也就是user_id%4,这样的话每次运算就有四种可能:效果为1的时间对应DB1;效果为2的时间对应DB2;效果为3的时间对应DB3;效果为0的时间对应DB4,这样一来就很是匀称的将数据分配到4个DB中。
优点:数据漫衍匀称
弱点:数据迁徙的时间贫苦;不能根据机械性能分摊数据。
(3)在认证库中生存数据库设置
就是建设一个DB,这个DB单独生存user_id到DB的映射关系,每次会见数据库的时间都要先查询一次这个数据库,以获得详细的DB信息,然后才气举行我们需要的查询操作。
优点:天真性强,一对一关系
弱点:每次查询之前都要多一次查询,会造成一定的性能损失
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。