Back to Cube

Connecting to multiple data sources

docs/content/product/configuration/multiple-data-sources.mdx

1.6.432.8 KB
Original Source

Connecting to multiple data sources

Cube supports connecting to multiple data sources, so that different cubes reference data from different databases.

Usually, data sources are configured statically (see below). However, Cube can also lookup data sources dynamically which is useful in complex scenarios involving multitenancy.

Environment variables

Declare the list of data sources using the <EnvVar>CUBEJS_DATASOURCES</EnvVar> environment variable, then use decorated environment variables to configure each data source:

dotenv
CUBEJS_DATASOURCES=default,datasource1
CUBEJS_DB_TYPE=postgres
CUBEJS_DB_NAME=ecom
CUBEJS_DB_HOST=localhost
CUBEJS_DS_DATASOURCE1_DB_TYPE=postgres
CUBEJS_DS_DATASOURCE1_DB_NAME=ecom
CUBEJS_DS_DATASOURCE1_DB_HOST=remotehost
<InfoBox>

Cube expects that the default data source is always defined. Ensure that CUBEJS_DB_* environment variables are set or that the default data source is defined using driverFactory in your cube.js file.

</InfoBox>

Decorated environment variables

Cube allows database-specific environment variables to be decorated with a data source name:

dotenv
CUBEJS_[DS_<DATASOURCE>_]<ENV_VAR>

For example, using the datasource1 data source, <EnvVar>CUBEJS_DB_TYPE</EnvVar> could be decorated as:

dotenv
CUBEJS_DS_DATASOURCE1_DB_TYPE=postgres

For more information on environment variables that support decoration, check the environment variables reference or database-specific pages.

Data model

Use the data_source property to set a data source for each cube:

<CodeTabs>
yaml
cubes:
  - name: orders
    # ...

    data_source: default

  - name: orders_from_other_data_source
    # ...

    data_source: other_data_source
javascript
cube(`orders`, {
  // ...

  data_source: `default`
})

cube(`orders_from_other_data_source`, {
  // ...

  data_source: `other_data_source`
})
</CodeTabs>

Cube Cloud

Follow these steps to connect to multiple data sources in Cube Cloud:

  • Set up the default database connection when creating a new deployment.
  • Ensure you have the correct multitenancy configuration in your cube.js file.
  • Configure the corresponding environment variables in <Btn>Settings → Environment variables</Btn>.