01、数据库发展史

基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。

如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。

很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题。。。。。。

 

1、程序所有的组件就不可能运行在一台机器上

 

因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行的原因。

 

2、数据安全问题

 

根据第1条的描述,我们将程序的各个组件分布到各台机器,但需要知道各个组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。于是我们想到了将数据与应用程序分离,也就是说把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

 

3、并发导致的数据安全问题

 

根据第2条成的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

 

  • 1.远程连接(支持并发)
  • 2.打开文件
  • 3.读写(加锁)
  • 4.关闭文件

 

总而言之,我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。

posted @ 2021-11-08 20:24  甜甜de微笑  阅读(81)  评论(0编辑  收藏  举报