Firebase offers two cloud-based, client-accessible database solutions that support realtime data syncing:
Cloud Firestore is Firebase's newest database for mobile app development. It builds on the successes of the Realtime Database with a new, more intuitive data model. Cloud Firestore also features richer, faster queries and scales further than the Realtime Database.
Realtime Database is Firebase's original database. It's an efficient, low-latency solution for mobile apps that require synced states across clients in realtime.
Which database is right for your project?
We recommend Cloud Firestore for most developers starting a new project. Cloud Firestore offers additional functionality, performance, and scalability on an infrastructure designed to support more powerful features in future releases. Expect to see new query types, more robust security rules, and improvements to performance among the advanced features planned for Cloud Firestore.
As you're choosing between database solutions, consider the following differences between Cloud Firestore and the Realtime Database.
Data model
Both Realtime Database and Cloud Firestore are NoSQL Databases.
Realtime Database | Cloud Firestore |
---|---|
Stores data as one large JSON tree.
Learn more about the Realtime Database data model. |
Stores data as collections of documents.
Learn more about the Cloud Firestore data model. |
Realtime and offline support
Both have mobile-first, realtime SDKs and both support local data storage for offline-ready apps.
Realtime Database | Cloud Firestore |
---|---|
Offline support for iOS and Android clients. | Offline support for iOS, Android, and web clients. |
Presence
It can be useful to know when a client is online or offline. Firebase Realtime Database can record client connection status and provide updates every time the client's connection state changes.
Realtime Database | Cloud Firestore |
---|---|
Presence supported. | Not supported natively. You can leverage Realtime Database's support for presence by syncing Cloud Firestore and Realtime Database using Cloud Functions. See Build presence in Cloud Firestore. |
Querying
Retrieve, sort, and filter data from either database through queries.
Realtime Database | Cloud Firestore |
---|---|
Deep queries with limited
sorting and filtering functionality.
|
Indexed queries with compound
sorting and filtering.
|
Writes and transactions
Realtime Database | Cloud Firestore |
---|---|
Basic write and transaction operations.
|
Advanced write and transaction operations.
|
Reliability and performance
Realtime Database | Cloud Firestore |
---|---|
Realtime Database is a single-region solution.
|
Cloud Firestore is a multi-region solution that scales
automatically.
|
Scalability
Realtime Database | Cloud Firestore |
---|---|
Scaling requires sharding.
|
Scaling is automatic.
|
Security
Realtime Database | Cloud Firestore |
---|---|
Cascading rules language that separates authorization and validation.
|
Non-cascading rules that combine authorization and validation.
|
Pricing
Both solutions are available on the Spark, Flame, and Blaze pricing plans.
Realtime Database | Cloud Firestore |
---|---|
Charges only for bandwidth and storage, but at a higher
rate.
Read more about Realtime Database pricing plans. |
Charges primarily on operations performed in your database
(read, write, delete) and, at a lower rate, bandwidth and storage.
Cloud Firestore supports daily spending limits for Google App Engine projects, to make sure you don't go over the costs you're comfortable with. Read more about Cloud Firestore pricing plans. |
Using Cloud Firestore and Realtime Database
You can use both databases within the same Firebase app or project. Both NoSQL databases can store the same types of data and the client libraries work in a similar manner. Keep in mind the differences outlined above if you decide to use both databases in your app.
Learn more about the features available in both Realtime Database and Cloud Firestore.