Compare

ThimbleDB and Firestore

Firestore is a managed document database with client SDKs, queries, transactions, real-time listeners, and offline persistence. ThimbleDB is an application-owned object-storage protocol with brokered reads and connected writes.

Choose Firestore when

  • Real-time listeners are central to the user experience.
  • Client SDKs should queue and synchronise offline writes.
  • Document queries, filters, and managed indexes are required.
  • Transactions or batched writes span multiple documents.
  • A Google-managed database and security rule model are acceptable.

Firestore web persistence is optional and uses a local cache. Its documentation warns that cached data is not automatically cleared between sessions, which matters for sensitive applications.

Choose ThimbleDB when

  • Object storage should remain the durable backend.
  • The application wants encrypted cache entries under its own device key.
  • Writes must pass through an application-owned authority.
  • User and tenant scope separation should influence stored object paths.
  • Queries fit declared indexes or bounded collection scans.
  • The app does not need offline writes or real-time subscriptions.

Capability comparison

CapabilityThimbleDBFirestore
Service modelSelf-hosted authority and caller-owned storageManaged database service
Query modelID reads, declared indexes, and bounded scansIndexed document queries
Real-time listenersNoYes
Offline readsPreviously cached encrypted objectsCached documents and queries
Offline writesNoClient changes synchronise when online
TransactionsConditional collection updatesMulti-document transactions and batched writes
Browser persistenceSeparate non-extractable device keyFirestore-managed local cache
Provider portabilityR2, S3, Azure Blob, local filesGoogle Cloud and Firebase
IdentityExternal OIDC through authorityFirebase Auth or application-defined integration

Security model difference

Firestore commonly authorises client SDK operations through security rules. ThimbleDB keeps private object storage behind an authenticated authority and does not give storage credentials to the browser.

Sources

This page is built from the repository source.

View or improve this page on GitHub