读取文件或在数据库中搜索?

时间:2014-07-29 12:04:36

标签: php mysql sql

我正在为Android创建一个基于Web的应用程序,我来到了帐户系统。以前,我将人员的所有数据存储在位于users/<name>.txt的文本文件中。现在考虑在数据库中进行(比如你可能应该这样做),加载时间会更长,因为它必须查找名称等于输入的行吗?

所以,我的问题是,从文本文件中读取数据是否更快,因为它知道它的位置而易于打开,或者从数据库获取信息会更快,尽管它必须首先扫描行按行,直到它到达具有正确名称的那个?

我不关心安全性,我知道第一种选择根本就不是保存。在这种情况下,这并不重要。

谢谢,

Merijn

4 个答案:

答案 0 :(得分:1)

谷歌搜索引发了这个问题:https://dba.stackexchange.com/questions/23124/whats-better-faster-mysql-or-filesystem

我认为答案也适合这个。

  

如果要查找特定文件,文件系统很有用   操作系统维护一种索引。但是,一个内容   txt文件不会被索引,这是一个主要优点之一   数据库。另一个是理解关系模型,以便数据   不需要反复重复。另一个是理解   类型。如果你有一个txt文件,你需要解析数字,日期,   等

     

所以 - 在某些情况下,文件系统可能对你有用,但当然   不是全部。

答案 1 :(得分:1)

在任何关于表现的问题中,第一个答案通常是:试一试,看看。

在您的情况下,您逐行读取文件以查找特定名称。如果您只有几个名称,那么该文件可能更快。有了更多的线条,你可能会读一段时间。

数据库可以使用索引对其进行优化。请注意,在拥有大量数据(数万字节)之前,索引不会产生太大影响。原因是数据库以称为数据页的单位读取记录。因此,它不会一次读取一条记录,它会读取页面的记录。如果你有数十万个名字,数据库会更快。

数据库的主要性能优势可能是,在您第一次读取数据后,它将驻留在页面缓存中。后续访问将使用缓存,只需从内存中读取 - 我可以自动添加,不费吹灰之力。

数据库的真正优势在于,它可以让您灵活地轻松添加更多数据,记录交互以及存储可能与您的应用程序相关的其他类型的数据。关于只搜索特定名称的狭隘问题,如果你最多只有几十个,那么该文件可能足够快。该数据库对于大量数据更有用,因为它为您提供了额外的功能。

答案 2 :(得分:0)

这就是数据库索引的来源。

您可以查看How does database indexing work?:)

答案 3 :(得分:0)

这是一个非常简单的解决方案 - 使用数据库。

不是因为它更快或更慢,而是因为它具有防止数据丢失或损坏的机制。

对文本文件的写入失败可能会发生,您将丢失用户个人资料信息。 使用数据库引擎 - 更难以丢失这样的数据。

编辑:

另外,一个很大的问题 - 关于服务器端还是应用端?

因为,对于应用程序方面,实际上每个智能手机不会有超过100个用户...更有可能你将有1-5个用户,他们共享手机,因此需要他们自己的个人资料,对于大多数人 - 你会只有一个用户。