3 ms·
Interesting read, although other users have pointed out that some of the problems are solvable. I started using Firebase in May after the integration with Goog
by nevi-me 10y ago
Interesting read, although other users have pointed out that some of the problems are solvable.
I started using Firebase in May after the integration with Google Play. I run a public transit app/website (movinggauteng.co.za), and I have a few 'real-time' features such as basic chat and public transit updates/delays during peak periods.
After hours on the Firebase docs, I'm still convinced that I'm better off with my own storage and database. I only use Firebase for Auth, Notifications (at times), Device testing, and almost everything else that doesn't require storing data that I don't already store myself.
I've been a fan of MongoDB from the very start of the project, and I'm still going strong with it. It works great for geospatial queries, and tailing the oplog is awesome.
* When transit notifications are created, I tail the oplog to pick them up, and send them to devices/browsers using Cloud Messaging.
* Send new chat messages to admins
* Sync user information in 'real-time', such as when marking a stop or route as a favourite.
These are things that I could also do with Firebase, but to be honest, I think allowing me to specify security rules in just JSON is a bit too extreme.
Firebase Auth complements my current auth system, because it was better than rolling out my own OAuth impl for Android clients (website is all session-based). Even though I use it, I still store all the user info I need on my side. Firebase Auth is just a 'helper' to authenticate users on mobile.
A lot of people would say "use PostgreSQL and save yourself the hassle". My view is that you should evaluate what your needs are, and use the tools that meet your needs.
I have a project where we're I'm using PostgreSQL and MongoDB together.
I'm storing a lot of financial data in PostgreSQL. I use MongoDB to only store metadata about each running task, I create a Mongo document and pass its ID to all the workers. When each worker completes a part of their task, they send acknowledgement to Mongo. I then pick up that acknowledgement through the oplog, and pipe it to the browser through a socket. Works like magic for me. I could probably do all of that in PostgreSQL, but the combination meets my needs well :)