扩展this thread - 我想知道为什么从文件系统而不是MySQL数据库中检索文件的速度更快。如果有人要对两者进行基准测试,看看哪一个会在10分钟内检索出最多的数据(多种类型的数据) - 哪一个会赢?
如果文件系统真的更快,那么为什么不将所有内容存储在文件系统中并用csv或xml替换数据库?
编辑1:
我为alternate storage options for java
找到了一个很好的资源编辑2:
我正在寻找一个Java API / Jar,它具有SQL数据库服务器引擎(或至少其中一些)的功能,它使用XML进行数据存储(最好)。如果您知道某事,请在下面留言。
答案 0 :(得分:13)
在一天结束时,数据库 只将数据存储在文件系统中。除了决定使用数据库的原始数据之外,所有有用的东西都是。
如果您可以使用CSV和仍然复制数据库系统的功能,可伸缩性,健壮性,完整性等,使其比关系数据库执行速度更快,那么我建议您这样做你的方式。
你需要几年的时间才能到达那里。
当然,关系系统不是存储数据的唯一方法。有面向对象的数据库系统(db4o,InterSystems Cache)和基于文档的系统(RavenDB)。
性能也与您正在使用的数据的样式和数量以及您打算用它做什么相关 - 我甚至不会尝试讨论它,它太开放了。
我也不会开始讨论如下:如果内存真的比文件系统快,为什么不把所有内容都存储在内存中呢? : - )
这似乎与我很久以前回答的另一个问题类似:
Is C# really slower than say C++?
基本上,为了提高性能,并不总是 。
答案 1 :(得分:3)
MySQL使用的文件系统与计算机上的其他文件系统相同。要检索单个数据或数据表,没有更快的方法直接来自文件系统。 MySQL只会增加一小部分开销,用于拉动文件系统。
如果您需要进行一些智能选择,匹配某些行或过滤该数据,MySQL将比大多数其他选项更快地完成此操作。数据库服务器为您提供文件系统无法实现的计算和数据处理能力。
答案 2 :(得分:1)
当您拥有混合/结构化数据时,DBMS是唯一的解决方案。例如。尝试将所有客户的姓名和国家名称存入您的数据库,但仅限于1981年出生并居住在罗马的客户。如果您将这些数据存储到文件系统中的文件中,那么如何在不扫描所有文件的情况下轻松获取所需数据以及如何加入返回的数据?
DBMS为您提供的远不止这些。 许多DBMS将数据存储到文件中。
这个抽象层将使您以非常容易,标准和结构化的方式检索数据。
答案 3 :(得分:0)
区别在于所需数据的定位方式。
在文件系统中,找到所需的数据意味着搜索所有现有数据,直到找到为止。
数据库提供了索引编制功能,无论数据量大小,它都可以几乎立即(在12个比较之内)定位所需的数据。
我们想要的是一个索引文件系统-幸运的是,我们有了它们。它们被称为数据库。