2012-05-30 123 views
2

扩展this thread - 我只想知道为什么从文件系统而不是MySQL数据库检索文件的速度更快。如果有人要在两者之间进行基准测试,以查看哪些能够在10分钟内获取大部分数据(多种数据类型) - 哪一个会获胜?为什么文件系统存储比SQL数据库更快

如果文件系统真的更快,那么为什么不把所有文件都存储在文件系统中,并用csv或xml替换数据库呢?

编辑1:

我找到了一个很好的资源为alternate storage options for java

编辑2:

我在寻找一个Java API /罐具有SQL的功能数据库服务器引擎(或至少其中一些)使用XML进行数据存储(最好)。如果您知道某事,请在下面留言。

+1

你想知道*是否*或*为什么*?你已经提出了两个问题,但它们是相互排斥的。如果你已经知道一个更快,为什么你问哪个更快,如果你不知道,为什么你问为什么? – EJP

回答

11

在一天结束时数据库确实只是将数据存储在文件系统中。这是所有有用的东西之上的只是原始数据,让您决定使用数据库。

如果你可以复制的功能,可扩展性,稳健性,完整性,等,等使用CSV和仍然使其性能比关系数据库快那么是的,我会建议做它自己的方式一个数据库系统。

虽然你需要几年才能到达那里。

当然,关系系统并不是存储数据的唯一方法。有面向对象的数据库系统(db4o,InterSystems Cache)和基于文档的系统(RavenDB)。

性能还与您正在使用的数据的风​​格和数量以及您打算如何处理它有关 - 我甚至不会试图讨论这个问题,它太开放了。

我也不会开始讨论如下内容:如果内存真的比文件系统更快,为什么不把所有内容都存储在内存中? :-)

这似乎也是类似的另一个问题我回答了一个很久以前:

Is C# really slower than say C++?

基本的东西并不总是做只是性能。

+1

感谢您的回答。这是完全合理的。 然而,我不明白为什么有人继续制作SQL,而不是制作不同的库(即jar jar)和使用文件系统。这样你就可以只使用你想使用的东西,然后切掉其余的东西。这是提高性能和可伸缩性的一个可靠方法。 – ThreaT

+1

@ThreaT有人做了SQL,因为他们需要一个应用程序来管理数据并允许人们创建自己的数据存储。 SQL是数据库的框架和运行时,消费者可以完成实际的实现。在应用程序进程中运行一个简单的库是不够的,并且您真正需要的是数据库设备。 –

+0

如果是为消费者制作的,那么为什么所有开发人员都使用它?你知道任何文件系统的Java API吗? – ThreaT

3

MySQL使用的文件系统与计算机上的其他所有内容相同。要检索单个数据或一个数据表,没有更快的方法直接从文件系统中获取。 MySQL仅仅是添加到文件系统中的一小部分开销。

如果您需要做一些智能选择,匹配某些行或过滤该数据,MySQL将比其他大多数选项更快。数据库服务器为您提供文件系统无法执行的计算和数据操作功能。

+0

谢谢。请阅读我对Adam Houldsworth的回复。 – ThreaT

+1

这似乎已经解决..但如果你想知道为什么..想象一下,试图存储每个条目的文件夹的电话簿,文件的名称和文件的数字。这些数百万个文件存储在一个数据库中的单个表(和单个文件)中。数据库也可以在RAM中执行搜索和操作,这对于基本的文件系统来说要困难得多。总之,这是一个更简单,更强大的组织数据的系统。 – whiteatom

+0

SQL如何在不扫描所有内容的情况下获取数据?如果有一个本地驱动程序,Java库不能做类似的事情吗? – ThreaT

1

当您有混合/结构化数据时,DBMS是唯一的解决方案。例如。试着为所有储存在你的数据库中的顾客获取姓名,姓氏和国家,但只有那些出生于1981年并住在罗马的人​​。如果您将这些数据存入文件系统的文件中,您如何轻松获取所需的数据而无需扫描所有文件,以及如何加入返回的数据?

DBMS给你的不仅仅是这些。 许多DBMS将数据存储到文件中。

这个抽象层将使您以非常简单,标准和结构化的方式检索数据。

+0

谢谢。请阅读我对Adam Houldsworth的回复。 – ThreaT

相关问题