4 ms·
RethinkDB (YC S09): MySQL Storage Engine Built From The Ground Up For SSD
- siong1987 17y agoCongratulations. Another YC 09 startup.
- leif 17y agovaksel: who are you? you stole our thunder :( actually :)
- vaksel 17y agonope, just your karma points. Stealing thunder = releasing the same exact product, a month before you finish.
- billclerico 17y agocongrats guys
- mglukhovsky 17y agoThanks, Bill! We're all very excited here.
- lzhou 17y agoGrats guys!
- henryl 17y agoCongrats. These guys seriously know what they're doing from the talks I've had with them.
- mrduncan 17y agoCongrats guys, sounds very exciting! I just had one of those "why didn't I think of that" moments as I read through your wiki thinking back to this paper I read a few months ago: http://publications.csail.mit.edu/lcs/specpub.php?id=773 http://publications.csail.mit.edu/lcs/specpub.php?id=773
- neilc 17y agoIn fairness, log-structured storage is not a new idea. This paper is a great, classic read on the subject: http://www.eecs.berkeley.edu/~brewer/cs262/LFS.pdf http://www.eecs.berkeley.edu/~brewer/cs262/LFS.pdf
- leif 17y agoVery much not new. Nobody's done it for MySQL yet to my knowledge though, and I don't think many have looked at the implications of log-structured storage on SSDs. That kind of storage is notoriously difficult to do cleanly on a rotational drive, but our indexing scheme is quite simple. It's essentially some combination of shadow paging and side-effect-free style from the functional programming world, if that makes any sense to you.
- aberman 17y agoYou guys are gonna kill it. You deserve it. Great concept.
- neilc 17y agoDatabase consistency problems require traditional databases to use complicated locks. Because RethinkDB data is always consistent, locking is unnecessary. You may not use locking for concurrency control (plenty of "traditional DBs" don't, either), but you still need some sort of concurrency control scheme -- just using append-only/log-structured storage doesn't make CC free. I'd be curious to hear how you guys are doing this.
- coffeemug 17y agoMost industrial strength storage engines use multiversion concurrency control, but they still require a fair share of locking - row level locks that protect the data while a second copy is made, for example. No storage engine is entirely "lock-free", but we have only very few extremely granular locks. This is completely different from what was done before (as far as we know), and from a practical perspective is as good as lock-free. I don't think I can explain the technology in a comment, but we'll definitely be releasing more information in the coming weeks. We had to get this release out for now. Stay tuned!
- leif 17y agoFor the moment, we allow one writer at a time, but unbounded (I think) readers. The only locks taken are for arithmetic operations; no locks are held while performing I/O or even memcpy(2). You can read more about that bit in the paper about our caching architecture on the wiki. Eventually, we will allow multiple writers, and use some form of STM for that; we just haven't gotten to it yet. If you'd like to speak interactively on this, shoot me an email.
- gaius 17y agoStatements like that set my alarm bells ringing.
- neilc 17y agoSorry, statements like what?
- 17y ago
- pmorici 17y agoDoes RethinkDB support full text search?
- edw519 17y agoVery interesting. I wish you great success. Since your primary market will probably be developers, describing RethinkDB will be necessary, but not sufficient. Also, demonstrated performance will be necessary, but again, probably not sufficient. I, for one, want to understand what goes on under the hood (and be able to describe it to my customers). The "Time to Insert 2 Million Records" graph was impressive. How does the "Time to Retrieve, Sort, & Present 2 Million Records" graph look? How about the "Time to Modify 14% of the 2 Million Records" graph? Your append-only approach sounds great for adds. How is it for changes and deletes? How will garbage collection affect performance? "No more locks" is a great claim, but how will it work in a real world enterprise-quality app? User A takes 30 seconds to change Zip Code, Phone Number, and increase Credit Limit while User B takes 10 seconds in the middle of that to change City and decrease Credit Limit for the same customer. Who wins? This is a difficult scenario in both optimistic and pessimistic environments. I can only imagine how it's handled in a "no lock" environment. (I'm not looking for answers here, just spouting off what's on the top of my head, but I will be looking to better understand on your website. Your white papers oughta be interesting.) You make ambitious claims. I look forward to seeing you fulfill them. Best wishes!
- leif 17y agoWe'll have more performance numbers up soon; for the past few weeks we've been working on features to get wordpress working, but we'll be profiling and tuning, and we'll get you and everyone else your graphs in good time. Hope you enjoy the papers.
- coffeemug 17y agoThank you, this is a great post! We are looking forward to answering all of these (and many other) concerns by publishing benchmarks, papers, blog posts, tech talk videos, etc. We hope to do all of this in the coming weeks, we just took it one step at a time.
- netsp 17y agoBusy couple of weeks. Good luck!
- 17y ago
- rjurney 17y agoMySQL's pluggable storage engine model is so much win. You can have MyISAM, InnoDB, InfoBright and this in the same database engine for the same application. And there are many others.
- cperciva 17y agoCongratulations -- but keep in mind that cleaning (aka. garbage collection) is the hardest part of any log-structured storage system. I learned this lesson first-hand when writing tarsnap. :-)
- leif 17y agoThanks; we're doing GC over the next few days (starting...now actually).
- cperciva 17y agoFull GC (removing everything which is not needed to read the current DB state), or partial GC (removing old metadata such as indexes, but leaving behind data which has been deleted/modified)? The former is much harder -- it's a significantly complex task just to figure out which data records are still live.
- coffeemug 17y agoFull GC. In the framework of what we're doing, it's not very complicated (we think). This is because of our indexing scheme (we can simply walk the index tree while the database answers queries). We hope to release more info on this shortly.
- jrockway 17y agoI am confused by this graph. The linear default behavior makes sense -- it always takes the same amount of time to insert a row. The logarithmic behavior confuses me -- as you add more rows to the database, the time to insert a row decreases? If you add an infinite number of rows, each row can be inserted in zero time? That doesn't make sense to me. I would like to read the benchmark script. Also, I'm afraid to read their source code after reading the license agreement. I can't sell support for any product that can communicate with RethinkDB? That sounds unenforceable, but it is scary enough to prevent me from even looking at the code.
- coffeemug 17y agoThe benchmark is incremental. It measures how fast you can insert N rows given M rows already in the database. So, the second data point means you can insert roughly 750,000 rows in 140 seconds, given 750,000 rows already in the database. The limit certainly doesn't approach zero as the number of elements approaches infinity :) The engine isn't open source. We're considering open sourcing it in the future, but we want to understand all business implications of this decision before we proceed - it's a decision you can't easily retract. The license is a bit draconian, but this is because we've only released a developer pre-alpha. We don't want people to use the engine in production yet - it's not ready. AFAIK, the license says you can't sell RethinkDB support, not that you can't sell support for software that uses RethinkDB.
- jrockway 17y agoAFAIK, the license says you can't sell RethinkDB support, not that you can't sell support for software that uses RethinkDB. From the license: Prohibited activities include but are not limited to: Selling support for products which incorporate RethinkDB. This is the problem with rolling your own software licenses.
- coffeemug 17y agoThanks for bringing this to our attention. I'm honestly not sure what the intention was since I didn't do the license, but I'll talk to the guys here about it.
- mattyb 17y agoCongratulations! Glad to see some fellow Stony Brook folks on the map.
- bkudria 17y agoI know, right?
- mcav 17y agoCool snippet from one of the [founders?] on TechCrunch: > All of our interesting work is MySQL API-independent, so a Postgres port is not out of the question. We’ve also been entertaining the idea of porting to SQLite, as many embedded devices use that, and have SSDs already.
- leif 17y agoyep, that's me. hi!
- chime 17y agoI did not see any mention of full-text capabilities. MyISAM is the only option in MySQL for doing full-text searching and it's pretty limited due to the table-locking issue. Are there any plans to have a good full-text search feature in Rethink? Having a lock-free full-text table in MySQL would be awesome for many many sites out there.
- shiftace15 17y agoYou guys rock!
- zhyder 17y agoLooks like it's not open source, though they're apparently considering it: http://news.ycombinator.com/item?id=729338 http://news.ycombinator.com/item?id=729338 . For such an important part of infrastructure, I don't think closed source will do, especially not from a startup that's worked on it for only a few months. Open sourcing will: - Allow others to vet your codebase for stability and security - Give customers some recourse if your startup folds - Make you comparable to MyISAM/InnoDB/PostgreSQL, unless you want to be compared to Oracle or Microsoft SQL
- leif 17y agoTo your points: - Nothing much I can say about stability and security, but then again, we're not saying it's stable and secure yet. Besides, people trust Oracle without seeing their sources, don't they? - If our startup folds, I doubt we'll drag our source to the grave. That said, maybe it gives our users incentive to make sure we don't fold? :P - There are closed-source MySQL storage engines out there with whom we'd rather be compared (TokuDB, Falcon (is Falcon open-source?)). We just don't want to close any doors yet. If it makes good business sense, we'd be glad to open the source.
- zhyder 17y agoOracle's been around a while and their stability and security have been battle-tested, or at least that's the perception that makes a prospective customer trust them. Interesting that there are other closed-source MySQL storage engines. I wonder how big a piece of the pie (among paying or willing-to-pay users) they have compared to MyISAM/InnoDB.
- antonovka 17y agoUsing Apple's Xcode and Dictionary icons in the banner of the RethinkDB website looks pretty skeevy. It's hard to do by accident, and beyond violating Apple's copyright, it doesn't place your company in a good light. I wouldn't bother commenting on it, but surprisingly this is not the first time I've seen someone lifting Apple icons for their startup website, and it's something that needs to be addressed: artists are expensive, but you can't take other people's artwork, and worse yet, it's blazingly obvious when you use Apple's.
- mglukhovsky 17y agoAll of the icons we use are under an open license[1,2]. If you do find any specific copyright violations, we’ll certainly remove them. [1] http://www.iconfinder.net/icondetails/6166/128/ http://www.iconfinder.net/icondetails/6166/128/ [2] http://www.iconfinder.net/icondetails/8722/128/ http://www.iconfinder.net/icondetails/8722/128/
- antonovka 17y agoThe icons are almost exact clones of Apple's -- the differences are so minor that I didn't notice them when actually looking at the applications in my dock. The Xcode icon, for instance, appears identical barring the reversal of the hammer. [edit] The Xcode icon you linked to comes from a user-uploaded KDE Icon Theme: http://www.kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902 http://www.kde-look.org/content/show.php/Dark-Glass+reviewed... If you download the actual theme set, you'll find that the copyright ownership is unknown: "99% of this set is GPL now and what's not is most likely creative commons (a tiny number of the mime types may be proprietary). PLEASE abide by the licence rules, if you use icons from this set please research and credit the appropriate people. I have been given permission to release other peoples art work under the GPL so respect the licence." (from the README) The original icon theme may be found here: http://www.mentalrey.it/project.html http://www.mentalrey.it/project.html As noted by mikejs below, Apple actually uses the same icon you're using. Digging a bit, it appears it's the icon Apple used for Xcode in Mac OS X 10.4 Tiger (Xcode 2.5): http://www.command-tab.com/images/photoshop/tiger_icons/preview.jpg http://www.command-tab.com/images/photoshop/tiger_icons/prev... Xcode 3.0 actually introduced the right-facing hammer: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjCTutorial/Art/xcode_icon.jpg http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Ob...
- prakash 17y agoGood luck, guys! This is an interesting market to be in. It's also nice to see a lot of interesting database related companies coming out of Stony Brook -- I think one of the founders of tokutek is from Stony Brook as well.
- leif 17y agoMichael Bender (one of our professors) is a co-founder of Tokutek, and several SBU grad students work there. They are doing some _really_ cool stuff!
- mrandle 17y agoNice work. A great idea well executed.
- Confusion 17y agoThis sounds pretty similar to Drizzle?
- kvs 17y agoMy question is, how much of the speed-up is due to RDB being append-only and how much of it is due to specialization to SSD.
- vicaya 17y agoI still think SSD is a mere diversion in storage. According to Jason Hoffman (CTO/Founder of Joyent, speaking on Structure'09), SSD under their typical workload can only last for a month before wearing out: http://gigaom.com/2009/06/25/structure-09-how-to-scale-up-with-distributed-data-storage/ http://gigaom.com/2009/06/25/structure-09-how-to-scale-up-wi... Cheap commodity disks however have an annualized failure rate of 4% in Google's datacenter (according to their disk analysis paper.)