9 ms·
RethinkDB 2.1.5 performance and scalability
- deleted 10y ago[deleted]
- overcast 10y agoThis is probably my favorite database to work with currently. Real time, relational document storage. Best of three worlds.
- marknadal 10y agoRelational documents? That sounds like graphs but Rethink is not a graph database (compared to Neo4j, GUN, Orient, Arango, etc). Do you have a link to explain what you mean?
- TylerE 10y agoIt can do (performant) joins. https://www.rethinkdb.com/docs/table-joins/ https://www.rethinkdb.com/docs/table-joins/
- rspeer 10y agoWhat would you say is the distinguishing feature of whether something "is a graph database"? To put it another way, what do the databases you listed have in common with each other that they don't have in common with other NoSQL databases, besides marketing?
- niftich 10y agoA graph database exposes an object model that fits graph terminology: nodes and edges. They (hopefully) are optimized for graph-traversal operations like hopping along a series of edges, which would be painful in a relational model. In this situation, NoSQL is the marketing term, while a graph database is a clear concept with corresponding performance and capability expectations.
- rspeer 10y agoI'm not asking you to explain to me what a graph is. I've found that it's easier and faster to import and traverse edges in SQLite or PostgreSQL than in some of the systems you listed. I haven't tried RethinkDB but it sounds promising. You use words like "hopefully" and "performance and capability expectations", but distinguishing databases based on their hopes and expectations is not at all a clear concept. The main difference seems to be whether you call things "nodes and edges" or "documents and references" or "rows and joins" in the documentation. (edit: removed some negativity, and I'm aware some remains)
- dingfeng_quek 10y agoThe most common and relevant difference is that a graph database has a storage engine that is optimized for graph traversal. For example, in a RDBMS, another row is referenced via a foreign key which involves a lookup to an indexed column, while in a graph database, a node is often referenced by its storage location. This makes graph traversals much cheaper, and is also something that an RDBMS is unable to optimise for because of conflicts with the relational model. Similarly, the query language is optimised for graph traversal types of queries, in a way that would not be possible in an RDBMS due to the relational model constraints, and also because some of the query operations would be extremely inefficient in an RDBMS storage engine. > That sounds like graphs but Rethink is not a graph database (compared to Neo4j, GUN, Orient, Arango, etc). With regards to the listed databases, some are, but the rest are not (and do not claim to be) graph databases. Note: It's different people replying to you.
- rspeer 10y agoFWIW, I should mention that I have tried one DB that seems to qualify as a graph database, in that it actually does seem to import and traverse edges efficiently, which is Blazegraph. You tend to have to search past several other things calling themselves graph DBs to find that one. (But I'm a bit afraid of using it. Any armchair lawyers want to tell me if code that uses a GPL database has to be GPLed itself?)
- ddrum001 10y agoNot to mention the great push-based features!
- vonklaus 10y agoI really like using rethinkdb. Currently, I am using thinky for node as an orm which works quite well for my purposes. If anyone else works with nodeJS I would be interested to know: * how you use rethinkdb * what you don't use it for, and why * good examples resources like ORMs, repos, and data models. Some things I like/use/reference: - https://github.com/drhurdle/node-rethinkdb-auth-starter https://github.com/drhurdle/node-rethinkdb-auth-starter - Yo Express, provides a nice structured MVC application with thinky and rethinkdb with gulp - https://www.airpair.com/javascript/posts/using-rethinkdb-with-expressjs https://www.airpair.com/javascript/posts/using-rethinkdb-wit...
- cjhveal 10y agoWhile thinky is great and does a ton of heavy lifting for me, I've found it a little bit confusing when needing to write more advanced queries. I would personally recommend to start learning reql + rethinkdb with the rethinkdbdash[0] driver first. It helps with managing connection pools and working with Promises but still lets you play nice with the (very good) rethinkdb docs while ramping up. [0]: https://github.com/neumino/rethinkdbdash https://github.com/neumino/rethinkdbdash
- tracker1 10y agoMostly agree with ORMs in general, I find in JS they don't offer nearly as much as simple transforms against the direct objects, though they do provide schema integrity that nosql/document data stores tend to skip over.
- chrisfosterelli 10y agoWe had this experience as well. We started using Thinky for a few projects, but found that as soon as we need more complex queries it became very awkward to work within Thinky to do those. Eventually, we discovered ReQL by itself is just great to work with (especially with rethinkdbdash). Writing your own queries also has significant atomicity benefits over Thinky.
- overcast 10y ago
- colordrops 10y agoWhat are some counterindicated use cases for rethinkdb?
- Scarbutt 10y agoIf you need ACID.
- tracker1 10y agoI would limit that to atomic commits across multiple records... IIRC, you can do an atomic commit to a single record, and the consistency and durability are tunable. Overall, it's pretty nifty, hoping to find a chance to actually use it. Early on the lack of geo-indexing and automagic failover were features I'd find important for a lot of setups (now has these), but lack of atomic commits across multiple tables/collections not so much.
- chucksmash 10y agoThere are no transactions - updates to an individual document are atomic but you are on your own if you need all-or-nothing updates again multiple documents.
- Scarbutt 10y agoWould it be an antipattern (design and performance wise) to have huge documents in rethinkdb? for example, using a single document for each user in a web app.
- chucksmash 10y agoI'll let someone else field that because I'm not knowledgeable enough to say one way or the other. The inter-document JOINs were one of the features that first drew me in so all I can say is it doesn't match my usage.
- embwbam 10y agoI've found this to be the case. While RethinkDB has many features to help you drill in to nested content, you'll end up missing document-level features fairly soon and want to split things up.
- Cidan 10y agoWe use RethinkDB for our home grown monitoring system; it's incredible. We have several hundred clients connected, inserting monitoring data and doing some pretty complex queries. In the ~2 years we've been using RethinkDB, we have never experienced a failure. If I could go back in time, I would use RethinkDB for our actual product.
- jtmarmon 10y agoHas the live query stuff performed well? i.e. subscribing to some arbitrary db query for new records?
- hipsterrific 10y agoI love how the rethink team keeps improving an otherwise wonderful document database. ReQL is also super nice. :)
- gshx 10y agoDoes anyone have real prod scale numbers - even order of magnitude concurrency would be helpful. We're obviously very wary of trying out new and young data stores.