由于工作需要,我简单的了解了一下文件系统与数据库系统,现总结如下,希望对广大读者有所帮助。
文件系统的简单介绍
文件系统是操作系统的子系统,用于操作系统明确存储设备或分区上的文件的方法和数据结构。
文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合(我认为是文件的删除,复制,粘贴等操作的支持软件),对象及属性。
数据库系统的简单介绍
数据库系统主要包括数据库以及DBMS(与文件系统的差异就在这两个方面,其他包括宿主语言等暂时没有了解有什么差异)
文件系统和数据库系统的对比
第一 管理对象不同:
两者最显而易见的区别就是,文件系统是以文件为载体记录数据的,管理的也是记载着这些数据的文件,而非数据本身,文件的各种形式对应着不同的数据结构。(非常浅显的对比就是给一个文件重命名并不会造成文件内记录的数据发生改变)
而数据库系统管理的是数据本身,在数据库内的任何操作都会立刻影响到数据。
第二 存储数据方式不同:
文件系统用文件将数据长期保存在外存上。(这里的文件可以有很多不同的形式,不同后缀的文件就相当于不同的数据结构)
数据库系统用数据库统一存储数据。(有统一的数据结构)
第三 程序与数据的关系不同:
文件系统中,程序访问数据是直接访问的,对数据的查询修改必须在程序内完成,而这依赖于开发者对文件的逻辑及物理结构非常清楚。
数据库系统中,数据不再仅服务于某个程序或用户,而是以单位的形式共享出来,统一由DBMS软件管理。由于程序对数据的操作都是通过DBMS实现的,因此程序和数据彻底独立开,可以在更高的抽象级别观察和访问数据。
基于以上三点不同,可以总结出两者在生产环境中的主要优劣:
文件系统的缺点:
① 文件系统编写应用程序不方便,往往程序需要随着文件的变化而修改。
② 文件系统中的文件不能满足各种程序的需要,因此同一数据往往会以不同的文件形式储存,造成数据的冗余和不一致性。
③ 文件系统不支持对文件的并发访问。
④ 文件系统中的数据缺少统一的管理,表现在数据的结构,编码,表示格式,命名以及输出格式等不容易做到规范化、标准化,因此数据的安全和保密面临更大的挑战。
文件系统的优点:
① 由于数据的冗余,因此在高可用方面的表现远远优于数据库系统。且在海量存储方面,大量的冗余带来了更大的容错能力。
② 分布式方案的出现让文件系统能够在海量数据面前大显身手,极强的可扩展性带来极好的数据存储能力。
数据库系统的缺点:
① 由于DBMS的存在,在简单的不需要数据共享的场景下,性能不如文件系统。
② 由于数据没有冗余,在高可用方面有一定的隐患,只能通过备份解决。
③ 面对海量数据的应用场景很被动,表现不佳。
数据库系统的优点:
① 由于DBMS的存在,用户不再需要了解数据存储和其他实现的细节,直接通过DBMS就能获取数据,为数据的使用带来极大便利。
② 具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在并发访问时数据的一致性。
③ 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。
④ 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖DBMS来对数据进行操作且对性能的消耗相比文件系统比较小。
⑤ 对事务的支持。DBMS支持事务,即一系列对数据的操作集合要么都完成,要么都不完成。在DBMS上对数据的各种操作都是原子级的。
附录为文件系统和数据库系统的简单工作原理图
数据库系统
文件系统