当前位置: 代码迷 >> Sql Server >> 求分布式解决思路。该怎么解决
  详细解决方案

求分布式解决思路。该怎么解决

热度:87   发布时间:2016-04-24 09:24:42.0
求分布式解决思路。
我目前在设计一个小项目,项目有不同的产品,不同的产品有数量不一的用户群体,比如有些产品只有几百,上千用户群体,我原来规划是用多台数据库服务器来存明细,将明细的数据放在别的数据库服务器,而一台数据库服务器存多个产品,然后我在主数据库服务器上,放一个表,用来指示每个产品ID它所对应的所在的明细服务器。那么问题来了,有个别产品,它的用户群体是上亿级别的,这样的话,一台服务器也可能都存不下更别说一张表(因为还涉及到一些较复杂的统计哦,所以不能单表放这么多条记录,更新也会非常的慢)。求助希望有经验的朋友们能给我提供思路。
------解决思路----------------------
仔细规划有多少用户并发访问,有多少数据量,要分服务器是因为单台存储不足(这个可能性很小,毕竟阵列的量很大),还是单台性能不足(这个可能性最大)?
要做很多统计或搜索,若是分服务器就得特别规划、设计。。比如JOIN
没特别需求,尽量将架构简化到单个DB中,否则多太多的“麻烦”
------解决思路----------------------

看来你的数据量挺大的,你的想法也是分布式的解决问题的思路。

我觉得既然你是想通过多台服务器解决问题,是否可以这样:

在应用上,你肯定也是一个web集群吧,那么数据库也是一个集群,但是每个数据库直接可以没有联系。

比如,你可以规定id为1-10的,存数据到 db server1(配置一般的), 10-20的存在db server2 (配置一般的)上,

而那个有上亿数据级别的,可以存储到 db server3(配置更强的,比如内存更大,cpu更多),另外,根据你的实际情况 对表进行分区,因为上亿的数据并不是想象的那么大,除非你有超过10亿的或者是几十亿上百亿的数据,否则可以先不考虑多db的。
------解决思路----------------------
另外,如果数据量再上去,可以考虑 在web和db之间,增加一个缓存层,比如用redis来做,

这个需要根据你的应用来看,因为很多应用都是读更多,修改相对少,比如淘宝,浏览量上亿,购买量 最多也就是百万级别的,所以把数据缓存到redis中,就是加快读,可以允许有一定的延时
  相关解决方案