5 ms·
Slava @ RethinkDB here. I'll be around all day to answer questions about the release (along with a few other engineers on our team). We're very excited about
by coffeemug 11y ago
Slava @ RethinkDB here.
I'll be around all day to answer questions about the release (along with a few other engineers on our team).
We're very excited about this release -- it makes the lives of RethinkDB users dramatically better because they won't have to wake up anymore in the middle of the night in case of most hardware failures :) It also took over a year to build and test, and has been one of the most challenging engineering problems we ever had to solve.
- ukd1 11y agoAwesome work guys. Could you give some details on what you're most proud of and what was most challenging?
- jaz46 11y agoAre you interviewing the RethinkDB team here, Russell? ;)
- coffeemug 11y agoThere are two parts to this that are really challenging -- designing a robust system (since there are a million different edge cases that can happen in a distributed system), and designing an intuitive interface so that the database does the right thing out of the box, is configurable if users want that, and is actually easy to configure in practice. Doing each thing independently is hard; doing both of them together in one system is really really hard. I'm particularly proud of how nicely everything clicks together, and how elegant the administration API is. It seems very simple and is extremely powerful; getting that right took many iterations over the course of a year.
- k__ 11y agoA bit off-topic, but can you recommend any RethinkDB SaaS providers?
- coffeemug 11y agoMany of our users use compose.io, and it's pretty solid. I highly recommend them.
- karlgrz 11y agoFantastic news, this looks great! Just a quick question, can I update individual nodes one at a time in my running cluster, or do they all need to be on 2.1 at the same time?
- danielmewes 11y agoUnfortunately 2.0 nodes cannot connect to 2.1 nodes and vice versa, so depending on your table configuration you might need to update all of them at the same time.
- karlgrz 11y agoNo problem, was just curious. Thanks!
- mikegioia 11y agoI'm evaluating a move from CouchDB to another system purely as an easily sharded/replicated KV document store. Do you recommend Rethink for that specific use-case or is it overkill? Your docs seem to convey that this isn't really in Rethink's wheelhouse (in that RDB is more suited for querying or real-time updating).
- coffeemug 11y agoRethinkDB can definitely act as a distributed key-value store (and a pretty good one). But I think the choice is highly dependent on your use-case and requirements. Could you go into a little more depth wrt your workload? (e.g. number of records, average record size, read/write ratio, expected ops/second, etc.)
- mikegioia 11y agoYea of course. We're basically talking about 10/90 write/read on JSON documents ~100kb in size with very low load, probably no more than 10-20 ops/second at peak. Records now are at 200,000 projected to grow 250k/year.
- coffeemug 11y agoThanks! I'd definitely give RethinkDB a try, I think you'd be pleasantly surprised at how nice it can be for this. You'll also find that you might want to run ad-hoc queries on JSON documents (e.g. for analytics/exploratory analysis, etc.) and having ReQL at your disposal will be great for that. IMO picking a KV store makes the most sense if you have insane performance requirements (e.g. millions of ops/second) where you need to squeeze every last drop of performance and the query layer gets in the way. (Also if you have any questions and don't want to share more info publicly, feel free to shoot me an email -- slava@rethinkdb.com)
- mikegioia 11y agoThanks, Slava I appreciate you taking the time here.
- eloff 11y agoI'm curious about "We chose to only store cluster metadata in Raft due to performance limitations imposed by distributed consensus" I would naively assume that since you need to replicate your database to the slave servers, you need to send the WAL or changes somehow anyway. Could you elaborate on what was the problem there? I'd be surprised if it is because of a fundamental limitation of Raft (but could easily be a limitation of a Raft library!)
- coffeemug 11y agoSuppose you configure RethinkDB to store three copies of the data. When you do a write, RethinkDB will replicate the data to three nodes; that operation is roughly a matter of sending three messages to the appropriate nodes, getting the acks, and sending the ack back to the client. If we used Raft to replicate the document, in many cases it would be a lot more chatty. If you look at the Raft paper and track all the messages that would have to go back and forth, it would dramatically increase the latency for each write. This is inherent to Raft (and any distributed consensus protocol). Unfortunately distributed consensus isn't free; you have to pay pretty heavy latency costs which would be unacceptable in production, so we couldn't just uniformly apply that to every write.
- eloff 11y agoOK, so it's a latency concern, which makes perfect sense. > If we used Raft to replicate the document, in many cases it would be a lot more chatty. I'm out of my depth here. Leader needs to send AppendEntries and slave needs to apply to persistent storage and ACK. Leader needs to wait for majority of ACKS before responding to the client. That's the same as your three-node replication scenario, so what am I missing here? Does Rethink db relax consistency guarantees in some cases to achieve better latency? It's not your job to educate me on Raft, I appreciate your being patient with me, but feel free to opt out of this conversation anytime you please.
- coffeemug 11y ago> Leader needs to send AppendEntries and slave needs to apply to persistent storage and ACK. Leader needs to wait for majority of ACKS before responding to the client. That's the same as your three-node replication scenario, so what am I missing here? A couple of things -- the payload in Raft tends to be much higher (though it could probably be fixed with sufficient engineering effort), and in some scenarios this process would have to happen multiple times during netsplits (which may or may not be ok). RethinkDB doesn't relax consistency guarantees; we implement them in a different way. Check out http://rethinkdb.com/docs/consistency/ http://rethinkdb.com/docs/consistency/ for more details. I'm a bit busy today, but this is a really interesting question. I'll see if we can do a technical blog post on this and go into all the details in depth.
- hipsterrific 11y agoI'm excited to work with RethinkDB on my pet projects. Glad to hear you guys beefed up failovers, that's a big deal in a lot of places. ;)
- chucksmash 11y agoIt's a joy to use for side projects! I'm using it as the datastore in a web app for learning that automatically generates quiz questions from user-provided data. Integrating with it using the Python API has thus far been dead simple.
- otterley 11y agoHave you Jepsen-tested the new 2.1 release? If so, what were its results?
- coffeemug 11y agoYes. We did months of internal tests, and 2.1 passes Jepsen tests. We'd love for Kyle to do his own analysis once he gets some free time. In the meantime there is a bit more info on this in the blog post under "testing" headline.
- kenko 11y agoCan one commission Jepsen analyses from Kyle? Or is it more a matter of hoping he'll do it on his own?
- teraflop 11y agoBased on this pull request: https://github.com/aphyr/jepsen/pull/70 https://github.com/aphyr/jepsen/pull/70 Am I correct in understanding that the tests only pass in the "safe-but-slow" configuration that timmaxw described (https://news.ycombinator.com/item?id=10043746 https://news.ycombinator.com/item?id=10043746) and not in the default "fast-but-unsafe" configuration?
- coffeemug 11y agoAFAIK the tests account for that and test different scenarios (i.e. not all unsafe modes are created equal; a product can still fail the relevant test cases in fast-but-unsafe mode). We pass the fast-but-unsafe tests (i.e. we fulfill the guarantees you'd expect in that mode), and also pass the stricter guarantees in the slow-but-safe mode. However you're right that we don't pass stricter guarantees in fast-but-unsafe mode (but I'm not aware of any products in the space that do).
- teraflop 11y agoGood to know. The test code in that pull request only tests the case where read_mode="majority", so I'm looking forward to seeing the other scenarios when they become available.
- balls187 11y agoWe're seeing serious memory leaks in 2.0.4~trusty. http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png/ http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png... You can see where the memory sets itself during the rethink process restart, and then it slowly climbs back up to ~3gb, despite no new data being written to the system (all our RethinkDB data is generated during deploy time). Any pointers? I'd be happy to provide any diagnostics.
- mglukhovsky 11y agoYou should open an issue on GitHub, so we can track it down: https://github.com/rethinkdb/rethinkdb/issues https://github.com/rethinkdb/rethinkdb/issues It helps if you include information on your setup in the issue (for a list of helpful details, read "How to submit a bug report" here: http://rethinkdb.com/docs/crashes/ http://rethinkdb.com/docs/crashes/).
- coffeemug 11y agoThanks for reporting this! The image doesn't seem to load for me. Would you mind opening a GitHub issue (https://github.com/rethinkdb/rethinkdb/issues/new https://github.com/rethinkdb/rethinkdb/issues/new) with as many details as possible? We need to know a bit more about the infrastructure/workload to replicate this; once we get the info we'll get to the bottom of it ASAP. Also feel free to e-mail me at slava@rethinkdb.com if you need urgent/critical support.
- _yy 11y agoFor anyone curious: https://github.com/rethinkdb/rethinkdb/issues/4663 https://github.com/rethinkdb/rethinkdb/issues/4663
- fweespeech 11y agoHow is the WAN replication performance for a cluster in 3 DCs with ~100-200ms RTT? Or is WAN replication performance on the todo list?
- coffeemug 11y agoWAN replication works out of the box, and RethinkDB was designed with multidatacenter setups in mind. Feel free to email me at slava@rethinkdb.com if you need to discuss a specific use case.
- kevinbowman 11y agoCongrats on the release! Could you update the docker hub image? I'm impatient to try it...
- Scarbutt 11y agoWould RethinkDB be a good choice for an invoicing web application? where you can't afford loss of data.
- coffeemug 11y agoYes. RethinkDB has very strict durability guarantees (that are the same as traditional RDBMS). However, if you need transactions compliance across multiple documents, RethinkDB isn't a good choice. See the faq for more details: http://rethinkdb.com/faq/ http://rethinkdb.com/faq/
- lobster_johnson 11y agoAre there plans (heh) to write an optimizing planner that can automatically evaluate which indexes to use?
- coffeemug 11y agoYes. There are a couple of proposals floating around -- check out https://github.com/rethinkdb/rethinkdb/issues/4150 https://github.com/rethinkdb/rethinkdb/issues/4150 for details.
- deleted 11y ago[deleted]