文件系统,数据库管理系统,操作系统之间有什么联系?
这仨名字里都有个“系统”,但完全不是一个东西,也谈不到谁包含谁的问题。
简单的说他们之间的关系:文件系统和操作系统可以看作一种“合作”关系,而数据库管理系统则是依赖于操作系统的一种应用。下面简单的分别说一下:
文件系统(File System)
这个和另外两个差别最大,因为文件系统连软件都不是。可以理解成一种“格式”或者“标准”。它决定了数据是以什么样的方式储存到磁盘里。有了这么一套统一的标准,那无论谁想要读写问津,只要遵循同样的标准,都可以进行正确的操作。
当然,标准这东西相来没那么美好,或是出于技术原因或是考虑商业利益,文件系统都没法统一。所以现在有很多的文件系统。现在比较常见的如下:
- NTFS
- ext411
- APFS
- FAT
- exFAT
- ZFS
- ……
我相信看到我上面列出里的这些你应该也明白了,所谓的文件系统其实有一个很多人都知道,但其实并不准确的“外号”——磁盘格式。当你格式化磁盘的时候,你选择的那个所谓的“格式”就是文件系统。
操作系统(Operation System)
所谓操作系统,是一种软件。当然,是比较特殊的软件,和我们一般理解的软件不太一样。操作系统起到的是一个类似“桥梁”的作用,它沟通了上层的应用程序和底层的硬件。应用程序无需去关心每一个硬件应该如何控制,而只需要调用操作系统提供的接口即可。具体的硬件操作就留给操作系统完成即可。
也正因如此,从磁盘中读写文件也是操作系统要做的工作之一。所以操作系统和上面说的文件系统可以理解为一种“合作”关系,文件系统指定了读写文件的标准,而操作系统会按照这套标准去执行,正确的读写文件。
常见的操作系统如:
- Windows
- macOS
- Linux(严格的说Linux是操作系统内核而非操作系统,不过这里就不细究的那么严谨了)
- iOS
- Android(基于上面说的Linux系统内核开发的,还是,为了方便理解,这里就不那么严谨了)
- ……
数据库管理系统(Database Management System)
这是比较典型的一个软件类型。属于依赖于上面所说的操作系统的一类软件——面向用户实现具体功能,而不直接关心底层的硬件。这个没太多可说的,和我们平常用的浏览器、播放器、游戏,本质上都是一类东西,只是功能不同而已。
常见的数据库管理系统如:
- Oracle
- MS SQL Server
- MySQL
- Access
- ……
最后
至于你问的“是不是文件系统就是利用数据库实现的”,这里可能牵扯一些你的误解:
- 如上所说,文件系统是一套标准,谈不到用什么实现
- “数据库”是个比较宽泛的概念,某种意义上说——文件系统确实是一种数据库的格式。
- 但一般大家嘴里说的“数据库”其实指的还是“数据库管理系统”而非真正意义上的数据库,只是口头用于一般比较简练,不那么严谨。
有个挺好玩的事情就是,部分数据库系统可以存文件,文件管理系统其实也是一种操作系统,操作系统包含文件系统,而数据库系统必须构建在操作系统之上。
学过数据恢复的都明白文件系统其实是以目录索引的形式实现对磁盘或存储器的访问和存取,而对用户的接口必须通过操作系统提供的界面框架实现。
操作系统除了要以文件的形式存储和记录参数,还要负责调度和管理硬件资源,为应用软件提供接口。
无论是数据库DB,还是数据库管理系统-DBMS,都会以文件的形式放到磁盘上。访问一个数据库的操作其实是在访问一个或多个文件。
丛底层的角度来说,数据库系统一定不是,只能称为后台。
数据库系统通常需要运行在操作系统之上,这是因为调用各类系统资源比如 CPU,内存等需要操作系统支持
数据库系统和存储打交道也一样需要操作系统提供的各类系统调用(系统调用内部是调用不同的存储设备的驱动),这里有多种方法:
方法一是数据库告诉操作系统,你用某某文件系统把数据写到磁盘上即可,然后文件系统来调用内核IO栈处理和磁盘读写;
方法二是数据库不信任文件系统,自己绕过文件系统直接调用内核的IO栈进行磁盘读写;
方法三是干脆内核你什么活儿也别干了,我们自己搞一个文件系统(或块封装)和IO栈(如spdk),直接访问磁盘的驱动程序
总结来说,数据库通常是是构建在操作系统上的,而文件系统可有可无,且有多种实现方式
操作系统:统一调度管理计算机资源,其中:硬盘这类IO设备就归操作系统管理,操作系统就是修房子的基层,所有资源都在这个基层上面搭建和调配。
文件系统:是由操作系统提供的对外部存储设备的管理子系统,而文件系统的存储一般由:索引和数据区构成,索引表提供检索具体数据的位置等元数据信息,文件系统封装了一系列和外部存储交互的IO命令和管理文件的业务逻辑,文件系统主要存放非结构化的数据,不同的文件系统的格式实现了不同的管理文件的业务逻辑,常见的有:FAT32、NTFS、EXT4、exFAT、HFS、ZFS、Btrfs、ReFS、HFS+、APFS,文件系统是非常重要,相当于水泥粘合建筑框架,水泥不行上层建筑也不行,数据库管理系统就是上层建筑。
数据库管理系统:是在文件系统基础上搭建的一套更快的数据查询和存储系统,主要存结构化的数据,原因是结构化的数据便于查询,数据库的数据文件最终还是属于文件系统管理的,数据库管理系统准备来说更像是建筑里面修的储物柜和厂库,更方便存放货物。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 27 天,点击查看活动详情