Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You can represent graph-like relationships in Firebase, but none of its database products is a native graph database. Choose between Cloud Firestore’s documents and collections, Realtime Database’s JSON tree, and Data Connect’s PostgreSQL-backed relational model based on how your app needs to store and retrieve connections.

What “graph data” means in a Firebase app

A graph model treats entities as nodes and the connections between them as relationships. A relationship can have a type and its own properties—for example, a person can follow another person, or a user can belong to a project with a role and join date. The key design question is whether your application mostly looks up known records and connections, or needs to discover paths through changing relationships.

Firebase offers several data models, but graph-like data does not make them equivalent. Cloud Firestore is document-oriented, Realtime Database is a JSON tree, and Firebase Data Connect provides a relational model backed by PostgreSQL. A relational join table can represent a connection, but that does not make Data Connect a graph database.

How the Firebase data models compare

Option Data model Relationship approach Consider it when
Cloud Firestore Documents in collections; documents may contain nested maps and subcollections. Store bounded related data inside a document, in a subcollection, or as separate relationship documents. References identify documents but do not perform relational joins. Your access patterns fit document queries and you can choose a structure suited to relationship growth and lookup needs.
Firebase Realtime Database A JSON tree in which reads at a location include its descendants. Keep the tree as flat as practical; duplicate relationship data when needed to support different lookup directions. Your app needs the JSON-tree model and its real-time behavior, and its reads and security boundaries suit that hierarchy.
Firebase Data Connect Cloud SQL for PostgreSQL, with GraphQL-based schemas and generated typed SDKs. Use relational relationships, including a join table for many-to-many connections. You want a relational schema and queries within Firebase rather than a document or JSON-tree model.

Model relationships in Cloud Firestore

Firebase describes Cloud Firestore as a “NoSQL, document-oriented database.” Documents are lightweight records of key-value fields held in collections; they can also contain nested maps and subcollections. Firestore is schemaless, but consistent field names and data types can make querying easier. See Firebase’s Cloud Firestore data model documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Nested data: maps or arrays

Use nested data for a small, bounded list that is typically read with its parent. For example, a project document might hold a short list of settings or a few fixed attributes. This keeps a related read together, but a list that grows expands the parent document and can slow retrieval. It also makes independently querying or changing individual relationship records less straightforward.

Subcollections

Use a subcollection when child records can grow independently of the parent or need to be queried as records. A project could have a members subcollection, with one membership document per user. Firestore supports querying subcollections, including with collection-group queries. The trade-off is that subcollections are not easy to delete, so plan cleanup and parent-deletion behavior rather than assuming child records disappear automatically.

Root-level collections and relationship documents

Root-level collections can suit disparate records and many-to-many relationships. For example, a memberships collection could hold documents with a project ID, user ID, role, and timestamp. The document makes properties of the connection explicit and can support queries organized around either endpoint, subject to the query patterns your app needs.

A document reference identifies a document by its database location; it is not a relational join and does not automatically maintain inverse relationships. If you store duplicated relationship data to make reads convenient, your application must keep those copies consistent when a connection is created, changed, or removed. Naturally hierarchical data can also be more complex to represent in root-level collections.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Firebase’s guidance on choosing among nested data, subcollections, and root-level collections is in Choose a data structure.

Model relationships in Realtime Database

Realtime Database stores data as JSON objects in a cloud-hosted tree. Reading a location returns that node and its descendants, and a security grant at a node applies to data beneath it. Those behaviors make deeply nested structures harder to query and secure selectively; Firebase recommends keeping the structure as flat as practical.

For relationships that need lookup from both directions, you may need denormalized copies—for example, a project-to-members mapping and a user-to-projects mapping. This can make each lookup direct, but your writes must update both representations reliably. Design the tree around the locations clients actually read and the boundaries at which access should be granted. Firebase explains these trade-offs in Structure Your Database.

When Data Connect’s relational model fits

Firebase Data Connect is backed by Cloud SQL for PostgreSQL and uses GraphQL-based schemas and queries, with generated typed SDKs. Firebase describes support for relational queries, conditions, and explicit relationships between types. A many-to-many relationship can be represented with a join table—for example, a MovieActor table between movies and actors. This is a relational way to model connections, not a native graph database. See Firebase’s introduction to Firebase Data Connect and its Data Connect documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Decide from the questions your app must answer

Compare the actual reads and writes your app needs, not just the number of entities or relationships. Firebase’s structure guidance and graph-modeling practices point to these decision factors; they are not benchmarks or a universal threshold for changing databases.

  • Query shape: Are lookups known and direct, or must the app explore variable-depth paths and discover connected entities?
  • Cardinality and growth: Is a related list small and bounded, or can it expand independently?
  • Properties of the connection: Does the relationship itself need fields such as role, status, or timestamp?
  • Hierarchy and retrieval: Will clients read a parent with its children, query children independently, or look up a many-to-many connection from either side?
  • Live updates and clients: Which data must update in real time, and which clients need it?
  • Security boundaries: Which records should be readable together, and where should access rules apply?
  • Operational complexity: Can the application reliably maintain duplicated or denormalized relationship data?

For a graph-oriented workload, start with the questions the application must answer, create a model with representative test data, and test real queries and performance. Refine the model as requirements change. Neo4j’s vendor documentation describes this workflow in What is graph data modeling?; it is useful for graph concepts and process, not evidence of a tested Firebase integration.

Is a graph database necessary?

Not simply because your data has relationships. Firestore, Realtime Database, and Data Connect can all represent connections, each with different query and maintenance trade-offs. Consider a graph database when the application’s central work depends on traversing variable paths or exploring connections in ways that its current model cannot handle acceptably. Test representative queries and performance before deciding; there is no universal number of users, records, or relationships that triggers a required migration.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.