Skip to content

Comment on RethinkDB (YC S09) Raises $1.2 Million For Its Database For Solid-State Drivesparent

Comments

But the lack of locking is potentially big for multicore applications.

I'm not convinced. Modern OSes use locking extensively and do perfectly fine on multicore applications (FreeBSD's pgsql performance scales linearly up to 16 cores last time I saw graphs).

Obviously you need to be smart about how you do your locking (no giant lock!) but the mere fact of having locking is not automatically a problem.

I misspoke, I should have said 'many-core'. Yes, you're probably right that no respectable database is going to have a problem with lock contention on 16 cores. But, AMD released 12 core processors this week. Its likely we'll see the average DB server have 48 cores sometime in the next year or two, and who knows after that.

I quoted 16 cores because that's the biggest hardware the FreeBSD project had available when those benchmarks were being run -- I suspect that it scales linearly quite a bit further than that.

So that data corruption can scale linearly?

(Disks vs. SSDs and transactions vs. "eventual consistency" are orthogonal.)

Lock-free != data corruption. You just use atomic builtins[1] as primitives, instead of mutexes and semaphores.

[1] http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins....

Are we talking about low-level or high-level locking? I am talking about high-level locking semantics, like transactions.

At least as they've announced it so far, RethinkDB is a back-end for MySQL; so you should still have all of MySQL's transactional functionality.

(I'm sure Slava will correct me if I'm wrong here...)

I read over their page more carefully, and I think I see what they mean by "no locks". It means that the database stays internally consistent regardless of read or write order. When you start a transaction, you see the data in the log before you started, but you don't see any changes after you start. Fine.

You can get more isolation that this, and you need to to really keep your data consistent, but all DBs except Berkeley seem to have this off by default. So I am not too bothered by this, but I would be interested in seeing how well Rethink handles concurrent OLTP applications that actually care about data integrity. Caring about data integrity is slow, and Rethink might not speed this up all that much. Or it might :)

Oracle doesn't even support repeatable read (which seems weird to me). Read Commited should be doable in their system.

Oracle is marketing, not software :)

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.