Just want to note Couchbase is not just for mobile. Couchbase Server is an enterprise-class document-oriented (like Mongo) db with a dynamic query language that's a superset of SQL. (FD: I work for Couchbase).
HN user
HodGreeley
Part of the point is you don't need so many joins.
Not sure of others, but not true with Couchbase. You have queries just as flexible as with SQL.
Curious how this compares to Couchbase + N1QL, since that gets you a document db that also supports full SQL.
This was a bit of humor delivered for entertainment at the closing of an Android conference (360AnDev, which I highly recommend). The speakers are two of the most well known in the Android community (Chet Haase and Romain Guy, both from Google).
On the "easy" front, your suggestions are cool. Why do you think this hasn't happened?
That analysis is from 4 years ago and is wrong in many, many ways at this point. As for "the general consensus", I'd like to see evidence that's true among real enterprise users. (FD: I work for Couchbase.)
The native/hybrid/web discussion has been going on a long time. The general consensus I've found is that web/hybrid is fine for some things, like magazine style apps, and untenable for more complex needs.
The app described seems to fit into the magazine style category (and was developed on a pretty high-end device). So to me this comes off as a "works for me" inappropriate generalization.
Couchbase (not CouchDB) gives you a whole bunch of things. You get the embedded document database, sync/replication, conflict management, auth, scale, data routing, querying, and more. Not every project needs all these things, of course. It's just damn hard to get this stuff right when you do need it.
I also personally find it way easier to use than the standard stores on Android and iOS for on-device persistence. 2.0 is coming up and should simplify the use a bit, too. So as it stands now I'd say the main sweet spots are, ironically, around the two ends of the spectrum. Easy to use for persistent local storage with no sync, and the industrial strength solution when used with sync.
(I work for Couchbase on the mobile side.)
With Couchbase Mobile, we shy away from the "realtime" claim, because it's vague. (Ask a high-frequency trader how they define realtime...) Having said that, we have customers that are very happy with the response times. Always been open-source. Check our blogs for steps to get everything set up front to back to develop on one machine.
Couchbase Mobile is open source. Couchbase only provides the data platform, but is significantly more sophisticated at it than Firebase. Firebase offers many other services, so you can't really make a direct comparison. In simple terms, the way I think of it, Firebase goes wide, offering a package with many elements, while Couchbase goes deep on one area, the data platform. (FYI I work at Couchbase.)
Thanks for the kudos. The team works very hard to make the offline first capabilities best in class.
I'm not sure who at Couchbase is "strongly" recommending against the Community Edition. Of course we'd like to have people on the Enterprise Edition, but I think the information is out there to make an informed decision. You should only be getting a hard push away from CE if they really believe you'll need the support. Anyway, this is good feedback.
I think I can give one concrete example where a NoSQL choice (often) makes sense. Common modern day scenario in mobile is to build an app and iterate. Migration in RDBMS rapidly becomes a real pain. Worse, you have no good sync solution in case you need it. Contrast with something like Couchbase Mobile. NoSQL embedded db is much easier to get going with. (Just check the Android docs on using SQLite and see how it compares to "here's my JSON, done".) Sync doesn't get in the way, but if/when you need it, you're going to be really happy it's there. (Disclosure: I work for Couchbase.)
Biased opinion, but Couchbase is like CouchDB on crack. So, by extension... (Disclaimer: I work for Couchbase.)
If you're looking for offline-first, Couchbase Mobile natively supports a range of platforms. CouchDB + PouchDB gives you a JavaScript option. (Currently you can use PouchDB with Couchbase as well.)
I don't think of Realm as being at all like Firebase, except from a very high level. Realm isn't hosted, it's an object database, until recently didn't do sync, and more.
Have you looked at Couchbase? NoSQL on-device db, cross-platform for Android, iOS, native Java, and others. (I work for Couchbase.)
NoSQL databases arose in response to the growth and change in data use, driven largely by the web. Typical needs cited include scalability, availability, performance, and flexibility. Development has been going on for a long time.
I think most would agree there is no longer a one size fits all (or even most).
Realm (and I know someone will correct me if I'm wrong) started out as an on-device only replacement for relational-style dbs focused on ease-of-use and performance.
It's not the only one. Couchbase Mobile is a NoSQL stack that has an on-device db that's also easier to use, and has focused for many years on getting sync right (which is a hard problem).
Have to agree with pmalynin, there are other dbs that do this.
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.
Not understanding the idea here. PouchDB isn't a BaaS. RxDB is a wrapper for PouchDB, correct? PouchDB is a great project, so not criticizing, just not sure what criteria you're using.
Couchbase fits the bill as well, and has serious real-world deployments. https://developer.couchbase.com/mobile (Yes, I work for them.)
Another option to check out is Couchbase Mobile. Open source, self-hosted database with full offline functionality and a solid sync solution.
I think Firebase is pretty amazing. Have been a fan since I met some of the team (I think it was at the 2011 Launch conference). Like anything, though, there are tradeoffs.
Briefly, I'd say that there's overlap, with Couchbase Mobile tending to shine toward the more complex end (including making the 10% much easier), and also being extremely easy to use as a substitute for SQLite/Core.
(I work for Couchbase.)
Apteligent, for one. Long time player with a strong offering for crash reporting and much more. (I'm not associated, just a fan.)
I don't actually think it is easier to get adoption. The major mobile platforms have SQLite built-in (under the hood in the case of Core Data). I think that's actually a strong barrier to overcome.
Furthermore, mobile is becoming in-demand or even core in both consumer and enterprise. For enterprise especially, though, you have to think of it as mobile + sync, not on-device only.
Turns out sync is the really hard part when you want to build something that's robust in the face of poor network connectivity.
NoSQL's only selling point is you don't need to learn SQL? Hardly true.
Major Oracle shops aren't dumping them for Mongo/Couchbase/... because they're trying to avoid SQL. They do it for scalability, availability, performance, flexibility and more.
I don't see that the facts in the real world back you up here.
Not claiming NoSQL is a panacea. You're definitely making some trade-offs, and in many cases it's just the wrong tech. But it's absurd to say it's happening to avoid a learning curve.
Hod @ Couchbase. Looks like an excellent tutorial. I understand you have limited time, and this is providing a great resource to the community. I'd ask, if you have the chance, to take a look at Couchbase Mobile. I'm of course biased, but I think I can legitimately claim that Couchbase is on par with Realm (as evidenced by business critical apps using it in large scale deployments). Happy to chat about it (hod@couchbase).
Hod @ Couchbase. Couchbase Mobile has had sync for a long time. It's used in serious, large scale deployments. (Check out the video from Ryan Air if you want to see a really cool example of how they were able to improve their app with it.) Couchbase is a document oriented database storing JSON and blobs. (I'm not a Realm expert, so I won't attempt to compare sync solutions.)
If you write something for Couchbase (which PouchDB supports) I'd be interested to hear about it.
What's the app platform you're targeting?
Check out PouchDB, too. Open-source, cross-browser, and quite mature. Works in Node as well. Syncs with Couchbase. Couchbase also has an embedded native database for Android, iOS and several other platforms that can coexist with PouchDB. https://pouchdb.com/ http://www.couchbase.com/nosql-databases/couchbase-mobile (Disclosure: I work for Couchbase.)
I think the key is "object" database. PouchDB is a NoSQL document database. It certainly predates Realm.
I'm assuming Horizon is in limbo along with RethinkDB?