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 viaGET /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/extensionsfortsatt den etterspurte versjonen (extensionRevision) uten nye oppføringer. Oppføringer per utvidelse — navn, statusenabled,removedellerfailed, pluss valgfriedetailogupdatedAt— 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:
| Utvidelse | PostgreSQL-versjoner | Krever omstart |
|---|---|---|
timescaledb | 16, 17, 18 | Ja |
pg_stat_statements | 14, 15, 16, 17, 18 | Ja |
pg_trgm | 14–18 | Nei |
pgcrypto | 14–18 | Nei |
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:
{
"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.