开发者

What are some good, fast persistent storage options for key->value data? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.

Want 开发者_高级运维to improve this question? Update the question so it can be answered with facts and citations by editing this post.

Closed 7 years ago.

Improve this question

For a small PHP app I am writing, we need to store a large number of records that have a hash key, and a few simple field values ('host', 'path'). eg:

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

What is the best persistent storage for data like this? Would MySQL be the best choice, or is it overkill for such simple data? What would give the best performance?


Short answer: Membase.


Long answer:
You basically have three options: a relational database, file storage, or something else.

Like you said, a relational database could definitely be overkill. That said, if this is part of an application that already has a MySQL or other database, I would go with that. Likewise, file storage can be handy sometimes (writing to a bunch of XML files, for example), but disk I/O can be slow.

Now in the other category, you have some great NoSQL options like CouchDB or Memcached.

If you aren't too worried about the persistence of your data, I'd recommend memcache. It's lightweight, easy to get running, and there is a Memcache PHP extension that makes using it easy. It is made for key-value storage like this.

The one drawback memcache has is that all your data is lost the second the memcache service stops. This is where Membase comes in. It is an open-source fork of memcache that is protocol-compatible, meaning it will work with all existing client libraries. However, it can persist your data and actually provide consistency and reliability, something memcache can't on its own.


NOTE: This answer is a relic of its time, as is the question itself. Please do not take it literally.


Just to suggest something different, redis (or redisdb-win32 if you're on a Windows servers)


CouchDB is your answer (although it could be a little bit overkill for your necessities)..


Strange no one mentioned Flintstone till now.

Also a good option is Doctrine.


Might not be the best answer. But I would store it into a mySQL Database and probably use a mysql_pconnect if the data are not being extracted at the same time.

Informations about pconnect here: php.net

A common alternative to Database is a plain file but correct me if I'm wrong but concurent file access might be slower.

Good luck.


To add some more to those already mentioned, PHP has native support for

  • MongoDB,
  • Tokyo_Tyrant and
  • Berkeley DB

For the latter there is a nice article by Johannes Schlüter.


i would go for MySQl, just in case you need to upgrade your application in the future. Better be future proof when it comes to applications.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜