数据库与文件系统存储

Sri*_*ram 50 database file-system-storage

数据库最终将数据存储在文件中,而文件系统也将数据存储在文件中.在这种情况下,DB和文件系统之间有什么区别.是它的检索方式还是其他任何东西?

Vic*_*cky 48

数据库通常用于以有效的方式存储具有良好定义的数据格式的相关结构化数据,用于插入,更新和/或检索(取决于应用).

另一方面,文件系统是一种更加非结构化的数据存储,用于存储任意的,可能不相关的数据.文件系统更通用,数据库建立在文件系统提供的通用数据存储服务之上.[Quora的]

如果要查找特定文件,文件系统很有用,因为操作系统会维护某种索引.但是,txt文件的内容不会被索引,这是数据库的主要优点之一.

对于非常复杂的操作,文件系统可能非常慢.

主要的RDBMS优势:

  • 表彼此相关

  • SQL查询/数据处理语言

  • SQL(Transact-SQL)的事务处理添加

  • 服务器端客户端实现服务器端对象,如存储过程,函数,触发器,视图等.

文件系统优于数据库管理系统的优点是:

当处理具有任意,可能不相关的数据的小数据集时,文件比数据库更有效.对于简单的操作,读,写,文件操作更快更简单.

您可以通过互联网找到n个不同之处.

  • 此答案的前半部分复制自https://www.quora.com/What-is-the-difference-between-a-file-system-and-a-database/answer/Christian-Smith-2 (19认同)

dke*_*ner 41

“他们是一样的”

是的,存储数据只是存储数据。一天结束时,您就有了文件。您可以在许多文件和文件夹中存储大量内容,在某些情况下就是这样。有一个著名的版本控制解决方案(svn)最终放弃了 BerkeleyDB,使用基于文件系统的模型来存储数据。罕见但确实发生过。更多信息

“他们很不一样”

在数据库中,您拥有文件所没有的选项。想象一个包含 99999 行的文本文件(类似于 tsv/csv)。现在尝试:

  • 插入一列。这很痛苦,您必须更改每一行并读取+写入整个文件。
  • 找一排。您可以扫描整个文件或自己构建索引。
  • 删除一行。找到行,然后读取+写入其后的所有内容。
  • 对列重新排序。再次,完整的读+写。
  • 对行进行排序。完整阅读,某种排序——然后下次再做一遍。

还有很多其他优点,但当您想到基于文件的数据库替代方案时,这些是您要尝试攀登的第一座山。那些人为你编写了这一切,你可以使用;考虑可能的(最常见的)场景,枚举您想要对数据执行的所有可能的操作,并决定哪一种更适合您。考虑利益,而不是时尚。

再说一遍,如果您存储 JPG 图片并且仅通过一个键(可能是它们的 ID?)查找它们,那么经过深思熟虑的文件系统存储会更好。顺便说一句,今天的文件系统与数据库非常接近,因为它们中的许多都使用平衡树方法,因此在 BTRFS 上,您可以将所有图片放在一个文件夹中 - 每次您操作时,操作系统都会默默地执行类似早期 SQL 查询的操作。访问您的文件。

那么,数据库还是文件?...
让我们看几个典型的例子,看看其中一个比另一个更好。(这些不是完整的列表,当然你可以在两边添加更多内容。)

在以下情况下,数据库表会更好:

  • 您想要存储具有完全相同结构的许多行(没有块浪费)
  • 您需要快速查找/按多个值排序(索引表)
  • 你需要原子事务(数据安全)
  • 您的用户将始终读取/写入相同的数据(更好的锁定)

如果满足以下条件,文件系统会更好:

  • 您喜欢对数据使用版本控制(数据库的噩梦)
  • 您有大量频繁增长的数据(通常是日志文件)
  • 您希望其他应用程序无需 API (例如文本编辑器)即可访问您的数据
  • 您想要存储大量二进制内容(图片或 mp3)

长话短说

编程很少说“从不”或“总是”。那些说“数据库总是获胜”“文件总是获胜”的人可能只是了解不够。考虑可能的行动(现在+未来),考虑两种方式,并选择针对该情况最快/最有效的行动。就是这样。


zup*_*upa 11

背景:我编写了一个文件系统,现已在生产环境中运行了 7 年。[1]

文件系统和数据库之间的主要区别在于文件系统 API 是操作系统的一部分,因此文件系统实现必须实现该 API 并遵循某些规则,而数据库是由具有完全自由的第三方构建的。

从历史上看,数据库是在操作系统提供的文件系统不足以解决当前问题时创建的。试想一下:如果你有特殊要求,你不能直接打电话给微软或苹果来重新设计他们的文件系统 API。您要么继续编写自己的存储软件,要么寻找现有的替代方案。因此,这种需求创造了第三方数据存储软件的市场,最终被称为数据库。就是这样。

虽然文件系统似乎有某些规则,例如文件和目录,但事实并非如此。最大的操作系统都是这样工作的,但有许多小型操作系统的工作方式有所不同。这当然不是一个硬性要求。(请记住,要构建新的文件系统,您还需要编写新的操作系统,这将使采用变得更加困难。为什么不只关注存储引擎并将其称为数据库呢?)

最后,数据库和文件系统都有各种形状和大小。事务性、关系性、层次性、图形、表格;无论你能想到什么。

[1] 我参与了 Boomla 文件系统的工作,它是Boomla操作系统和 Web 应用程序平台背后的存储系统。


Ant*_*ony 9

应该注意的是Unix具有所谓的inode限制.如果您要存储数百万条记录,那么这可能是一个严重的问题.您应该运行df -i以查看有效使用的%这是文件系统文件限制 - 即使您有足够的磁盘空间.


ras*_*dcs 7

文件处理系统和数据库管理系统的区别如下:

  1. 文件处理系统是存储和管理计算机硬盘中的文件的程序的集合.另一方面,数据库管理系统是能够创建和维护数据库的程序集合.

  2. 文件处理系统具有更多的数据冗余,dbms中的数据冗余更少.

  3. 文件处理系统在访问数据时提供的灵活性较低,而dbms在访问数据方面具有更大的灵活性.
  4. 文件处理系统不提供数据一致性,而dbms通过规范化提供数据一致性.
  5. 文件处理系统不太复杂,而dbms则更复杂.