We wanted to share RethinkDB's next steps in our new home with The Linux Foundation.
We've also had a lot of folks ask if they can donate to support the project. Stripe has generously offered to match up to $25k in donations (which will help fund server costs and future development.) You can learn how to contribute to the project with OSS contributions or donations here: https://rethinkdb.com/contribute
Thank you to everyone involved!
I really like the fact that you query the database by calling methods on an object rather than passing strings to it, feels more like actual programming and protects you from injection attacks.
The WebUI and easy scalability are great features as well.
It and CockroachDB, (for more traditional SQL, same scaleability benefits), are the databases I am most excited about, but I seem to prefer ReQL to SQL despite being vastly more familiar with SQL :-)
Strong promises about consistency
Nosql with joins
Atomic changefeeds (real time)
A great functional query language (reql)
Great admin UI
Simple auto sharding that actually works
One of the key business differences between RethinkDB and MongoDB is that the latter keeps some enterprise-grade features/tools closed-source and available under a commercial license, i.e. the "open core" business model.
This kind of stance can be useful to a community, though, that wants to ensure future proprietary development remains possible (kind of strange to want but it can make sense). I recall when Trolltech did this with Qt. If they went out of business or there were a change of control, Qt would switch from GPL to BSD licensed.
That is why it is really important to have only the best and smartest VCs on board. Edit: Don't give equity up in your company unless your vision aligns with your investors and they can do more than just fund you.
I think continuation of development and community growth even after they closed down is what gives people confidence - and there's no practical way to show that upfront (assuming that having a big/visible community outside of your core company is not viable for such project in that ammount of time) - re-licencing just the first step to that. They proved what happens in a "worse case scenario" but I don't think you could have done it without going trough it.
This allows the company to get larger accounts with no real downside as they would be out of business.
One of the aspects of Rethinkdb I admire most is the tooling. I find myself often trying out something new with React, Postgres, ASP.NET Core, Elm, Go, Kotlin or what not and biasing my experience getting started with preference to use.
I recond Rethink as Pied Piper in Silicon Valley; a great product ultimately being misunderstood. I'm relieved to hear Rethinkdb will live on under the Linux Foundation (and applaud them for doing so) and earnestly hope it re-establishes itself in a niche, such as that of Firebase/Parse, with partnerships and a legacy to rival that of Postgres one day.
I'll explain what I mean by patent notice since those are my words, quick version: If you don't declare that you have patent rights affecting a portion of code you have contributed, you've given those patent rights.
it's my feeling that software licensing day's are over for the little guys. If you are Oracle or Microsoft and have that brand recognition great.
Coupled with commoditization of developers, I think it'd be great if we had a kickstarter site where you could request a commercial project to be open-sourced, pitch in some money to support the developer.
For instance if somebody released an open source version of Hootsuite I think that would put a severe dent in Vancouver's tech scene-Hootsuite customers wouldn't even think twice about switching to a zero cost solution, as it's not a pain killer but a vitamin. Free vitamin is always better than an expensive one. Pain killers on the other hand are less flexible because it's an emotional buy.
An open source Datomic would be wonderful. I worked with Datomic last year and while I enjoyed clojure and datalog, it was also a big pain in the butt to be googling "how do I do X in clojure/datomic/datalog".
A really sharp developer might be able to master it (I'm not) given ample time but it's very expensive both to ramp new developer's up and pay clojure devs which aren't cheap due to their limited supply.
If there was a website like Kickstarter that had a way for people to vote (with money) on open-sourcifying an existing commercial project, would people come?
just wanted to let you know we are working on exactly that: a way to crowdfund open source alternatives to commercial software like Datomic.
Do a search for "letsopensource" on the thread here:
The replication model is similar to Cassandra (ring + redundancy), while the master/slave model and failover has had a lot of work to make it bulletproof.
It will scale well from 3-15 nodes, then it starts to drop off as less than linear growth. But if you need more than that, then you're in a whole other league.
If you want search only, go for ElasticSearch. If you need much greater linear growth at the cost of application complexity, Cassandra. If you need fast memory access, then go for Redis. If you don't need bullet-proof automagic failover, or are willing to pay through the nose for it, go for SQL. If you are okay with a single system, go SQL. Otherwise, RethinkDB should probably be the first choice.
Don't get me wrong, I'll reach for SQL first in many cases... but RethinkDB if I have a choice and HA is a requirement. I also happen to prefer a document-centric model/approach.
The 15-node thing is also a major achilles heel. Who wants to commit to a stack that incurs massive technical debt in the event of massive success? Imagine reengineering your db and your event pushes, at scale...
It's not a fair comparison, RethinkDB is much safer. I'm sure, if you turn down the defaults on both read and write operations on RethinkDB you could scale it well past 15 nodes and with very high read and write throughput.
There are other ways to separate your data depending on use cases. It's just a rough guideline... You'll see similar issues beyond 10-20 servers in a local cluster in many of the NoSQL options.
RethinkDB also has much better consistency guarantees over Aerospike, not to mention being FLOSS under a more permissive license.
Mongo has failed every jenkins test it's been put through, dunno about the status now though. Last I checked Mongo's default durability level was "data loss on power outage". Aerospike failed jenkins too, and not on small edge cases like Mongo, but with major dataloss.
Going by the problems Gitlab has recently with Postgres I wouldn't use that for a distributed database. Likely true for MySQL too.
* Yep. I meant to write Jepsen :)
Still feel they aced it. No one passes Jepsen on their first try. But RethinkDB is the first to immediately fix the issue.
I wouldn't go as far as to call it a nasty issue. It would only happen if you got node failures while reconfiguring your cluster. And reconfiguring the cluster must be initiated by the admin and it's something that happens very often.
I think it's an appropriate home though. ASF always seems like a minefield when I look into some of their projects.
I'm not familiar enough with Express to comment on it.
As far as I know, there is no other solution which gets both things right.
I use it in PartsBox (https://partsbox.io/), a solution for keeping track of electronic components.
I am surprised more people aren't interested in changefeeds — the way I see it, it's the only way to implement multi-user webapps which update in real-time (as in: a change is made in one session and all other open sessions get the update immediately).
Couchbase Mobile has changes feed as well.
How you are defining/measuring "well-implemented".
Not sure why there is no Jepsen test of Couchbase. I see many requests, and a closed issue with no discussion of why it was closed.
Leaving aside reliability and ease of use, let's focus on correctness. RethinkDB lets me query a database, get initial data, and then get all the subsequent changes to that data. Notice there is no race condition there.
You can use this to implement systems where when a user logs in, gets the initial data loaded, and then subsequent changes are sent as they happen. Even if the same data is modified by someone else during this time (e.g. during the initial load), things will be processed correctly.
Comparing this to attaching a processor to a feed of all operations in the database doesn't make a lot of sense, because the oplog doesn't provide the same functionality.
Could you post a link please?
So I guess Mongo+Meteor match up with RethinkDB... sort of.
Obviously the performance characteristics will be impacted by the volume of changes that arrive to the database, but the architecture to support this is highly parallelized (all the way down to cores on the CPU.)
I like to think of it as MongoDB done right. Above and beyond better consistency models and a broader, more well thought out API, they have an admin interface that is second to none (well SQL Management Studio might be slightly better). It's definitely better than any other "NoSQL" database.
A couple years ago, I had been considering it for a project, at the time it was missing a required feature for the project (geolocation indexes), so I wasn't able to use it then... but I followed the development of the feature, and prerequisites for that and the automatic master failover and the engineering discipline and planning was far better than pretty much any project I'd been exposed to ... The team(s) and their energies were not wasted, and I really appreciate what they have done.
I was sad to see the company shutter, but very happy to see the project under LF, and hope that it really takes off from here. It would be a pretty natural fit as an RDS service under Amazon and there are a few hosted options. Horizon also looks interesting compared to firebase.
This is another feature over competitors is that streaming updates is in the box, and not bolted on to oplog processing like competitors.
It explains RethinkDB's ideal use cases, explains how to compare it to other databases, and details some of the differentiating features.
I would totally love a dynamodb or firebase kind of payment structure!
I specifically excluded compose not because their service is not great (from what I've heard - it's excellent) but more so because they charge a premium for it.
I am very passionate about XaaS (X as a service) think that we need a lot more DBaaS and we just don't seem to have that many options to choose from which is sad considering almost all software projects out there - especially the hobby ones would benefit so much from such a service.
Exactly what is and is not allowed when making a service based on an Open Source tool?
Or would it just be considered a service and, just like volunteering, you can't really write it off.
I can see a foundation that provides software to the community, especially communities that would other wise not have access to it, and or municipalities, etc.
"The company behind RethinkDB shut down last year after struggling to build a sustainable business around the product. Many former RethinkDB employees currently work for Stripe, where they help build infrastructure for developers around the world."
Is Stripe a big RethinkDB shop or is there another connection between the two?
I played with rethinkdb and horizon and it looked like the the way to go to me.
When you see that with a few easy lines of code, any change in state in the browser of your computer it's updated in the browser of your mobile, without practically doing anything in the server, it feels like the future.
The lack of that was our main reason for staying away.
Fantastic to hear RethinkDB lives on. Long live RethinkDB. ;-)
I just hope the rigor and correctness that have characterized RethinkDB continue moving forward as a community project. Part of me feels sad it never caught on and will never be a commercial success like Mongo, but that's in the past.
Horizon is another exciting project I hope gets traction.
While RethinkDB is probably most comparable to Mongo, it's worth noting that the sharding/replication/fail-over support and model is much better than Mongo's. Beyond that, the update notifications (streams) are in the box, where with mongo it's bolt-on. Also, rethink supports joins at the server (though best to avoid a lot of the time).
The admin ux is pretty awesome, and the dev team has been very cool to follow.
Does RethinkDB have distributed joins then? These sort of notoriously difficult to implement well no? I see you say its best to avoid. I would curious to hear you experience with them.
In their FAQ, they call out these types of applications: Collaborative web and mobile apps, Streaming analytics apps, Multiplayer games, Realtime marketplaces, Connected devices