最近又有新闻爆料,客户在某银行支票账户的存款余额消失。官方回应为“技术故障导致存款数据丢失”,幸亏最终存款数据恢复,得以妥善解决!
文档君第一眼看到新闻,立马紧张起来。查了查自己银行卡余额,哦,那没事了!
不过大家看余额的时候有没有意识到,我们的钱已经被量化成数据了?
咦?我们的钱怎么就变成数据了?
很久以前,人们的钱还是一串串贝壳;但是现在,你有多久没有用过现金了?
我们的财富,正在不知不觉地变成一串串数字。而财富的增减也就变成了数字的增减。
问题来了,银行会不会算错数据啊!会不会把我的数据弄丢啊!
银行数据库说:放心!有我呢!维护数据安全是我的重要使命。
那么,什么是银行数据库呢?
简单来说,银行数据库就和你老婆一样,专门管钱的。
详细来说,它会管你什么时间,什么地点,给你多少钱,还剩多少钱。
但是,因为它要管的人太多了,所以,银行对于数据库的一致性、性能和系统的服务响应能力等都有严格的要求。一个合格的数据库,需要满足以下几点:
1)账务不能错,数据不能丢
你每次取出或汇入金额后,总金额都是得确保正确;同样的,如果账户里的数据丢了,很可能出现存款丢失的问题,让你账户余额里少了一个小目标岂不是大罪!
2)系统不能停,联机不能慢
由于支付业务的特殊性,数据库要求 on call 24 小时,时刻保持清醒高效不出错。千万不能像我们一样,到点就困!
3)批量不能晚,数据易迁移
由于银行业务庞大,许多对账操作需要批量进行,并且数据库的迁移也必须易于执行,否则会影响第二天银行的开业。
满足上述要求的数据库也有不同类型,我们一起来看看吧!
集中式数据库将数据在物理空间上集中存储和处理,是一种较为经典、传统的架构模式。
我们可以理解成,集中式数据库是一个身上满是口袋的人,咱们所有的钱分别塞在这个人不同的口袋里。当我们需要取钱时,这个人就开始找对应的口袋,将你需要的钞票清点出来,交给你。
简而言之,他既要负责存储你的钱,还要负责清点你的钱。
由于都是它一个人管理,所以哪个口袋出了问题,也很容易定位。并且由于不需要协调其他资源,所以可以达到“立等可取”的效果。
随着移动支付的普及,取钱的次数越来越频繁,取钱的人越来越多,他不免有点分身乏术!
一旦有一个口袋破了,手忙脚乱的它也无法兼顾其他口袋。
因此我们就有了分布式数据库。
分布式数据库是物理上分散而逻辑上集中的数据库系统,通过计算、存储、管理三大模块,共同对外提供服务。他的由来归功于服务器的虚拟化技术。
想象在你面前摆放着 N 台服务器,通过虚拟化技术可以将这些服务器中的所有硬盘(存储模块)整合成一个超大面积的空房子,然后再给这个房子划分不同的房间,用于存储不同用户的财富。
需要注意的是,同一用户的不同财富可以放在不同房间中【私房钱放一个房间,预备上交的钱放一个房间】。
那么,是谁来给这个房子划分新房间呢?—— 计算模块。他就是这个房子的主人,除了负责房子空间的规划,他还需要调度不同房间的剩余资源,为每一个房间门配上对应的钥匙。
当申请取款的人变多时,他需要仔细规划每个房间提供多少金额,才能尽可能减少金钱的冗余移动。
看到这里,你会有疑问,万一哪个房间的门锁坏了,关不上门,怎么办?不要担心,我们还有管理模块。
他就像仓库管理员一样,时刻监控每个房间是否安全,定期加固房间,升级屋内配件。当房子空间不够时,他还需要负责部署开拓新的房间,并且将原先放在旧房间的小钱钱进行无损迁移。
这样的分工协作构成了一套井然有序的分布式数据库。
由于房间都是独立的,所以一个房间出现故障,其他房间还可以继续向我们敞开,为我们提供支付服务。这就解决了集中式数据库由于一个口袋破了就手忙脚乱的问题。
当然,分布式数据库远比文档君说的要复杂。
计算模块如何计算?不同房间如何进行信息交流?数量如此庞大的房间如何进行统一管理?这些都是需要攻克的难题。
难题虽难,也难不住聪明的人类。
回顾一下咱们今天的知识,不难发现,集中式数据库和分布式数据库各有优缺点。
了解完数据库,咱们打工人继续努力,丰富自己小金库!
本文来自微信公众号:中兴文档 (ID:ztedoc)