KehittäjätHallinnoidut tietokannat

Hallinnoidut tietokannat

Hallinnoidut tietokannat toimivat Hostwolfin tietokantapalvelimilla, erillään sovelluspalvelimistasi. Sovelluksesi yltävät niihin TLS:n yli, joten sovelluksen jokainen kopio millä tahansa palvelimella ja missä tahansa kaupungissa käyttää samaa dataa. Juuri se mahdollistaa sovelluskerroksen skaalaamisen ulospäin.

  • Moottorit: PostgreSQL, MariaDB (MySQL-yhteensopiva) ja Redis.
  • Tietoturva: TLS on pakollinen, ja tietokanta hyväksyy yhteyksiä vain tiimisi palvelimilta.
  • Yhteyksien poolaus: PostgreSQL:n ja MariaDB:n mukana tulee pooleri, joten tuhannet sovellusyhteydet jakavat muutaman tietokantayhteyden.
  • Tallennustila: kasvaa itsestään; paketin ylittävä tallennustila laskutetaan gigatavuittain.
  • Varmuuskopiot: joka yö, säilytetään 7 päivää, tallennetaan muualle. PostgreSQL:ssä on lisäksi ajankohtaan palautus viimeisten 7 päivän ajalta.
  • Poistaminen: laskutus loppuu heti; tuki voi palauttaa poistetun tietokannan 7 päivän ajan.
  • Laskutus: tunneittain (kuukausihinta ÷ 730) seuraavalla palvelinlaskullasi. Tarvitset ensin aktiivisen palvelintilauksen.

Paketit ja hinnat#

hw $API/managed-databases/catalog | jq
PakettiMuistiTallennustilaSovellusyhteydet (poolatut)Suorat yhteydetPalvelin
small256 Mt5 Gt1,00010jaettu
medium512 Mt10 Gt2,00040jaettu
large4 Gt80 Gt5,000100dedikoitu
xlarge12 Gt200 Gt10,000200dedikoitu, 8 vCPU

Katalogi listaa alueet (esimerkiksi vultr:ams Amsterdamille) kunkin paketin kuukausi- ja tuntihinnoin dollareissa sekä yllä mainitut rajat (pooled_clients, direct_connections, pool_size). Valitse alue, joka on lähimpänä sovelluspalvelimiasi. Hinnat 11. lokakuuta 2026:

PakettiAmsterdam (vultr:ams)Newark (vultr:ewr)
small3,88 $/kk3,88 $/kk
medium7,74 $/kk7,74 $/kk
large62,13 $/kk62,13 $/kk
xlarge229,24 $/kkei myynnissä

Luo ja yhdistä#

DB=$(hw -X POST $API/managed-databases \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"engine": "postgres", "plan": "small", "region": "vultr:ams"}' | jq -r .uuid)

# A few minutes later: status goes creating → ready
hw $API/managed-databases/$DB | jq -r .status

# Save the connection URLs on an app, then redeploy it
hw -X POST $API/managed-databases/$DB/attach -d "{\"application_uuid\": \"$APP\"}"
hw -X POST $API/applications/$APP/start
  • attach tallentaa sovellukselle poolatun URL-osoitteen muuttujaan DATABASE_URL ja suoran URL-osoitteen muuttujaan DATABASE_DIRECT_URL (Redis: REDIS_URL). URL-osoitteet eivät koskaan kulje skriptisi kautta.
  • attach ei koskaan korvaa muuttujaa huomaamatta. Jos sovelluksella on jo DATABASE_URL (tai REDIS_URL) eri arvolla, mitään ei tallenneta ja vastaus on 409, jossa on conflicts ja vapaa suggested_env_key. Lähetä "env_key": "DATABASE_URL_2" tallentaaksesi sillä nimellä (suorasta URL:stä tulee DATABASE_DIRECT_URL_2), tai "overwrite": true korvataksesi ne.
  • Idempotency-Key-otsake (UUID) tekee kutsusta turvallisen yrittää uudelleen: sama avain ei koskaan luo toista tietokantaa. Avaimen käyttäminen uudelleen eri asetuksilla vastaa 409.
  • Tietokantatoiminnot on rajoitettu 10:een minuutissa.

Poolatut ja suorat URL-osoitteet#

Jokaisella PostgreSQL- ja MariaDB-tietokannalla on kaksi URL-osoitetta samaan dataan:

Poolattu (url, DATABASE_URL)Suora (direct_url, DATABASE_DIRECT_URL)
PostgreSQLportti 6432, PgBouncer transaktiotilassaportti 5432
MariaDBportti 6033, ProxySQLportti 3306
Yhteydetpaketin poolattujen yhteyksien rajaan asti; poolin ylittävät yhteydet odottavat (enintään 120 s) sen sijaan, että epäonnistuisivatpaketin suorien yhteyksien raja (10 paketissa small)
Käytä sitäsovelluksesi: verkkopyynnöt, workerit, sovelluksen jokainen kopiomigraatiot, LISTEN/NOTIFY, istuntoasetukset (SET), neuvoa-antavat lukot (advisory locks), väliaikaiset taulut ja pitkät transaktiot

Käytä sovelluksessasi poolattua URL-osoitetta. Suoraa URL-osoitetta käyttäessäsi pidä sovelluksen yhteyspooli paketin suorien yhteyksien rajan sisällä, kun lasket mukaan sovelluksen jokaisen kopion. Valmistellut lauseet (prepared statements) toimivat poolerin kautta. Aja migraatiot suoralla URL-osoitteella, esimerkiksi DATABASE_URL=$DATABASE_DIRECT_URL npx prisma migrate deploy käyttöönoton jälkeisenä komentona (sovelluksen asetukset, Käyttöönoton elinkaari). Käyttöönottoa edeltävä komento ajetaan vielä käynnissä olevassa kopiossa ennen kuin uusi build alkaa: se ajaisi edellisen version migraatiot, ja se ohitetaan ensimmäisellä käyttöönotolla.

Jotta voit lukea URL-osoitteet itse, tunnus tarvitsee oikeuden Arkaluonteisten tietojen luku:

hw $API/managed-databases/$DB/connection | jq
# {"env_key": "DATABASE_URL", "url": "postgresql://…@db-….db.app.hostwolf.net:6432/…?sslmode=require",
#  "direct_url": "postgresql://…@db-….db.app.hostwolf.net:5432/…?sslmode=require", "direct_connections": 10}
MoottoriURL-muoto
PostgreSQLpostgresql://user:password@host:port/db?sslmode=require
MariaDBmysql://user:password@host:port/db?ssl-mode=REQUIRED
Redisrediss://user:password@host:port/0

Isäntänimi (db-<id>.db.app.hostwolf.net) pysyy samana paketin päivitysten ja siirtojen yli. Varmenteet ovat julkisia (Let's Encrypt), joten CA-tiedostoa ei tarvita: sslmode=verify-full ja ssl-mode=VERIFY_IDENTITY toimivat järjestelmäsi varmennevaraston kanssa sekä poolatussa että suorassa portissa. Yhteydet tiimisi palvelinten ulkopuolelta, myös omalta tietokoneeltasi, torjutaan. Datan tarkasteluun käytä komentotulkkia jollakin palvelimistasi (konsolin Pääte) tai jossakin sovelluksessasi ajettavaa työkalua.

Kasvava tallennustila#

Tietokantapalvelimen levy kasvaa itsestään ennen kuin se täyttyy, ilman uudelleenkäynnistystä. Pakettiisi sisältyy sen tallennustila (5, 10, 80 tai 200 Gt). Sen ylittävä jokainen kokonainen Gt laskutetaan tunneittain: 0,13 $ kuukaudessa 1 Gt:lta, 1,24 $ 10 Gt:lta, 12,38 $ 100 Gt:lta. Tietokannan extra_storage näyttää nykyiset lisägigatavut ja niiden hinnan, ja metrics näyttää sen koon.

Paketin päivittäminen#

Kun tietokanta on pakettiaan kuormitetumpi 3 tunnissa 4:stä (suoritin, yhteydet tai täysi Redis), advice kertoo, mikä paketti sopii, ja tiimin ylläpitäjät saavat sähköpostin. Mikään ei muutu ennen kuin päivität. upgrades listaa paketit, joihin sen voi nyt vaihtaa:

hw $API/managed-databases/$DB | jq '.upgrades, .advice'
# [{"plan": "medium", "how": "in_place"}, {"plan": "large", "how": "move"}]

hw -X POST $API/managed-databases/$DB/upgrade -d '{"plan": "large"}'
# 422 {"message": "The large plan costs $62.13/month (now $3.88), billed hourly from the change. … Send \"confirm\": true to go ahead.", "confirm_required": true, "quote": {…}}

hw -X POST $API/managed-databases/$DB/upgrade -d '{"plan": "large", "confirm": true}'   # 202
  • in_place: small → medium pysyy käynnissä. large → xlarge siirtää levyn suuremmalle palvelimelle, ja katko kestää noin minuutin.
  • move: tietokanta kopioidaan toiselle palvelimelle. Se ei ole käytettävissä kopioinnin aikana (noin 20 sekuntia 200 000 riville), minkä jälkeen isäntänimi osoittaa uuteen palvelimeen.
  • Uusi hinta on voimassa muutoksesta lähtien. Pakettia ei voi koskaan pienentää.

Redisin muisti#

Redis-tietokanta voi käyttää enintään pakettinsa muistin (256 Mt, 512 Mt, 4 Gt tai 12 Gt). Poistokäytäntö ratkaisee, mitä tapahtuu, kun muisti on täynnä:

KäytäntöKun muisti on täynnäKäytä sitä
allkeys-lruPoistaa pisimpään käyttämättä olleet avaimetvälimuistit
noeviction (oletus)Torjuu kirjoitukset virheellä; lukeminen toimii edelleenjonot, istunnot, data, joka ei saa kadota
volatile-lru, allkeys-lfu, volatile-lfu, allkeys-random, volatile-random, volatile-ttlMuut Redisin käytännöterikoistapaukset

Valitse se tietokantaa luodessasi ("eviction_policy": "allkeys-lru") tai muuta sitä milloin tahansa; muutos tulee voimaan heti ilman uudelleenkäynnistystä:

hw -X PATCH $API/managed-databases/$DB -d '{"eviction_policy": "allkeys-lru"}'

metrics näyttää käytetyn muistin, enimmäismäärän ja tähän mennessä poistetut avaimet.

Varmuuskopiot#

hw -X POST $API/managed-databases/$DB/backups   # an extra backup now (202)

Yölliset varmuuskopiot tehdään joka tapauksessa. Konsolissa tietokannan Palautuspisteet näyttää ne.

PostgreSQL voidaan palauttaa konsolista mihin tahansa minuuttiin viimeisten 7 päivän ajalta: palautus luo uuden tietokannan sellaisena kuin se oli sillä hetkellä, omalla URL:llä ja laskutettuna kuten muutkin tietokannat. Nykyinen tietokanta pysyy käynnissä. Jos haluat palauttaa MariaDB- tai Redis-varmuuskopion, kirjoita tukeen ja kerro tietokannan uuid ja ajankohta.

Poistaminen#

hw -X DELETE $API/managed-databases/$DB

Laskutus loppuu heti. Sitä käyttäneet sovellukset pitävät vanhan DATABASE_URL:n, kunnes muutat sen.

Virheet, joita saatat nähdä#

TilaMerkitys
403Vahvista ensin sähköpostiosoitteesi konsolissa, tai tunnukselta puuttuu oikeus.
409Tietokanta ei ole vielä valmis, tai Idempotency-Key on käytetty eri tietokannalle.
422Tuntematon moottori, paketti tai alue, aktiivista palvelintilausta ei ole, päivitystä ei voi tehdä juuri nyt tai confirm puuttuu.
503Hallinnoidut tietokannat ovat hetkellisesti poissa käytöstä. Mitään ei muutettu; yritä uudelleen.
Jumissa, tai puuttuuko päätepiste? Kerro meille osoitteessa app.hostwolf.net/contact tai [email protected].