扩展数据库面临的挑战

 

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

 

搜索

 

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

 

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

 

并发

 

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

 

如何解决这个问题呢?

 

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

 

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

 

一致性

 

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

 

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

 

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

 

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

 

死锁

 

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

 

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值