Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

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.

share|improve this question

closed as not constructive by jcolebrand Aug 18 '11 at 21:51

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

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 Aug 17 '11 at 16:31
add comment

1 Answer 1

up vote 9 down vote accepted

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?

share|improve this answer
add comment

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