码迷,mamicode.com
首页 > 数据库 > 详细

扩展数据库面临的挑战

时间:2015-07-02 09:55:44      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

 

扩展数据库的时候面临诸多挑战。

 

搜索

 

当搜索量很少的时候,搜索是简单的事。

 

当搜索量上来,比如达百万级的时候,可以把搜索内容按某种顺序排列。比如在字典中,按字母顺序排列。

 

并发

 

如果100万人需要同时用这本字典,这就是并发。

 

如何解决这个问题呢?

 

把这本字典复制100万份,专业术语叫"主从复制"。

 

再把100万份复制字典放到每个人的手头,专业术语叫"分布式策略"。

 

一致性

 

如果想修改字典,这时候100万人都在使用着字典,怎么办呢?

 

如果一本一本收回来修改,这就造成了一致性问题,有的修改了,有的还没有被修改。

 

如果全部收回来修改,造成了可用性问题,即在字典被收回阶段,人们无法使用字典。

 

还有一个方法,就是做一个"修改日志"或"附录",不修改原先的字典,把"修改日志"或"附录"分发给每个人。

 

死锁

 

在同一时间,有成百上千的人要修改数据库中的同一条数据,大家对这条数据都竞争。就像超市发礼品,越多的人争相拿同一个礼品,这就造成竞争,造成大家互相拥挤堵塞都拿不到礼品。而在数据库中,这叫"死锁"。

 

总结:在现实场景中,数据库分布在不同的地方,会出现很多人在同时修改同一条数据。这时候需要数据库设计,需要处理高并发避免死锁保持一致性,需要环环相扣的算法,这够很多数据库牛人忙活一阵子了。最终给用户的感觉或假象是:数据库只有一份拷贝,同一时间只有一个人在修改,用户看到是最新的数据,并且能立即响应。

 

参考资料:极客学院公众号

扩展数据库面临的挑战

标签:

原文地址:http://www.cnblogs.com/darrenji/p/4615204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!