TXT文件或数据库?

时间:2010-05-23 22:10:56

标签: php mysql database text-files

在这种情况下我应该使用什么(Apache + PHP)数据库或仅 TXT文件?我的优先级#1是速度

运营

  • 添加新项目
  • 阅读项目
  • 最大。 1 000条记录

谢谢。

数据库(MySQL)

+----------+-----+
| Name     | Age |
+----------+-----+
| Joshua   | 32  |
| Thomas   | 21  |
| James    | 34  |
| Daniel   | 12  |
+----------+-----+

TXT文件

Joshua 32
Thomas 21
James 34
Daniel 12

11 个答案:

答案 0 :(得分:7)

对于速度和优化的内存使用情况,我会说要放下数据库。仅在名称列上放置索引可能会以文本文件永远无法实现的方式提升性能。

数据库还有一些其他优点,例如一些卫生设施(没有破坏分隔符,换行符等),并且当多个实例尝试从表中读取时访问冲突的危险性降低 - 并且与基于文件的方法不同,写入冲突是只限于有问题的记录。

答案 1 :(得分:3)

建议的文本文件本质上是一个数据库。自己编写操作来操纵它只是重新发明轮子,所以只需使用已经存在的东西。 1,000条记录的规模相当小,所以使用像SQLite这样简单的东西就可以了。

答案 2 :(得分:2)

你有没有探索过其他DHT?

Project Voldemort

Memcached + MySQL

更新1

如果您的服务器上没有memcached和Voldemort,那么您可以使用BDB等嵌入式键值数据库

答案 3 :(得分:1)

使用数据库会更有效率。与文本文件相比,您将能够更轻松地查询和执行操作以选择数据。文本文件必须不断打开,关闭,内容爆炸以实现迭代数据或查找行 - 这将是缓慢的,并且代码很难。

有些类和现成的脚本可以让你将这些数据存储在文本文件中,但最终这就是数据库的设计所以我会使用它。

答案 4 :(得分:1)

如果只有1000条记录,请将其保留在内存中。

答案 5 :(得分:0)

最多只有1000条记录只包含姓名和年龄列,我怀疑您的选项之间的速度有任何显着差异;可能其他因素如服务器负载将主导您的速度。

为了方便,可靠地访问,MySQL可能更简单一些,但是使用文本文件,您不必设置MySQL服务器。

我觉得我们没有足够的信息给你一个有根据的答案。

答案 6 :(得分:0)

如上所述,这个问题有其他选择。数据库的强大功能可能很有用(毕竟,你不想在自己做其他事情时自己编写这些功能),但你不想过度使用。

SQLite可能值得一看,因为它可以被视为一个文件(不需要担心服务器),但是它为您提供了SQL查询的强大功能。

您还可以在您选择的任何数据存储层之上尝试使用Memcached作为缓存。

答案 7 :(得分:0)

如果速度确实是唯一重要的,我可能会建议使用var_export创建一个可以用PHP加载的.php文件。只要读写次数足够高并且安装了APC,PHP文件就能够利用APC的操作码缓存。这将比其他任何方法更快,因为数据将作为PHP本地加载,而不必通过中间层(memcache,mysql等)。

答案 8 :(得分:0)

SQLite的。小型快速数据库。 http://www.sqlite.org/

这些天与PHP集成安装。 http://php.net/manual/en/book.sqlite.php

为您提供选择:

如果你真的想要速度考虑使用fast-cgi php的nginx。

答案 9 :(得分:0)

我肯定会建议在纯文本文件上使用数据库。首先,数据库对您访问数据进行了大量优化,因此您不必担心性能问题。其次,你有更多的功能。您可以使用SQL语言执行以下操作:

  • 选择年龄大于或等于18
  • 的所有客户
  • 获取您已售出的产品数量
  • 从您销售的产品中获取总收入
  • 获取所有产品的平均价格
  • 获取居住在特定区域的客户列表

......以及更多,简单的SQL语句。试图为文本文件编写所有代码会产生适得其反的效果,并且不那么灵活。使用数据库,您可以免费获得所有这些。

答案 10 :(得分:0)

这是非常危险的,但您可以动态生成PHP文件。如果您将主要阅读此文件,那么它将是限制为1000的小记录的最快方法。