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
| Paketti | Muisti | Tallennustila | Sovellusyhteydet (poolatut) | Suorat yhteydet | Palvelin |
|---|---|---|---|---|---|
small | 256 Mt | 5 Gt | 1,000 | 10 | jaettu |
medium | 512 Mt | 10 Gt | 2,000 | 40 | jaettu |
large | 4 Gt | 80 Gt | 5,000 | 100 | dedikoitu |
xlarge | 12 Gt | 200 Gt | 10,000 | 200 | dedikoitu, 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:
| Paketti | Amsterdam (vultr:ams) | Newark (vultr:ewr) |
|---|---|---|
small | 3,88 $/kk | 3,88 $/kk |
medium | 7,74 $/kk | 7,74 $/kk |
large | 62,13 $/kk | 62,13 $/kk |
xlarge | 229,24 $/kk | ei 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
attachtallentaa sovellukselle poolatun URL-osoitteen muuttujaanDATABASE_URLja suoran URL-osoitteen muuttujaanDATABASE_DIRECT_URL(Redis:REDIS_URL). URL-osoitteet eivät koskaan kulje skriptisi kautta.attachei koskaan korvaa muuttujaa huomaamatta. Jos sovelluksella on joDATABASE_URL(taiREDIS_URL) eri arvolla, mitään ei tallenneta ja vastaus on409, jossa onconflictsja vapaasuggested_env_key. Lähetä"env_key": "DATABASE_URL_2"tallentaaksesi sillä nimellä (suorasta URL:stä tuleeDATABASE_DIRECT_URL_2), tai"overwrite": truekorvataksesi 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) | |
|---|---|---|
| PostgreSQL | portti 6432, PgBouncer transaktiotilassa | portti 5432 |
| MariaDB | portti 6033, ProxySQL | portti 3306 |
| Yhteydet | paketin poolattujen yhteyksien rajaan asti; poolin ylittävät yhteydet odottavat (enintään 120 s) sen sijaan, että epäonnistuisivat | paketin suorien yhteyksien raja (10 paketissa small) |
| Käytä sitä | sovelluksesi: verkkopyynnöt, workerit, sovelluksen jokainen kopio | migraatiot, 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}
| Moottori | URL-muoto |
|---|---|
| PostgreSQL | postgresql://user:password@host:port/db?sslmode=require |
| MariaDB | mysql://user:password@host:port/db?ssl-mode=REQUIRED |
| Redis | rediss://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→mediumpysyy käynnissä.large→xlargesiirtää 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-lru | Poistaa pisimpään käyttämättä olleet avaimet | välimuistit |
noeviction (oletus) | Torjuu kirjoitukset virheellä; lukeminen toimii edelleen | jonot, istunnot, data, joka ei saa kadota |
volatile-lru, allkeys-lfu, volatile-lfu, allkeys-random, volatile-random, volatile-ttl | Muut Redisin käytännöt | erikoistapaukset |
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ä#
| Tila | Merkitys |
|---|---|
| 403 | Vahvista ensin sähköpostiosoitteesi konsolissa, tai tunnukselta puuttuu oikeus. |
| 409 | Tietokanta ei ole vielä valmis, tai Idempotency-Key on käytetty eri tietokannalle. |
| 422 | Tuntematon moottori, paketti tai alue, aktiivista palvelintilausta ei ole, päivitystä ei voi tehdä juuri nyt tai confirm puuttuu. |
| 503 | Hallinnoidut tietokannat ovat hetkellisesti poissa käytöstä. Mitään ei muutettu; yritä uudelleen. |