Firebase
Firebase is an app development platform built around non-relational technologies. The Firebase Wrapper supports connecting to below objects.
- Authentication Users (read only)
- Firestore Database Documents (read only)
Preparation
Before you can query Firebase, you need to enable the Wrappers extension and store your credentials in Postgres.
Enable Wrappers
Make sure the wrappers
extension is installed on your database:
1 |
|
Enable the Firebase Wrapper
Enable the firebase_wrapper
FDW:
1 2 3 |
|
Store your credentials (optional)
By default, Postgres stores FDW credentials inside pg_catalog.pg_foreign_server
in plain text. Anyone with access to this table will be able to view these credentials. Wrappers is designed to work with Vault, which provides an additional level of security for storing credentials. We recommend using Vault to store your credentials.
1 2 3 4 5 6 7 8 9 10 11 |
|
Connecting to Firebase
We need to provide Postgres with the credentials to connect to Firebase, and any additional options. We can do this using the create server
command:
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Create a schema
We recommend creating a schema to hold all the foreign tables:
1 |
|
Options
The full list of foreign table options are below:
object
- Object name in Firebase, required.
For Authenciation users, the object name is fixed to auth/users
. For Firestore documents, its format is firestore/<collection_id>
, note that collection id must be a full path id. For example,
firestore/my-collection
firestore/my-collection/my-document/another-collection
Entities
Authentication Users
This is an object representing Firebase Authentication Users.
Ref: Firebase Authentication Users
Operations
Object | Select | Insert | Update | Delete | Truncate |
---|---|---|---|---|---|
Authentication Users | ✅ | ❌ | ❌ | ❌ | ❌ |
Usage
1 2 3 4 5 6 7 8 9 10 |
|
Notes
- The
attrs
column contains all user attributes in JSON format - This is a special collection with unique metadata fields
Firestore Database Documents
This is an object representing Firestore Database Documents.
Ref: Firestore Database
Operations
Object | Select | Insert | Update | Delete | Truncate |
---|---|---|---|---|---|
Firestore Database Documents | ✅ | ❌ | ❌ | ❌ | ❌ |
Usage
1 2 3 4 5 6 7 8 9 10 |
|
Notes
- The
name
,created_at
, andupdated_at
are automatic metadata fields on all Firestore collections - Collection ID must be a full path ID in the format
firestore/<collection_id>
- Examples of valid collection paths:
firestore/my-collection
firestore/my-collection/my-document/another-collection
- The
attrs
column contains all document attributes in JSON format
Query Pushdown Support
This FDW doesn't support query pushdown.
Limitations
This section describes important limitations and considerations when using this FDW:
- Only support read-only access to Authentication Users and Firestore Database Documents
- Default maximum row count limit is 10,000 records
- Full result sets are loaded into memory, which can impact PostgreSQL performance with large datasets
- Materialized views using these foreign tables may fail during logical backups
Examples
Some examples on how to use Firebase foreign tables.
firestore
To map a Firestore collection provide its location using the format firestore/<collection_id>
as the object
option as shown below.
1 2 3 4 5 6 7 8 9 10 |
|
Note that name
, created_at
, and updated_at
, are automatic metadata fields on all Firestore collections.
auth/users
The auth/users
collection is a special case with unique metadata. The following shows how to map Firebase users to PostgreSQL table.
1 2 3 4 5 6 7 8 9 10 |
|