数据库与文件系统存储

数据库最终将数据存储在文件中,而文件系统也将数据存储在文件中。在这种情况下,数据库和文件系统的区别是什么。是因为它被取回的方式还是别的什么?

146609 次浏览

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

On the other hand, a file system is a more unstructured data store for storing arbitrary, probably unrelated data. The file system is more general, and databases are built on top of the general data storage services provided by file systems. 网站: http://www.Quora.com/What-is-the-different-between-a-file-system-and-a-database/answer/Christian-Smith-2

如果您正在查找特定的文件,那么文件系统非常有用,因为操作系统维护一种索引。但是,txt 文件的内容不会被索引,这是数据库的主要优点之一。

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

关系数据库管理系统的主要优点:

  • 表是相互关联的

  • SQL 查询/数据处理语言

  • SQL 之外的事务处理(Transact-SQL)

  • 使用服务器端对象(如存储过程、函数、触发器、视图等)的服务器-客户端实现。

文件系统相对于数据库管理系统的优势是:

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

你可以在互联网上找到 n 个差异。

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

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

  1. A file processing system is a collection of programs that store and manage files in computer hard-disk. On the other hand, A database management system is collection of programs that enables to create and maintain a database.

  2. File processing system has more data redundancy, less data redundancy in dbms.

  3. 文件处理系统在访问数据方面的灵活性较低,而数据库管理系统在访问数据方面的灵活性较高。
  4. 文件处理系统不提供数据一致性,而 dbms 通过规范化提供数据一致性。
  5. 文件处理系统不那么复杂,而数据库管理系统更加复杂。

上下文: 我已经编写了一个在生产环境中运行了7年的文件系统

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

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

虽然文件系统似乎有某些规则,比如拥有文件和目录,但事实并非如此。最大的操作系统就是这样工作的,但是有许多小型操作系统的工作方式不同。这当然不是一个硬性要求。(只要记住,要构建一个新的文件系统,您还需要编写一个新的操作系统,这将使采用变得相当困难。为什么不把重点放在存储引擎上,而把它称为数据库呢?)

In the end, both databases and filesystems come in all shapes and sizes. Transactional, relational, hierarchical, graph, tabled; whatever you can think of.

[1]我曾经开发过 Boomla 文件系统,它是 砰啦操作系统和 Web 应用平台背后的存储系统。

数据库存储和文件系统存储的主要区别是:

  1. 数据库是一个用于插入、更新和删除的软件应用程序 而文件系统则是一个用于添加、更新和删除数据的软件 文件。
  2. 在文件系统中保存和检索文件更简单 while SQL needs to be learn to perform any query on the database to get (SELECT), add (INSERT) and update the data.
  3. Database provides a proper data recovery process while file system did not.
  4. 就安全性而言,数据库比文件系统(通常)更安全。
  5. The migration process is very easy in File system just copy and paste into the target 而对于数据库,这个任务就不那么简单了。

"They're the same"

是的,存储数据就是存储数据。一天结束的时候,你还有文件。你可以存储在许多文件和文件夹中的许多东西,有些情况下,这将是一种方式。有一个众所周知的版本控制解决方案(svn)最终使用基于文件系统的模型来存储数据,放弃了他们的 BerkeleyDB。虽然很少见,但还是会发生。更多信息.

“他们很不一样”

In a database, you have options you don't have with files. Imagine a textfile (something like tsv/csv) with 99999 rows. Now try to:

  • 插入一列。 这很痛苦,你必须改变每一行,读写整个文件。
  • 查找一行。 您要么扫描整个文件,要么自己构建索引。
  • 删除一行。 查找行,然后读取 + 写入后面的所有内容。
  • 重新排列列表。 同样,完全读取 + 写入。
  • 对行进行排序。 完整阅读,某种排序——然后下次全部执行。

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

同样,如果您存储的是 JPG 图片,并且只按一个键查找它们(也许是它们的 id?),一个经过深思熟虑的文件系统存储更好。顺便说一句,现在的文件系统与数据库非常接近,因为很多文件系统都使用平衡树的方法,所以在 BTRFS 上,你只需要把所有的图片放在一个文件夹中——每次你访问文件时,操作系统都会默默地实现类似早期 SQL 查询的功能。

数据库还是文件。
Let's see a few typical examples when one is better than the other. (These are no complete lists, surely you can stuff in a lot more on both sides.)

DB 表在以下情况下会更好:

  • 您希望存储具有完全相同结构的多行 (没有街道废物)
  • 您需要根据多个值 (indexed tables)进行闪电般快速的查找/排序
  • 您需要原子事务 (资料安全)
  • 您的用户将始终读/写相同的数据 (更好的锁)

如果:

  • 您喜欢对数据 (DBS 的噩梦)使用版本控制
  • 你有大块的数据,它们经常增长
  • 您希望其他应用程序在没有 API (比如文本编辑器)的情况下访问您的数据
  • 您希望存储大量的二进制内容 (图片或 MP3)

DR

编程很少说“从不”或“总是”。那些说 “数据库永远是赢家”或者 “文件永远是赢家”的人可能知道的还不够多。考虑可能的行动(现在 + 未来) ,考虑两种方式,并选择最快/最有效的情况下。就是这样。