|
| 1 | +--- |
| 2 | +meta: |
| 3 | + title: Supported PostgreSQL extensions |
| 4 | + description: This page presents the PostgreSQL extensions supported by Serverless SQL Databases and the steps to use them |
| 5 | +content: |
| 6 | + h1: Supported PostgreSQL extensions |
| 7 | + paragraph: This page presents the PostgreSQL extensions supported by Serverless SQL Databases and the steps to use them |
| 8 | +tags: sql-databases serverless database extensions postgresql pgvector postgis timescaledb |
| 9 | +dates: |
| 10 | + validation: 2024-10-08 |
| 11 | + posted: 2024-10-08 |
| 12 | +categories: |
| 13 | + - serverless |
| 14 | +--- |
| 15 | + |
| 16 | +Serverless SQL Databases support the most popular [PostgreSQL extensions](#install-an-extension). Due to autoscaling and built-in connection pooling, some [advanced features of extensions might be limited or require workarounds](#supported-extensions). |
| 17 | + |
| 18 | +<Macro id="requirements" /> |
| 19 | + |
| 20 | +- A Scaleway account logged into the [console](https://console.scaleway.com) |
| 21 | +- [Owner](/identity-and-access-management/iam/concepts/#owner) status or [IAM permissions](/identity-and-access-management/iam/concepts/#permission) allowing you to perform actions in the intended Organization |
| 22 | +- [Created a Serverless SQL Database](/serverless/sql-databases/how-to/create-a-database/) |
| 23 | + |
| 24 | +## Install an extension |
| 25 | + |
| 26 | +1. [Connect to your Serverless SQL Database](/serverless/sql-databases/quickstart/#how-to-connect-to-a-database) with a PostgreSQL client (such as `psql`): |
| 27 | + ```bash |
| 28 | + psql "postgres://[user-or-application-id]:[api-secret-key]@[database-hostname]:5432/[database-name]?sslmode=require" |
| 29 | + ``` |
| 30 | + |
| 31 | +2. Run the following command to create an extension using SQL: |
| 32 | + ```sql |
| 33 | + CREATE EXTENSION extension_name; |
| 34 | + ``` |
| 35 | + |
| 36 | +3. Use the supported features of the extension. |
| 37 | + For instance, if you installed `pgvector` with `CREATE EXTENSION vector`, you can create a vector and query it: |
| 38 | + |
| 39 | + ```sql |
| 40 | + CREATE TABLE songs (id bigserial PRIMARY KEY, embedding vector(3)); |
| 41 | + INSERT INTO songs (embedding) VALUES ('[1,1,1]'), ('[2,2,2]'), ('[0,1,2]'); |
| 42 | + SELECT * FROM songs ORDER BY embedding <-> '[3,3,3]' LIMIT 5; |
| 43 | + ``` |
| 44 | + This example will find the nearest vectors (using L2 distance) from '[3,3,3]': |
| 45 | + ```sql |
| 46 | + id | embedding |
| 47 | + ----+----------- |
| 48 | + 2 | [2,2,2] |
| 49 | + 1 | [1,1,1] |
| 50 | + 3 | [0,1,2] |
| 51 | + ``` |
| 52 | + |
| 53 | +## Supported extensions |
| 54 | + |
| 55 | +The following PostgreSQL extensions are available with Serverless SQL Databases: |
| 56 | + |
| 57 | + |
| 58 | +| Extension | Description and known limitations | |
| 59 | +|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------| |
| 60 | +| address_standardizer | Parses addresses into their constituent elements, typically used in the geocoding normalization process. | |
| 61 | +| address_standardizer_data_us | Provides a dataset example for the US Address Standardizer extension. | |
| 62 | +| bloom | Implements a Bloom filter-based index, ideal for situations where space efficiency is crucial. | |
| 63 | +| btree_gin | Adds support for indexing common data types using the GIN (Generalized Inverted Index) method. | |
| 64 | +| btree_gist | Adds support for indexing common data types using the GiST (Generalized Search Tree) method. | |
| 65 | +| citext | Provides a case-insensitive character string data type for easier text comparison. | |
| 66 | +| cube | Defines a data type for representing multidimensional cubes, useful in mathematical and geometrical computations. | |
| 67 | +| dict_int | Offers a text search dictionary template optimized for integer values. | |
| 68 | +| dict_xsyn | Provides a text search dictionary template for advanced synonym processing, improving search accuracy. Features requiring direct access to the filesystem will not be supported (eg. custom synonym lists). | |
| 69 | +| earthdistance | Calculates great-circle distances between points on Earth, useful in geographical applications. | |
| 70 | +| fuzzystrmatch | Determines similarities and differences between strings, helpful for tasks like data deduplication. | |
| 71 | +| hstore | Stores sets of key-value pairs in a single value, enabling a flexible schema for semi-structured data. | |
| 72 | +| intagg | Aggregates and enumerates integer values, though it is considered obsolete since PG 8.4, and official support has been integrated in PostgreSQL directly | |
| 73 | +| intarray | Provides functions, operators, and indexing support for one-dimensional arrays of integers, enhancing array processing. | |
| 74 | +| isn | Supports data types for international product numbering standards, such as ISBN and EAN. | |
| 75 | +| ltree | Defines a data type for representing tree-like structures in a hierarchical manner, facilitating complex data modeling. | |
| 76 | +| pg_cron | Schedules jobs within PostgreSQL using a cron-like syntax, automating routine database tasks. `pg_cron` requires the database to be in an active state permanently, and thus that you provision at least one vCPU for the extension to properly work. | |
| 77 | +| pg_prewarm | Preloads relation data into memory to reduce initial disk I/O latency and improve performance. | |
| 78 | +| pg_stat_statements | Tracks planning and execution statistics for all SQL statements, aiding in performance tuning. | |
| 79 | +| pg_trgm | Measures text similarity and provides index searching based on trigrams, enhancing text search capabilities. | |
| 80 | +| pgcrypto | Provides cryptographic functions for data encryption, decryption, and hashing, essential for secure data storage. | |
| 81 | +| pgrouting | Extends PostgreSQL and PostGIS with geospatial routing capabilities, enabling the calculation of shortest paths and other routing operations. | |
| 82 | +| pgrowlocks | Displays information about row-level locking, helping in the diagnosis of concurrency issues. | |
| 83 | +| pgvector | Supports vector similarity search, often used for storing and searching embeddings in machine learning applications. [Query options](https://github.com/pgvector/pgvector?tab=readme-ov-file#query-options) using `SET` command require [to be used in a single transaction](/serverless/sql-databases/reference-content/known-differences/#unsupported-configuration-commands) (i.e. between `BEGIN; (...) COMMIT;`) | |
| 84 | +| plpgsql | Enables the use of PL/pgSQL, a procedural language for PostgreSQL that allows complex control structures and query manipulation. | |
| 85 | +| postgis | Adds support for geographic objects, allowing location queries to be run in SQL, and is the foundation of the geographic information system (GIS) functionality in PostgreSQL. | |
| 86 | +| postgis_raster | Implements raster data support in PostGIS, enabling analysis and storage of raster images alongside vector data. | |
| 87 | +| postgis_sfcgal | Adds advanced 3D geometry functions to PostGIS, leveraging the SFCGAL library for complex spatial operations. | |
| 88 | +| postgis_tiger_geocoder | Provides geocoding and reverse geocoding capabilities based on the US Census TIGER data within PostGIS. | |
| 89 | +| postgis_topology | Supports topological data models in PostGIS, allowing for advanced spatial relationships and analyses. | |
| 90 | +| tablefunc | Offers functions for manipulating entire tables, including crosstab operations for pivot tables. | |
| 91 | +| timescaledb | Enables efficient handling and analysis of time-series data, extending PostgreSQL with specialized time-series functions. | |
| 92 | +| tsm_system_rows | Implements a `TABLESAMPLE` method that limits the number of rows returned, useful for sampling large datasets. | |
| 93 | +| tsm_system_time | Implements a `TABLESAMPLE` method that limits rows based on a time duration, useful for time-based sampling. | |
| 94 | +| unaccent | Provides a text search dictionary that removes accents from characters, improving text search accuracy. | |
| 95 | +| uuid-ossp | Generates universally unique identifiers (UUIDs), essential for ensuring data uniqueness across distributed systems. | |
0 commit comments