Realm Sync vs Firestore Pricing

I’m considering using Realm Sync for a new project, but I’m trying to understand if I’m misunderstanding the pricing.

If I understand the pricing (and that’s a big “if”), Firestore seems a lot more economical. Unless I’m missing something, the free tier seems far better on Firestore as well as the pricing after that (seems like it’s half the cost of realm sync).

Firebase Pricing
https://cloud.google.com/firestore/pricingFirebase Prices for Requests
Reads $0.036 per 100,000 documents
Writes $0.108 per 100,000 documents
Delete $0.012 per 100,000 documentsData Storage = $0.108 / GB per monthLet’s say that averages out to around 0.072 per 100,000 requests (excluding deletes)

Realm Sync Pricing
https://docs.mongodb.com/realm/billing/ $0.2 per 100,000 requests (effectively double if I’m reading it correctly).
Plus a sync cost of 0.00000008 / min.
Plus data transfer = $0.12 / GB

Seems like Realm double/triple charges for syncs (since it charges for the requests, sync time, and data transfer), and the cost per request being more than double than Firestore

I guess the biggest difference is with Firebase you’re going to be paying a monthly fee for storage but I think the requests will be the most costly aspect of most apps (I could be wrong). Beyond that, Firestore isn’t truly off-line first.

Check out the examples for example mobile product cost:
Firebase Example:

Realm Example (go-to mobile application section on the Realm Pricing Page above as I’m restricted in posting images or additional links)

The costs per request seem to be the big differentiator. The free tier seems to be more generous with Firebase as well. Am I missing something or is Realm significantly more costly when compared with Firestore?

2 Likes

Long time Firebase and Realm developer here…

I am not sure a comparison can be made between the two products as they serve different purposes.

Realm is an offline first database and all of the app data is persisted locally and syncing in the background when necessary. On the other hand, Firebase is an online first database and data exists in the cloud* and sync’s continually.

So while you can compare some numbers, the bottom line is that if you’re fetching Realm data that has already been sync’d it’s local and (essentially) $0 cost. Whereas if you’re fetching Firebase data it will pull from the server at a cost.

I would suggest evaluating how the app is going to be used - mostly offline first or online first and once you have clarity on that, comparing pricing would be more applicable.

*while firebase offers offline persistence, it’s designed for brief outages, like when a train disconnects as it goes through a tunnel.

4 Likes

Firestore pricing is based on reads/writes per collection and Realm has it per request. Doesn’t that make a big difference or am I missing something? From this point of view it seems that Firestore might be a lot more expensive if there is a need to read/write/delete multiple collections/documents.
For example - you want to execute query of 500 collections/documents.
So for Firestore this will count as 500 reads, but for Realm this will count as 1 request. Same goes for writes/deletes. Could you please confirm this?
So if this is correct, then it looks like Realm might be a lot cheaper when it comes to application that needs to query/modify/delete multiple collections/documents?

3 Likes

On the other hand, Realm Sync pricing is strangely identical to AWS App Sync.

About connection vs atomic change:

  • Does it mean that if an android app goes online and synchronize 500 items from server. We will only pay for one request?
  • If we create 500 items within a couple of seconds, while the application is connected. Will it bulk into one or a few requests, or into 500 requests?
1 Like

MongoDB Atlas Device Sync will batch the operations in as “few requests” as possible.

Based on the total size of the events, they are batched as densely as possible up to 1MB