7 ms·
Try RethinkDB in your browser
- tucson 14y agoshould one use this instead of MySQL, and why? I couldn't find this question in the FAQ.
- shin_lao 14y agoAFAIK RethinkDB is (yet another?) non-relational database.
- JPKab 14y agoCheck out their main webpage. They are better than most of the other "NoSQL" dbs out there in explaining the strengths/weaknesses of their product compared to a typical relational DB.
- jabagonuts 14y agoThey have a page comparing themselves to MongoDB http://www.rethinkdb.com/docs/comparisons/mongodb/ http://www.rethinkdb.com/docs/comparisons/mongodb/
- coffeemug 14y agoThere is also the biased comparison: http://www.rethinkdb.com/blog/mongodb-biased-comparison/ http://www.rethinkdb.com/blog/mongodb-biased-comparison/
- fizx 14y ago"scale to multiple machines with very little effort"
- prostoalex 14y agoAny info on how it handles resharding?
- coffeemug 14y agoYou set the number of shards you want and click "rebalance" (CLI tools are available too, of course). The right data is replicated to the right nodes without any additional effort. It's demoed in the screencast video if you'd like to see (http://www.rethinkdb.com/screencast/ http://www.rethinkdb.com/screencast/).
- mbreese 14y agoI was actually a little worried when I read that everything can be handled from the Admin GUI interface. Knowing that there are CLI tools available makes me a little more comfortable. For some reason reading through steps like "click here" makes me less comfortable than "type this".
- jdoliner 14y agoRethinkDB allows users to reshard with a single click in the WebUI. All you need to provide is the number of shards you want and it will partition the data evenly in to that many shards and lay them out on machines. You can see this in action in the webcast video (http://www.rethinkdb.com/screencast/ http://www.rethinkdb.com/screencast/) or you can install and see for yourself. Joe @ RethinkDB
- prostoalex 14y agoThanks. So in theory something like this would not have happened with Rethink? https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/UoqU8ofp134 https://groups.google.com/forum/?fromgroups=#!topic/mongodb-...
- coffeemug 14y agoYes, we put an enormous amount of effort into building a rock-solid architecture. However, any software has bugs, especially early on. We're working hard to make RethinkDB production ready, but it will take a few more months until it gets sufficiently battle tested that we can recommend running it in prod. environments.
- andr3w321 14y agoI have same question but for mongoDB. What's the difference between mongo and rethink? Edit. Okay I found the charts.
- neumino 14y agoI'm a ReQL guru!
- randomdrake 14y agoAlright, I tried it. Frankly, I'm confused as to why this is getting so many up-votes. If someone could elaborate what they enjoyed so much, I'd be interested to hear. I didn't enjoy this experience one bit. It didn't feel interactive to me. Each step is basically "Run this query that is already typed out for you" without any explanation, whatsoever, about what each part of what I was writing was doing. This was followed by an invitation to click a link to documentation to try something else on the line of code you don't understand. It begins with: >r.db('test').tableCreate('tv_shows').run() My first questions: what is r? What does db() do? Is there a test database somewhere? Why do I have to call run() when there's a button saying "Run this query"? Do you sometimes not run() things? The tutorial doesn't remember your position if you go back to it so it's a good thing, I guess, that it opens a new tab for you when you access the documentation to list the tables. Let's move to the second step: >r.table('tv_shows').insert([{ name: 'Star Trek TNG', episodes: 178 }, { name: 'Battlestar Galactica', episodes: 75 }]).run() Even more questions: What happened to r.db('test') that I needed to use? Is r now that database? Why didn't I just do r.tableCreate('tv_shows') before? I did this with basically every step of the process but stopped just short of finishing because I wasn't learning much and wasn't sure where it was going. I found myself simply wondering what the heck RethinkDB was. This tutorial could really use some more explanation, interaction, flow and direction. Tell me what I'm about to do. Tell me why what I'm about to do is worth my time and cool. Start with r, go from there. At least I won't be lost from the get-go. Let me write stuff out as you're telling me what I'm doing. That's interacting.
- manacit 14y agoI couldn't agree more - it's less a tutorial and more a slideshow of 10 queries and the results. Not only that, but I found the documentation extremely lacking (almost nonexistent) when I was attempting to do the additional queries. When I was confused, there was nowhere to see the 'right answer' for the query and an explanation of why, I just had to guess at the syntax until I got it right.
- alecperkins 14y agoSame. A hint that appears after a wrong attempt at the "before you move on" steps and a full explanation that appears after two would be very helpful, especially with steps 7+. Without those it feels like a puzzle instead of a tutorial.
- ebbv 14y agoI don't understand how this is giving any advantages over the standard object interface. How is: > r.table('tv_shows').insert([{ name: 'Star Trek TNG', episodes: 178 }, { name: 'Battlestar Galactica', episodes: 75 }]).run() Easier than: > db['tv_shows'].push([{ name: 'Star Trek TNG', episodes: 178 }, { name: 'Battlestar Galactica', episodes: 75 }]); Seems to me like a totally unnecessary abstraction which only adds complication and potential points of failure and bugs. EDIT: Ok never mind this does actually create a real database. From the demo it seemed like it was just creating a JSON object.
- coffeemug 14y agoIn the former case you're creating a query (similar to SQL insert) that puts data into the database. You can then take advantage of indexing, sharding, durability guarantees, caching, a specialized query language, and all the other benefits of a database system. In the latter case you're creating a data structure in the host language (which of course is immensely useful, but completely different).
- ebbv 14y agoMy mistake, from the demo I thought this was just creating a JSON object, and there was no actual backend database.
- coffeemug 14y agoRight. The demo implements the backend database in Javascript, so you can run real queries against it. (Still, the whole thing is confusing and I'll make it much, much better) slava @ rethink -- I was responsible for the tutorial
- alexpopescu 14y agoThe main difference is what happens if you chain together multiple operations. Are these executed one by one (each resulting in a roundtrip to the database) or executed all at once (single roundtrip to the db). As a side note, each programming language has its own idioms. We tried to bring the ReQL query to each language in a way that felt as close as possible to the host PL (as opposed to say SQL which you need to use it as it is; and that led to the hundreds or thousands of wrapper libraries/ORMs. etc). alex @ rethinkdb
- ScottBurson 14y agoIt doesn't look like this site was built with Weblocks :-)
- throwawayG9 14y agoStill no PHP support?
- wmrowan 14y agoCurrently RethinkDB has official drivers for three languages, Python, JavaScript, and Ruby. I hope you understand why it would be difficult for us to support many more than this. Eventually we're counting on support for 3rd party drivers from the community. In fact, there are already a few early community drivers from some intrepid contributors including for Haskell and Go. We've had lots of requests for more drivers and lots of offers to build them, but we've asked our volunteers to hold off while we revamp the driver interface to make it significantly easier to build drivers for RethinkDB. Having written the first JS driver myself and the new version I can attest to the much greater ease of doing so with the new API. The next release (1.4) due very soon will include these changes and a driver development kit to support 3rd party efforts. After that I'm sure you'll see a PHP driver emerge very quickly.
- wildchild 14y agoOne thing I can't understand is if "RethinkDB is built to store JSON documents", why then there are tables? And also, probably I should better explore website, but is it transactional? In other words, is it possible to save multiple documents and RethinkDB server will reject them in case of conflict, just like all-or-nothing semantic in couchdb before ver. 0.9?
- coffeemug 14y agoif "RethinkDB is built to store JSON documents", why then there are tables? JSON docs are stored in tables -- a table is just a collection of JSON documents. We of course also support arrays, but the reason why we start with tables as a primitive is that it allows doing significant optimizations that otherwise would be very hard/impossible. If the entire DB was one huge JSON document, optimizations would be much more difficult to do. Grouping docs into tables essentially gives the system a hint as to the usage intent. is it transactional? Only for changes on a single document. There are no transactional guarantees on queries that touch more than one document.