数据库最终将数据存储在文件中,而文件系统也将数据存储在文件中。在这种情况下,DB和文件系统的区别是什么?它在检索方式上不同还是其他方面有差别?
数据库最终将数据存储在文件中,而文件系统也将数据存储在文件中。在这种情况下,DB和文件系统的区别是什么?它在检索方式上不同还是其他方面有差别?
数据库通常用于存储相关结构化数据,具有定义良好的数据格式,以有效的方式进行插入、更新和/或检索(取决于应用程序)。
另一方面,文件系统是一种更无结构的数据存储,用于存储任意的、可能无关的数据。文件系统更为通用,而数据库建立在文件系统提供的通用数据存储服务之上。[Quora]
如果您正在寻找特定文件,则文件系统非常有用,因为操作系统维护一种索引。但是,txt文件的内容不会被索引,这是数据库的主要优势之一。
对于非常复杂的操作,文件系统很可能会非常缓慢。
关系型数据库管理系统(RDBMS)的主要优势:
表彼此相关联
SQL查询/数据处理语言
除了 SQL(Transact-SQL)外,还有事务处理
服务器 - 客户端实现,带有服务器端对象,如存储过程、函数、触发器、视图等等
文件系统优于数据库管理系统的优势是:
当处理任意的、可能无关的小数据集时,文件比数据库更有效率。对于简单的操作,读写和文件操作更快且更简单。
您可以在互联网上找到无数的差异。
是的,存储数据就是储存数据。最终你会得到文件。你可以在许多文件和文件夹中储存大量的东西,有时这是唯一的方法。有一个广为人知的版本控制解决方案(svn),最终采用基于文件系统的模型来存储数据,放弃了他们的BerkeleyDB。虽然很少见,但确实会发生。 更多信息。
在数据库中,你有一些文件不具备的选项。想象一下有99999行的文本文件(类似tsv / csv)。现在尝试:
当然,这里列出的只是一些典型的例子,实际上还有很多其他因素需要考虑。在做出决策之前,请确保了解你的需求和目标,并选择最适合你的工具。
编程很少会说“永远不”或“总是”。那些说“数据库总是赢”或“文件总是赢”的人可能只是不够了解。考虑现在和未来的可能操作,同时考虑两种方式,并选择最快/最有效的方法适用于当前情况。就是这样。
需要注意的是,Unix有一个被称为inode限制的东西。如果你要存储数百万条记录,那么这可能会是一个严重的问题。你应该运行df -i
来查看使用了多少%,因为这实际上是一个文件系统文件限制,即使你有足够的磁盘空间。
上下文: 我编写了一个文件系统,它已经在生产环境中运行了7年。
文件系统和数据库之间的关键区别在于,文件系统API是操作系统的一部分,因此文件系统实现必须实现该API并遵循某些规则,而数据库是由第三方构建,具有完全自由。
从历史上看,当操作系统提供的文件系统不足以解决问题时,就会创建数据库。想想看:如果您有特殊要求,您不能只打电话给Microsoft或Apple来重新设计他们的文件系统API。你要么继续编写自己的存储软件,要么寻找现有的替代品。所以需求创造了一个第三方数据存储软件市场,最终被称为数据库。就是这样。
尽管似乎文件系统有一些规则,例如拥有文件和目录,但这并不是真的。最大的操作系统是这样工作的,但有许多小型操作系统工作方式不同。这肯定不是硬性要求。(请记住,要构建新的文件系统,您还需要编写新的操作系统,这将使采用变得更加困难。为什么不专注于存储引擎并将其称为数据库呢?)
最终,数据库和文件系统都有各种形状和大小。事务、关系、分层、图形、表格等等。
[1] 我曾经在Boomla文件系统上工作过,它是Boomla操作系统和Web应用程序平台背后的存储系统。
数据库和文件系统存储的主要区别在于:
- 数据库是用于插入、更新和删除数据的软件应用程序,而文件系统是用于添加、更新和删除文件的软件。
- 在文件系统中,保存和检索文件更简单,而在数据库中需要学习SQL才能执行任何查询以获取(SELECT)、添加(INSERT)和更新数据。
- 数据库提供了适当的数据恢复过程,而文件系统没有。
- 就安全性而言,数据库比文件系统更安全(通常情况下)。
- 在文件系统中,迁移过程非常容易,只需将文件复制并粘贴到目标位置,而对于数据库来说,这个任务并不简单。