I'm looking to build an app that works cross-platform
Desktop - Electron, NodeJS, React, Redux
Mobile - react-native
Web - NodeJS, React
I need a reliable database for all the platform and my team is also looking to build a server to maintain the DB so I should be able to do that also. The apps will work offline and when they come online they should sync to the server. So please help me in choosing the best. I no option given please write on your reply. I think this will be helpful for lost of developers.
Thanks --RKG
The one which can store data.
I'd say go with easybase with easybase-react library. Way easier to setup and free to get going.
Use firebase for the same. Because firebase provide us offline support and it's real time as well.
Selection of database depends upon what problem you are trying to solve.
You have given 4 options out of which 3 are Nosql, 1 is sql database.
As your back-end will be in nodejs, I think you will choose a particular framework like express, hapi etc instead of going with raw nodejs.
As we don't know what problem you are trying to solve, let me give you a small detail about the databases you mentioned and what problem they solve.
Mongodb is Nosql db which is document based db. It easy to use mongodb with nodejs frameworks like express, hapi using mongoose(which is orm). It has several limitations like document size should be less than 16mb.
RethinkDB is also a Nosql, but has few features like change feed which make's it friendly for real time applications. Some people call it 'Mongodb done right'. I have not explored it that much as it was similar to mongodb and had only few difference. We can achieve same things in mongo with little twists. But it has excellent admin dashboard. Rql is used to access db, which has developer friendly syntax.
PostgresSql is a Sql database. This is scalable, big players use it. ACID properties. Actually this is different game, you mentioned 3 Nosql db, and 1 sql db. You can't compare sql db with nosql db. They have their own advantages like atomicity, normalization. So this is not right comparison.
I don't have idea about CouchDB.
To make your app work offline, you will have to use two databases, 1 at server side and another one at client side. Let's take example of Whatsapp. If you are trying to achieve something like that, then use any database at server, and use sqllite at client side in android app. You will have to write separate logic for synchronization. You can't use mongodb, postgres, rethink at client side.
To create web applications which works offline, google just launched a course for that. Progressive web application development, where you can send push notifications to web apps, background syncing using service workers, etc. So user is able to access the website even in poor internet connection or offline.
Here are some courses which I found and will be useful for you to achieve it.
developers.google.com/web/ilt/pwa
udacity.com/course/offline-web-applications--ud899
pluralsight.com/courses/web-apps-progressive-gett…