数据库最终将数据存储在文件中,而文件系统也将数据存储在文件中。在这种情况下,DB 和 File System 之间有什么区别。它是以检索的方式还是其他方式?
数据库通常用于以插入、更新和 / 或检索 (取决于应用) 的有效方式存储具有明确定义的数据格式的相关结构化数据。
另一方面,文件系统是一种更非结构化的数据存储,用于存储任意的、可能不相关的数据。文件系统更通用,数据库建立在文件系统提供的通用数据存储服务之上。[Quora]
如果您正在查找特定文件,则文件系统很有用,因为操作系统维护某种索引。但是,txt 文件的内容不会被索引,这是数据库的主要优点之一。
对于非常复杂的操作,文件系统可能会非常慢。
RDBMS 的主要优点:
表彼此相关
SQL 查询 / 数据处理语言
添加到 SQL 的事务处理 (Transact-SQL)
使用服务器端对象(如存储过程、函数、触发器、视图等)的服务器-客户端实现。
文件系统相对于数据库管理系统的优势是:
当处理具有任意可能不相关数据的小数据集时,文件比数据库更高效。对于简单的操作,读、写、文件操作更快、更简单。
你可以在互联网上找到 n 个不同的数字。
应该注意的是 Unix 有所谓的 inode 限制。如果您存储数百万个记录,那么这可能是一个严重的问题。您应该运行df -i
查看有效使用的 % 这是一个文件系统文件限制-即使您有足够的磁盘空间。
“他们是一样的”
是的,存储数据只是存储数据。在一天结束时,您有文件。您可以将大量内容存储在许多文件和文件夹中,在某些情况下将是这样。有一个众所周知的版本控制解决方案(svn),最终使用基于文件系统的模型来存储数据,从而放弃了它们的 BerkeleyDB。罕见但发生。More info
“他们完全不同”
在数据库中,你有你没有与文件的选项。想象一个文本文件 (像 tsv / csv) 与 99999 行。现在尝试:
插入一列。这很痛苦,你必须改变每一行并读写整个文件。
找到一行。您可以扫描整个文件或自己构建索引。
删除一行。查找行,然后在其后读取并写入所有内容。
重新排序列。再次,全读 + 写。
对行进行排序。完全读取,某种排序-然后下次再进行。
还有很多其他优点,但是当您想到基于文件的数据库替代方案时,这些是您要尝试爬上的第一座山。那些人为您编程了所有这些,这是您可以使用的;考虑可能的(最常见的)情况,列举您要对数据执行的所有可能的操作,然后确定哪种操作更适合您。考虑好处,而不是时尚。
同样,如果您存储 JPG 图片并且只通过一个键(它们的 ID 可能是?)查找它们,那么经过深思熟虑的文件系统存储会更好。文件系统,顺便说一句,今天接近数据库,因为它们中的许多使用平衡树方法,所以在 BTRFS 上,您可以将所有图片放在一个文件夹中-并且每次访问文件时,操作系统都会默默地实现类似早期 SQL 查询的功能。
那么,数据库还是文件?...
让我们看几个典型的例子,当一个比另一个好的时候。(这些不是完整的列表,当然你可以在两边都塞进更多的东西。)
DB 表在以下情况下会更好:
您希望存储许多具有完全相同结构的行(没有块浪费)
您需要按多个值快速查找 / 排序(索引表)
您需要原子事务(数据安全)
您的用户将始终读取 / 写入相同的数据(更好的锁定)
文件系统是更好的方式,如果:
您喜欢对数据使用版本控制(dbs 的噩梦)
您的大块数据经常增长(通常是日志文件)
您希望其他应用程序在没有 API 的情况下访问您的数据(如文本编辑器)
您要存储大量二进制内容(图片或 mp3)
TL;博士
编程很少说“从不”或“总是”。那些说“数据库总是赢”或“文件总是赢”的人可能只是不够了解。想想可能的行动(现在 + 未来),考虑两种方式,并选择最快 / 最有效的情况。就是这样。
文件处理系统和数据库管理系统的区别如下:
文件处理系统是在计算机硬盘中存储和管理文件的程序的集合。另一方面,数据库管理系统是能够创建和维护数据库的程序的集合。
文件处理系统具有较多的数据冗余,dbms 中的数据冗余较少。
文件处理系统在访问数据时提供的灵活性较小,而 dbms 在访问数据时具有更大的灵活性。
文件处理系统不提供数据一致性,而 dbms 通过规范化提供数据一致性。
文件处理系统不太复杂,而 dbms 更复杂。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(80条)