14

对于我正在编写的一个小型 PHP 应用程序,我们需要存储大量具有哈希键的记录和一些简单的字段值('host'、'path')。例如:

'4420ffb32a' => array(
  'host' => '127.0.0.1',
  'path' => 'path/to/resource',
);

此类数据的最佳持久存储是什么?MySQL 会是最好的选择,还是对于如此简单的数据来说太过分了?什么会带来最好的表现?

4

7 回答 7

12

简短的回答: Membase


长答案:
您基本上有三个选择:关系数据库、文件存储或其他。

就像你说的,关系数据库肯定是矫枉过正。也就是说,如果这是一个已经有 MySQL 或其他数据库的应用程序的一部分,我会同意的。同样,文件存储有时会很方便(例如写入一堆 XML 文件),但磁盘 I/O 可能很慢。

现在在另一个类别中,您有一些很棒的 NoSQL 选项,例如CouchDBMemcached

如果您不太担心数据的持久性,我建议您使用 memcache。它是轻量级的,易于运行,并且有一个Memcache PHP 扩展使其易于使用。它是为这样的键值存储而设计的。

memcache 的一个缺点是,在 memcache 服务停止的那一刻,您的所有数据都会丢失。这就是Membase的用武之地。它是 memcache 的开源分支,与协议兼容,这意味着它可以与所有现有的客户端库一起使用。但是,它可以持久化您的数据并实际上提供一致性和可靠性,这是 memcache 本身无法做到的。


注意:这个答案是时代的遗物,问题本身也是如此。请不要从字面上理解。

于 2010-10-19T20:30:54.423 回答
5

只是为了建议一些不同的东西,redis(或者redisdb-win32,如果你在 Windows 服务器上)

于 2010-10-19T20:30:20.713 回答
4

CouchDB是您的答案(尽管对于您的必需品可能有点矫枉过正)..

于 2010-10-19T20:19:47.010 回答
2

奇怪的是直到现在还没有人提到燧石。

Doctrine也是一个不错的选择。

于 2015-10-21T20:39:42.050 回答
1

为了增加一些已经提到的内容,PHP 原生支持

对于后者,Johannes Schlüter 有一篇不错的文章

于 2010-10-19T21:18:19.227 回答
1

可能不是最好的答案。但是我会将它存储到一个 mySQL 数据库中,mysql_pconnect如果没有同时提取数据,我可能会使用它。

此处有关 pconnect 的信息:php.net

数据库的常见替代方法是纯文件,但如果我错了请纠正我,但并发文件访问可能会更慢。

祝你好运。

于 2010-10-19T20:21:28.333 回答
0

我会选择 MySQl,以防您将来需要升级您的应用程序。当涉及到应用程序时,最好是面向未来。

于 2010-10-20T07:23:35.560 回答