我正在为Android创建一个基于Web的应用程序,我来到了帐户系统。以前,我将人员的所有数据存储在位于users/<name>.txt
的文本文件中。现在考虑在数据库中进行(比如你可能应该这样做),加载时间会更长,因为它必须查找名称等于输入的行吗?
所以,我的问题是,从文本文件中读取数据是否更快,因为它知道它的位置而易于打开,或者从数据库获取信息会更快,尽管它必须首先扫描行按行,直到它到达具有正确名称的那个?
我不关心安全性,我知道第一种选择根本就不是保存。在这种情况下,这并不重要。
谢谢,
Merijn
答案 0 :(得分:1)
谷歌搜索引发了这个问题:https://dba.stackexchange.com/questions/23124/whats-better-faster-mysql-or-filesystem
我认为答案也适合这个。
如果要查找特定文件,文件系统很有用 操作系统维护一种索引。但是,一个内容 txt文件不会被索引,这是一个主要优点之一 数据库。另一个是理解关系模型,以便数据 不需要反复重复。另一个是理解 类型。如果你有一个txt文件,你需要解析数字,日期, 等
所以 - 在某些情况下,文件系统可能对你有用,但当然 不是全部。
答案 1 :(得分:1)
在任何关于表现的问题中,第一个答案通常是:试一试,看看。
在您的情况下,您逐行读取文件以查找特定名称。如果您只有几个名称,那么该文件可能更快。有了更多的线条,你可能会读一段时间。
数据库可以使用索引对其进行优化。请注意,在拥有大量数据(数万字节)之前,索引不会产生太大影响。原因是数据库以称为数据页的单位读取记录。因此,它不会一次读取一条记录,它会读取页面的记录。如果你有数十万个名字,数据库会更快。
数据库的主要性能优势可能是,在您第一次读取数据后,它将驻留在页面缓存中。后续访问将使用缓存,只需从内存中读取 - 我可以自动添加,不费吹灰之力。
数据库的真正优势在于,它可以让您灵活地轻松添加更多数据,记录交互以及存储可能与您的应用程序相关的其他类型的数据。关于只搜索特定名称的狭隘问题,如果你最多只有几十个,那么该文件可能足够快。该数据库对于大量数据更有用,因为它为您提供了额外的功能。
答案 2 :(得分:0)
这就是数据库索引的来源。
答案 3 :(得分:0)
这是一个非常简单的解决方案 - 使用数据库。
不是因为它更快或更慢,而是因为它具有防止数据丢失或损坏的机制。
对文本文件的写入失败可能会发生,您将丢失用户个人资料信息。 使用数据库引擎 - 更难以丢失这样的数据。
编辑:
另外,一个很大的问题 - 关于服务器端还是应用端?
因为,对于应用程序方面,实际上每个智能手机不会有超过100个用户...更有可能你将有1-5个用户,他们共享手机,因此需要他们自己的个人资料,对于大多数人 - 你会只有一个用户。