Comparing Non-Relational Databases: CouchDB, MongoDB, Tokyo Tyrant
github.com
github.com
It also states transactions as a benefit of MYSQL then shows the performance tests against the MyISAM engine which doesn't support transactions. This also explains why the MyuSQL inserts might be faster than any others.
I made the foolish decision a while back to choose a data storage option based on benchmarks and hype, and I'm currently paying for it by having achieved spectacular launch failure and now completely rearchitecting my backend.
NoSQL emerged only after a decade or so of webscale challenges helped us finally realize that everything only looked like relational nails because the only tool we had was SQL hammer, and that tackling every data warehousing problem with SQL was coming at the cost of money, engineering hours, and headaches. Now that viable, production-ready alternatives have become available it's important that design decisions to go beyond seeing problems as not-nails and seeing them instead for what they are.
Are you looking for reliable, versioned master-master replication for embedded devices? Might want to consider Couch. An obscenely fast caching tier that need not persist to disk? Sure, check out Scalaris. A fully distributed and pluggable map-reduce architecture capable of storing a metric fucktonne of data? Hbase might be for you. And, it should go without saying, there are still and there will always be problems for which SQL is the best solution.
In any event, an invaluable starting point is Richard Jones' post at Metabrew discussing research on a number of options for Lastfm: http://www.metabrew.com/article/anti-rdbms-a-list-of-distrib...
Can I ask what you used - and how it hurt you? Just so I can avoid making the same mistakes ...
* MongoDB and Tokyo Tyrant are useful now. CouchDB has promise, but is too slow currently.
* Non-relational databases have shown their worth at larger sites when used cleverly.
* Non-relational databases will continue to improve performance, stability & features.
* Relational databases are still a great choice: fast, powerful and proven. With caching, denormalization, rework (e.g. Drizzle) & better replication, they will continue to be competitive.
I got somewhere over 90k stores per second on my macbook localhost with my java client. If he's only getting around 3k, he must be doing them by hand.
I have played a little with Tokyo Cabinet/Tyrant but find it a little too 'low level' - would probably be great if you only need a fast hash. Cassandra is also worth a good look: if you are a Ruby developer, the Cassandra gem can auto-install all of Cassandra and manage it for you - very elegant, really.
I admit that one reason I like MongoDB is that it is so simple to use, and the documentation is good.
Having just read the paper (really, a few screens of a presentation) I feel confident that it's safe to ignore these "findings". Something is amiss. No way memcache is slower than MySQL for inserts/writes, and on-par for queries. Just doesn't make any sense.]
Hard to tell. You can "speedup" MS Access to Redis speeds, with sufficient RAM and a good caching strategy.
If CouchDB is slow in one benchmark, the developers can just go out and do something "nice", like, memory mapping all the documents in the "database", and serving them with a tight epoll(2) dispatch system using sendfile(2).
Speeding up databases for a benchmark is easy; scaling them for the real world is the tricky part.
an old BBC case-study:
http://www.erlang-factory.com/conference/London2009/speakers...
Building a test harness is non-trivial, Igal's tests are a lot like ones I used in the CouchDB book to illustrate the importance of batch updates, so I don't blame him for the imprecision.
Right now the best test driver for CouchDB throughput looks to be Baracus: http://blog.cloudant.com/benchmarking-couchdb-with-baracus