Skip to content

PostgreSQL-udvidelser ​

Udvidelser er pakker, der tilføjer egenskaber til en PostgreSQL-server — ekstra datatyper og operatorer, kryptografifunktioner, forespørgselsstatistik og mere. På Frostmolns administrerede databaser er udvidelser et PostgreSQL-tilbud, der leveres fra platformens eget udvidelseskatalog. MySQL-instanser har ingen.

Sådan fungerer det ​

  • Navnene er katalogværdier, ikke frie strenge. Kun navne, som platformens udvidelseskatalog udbuder, kan aktiveres på en instans. Et ukendt navn giver en typet HTTP 400, der navngiver det — unknown extension: <name> — og et navn, som kataloget kender, men ikke tilbyder til instansens PostgreSQL-version, afvises også. Enhver autentificeret tenant kan læse kataloget via GET /api/v1/databases/extensions (som type-/versionslæsningerne); fanen Udvidelser i portalen tilbyder en katalogvælger, og Terraform-provideren tjekker navnene mod det aktuelle katalog på planlægningstidspunktet.
  • Én handling ad gangen pr. instans. Mens en handling kører, afvises en ny udvidelseshandling med HTTP 409: another operation is already running on this instance; extensions can be applied only while no backup, restore or other operation is in flight — please retry once it completes. Udvidelser afvises også, mens en backup eller gendannelse er i gang.
  • Platformen registrerer udfaldene én gang, til sidst. Mens en handling kører, viser GET /api/v1/tenants/:tenant_id/databases/:id/extensions stadig den ønskede version (extensionRevision) uden nye poster. Poster pr. udvidelse — navn, status enabled, removed eller failed samt valgfrie detail og updatedAt — dukker først op, når handlingen er afsluttet, og et mislykket udfald registreres med platformens begrundelse. Der er ingen fremskrift pr. udvidelse, mens handlingen kører.

Kataloget ​

Startsættet, som katalogets v1 blev leveret med:

UdvidelsePostgreSQL-versionerKræver genstart
timescaledb16, 17, 18Ja
pg_stat_statements14, 15, 16, 17, 18Ja
pg_trgm14–18Nej
pgcrypto14–18Nej

timescaledb og pg_stat_statements kræver shared_preload_libraries, som træder i kraft ved opstart — at aktivere en af dem genstarter derfor instansen. Kataloget vokser, efter hånden som der tilføjes flere validerede katalogværdier til platformen.

Tilgængelighed og adgang ​

  • Åben for alle tenants. Den registrerede udvidelsestilstand er synlig for alle, der kan se instansen, og enhver tenant kan aktivere eller deaktivere udvidelser på sine egne instanser.
  • Instanser med høj tilgængelighed er holdt ude indtil videre. Anmodningen afvises med HTTP 409: extensions are not yet available for highly available instances; coordinated node sequencing is not built yet
  • Instanser oprettet, før udvidelserne blev lanceret, kan ikke aktivere dem. Delene i gæsten, som handlingen behøver, fastlægges ved oprettelsen, og platformen afviser ikke anmodningen på forhånd: en aktivering på en sådan instans accepteres og registreres derefter som mislykkede poster i registret. Behandlingen er at bygge op igen — opret en ny instans og migrér dine data (siden Administrerede databaser dækker oprettelse og migrering).

Sådan bruger du udvidelserne ​

Endepunktet er POST /api/v1/tenants/:tenant_id/databases/:id/extensions. Brødteksten bærer retningen — "op" er "install" for at aktivere og "remove" for at deaktivere — og listen med udvidelsesnavne, højst 8 pr. handling:

json
{
  "op": "install",
  "extensions": ["timescaledb"]
}

En 202 kommer tilbage med et operationId, statussen applying_extensions og den extensionRevision, anmodningen satte. Indtil handlingen er afsluttet, viser registeret nøjagtig den version uden nye poster; når den er afsluttet, dukker posterne op (se ovenfor). To kontroller, som platformen foretager med det samme: instansen skal køre — enhver anden tilstand afvises med 409 — og at deaktivere en udvidelse, instansen ikke har, afvises med 400.

CLI'en taler om at aktivere og deaktivere og venter for dig: fm database postgres instance extensions enable|disable venter på, at handlingen afsluttes, og verificerer det registrerede udfald mod den (--no-wait vender tilbage, så snart anmodningen er accepteret), og ... extensions list viser registeret, når du spørger.

I Terraform deklarerer du sættet extensions på ressourcen frostmoln_postgres_instance — den genererede reference postgres_instance dokumenterer attributten.

Begrænsningerne ét sted

  • Udvidelser findes kun til PostgreSQL — MySQL-instanser har ingen.
  • Handlinger accepteres kun, mens instansen kører.
  • Én handling ad gangen pr. instans.
  • Højst 8 navne pr. handling.