数据库 pk 文件系统

我们的数据,如图片,视频,文档,实际上是保存到硬盘理的,当我们并不需要知道数据实际保存在硬盘的哪个扇区,我们只需要知道文件的逻辑路径就可以了找到文件了,因为“文件系统”会做这个翻译,我们输入www.baidu.com,DNS服务器就会把域名翻译成IP地址,14.215.177.38,我们寻找逻辑路径 C:\document\itpub.txt,“文件系统”就会翻译成硬盘中实际物理地址,来达到存取数据的目的

很长一段时间,人们是用“文件系统”(C,D,E,F盘),来保存和提取数据,但是“文件系统”有如下几个缺点

1. 数据冗余。文件与文件之间没有任何联系,举例子,一个学生选了双专业——计算机和金融,学校每个专业都有自己的管理方式,在C盘,建立了两个文件夹,一个叫计算机专业,里面存放了该学生的资料(电话住址身高体重三围),另外一个文件夹叫金融专业,里面把学生的资料(电话住址身高体重三围)又重新记录一遍,这造成了数据的重复(冗余),如果一个学霸选了4个专业,那相同的信息就要重复4次,造成的后果是浪费磁盘空间,如果有一天学霸换电话了,那就有4个地方需要修改了,修改地方越多越容易出错,造成资料不一致,这是用“文件系统”存储造成的问题,我们希望重复的资料,记录一次就够了,以后修改一次就方便了,“数据库管理系统”可以解决这个问题

2.访问数据困难。如果有一个txt文件,里面记录了某个城市学生的档案,从小学到大学每个年级,每个学生都有长长的一行资料,办事的人想要知道所有学生小学期末考成绩,这只需要“档案.txt”文件中某个局部的数据,肯定不是直接打开整个txt文档来找,为了满足这个需求,程序会写代码,如C语言,JAVA语言去从这个“档案.txt”中提取符合“小学毕业考试”的数据,但过几天后,办事的人可能想要单独看男生的成绩,或者女生的成绩,或者只看语文的成绩,或者语数英的平均分等,如果每个访问数据的需求,都需要编写相关的C语言程序代码才能满足的话,那程序员会忙死了,如果把档案数据录入“数据库”,使用sql语句,你想怎么提取数据就怎么提取,无法使改变select和where条件语句

3.保证不了安全。C/JAVA应用程序会读取整个文件的信息,如果文件是比较敏感的话,比如“工资表”或者“账号密码”表,“文件系统”无法屏蔽一个数据文件的某部分信息(比如工资,密码部分),只展现某部分信息(姓名,账号名字等),但“数据库”可以使用“视图"和"权限"功能来解决问题

4.不能保证数据完整。我们要运行的程序和访问的数据,需要从硬盘提取到内存,才能被CPU处理,放在内存的东西,只要一断电就没了,计算机不可能总是正常工作,除了断电还可能会有其他故障问题,这会影响到我们正在操作的数据,假设银行用“文件系统”来保存每个人的账户,“A账户.txt”有100元,“B账户.txt”有0元,现在A账户把100元转给B账户,用C语言就是两步操作,1. A账户 - 100 ,2.B账户+100,但程序只运行了第一步时刚好断电,第二步运行不下去,那A账户的钱就凭空消失了,这造成了数据的不一致(数据一致有点像能量守恒),文件系统解决不了这个问题,“数据库系统”可以用一条绳子把1,2两步骤捆绑成一起,只有允许存在两种情况,要么同时成功,要么同时失败

5.并发访问会出错。如果京东某种商品只剩下一个,某个网友看到了,点击购买,接着应用程序就把商品的单位把1个改成0个,显示“没货”这是没有问题,但如果剩下一个商品,有同时20个网友看中了,都放进购物车,随后购买,无法同时满足会出错的,而“数据库”可以用“锁机制”来防止这种情况

转载于:https://www.cnblogs.com/hellotracy/articles/5062400.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值