2

What NoSQL database or combination of databases best meets these criteria?

  • Very fast writes and reads
  • Persistent data that won't get lost in a crash
  • Plays nice with PHP
  • Works well in the cloud (EC2)
  • High availability
  • Preferably open-source
  • The data needs to be able to be manipulated in a way to show statistics reports (sums, ranges, groupings, etc)

EDIT

Would a document database such as couch give me the following features?

  • Very fast writes and reads
  • Persistent data that won't get lost in a crash
  • Plays nice with PHP
  • Works well in the cloud (EC2)
  • High availability
  • The ability to manipulate data to show statistics reports (sums, ranges, groupings, etc)

EDIT

If you were me, would you choose couch, mongo or riak as the NoSQL database for me to use on my PHP system knowing that these are my primary goals:

  • Very fast writes and reads
  • Persistent data that won't get lost in a crash
  • Works well in the cloud (EC2)
  • High availability

I'm examining non-traditional datastores for my environment and am having some trouble deciding which way I should go here.


Either one of the two edits provided above would've been a better match for the question at hand, allowing for better answers and probing questions. It's a shame that this wasn't caught in time.

1
  • 1
    I feel very strongly that this is a "shopping question" and that we want to ... not have that here. Since there hasn't been any edit activity on this question, and since it has some answers, I'm going to close the question, but not delete it. I'm also going to append an "edit" of how I think it might have been more properly asked, as a bit of cleanup, but I am not the original author and can't do anything about the intent.
    – jcolebrand
    Commented Aug 17, 2011 at 16:31

1 Answer 1

9

To be very fast, the database should only use memory and not disc since disc operations usually takes much longer time. But then your data aren't persistent in case of a crash. What you could do is assynchronous disk operations, by that most of your writes will be persistent but it's not guaranteed that the last few writes are persistent. If this is okey for you, you can use Redis. See also Redis - The Hacker's Database.

If you really care for persistent data, you should use a database that have been tested and used for years. Then PostgreSQL is a good choice.

To achive high availability, you need a distributed system with multiple nodes, so they can tolerate that at least one node goes down. Then I would use Riak.

The question is why do you need NoSQL? That word means almost nothing. I would recommend you to go with a traditional RDBMS like PostgreSQL until that can't handle your problem. It will be much easier to handle for you and it's much more flexible.

What you can do to improve the speed is to use caching. Then you can use Varnish Cash infront of your server, that will improve your speed a lot.

See also What are the differences between NoSQL and a traditional RDBMS?

Not the answer you're looking for? Browse other questions tagged or ask your own question.