Originally published at wajahatkarim.com
When it comes to cloud and database hosting, there are several options available for the developers such as Firebase, Firestore, AWS, Google Cloud and so on. If you are curious about Firebase vs AWS comparison, you can read this Firebase vs AWS article here.
In this article, you’ll come across the major differences that can help you to figure out the better alternative — especially between Firebase and Firestore.
Cloud Firestore: It’s a Firebase new database that is used to build mobile apps. It has better scalability than a realtime database. Also, they have faster queries with richer features, etc.
Firebase Realtime Database: It’s an older and original database that will give you a low latency solution for mobile apps. It will sync your data instantly.
Now you might be thinking that both databases are good. So which should I go with? You can answer yourself once you know the major differences.
1. Data Model
Doesn’t it sound like the Machine Learning Model? LOL. But it’s not. Sadly!
The good news is that both have NoSQL databases. Find out more:
- Firebase Real-time Database: In Firebase Real-time Database stores data in a large JSON tree. That’s why small or simple data is easy to store. But complex and hierarchy based data is hard or organized when it’s scaled.
- Cloud Firestore: In Cloud Firestore, data is stored as a collection of documents. Small data is easy to store in documents that are pretty similar to JSON. On the other hand, Cloud Firestore complex and hierarchy based data is very easy to organize at scale. You can use subcollection in the documents. Cloud Firestore requires less normalization.
2. Real-time and Online Support
Both the database supports offline mode (means support local storage) and supports real-time SDKs.
Real-time Database: Offline support only for mobile (Android & iOS) devices.
Cloud Firestore: Offline support for mobile (Android & iOS), web clients as well.
It can be very useful to gather the information that your client is online or not.
- Real-time Database: Real-time database records client connection status and provides us updates whenever the client connection is online or offline.
Cloud Firestore: Not supported natively. But that doesn’t mean you don’t have access to this feature. You can use real-time database support for presence, just syncing cloud Firestore and real-time database with the help of cloud functions.
You can sort, retrieve and filter any kind of data from databases through queries.
- Real-time Database: You can use deep queries. But have some limitations onfiltering and sorting the functionalities. You can use filter or sort on a property in your query but can not process both. By default, queries are deep and always return a complete subtree.
- Cloud Firestore: You can use index queries with good compoundfiltering and sorting. You can use sorting, combine filtering and chain filter on every property in one single query. Here queries are light; they only return a document in the particular collection or the group of the collection but never return sub collection data. It means that Firestore Queries must return the whole document.
5. Writes and Transactions
- Real-time Database: Real-time database gives you a basic writes and transactions operation. Likewriting data through the update and set operations. Here transaction is on specific data subtree.
- Cloud Firestore: Cloud Firestore gives you advanced writes and reactions operations like writing data through the update and sets operations and you can use advanced transformation i.e., array and numeric operations, etc. Transactions can automatically write and read data from any part of your database.
6. Reliability and Performance
Reliability & performance are important parts where you can decide which database you want to choose.
Real-time Database: It is a single region solution. In a single region, the database is limited to zonal availability. It provides a low latency. I think it’s an ideal option for the apps which use frequent syncing.
Cloud Firestore: It is a multi-region solution, which means it scales automatically. Share your data across multiple data centers in separate regions just to make sure scalability is global and provides us strong reliability. It also provides regional and multi-regional configurations in the world.
Real-time Database: In real-time database, the scaling process is not automatic, we have to scale on your own. It scales around 200k connections simultaneously and gives you 1k writes per second in a single database. Real-time database gives you no limit on writes.
Cloud Firestore: In the Cloud Firestore Scaling process is automatic. Firebase does it on their own. In Cloud Firestore, it can be scaled over 1 million connections simultaneously and gives you 10k writes per second. And Firebase is going to increase this limit in the future. But the cloud Firestore has a limit on writes to every single document or index also.
Real-time Database: Authorization and validation are separate. Write and read rules from the mobile SDKs which are secured byFirebase Real-time database rules. You can easily validate the data separately with thevalid rules.
Cloud Firestore: Authorization and validation are combined. Write and read rules from the mobile SDKs which are secured by Firestore security rules. Here rules can restrict your queries because if a query’s result might be a kind of data that the user doesn’t have access to then the entire query fails.
You can check out the pricing details from here for Spark plan, Blaze plan, and Flame plan.
Real-time Database: Firebase Real-time database charges only on Storage and bandwidth, which means other things are free. but I think storage and bandwidth charges are a little bit high.
Cloud Firestore: Firebase cloud Firestore charges on your operations like read, delete & write and storage and bandwidth charges are low rather than Real-time database.
In simple terms, if you are small scale go with Real-time or if you want to grow big, go with Cloud Firestore.
Which Is the Winner?
I recommend you to go with Cloud Firestore.
The reason is pretty simple because it’s a new database and it is recommended by the Firebase team.
Moreover, Firestore gives you additional functionality, better performance, more robust security rules, and most importantly, it’s scalable.
Have fun and use your code for good. 🙏
At the end, please Subscribe to my newsletter to get more tutorials and tips on Android development directly in your inbox.
Wajahat Karim is a graduate from NUST, Islamabad, an experienced mobile developer, an active open source contributor, and co-author of two books Learning Android Intents and Mastering Android Game Development with Unity. In his spare time, he likes to spend time with his family, do experiments on coding, loves to write about lots of things (mostly on blog and medium) and is passionate contributor to open source. In June 2018, one of his library became #1 on Github Trending. His libraries have about 2000 stars on Github and are being used in various apps by the developers all around the globe. Follow him on Twitter and Medium to get more updates about his work in Writing, Android and Open Source.
Also, if you have any questions you’d like him to answer, contact him through his website at wajahatkarim.com with DEAR WAJAHAT in the subject line.