Päiväkirjan hakemistoDockup / kenttämuistio
Note / database-scaling-strategies

Kasvavien startup-yritysten tietokannan skaalausstrategiat

Vertikaalisesta skaalauksesta shardingiin: opi strategiat, joiden avulla tietokantasi suorituskyky säilyy hyvänä yrityksesi kasvaessa.

Skaalauksen haaste

Startup-yrityksesi kasvaa. Onneksi olkoon! Kasvu tuo kuitenkin mukanaan haasteita – erityisesti tietokannallesi. Näin pidät datakerroksesi suorituskykyisenä.

Vaihe 1: Vertikaalinen skaalaus

Yksinkertaisin lähestymistapa: hanki tehokkaampi kone.

Hyödyt

  • Koodiin ei tarvitse tehdä muutoksia
  • Helppo ottaa käyttöön
  • Toimii useimmilla alkuvaiheen startup-yrityksillä

Haitat

  • Skaalautumisella on yläraja
  • Voi olla kallista
  • Yksittäinen vikapiste

Vaihe 2: Read-replikat

Erota luku- ja kirjoitusoperaatiot toisistaan.

// Write to primary
await primaryDb.insert(data);

// Read from replica
const results = await replicaDb.query(query);

Milloin tätä kannattaa käyttää

  • Read-heavy-kuormitukset (vähintään 80 % lukuoperaatioita)
  • Raportointi ja analytiikka
  • Maantieteellinen hajautus

Vaihe 3: Connection pooling

Älä aliarvioi connection poolingin tehoa.

# dockup.yaml
database:
  pool:
    min: 5
    max: 20
    idle_timeout: 30s

Vaihe 4: Caching-kerros

Lisää Redis tai Memcached vähentääksesi tietokannan kuormaa.

async function getUser(id) {
  // Check cache first
  const cached = await redis.get(`user:${id}`);
  if (cached) return JSON.parse(cached);

  // Fall back to database
  const user = await db.users.findById(id);
  await redis.set(`user:${id}`, JSON.stringify(user), 'EX', 3600);
  return user;
}

Vaihe 5: Sharding

Järein vaihtoehto. Jaa data useiden tietokantojen kesken.

Sharding-strategiat

  • Range-based: Shardaa ID-alueiden perusteella
  • Hash-based: Shardaa avaimen hash-arvon perusteella
  • Geographic: Shardaa käyttäjän sijainnin perusteella

Dockupin hallinnoidut tietokannat

Hoidamme skaalauksen automaattisesti:

  • Automaattisesti skaalautuva tallennustila: Tila ei lopu kesken
  • Read-replikat: Käyttöönotto yhdellä napsautuksella
  • Connection pooling: Sisäänrakennettu PgBouncer
  • Automaattiset varmuuskopiot: Palautus tiettyyn ajankohtaan

Yhteenveto

Aloita yksinkertaisesti ja skaalaa tarpeen mukaan. Älä rakenna liian monimutkaista ratkaisua liian aikaisin. Dockupin hallinnoidut tietokannat kasvavat kanssasi.