Realtime Database vs. Firestore : 9 major differences.
Before knowing about the difference between Realtime Database and Firestore, let’s take a brief look at what they really are.
Realtime Database and Firestore both are offered by Firebase from Google. These are two types of cloud-based client- accessible database solutions for mobile apps that support real-time data syncing.
Realtime Database: It is Firebase’s original database. An efficient and low latency solution for mobile apps that require synced states across clients in real-time.
Firestore: It is Firebase’s newest database for mobile app development. With a new and intuitive data model, it is a successor to the Realtime Database.
Following are the major differences between Realtime Database and Firestore:
- Data model.
- Realtime and offline support.
Both (Realtime Database and Firestore) have Mobile-first, realtime SDKs and both support local data storage for offline-ready apps. Realtime database facilitates offline support for Android and Apple only, whereas Firestore facilitates offline support to Android, Apple and web clients.
Knowing if the client is online or offline can be useful. Realtime database is able to record changes in the client’s connection status and give updates accordingly. Presence is supported here.
Whereas in the Firestore present is not supported natively. But, by syncing Realtime Database and Firestore using cloud functions, you can leverage Realtime Database’s support for presence.
It is possible to retrieve, sort, and filter data from either database through queries.
Realtime database supports Deep queries with limited sorting and filtering functionality. The queries are deep by default; they always return to the entire subtree. These queries can sort or filter on the property, but not both.
Whereas, Firestore supports indexed queries with compound sorting and filtering. The queries are shallow; they only return documents in a particular collection or collection group and do not return subcollection data. Filtering and sorting can be combined on a property in a single query.
- Writes and Transactions.
Realtime database offers basic write and transaction operations. Data is written through set and update operations while transactions are atomic on the specific data subtree.
Firestore offers advanced write and transaction operations. Data is written through set and update operations as well as advanced transformations such as array and numeric operations while transactions can automatically read and write data from any part of the database.
- Reliability and performance.
Realtime database is a regional solution. It demonstrates extremely low latency as the databases are limited to zonal availability within a region, making it an ideal option for state-syncing.
Firestore is a regional and multiregional solution that scales automatically. It ensures global scalability and strong reliability by housing your data across multiple data centers in distinct regions.
In Realtime Database, scaling requires sharding. Scaling beyond 200,000 concurrent connections and 1,000 writes/seconds in a single database requires sharding data across multiple databases.
In Firestore, scaling limits are 1 million concurrent connections and 10,000 writes/seconds currently, as the scaling is automatic. It is planned to increase these limits in future.
Realtime Database provide security that separates authorization and validation. Reads and writes from mobile SDKs are secured by Realtime Database Rules.
The security provided by Firestore combines authorization and validation. Reads and writes from mobile SDKs are secured by Cloud Firestore Security Rules.
Both solutions are available on Firebase’s pricing plans viz., Spark, Flame and Blaze.
Realtime Database charges only for bandwidth and storage, but at a higher rate.
Firestore charges primarily on the operations performed in the database (read, write, delete) at a lower rate, bandwidth and storage. To make sure you don’t go over the costs you are comfortable with, Firestore supports daily spending limits for app engine projects.
Hopefully the comparison has helped to get to know the Realtime Database and Firestore. Both the databases can be used in the same Firebase app or project. Both databases are capable of storing the same types of data and client libraries work in the similar manner.