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