paulwong

数据库的防单点故障和分表分库

通常数据库是安装在一台服务器上,如果服务器DOWN机,则数据服务停止。这样在生产环境是不合适的,必须部署两台以上的服务器且都安装有相同数据的数据库。这样就产生了一个问题,同一份数据在不同的机子上,会导致数据不同步的问题。一般的方案是:

服务端:
互责数据同步,一台服务器专门做写操作,其他服务器只做读操作,即主从模式。当主服务器DOWN机时,会在从服务器中选出一台做主服务器。在MONGODB中叫REPLICATION。

客户端:
要判断当前与数据库的链接,如果是读操作,则使用与从服务器的链接,如果是写操作,则使用与主服务器的链接。这样的判断一般是由驱动程序去做,配置的时候如果是MYSQL,就要使用REPLYCATION的驱动。

如果数据库里的某张表数据太多,会导致简单的查询会需时过长的问题。一般的方案是限制每张表中不能放太多的数据,如第一个月的数据放一张表,下一个月的数据放第二张表,这种做法称为SHARDING,分表。但这样会导致查询的复杂性,如数据在第二张表,则要具体指明表名,否则查不出数据。目前的数据库,可以事先指定分表的规则,这样查询的语句不需改变,数据库端会自动判断数据在哪张表,然后路由到那张表,去查找数据然后返回给客户端。ORACLE叫分区表,MONGODB叫AUTO SHARDING。

服务端:
需事先指定数据分表规则,这样收到查询语句时数据库就知道数据在哪张表中。

客户端:
查询数据时无需再指定分区表名了

posted on 2014-03-23 21:27 paulwong 阅读(1038) 评论(0)  编辑  收藏 所属分类: MYSQLMONGODB


只有注册用户登录后才能发表评论。


网站导航: