Skip to content

PostgreSQL-utvidelser ​

Utvidelser er pakker som legger til egenskaper i en PostgreSQL-server — ekstra datatyper og operatorer, kryptografifunksjoner, spørringsstatistikk og mer. På Frostmolns administrerte databaser er utvidelser et PostgreSQL-tilbud, levert fra plattformens egen utvidelseskatalog. MySQL-instanser har ingen.

Slik fungerer det ​

  • Navnene er katalogverdier, ikke frie strenger. Bare navn som plattformens utvidelseskatalog annonserer, kan aktiveres på en instans. Et ukjent navn gir en typet HTTP 400 som navngir det — unknown extension: <name> — og et navn som katalogen kjenner, men ikke tilbyr for instansens PostgreSQL-versjon, avvises også. Enhver autentisert tenant kan lese katalogen via GET /api/v1/databases/extensions (som type-/versjonslesingene); fanen Utvidelser i portalen tilbyr en katalogvelger, og Terraform-provideren sjekker navnene mot den gjeldende katalogen ved planleggingstid.
  • Én operasjon om gangen per instans. Mens en operasjon pågår, blir en ny utvidelsesoperasjon avvist 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. Utvidelser avvises også mens en sikkerhetskopi eller gjenoppretting pågår.
  • Plattformen registrerer utfallene én gang, på slutten. Mens en operasjon pågår, viser GET /api/v1/tenants/:tenant_id/databases/:id/extensions fortsatt den etterspurte versjonen (extensionRevision) uten nye oppføringer. Oppføringer per utvidelse — navn, status enabled, removed eller failed, pluss valgfrie detail og updatedAt — dukker opp først når operasjonen er avsluttet, og et mislykket utfall registreres med plattformens begrunnelse. Det finnes ingen fremdrift per utvidelse mens operasjonen pågår.

Katalogen ​

Startsettet som katalogens v1 ble levert med:

UtvidelsePostgreSQL-versjonerKrever omstart
timescaledb16, 17, 18Ja
pg_stat_statements14, 15, 16, 17, 18Ja
pg_trgm14–18Nei
pgcrypto14–18Nei

timescaledb og pg_stat_statements krever shared_preload_libraries, som trer i kraft ved oppstart — å aktivere en av dem starter derfor instansen på nytt. Katalogen vokser når det legges til flere validerte katalogverdier i plattformen.

Tilgjengelighet og tilgang ​

  • Åpent for alle tenants. Den registrerte utvidelsestilstanden er synlig for alle som kan se instansen, og enhver tenant kan aktivere eller deaktivere utvidelser på sine egne instanser.
  • Instanser med høy tilgjengelighet er holdt utenfor så lenge. Forespørselen avvises med HTTP 409: extensions are not yet available for highly available instances; coordinated node sequencing is not built yet
  • Instanser opprettet før utvidelsene ble lansert kan ikke aktivere dem. Bitene i gjesten som bruket trenger, fastsettes ved opprettelsen, og plattformen avviser ikke forespørselen på forhånd: en aktivering på en slik instans godttas og registreres deretter som mislykkede oppføringer i registeret. Behandlingen er å bygge opp igjen — opprett en ny instans og migrer dataene dine (siden Administrerte databaser dekker opprettelse og migrering).

Slik bruker du utvidelsene ​

Endepunktet er POST /api/v1/tenants/:tenant_id/databases/:id/extensions. Brødteksten bærer retningen — "op" er "install" for å aktivere og "remove" for å deaktivere — og listen med utvidelsesnavn, maks 8 per operasjon:

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

En 202 kommer tilbake med en operationId, statusen applying_extensions og den extensionRevision forespørselen satte. Til operasjonen er avsluttet viser registeret nøyaktig den versjonen uten nye oppføringer; når den er avsluttet, dukker oppføringene opp (se ovenfor). To kontroller plattformen gjør umiddelbart: instansen må kjøre — enhver annen tilstand avvises med 409 — og å deaktivere en utvidelse instansen ikke har, avvises med 400.

CLI-en snakker om å aktivere og deaktivere og venter for deg: fm database postgres instance extensions enable|disable venter på at operasjonen er ferdig og kontrollerer det registrerte utfallet mot den (--no-wait vender tilbake så snart forespørselen er godtatt), og ... extensions list viser registeret når du spør.

I Terraform deklarerer du settet extensions på ressursen frostmoln_postgres_instance — den genererte referansen postgres_instance dokumenterer attributtet.

Begrensningene på ett sted

  • Utvidelser finnes kun for PostgreSQL — MySQL-instanser har ingen.
  • Operasjoner godtas bare mens instansen kjører.
  • Én operasjon om gangen per instans.
  • Maks 8 navn per operasjon.