Hacker Newsnew | past | comments | ask | show | jobs | submit | nnk's commentslogin

Is there an example of posgtres nosql doing like 700K requests/sec?


> Just what App Engine already offers

No, it doesn't.

"The Memcache Python API High performance scalable web applications often use a distributed in-memory data cache in front of or in place of robust persistent storage for some tasks"

MySQL memcached is not a cache, it's a persistent storage with memcached API. And it's fast.


Isn't this MySQL memcached thing just a memcached in front of MySQL where the 'key' is the expanded SELECT statement?


What you've described it's MySQL query cache.

MySQL memcached is a memcached deamon that uses InnoDB storage instead of in-memory storage. The caching is done by InnoDB itself.

(and actually it's possible to enable the optional in-memory storage too)

http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html


pgmemcache is a memcached client, it connects to external memcached server. Which is, um, quite useless.


w.r.t "useless": Joins against memcached data, and expiry of keys via trigger. Different, yes, useless -- well, up to you. Not written for no reason, though.


That expiring triggers could be somehow useful. But in most cases it's not worth to query memcached from database (selects). The reason is it's much faster to query memcached directly without even opening database connection.

All these caching things make applications complex, because cache invalidation it's a complex task.

MySQL is doing right steps - it's doing caching itself via InnoDB buffer pool. And makes the interface faster by replacing SQL queries with fast memcached API.


> The reason is it's much faster to query memcached directly without even opening database connection.

Sometimes you need to augment data in a SQL database with memcache information, and then subsequently compute a predicate, and it would be faster to use your sql executor than Ruby, say. I'm not suggesting you'd always use this access path, but it can be handy, just like dblink is.

> MySQL is doing right steps - it's doing caching itself via InnoDB buffer pool. And makes the interface faster by replacing SQL queries with fast memcached API.

I'd really like to see some benchmarks on that. If one has a protocol-level prepared plan in Postgres (which is not an exotic entity, some drivers even create them transparently), one just has to send "Bind" and "Execute" messages to call functions.

If there are major advantages to be had where there is any disk i/o involved at all, my suspicion it'd be having a caching strategy that is more suited to the memcached workload: most SQL implementations already have fast-path mechanisms (such as prepared statements, which are in my understanding relatively slow in MySQL due to some vagary in the protocol) where I'm a bit hard pressed to believe on intuitive grounds alone that parsing (and not planning, if one uses prepared statements) is the principal culprit for poor performance.


Does it support range scan selects (example: "where f > 5") as HandlerSocket do?


Even if you don't have any battle.net account, you can create a new one and play the beta.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: