News for hackers. Stuff that matters.
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by jasonmp85 on Monday May 18, 2015 @05:48PM (#9567057)
> MySQL Cluster is a scalable, real-time in-memory, ACID-compliant transactional database

To what degree can something be called durable if it's in-memory?

> It is possible to choose how to store data; either all in memory or with some on disk (non-indexed data only). […] Disk-based data can be used to store data with less strict performance requirements, where the data set is larger than the available RAM.

It's great to have all the concepts spelled out in this article, particularly the way nodes act as transaction managers when needed, synchronously replicate to a "buddy", and have management capabilities for recovering from partition events; however, it's almost misleading to use the MySQL name: this appears to be first and foremost an in-memory solution with some afterthought given to disk-based durability.

Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by wwwted on Tuesday May 19, 2015 @01:53AM (#9568317)
It's durable using checkpointing and redologging, this is default behavior. You can read more details here: http://www.clusterdb.com/mysql-cluster/how-can-a-database-be... And I agree that using the name MySQL is a bit misleading, perhaps better with NDB (NetworkDataBase) as NDB only uses MySQL as an API for SQL access to data.
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by vmarsy on Monday May 18, 2015 @06:30PM (#9567220)
I don't know how the MySQL one works, and if it does provide disk-based durability at all, but the way Microsoft SQL server does it is explained Section 7 (at page 7) of [1]

They use a log stream and checkpoints stream that are writing to disk.

[1] http://research.microsoft.com/pubs/193594/Hekaton%20-%20Sigm...

Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by MichaelGG on Monday May 18, 2015 @07:35PM (#9567430)
VoltDB replicates to k nodes so you can choose the level of durability. Combined with UPSes in separate parts of the datacenter, it's durable in some senses. (I'd be more concerned with a kernel or app bug that crashes the system, if there wasn't a "save RAM on unclean boot".

This only applies to the commercial version, though. The open source one ditched that feature.

Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by jhugg on Tuesday May 19, 2015 @08:30AM (#9569532)
VoltDB, like MySQL Cluster and several other in-memory system, uses snapshot checkpoints and logging to maintain power-loss protection. VoltDB is a bit different because of how it uses determinism + logical logging, but the point is that most of these systems don't have to lose data on power loss.
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by MichaelGG on Tuesday May 19, 2015 @12:29PM (#9571276)
Sure but those are mostly backup, right? If a system could log to disk at a fast enough pace, then it'd not really be a main memory DB, right? It'd be essentially the same as a normal DB with a really good RAM cache. I've got to imagine there are some VoltDB users going fast enough to make logging not 100% loss proof.
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by jhugg on Tuesday May 19, 2015 @02:59PM (#9572301)
Actually no. The key innovation is that data is stored in a memory friendly way, then logged to disk in an append-only, log friendly way. VoltDB can be fast and persistent; the catch is that your data must fit in memory.
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by MichaelGG on Tuesday May 19, 2015 @06:27PM (#9573574)
Oh really? I'm not sure how I missed that all this time. Is it a newer feature? I don't recall it in the H Store paper or in any of the docs I read. In fact I recall sync vs async logging to be a decision/tradeoff. And there used to be a rather large emphasis on choosing s good k factor, and it certainly seemed to be about durability. Otherwise, it's just another normal HA thing, no big deal? As in k 0 is a perfectly fine setup, if logging is enabled?
Re:How MySQL is able to scale to 200M QPS – MySQL Cluster by bballard on Wednesday May 20, 2015 @04:08PM (#9578935)
Command logging has worked this way since VoltDB 2.0. Sync mode needs hardware that can support more frequent fsyncs, such as disk controller with BBWC (does the job and inexpensive), or a server-class SSD, and should be configured to write the command log and snapshots to separate spindles. Async mode is the default setting so that out of the box VoltDB will perform as expected in the cloud, on a VM, or on a laptop.