数据库、文件系统
2017-06-29 11:09
169 查看
数据库、文件系统的区别
数据库由来:
文件系统分类
数据库分类
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个网友看中了,都放进购物车,随后购买,无法同时满足会出错的,而“数据库”可以用“锁机制”来防止这种情况
数据库由来:
为了解决文件系统的问题,出现数据库。数据库管理系统通过权限、事务、锁机制等读写文件系统获取数据。
文件系统分类
(1):传统文件系统(posix【可移植性操作系统接口】文件系统),比如(ext3、ext4)。 这种经典的文件系统旺旺由于考虑太多功能需求和结构标准,无法应对互联网海量文件存储在性能和伸缩上的要求。在posix文件系统上引入数据库管理系统得到关系型数据库。 (2):No-Posix的分布式文件系统,比如 mongodb、hbase、hdfs 为了解决传统文件系统问题,适应互联网海量文件存储在性能上和伸缩上的要求,在此背景下差生No-Posix的分布式文件系统
数据库分类
(1):关系型数据库, eg:mysql oracle 依托于传统文件系统。 数据结构:B+树 (2):nosql数据库, eg:mongodb hbase 依托于No-posix的分布式文件系统 数据结构:很多参考LSM树型结构
相关文章推荐
- 投票系统[单/复选,投票数量/项随意][C#/SQL/文件包括数据库代码全部在]
- 不用数据库的多用户文件自由上传投票系统(1)
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- 采用HADOOP的MAPREDUCE使用其他文件系统或数据库系统的方式
- Oracle大型数据库系统在AIX UNIX上的实战详解 答疑六 区别AIX中文件系统和目录
- 系统损坏,移植Oracle(9.2.0.1)数据库(无备份数据文件进行恢复)
- Symbian编程总结-文件、流与数据库-文件系统及相关API(1)
- 数据库从文件系统转移至ASM实验记录
- “Oracle大型数据库系统在AIXUNIX上的实战详解” 答疑十三:使用大文件表空间
- 不用数据库的多用户文件自由上传投票系统(3)
- 安装程序制作之网站系统安装过程中给系统中应用到的数据库文件设置访问权限
- 不用数据库的多用户文件自由上传投票系统(1)
- linux上利用crontab定时备份postgres数据库及文件到windows系统
- 不用数据库的多用户文件自由上传投票系统(1)
- [收藏]flash用脚本轻松搞定数据库,注册表,网络,系统,文件,鼠标,键盘,窗口,音频的秘诀
- 不用数据库的多用户文件自由上传投票系统(2)
- MSSQL数据库文件可以存放在FAT,NTFS格式的文件系统中,但不能存放到压缩文件里。
- 海量小文件存储测试---存文件系统还是存数据库好?
- Symbian编程总结-文件、流与数据库-文件系统及相关API