What wasn't obvious to me from RWW's article is that this isn't actually memcached at all -- it's InnoDB, speaking the memcached protocol, to save having to create a whole new protocol and a bunch of new clients. Essentially, it's MySQL pretending to be memcache, but a memcache with persistence. Pretty cool!
Re:You Got NoSQL in MySQL: Memcached Plugin in MySQL Technol...
by vessenes on Sunday April 17, 2011 @12:21AM
(#2455551)
Thanks for the link. For some reason, this release totally bugs me! This strategy from the MySQL team is exactly the opposite of what their customers need, in my opinion.
The number of people using key-value stores because of their query semantics is dwarfed by those using them for their speed. What MySQL needs is the converse of this -- a way to lock tables / rows / query results to RAM for custom access patterns as determined by developers.
"Helping customers preserve memcache investments" is just silly -- nobody would have made memcache investments if MySQL did what I just described above.
Anyway, this should be a blog post rather than an HN comment, but, ... I'm surprised. I thought that the Oracle product managers were better than this.
Re:You Got NoSQL in MySQL: Memcached Plugin in MySQL Technol...
by riffraff on Sunday April 17, 2011 @05:23AM
(#2455842)
but the mysql folks have already explained that accessing innodb without the overhead of SQL (both protocol and semantic) implies a huge difference in performances.
So this goes in the direction of your implied problem: faster access to data.
Re:You Got NoSQL in MySQL: Memcached Plugin in MySQL Technol...
by vessenes on Sunday April 17, 2011 @11:22AM
(#2456282)
They do mention this in their press release -- no sql engine overhead, etc.
My experience with MySQL (and Postgres and Oracle to a lesser extent) is that it is precisely the general-case optimizations built into the database that make the NoSQL use case really hard.
Have you ever designed a large MySQL database that you wish to persist to disk but the use cases of your app require keeping the entire table in RAM?
NoSQL implies a developer commitment to a certain, restricted set of use cases for data access (and sometimes storage). In exchange, you get extreme granularity over how the server stores and retrieves data. Once you do that, you frequently get at least an order of magnitude speedup in your data, maybe 2 orders, depending on the data and access patterns.
I do not anticipate significant numbers of people dumping their redis or membase stores for this solution, because the press release strongly implies a 1.2-1.5x speedup for certain data access, not 10x-100x. 1.5x isn't good enough; if it were, people would have tuned MySQL some other way originally rather than moving architecture over to KV stores like they did.
This will likely get uptake from people who are already committed to MySQL and occasionally want to use a KV store for certain data patterns. I would anticipate, though, that this will just make it easier for those folks to move their KV store out of MySQL once it scales.
And that's not such a bad thing to offer to people, so I take back my earlier disappointment.
The authors created a MySQL plugin that served as a network server and hooked into InnoDB without SQL parsing overhead. It also avoided the cost of opening/closing tables by keeping them open.
According to their benchmark, performance went from 100,000 queries per second to 750,000 per second on the same server.
Re:You Got NoSQL in MySQL: Memcached Plugin in MySQL Technol...
by davidhollander on Saturday April 16, 2011 @07:04PM
(#2455085)
If anyone is interested in direct access to InnoDB (without relying on Oracle who has stopped distributing it for download on their website) you can embed it directly into your applications using HailDB, which is an open source project continuing its development:
Re:You Got NoSQL in MySQL: Memcached Plugin in MySQL Technol...
by prodigal_erik on Saturday April 16, 2011 @09:43PM
(#2455364)
Of all the key/value stores out there, why did they choose memcached to emulate? Compare-and-set doesn't cut it, you need a better API than it offers to get any benefit from InnoDB transactions. And if any value should happen to grow beyond 1 MB, some legacy memcache clients will just start blowing up.
http://dev.mysql.com/tech-resources/articles/nosql-to-mysql-...
What wasn't obvious to me from RWW's article is that this isn't actually memcached at all -- it's InnoDB, speaking the memcached protocol, to save having to create a whole new protocol and a bunch of new clients. Essentially, it's MySQL pretending to be memcache, but a memcache with persistence. Pretty cool!
The number of people using key-value stores because of their query semantics is dwarfed by those using them for their speed. What MySQL needs is the converse of this -- a way to lock tables / rows / query results to RAM for custom access patterns as determined by developers.
"Helping customers preserve memcache investments" is just silly -- nobody would have made memcache investments if MySQL did what I just described above.
Anyway, this should be a blog post rather than an HN comment, but, ... I'm surprised. I thought that the Oracle product managers were better than this.
So this goes in the direction of your implied problem: faster access to data.
My experience with MySQL (and Postgres and Oracle to a lesser extent) is that it is precisely the general-case optimizations built into the database that make the NoSQL use case really hard.
Have you ever designed a large MySQL database that you wish to persist to disk but the use cases of your app require keeping the entire table in RAM?
NoSQL implies a developer commitment to a certain, restricted set of use cases for data access (and sometimes storage). In exchange, you get extreme granularity over how the server stores and retrieves data. Once you do that, you frequently get at least an order of magnitude speedup in your data, maybe 2 orders, depending on the data and access patterns.
I do not anticipate significant numbers of people dumping their redis or membase stores for this solution, because the press release strongly implies a 1.2-1.5x speedup for certain data access, not 10x-100x. 1.5x isn't good enough; if it were, people would have tuned MySQL some other way originally rather than moving architecture over to KV stores like they did.
This will likely get uptake from people who are already committed to MySQL and occasionally want to use a KV store for certain data patterns. I would anticipate, though, that this will just make it easier for those folks to move their KV store out of MySQL once it scales.
And that's not such a bad thing to offer to people, so I take back my earlier disappointment.
Here is a very illuminating post about it:
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-a...
The authors created a MySQL plugin that served as a network server and hooked into InnoDB without SQL parsing overhead. It also avoided the cost of opening/closing tables by keeping them open.
According to their benchmark, performance went from 100,000 queries per second to 750,000 per second on the same server.
Well worth the read.
http://www.haildb.com/
A littte bit late but I cant wait for some benchmarks.
If they also going to implement sharding next time, they keep my primary choice for new web projects.
http://dev.mysql.com/tech-resources/articles/whats-new-in-my...
This appears to be a way to access InnoDB storage as a memcached-type key-value store using the memcached API. I didn't get that from the article.