You can use a PostgreSQL catalog to configure access to a PostgresSQL or compatible database in the following deployments:
Amazon RDS on Amazon Web Services:
Azure Database on Microsoft Azure:
Cloud SQL on Google Cloud:
Follow these steps to create a catalog for PostgreSQL:
The following sections provide more detail for creating PostgreSQL catalog connections.
The Cloud provider configuration is necessary to allow Starburst Galaxy to correctly match catalogs and clusters.
The data source configured in a catalog, and the cluster must operate in the same cloud provider and region for performance and cost reasons.
The Catalog name is visible in the query editor and other clients. It is used to identify the catalog when writing SQL or showing the catalog and its nested schemas and tables in client applications.
The name is displayed in the query editor, and in the output of a SHOW
CATALOGS command.
It is used to fully qualify the name of any table in SQL queries following the
catalogname.schemaname.tablename
syntax. For example, you can run the
following query in the sample cluster without first setting the catalog or
schema context: SELECT * FROM tpch.sf1.nation;
.
The Description is a short, optional paragraph that provides further details about the catalog. It appears in the Starburst Galaxy user interface and can help other users determine what data can be accessed with the catalog.
The PostgreSQL catalog can only access a single PostgreSQL database within a single catalog. If you have multiple PostgreSQL databases, or want to connect to multiple PostgreSQL instances, you must configure additional instances of the PostgreSQL catalog.
Read further to learn about each supported connection method. The following sections detail the setup for the supported cloud providers.
Connect directly
The connection to the database requires a username, password authentication,
and the details necessary to connect to the database server, typically
hostname or IP address and port.
Connect via SSH tunnel
A connection to the database can be established directly, if the
Starburst Galaxy IP
range/CIDR
is allowed to connect.
If the database is only accessible inside the virtual private cloud (VPC) of the cloud provider, you can use an SSH tunnel with a bastion host in the VPC.
PrivateLink Starburst Galaxy supports AWS PrivateLink for PostgreSQL catalogs.
To configure the connection to your database on Amazon RDS you must provide the following details:
dbidentifier.random.regionname.rds.amazonaws.com
.The database on Amazon RDS needs to fulfill the following requirements:
Database authentication set to Password authentication.
The database on Azure Database needs to fulfill the following requirements:
The database on Cloud SQL needs to fulfill the following requirements from the Connection security section of the Settings for the database:
TLS setting configured for the Minimum TLS version as 1.2
Configure the database on Google Cloud SQL by filling in the following required fields:
The database on Google Cloud SQL must fulfill the following requirements:
User configured with username and password in Users.
Once you have configured the connection details, click Test connection to confirm data access is working. If the test is successful, you can save the catalog.
If the test fails, look over your entries in the configuration fields, correct any errors, and try again. If the test continues to fail, Galaxy provides diagnostic information that you can use to fix the data source configuration in the cloud provider system.
Click Connect catalog, and proceed to set permissions where you can grant access to certain roles.
This optional step allows you to configure read-only access or full read and write access to the catalog.
Use the following steps to assign read-only access to all roles:
You can specify read-only access and read-write access separately for different sets of roles. That is, one set of roles can get full read and write access to all schemas, tables, and views in the catalog, while another set of roles gets read-only access.
Use the following steps to assign read/write access to some or all roles:
You can add your catalog to a cluster later by editing a cluster. Click Skip to proceed to the catalogs page.
Use the following steps to add your catalog to an existing cluster or create a new cluster in the same cloud region:
Click Add to cluster to view your new catalog’s configuration.
The catalog provides read access and write access to data and metadata in PostgreSQL. It supports the following features:
The following sections provide PostgreSQL catalog-specific information regarding SQL support.
If a WHERE
clause is specified, the DELETE
operation only works if the
predicate in the clause can be fully pushed down to the data source.
The catalog does not support renaming tables across multiple schemas. For example, the following statement is supported:
ALTER TABLE catalog.schema_one.table_one RENAME TO catalog.schema_one.table_two
The following statement attempts to rename a table across schemas, and therefore is not supported:
ALTER TABLE catalog.schema_one.table_one RENAME TO catalog.schema_two.table_two
The catalog supports renaming a schema with the ALTER SCHEMA RENAME
statement. ALTER SCHEMA SET AUTHORIZATION
is not supported.
The catalog provides support for a number of functions and data types using the
pgvector extension. The pgvector
vector
type is mapped to the Starburst array(real)
type.
In addition to reading the vector
data type, the catalog supports the
following functions:
The catalog supports pushdown for these functions. See the table below for the syntax required:
Function | pgvector expression |
---|---|
euclidean_distance(x, y) | x <-> y |
-dot_product(x, y) | x <#> y |
cosine_distance(x, y) | x <=> y |
Euclidean distance (L2 distance): <->
SELECT * FROM postgresql.tpch.items
ORDER BY euclidean_distance(embedding, ARRAY[1.1, 2.2, 3.3]) LIMIT 1;
Cosine distance: <=>
SELECT * FROM postgresql.tpch.items
ORDER BY cosine_distance(embedding, ARRAY[1.1, 2.2, 3.3]) LIMIT 1;
Dot product: <#>
SELECT * FROM postgresql.tpch.items
ORDER BY -dot_product(embedding, ARRAY[1.1, 2.2, 3.3]) LIMIT 1;
Pushdown is not supported for -1 * dot_product
expressions. Use
-dot_product.
The following table describes the session properties supported by the PostgreSQL catalog.
Session property | Description |
---|---|
aggregation_pushdown_enabled |
Enable aggregation pushdown. The default value is
true (boolean).
|
array_mapping |
Handling of PostgreSQL arrays. Possible values:
DISABLED .
|
complex_join_pushdown_enabled |
Enable join pushdown with non-comparison expressions. The default
value is true (boolean).
|
decimal_default_scale |
Default decimal scale for mapping unspecified and exceeding precision
decimals. Not used when decimal_mapping is set to STRICT.
The default value is 0 (integer).
|
decimal_mapping |
Decimal mapping for unspecified and exceeding precision decimals.
STRICT skips them; ALLOW_OVERFLOW requires setting proper decimal
scale and rounding mode. Possible values:
STRICT .
|
decimal_rounding_mode |
Rounding mode for mapping unspecified and exceeding precision
decimals. Not used when decimal_mapping is set to STRICT.
Possible values:
UNNECESSARY .
|
domain_compaction_threshold |
Maximum ranges to allow in a tuple domain without simplifying it.
The default value is 256 (integer).
|
dynamic_filtering_enabled |
Wait for dynamic filters before starting the JDBC query.
The default value is true (boolean).
|
dynamic_filtering_wait_timeout |
Duration to wait for completion of dynamic filters.
The default value is 1.00s .
|
enable_string_pushdown_with_collate |
Enable string pushdown with collate (experimental). The default value
is false (boolean).
|
join_pushdown_automatic_max_join_to_tables_ratio |
If the estimated join output size is greater than or equal to the
ratio times the sum of table sizes, join pushdown will not be performed.
The default value is 1.25 (double).
|
join_pushdown_automatic_max_table_size |
Maximum table size to be considered for join pushdown. The default value is empty. |
join_pushdown_enabled |
Enable join pushdown. The default value is true (boolean).
|
join_pushdown_strategy |
Join pushdown strategy. Possible values:
AUTOMATIC .
|
non_transactional_insert |
Enables support for non-transactional INSERT. The default value is
false (boolean).
|
non_transactional_merge |
Enables support for non-transactional MERGE. The default value is
false (boolean).
|
topn_pushdown_enabled |
Enable TopN pushdown. The default value is true (boolean).
|
unestimatable_dynamic_filtering_wait_timeout |
Duration to wait for completion of dynamic filters with an
unestimatable build side. The default value is 20.00s .
|
unsupported_type_handling |
Unsupported type handling strategy. Possible values:
IGNORE .
|
write_batch_size |
Maximum number of rows to write in a single batch. The default value
is 1000 (integer).
|
write_parallelism |
Maximum number of parallel write tasks. The default value is
8 (integer).
|
Is the information on this page helpful?
Yes
No