扩展数据库面临的挑战

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

扩展数据库面临的挑战

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

搜索

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

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

并发

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

如何解决这个问题呢?

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

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

一致性

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

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

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

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

死锁

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

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

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航