← Taso 4 – Data pro

Oppitunti 1/6 ⏱ 20 minuuttia Ilmainen esikatselu

Miksi data katoaa uudelleenkäynnistyksessä

Selvitä miksi vieraskirja unohtaa viestit kun palvelin pysähtyy – ja mitä teemme asialle.

Mitä tapahtuu konepellin alla

Tasolla 3 tallensimme viestit taulukkoon muistissa:

const vzkazy = [
  { jmeno: "Martin", text: "First message!" },
];

Se toimii loistavasti – niin kauan kuin palvelin pyörii. Mutta kun pysäytät sen (Ctrl+C) ja käynnistät uudelleen, taulukko on tyhjä. Viestit ovat poissa. Miksi?

Koska RAM (tietokoneen muisti) on kuin valkotaulu luokassa: kun lähdet, joku pyyhkii sen puhtaaksi. Pysyvään tallennukseen tarvitset levyn – tiedoston tai tietokannan.

💡

Levy vs. muisti: tiedosto levylle selviää uudelleenkäynnistyksestä. Taulukko server.js:ssä ei. Siksi isot verkkosivut käyttävät tietokantoja – MySQL, PostgreSQL, SQLite. Aloitamme SQLite:lla: tietokanta yhdessä tiedostossa, ei erillistä palvelinta tarvita.

Näytän sinulle: mitä tapahtuu uudelleenkäynnistyksen jälkeen

  1. Käynnistä palvelin vieraskirja-oppitunnilta (node server.js).
  2. Lähetä uusi viesti Reactin kautta.
  3. Pysäytä palvelin (Ctrl+C) ja käynnistä uudelleen.
  4. Päivitä sivu selaimessa – viesti on poissa.

Tämä ei ole bugi koodissa. Se on muistin ominaisuus. Ja nyt tiedät miksi tietokannat ovat olemassa.

Nyt sinun vuorosi 💪

  1. Toista koe yllä ja kirjoita muistiin (ehkä projektisi muistiinpanoihin) tarkalleen mitä tapahtui.
  2. Avaa server.js ja etsi rivi const vzkazy = [...]. Lisää kommentti: // WARNING: this disappears after a server restart!
  3. Mieti omaa projektiasi: mikä ei saisi kadota koulu-/seura-/matkakirja-sivullasi? (lukujärjestys? kuvat? viestit?) – listaa 2–3 asiaa.

Tarkista: Ymmärrät eron muistin (väliaikainen) ja levyn (pysyvä) välillä. Seuraavassa oppitunnissa opit Gitin – koodin varmuuskopiointiin levylle ja verkkoon. Sitten SQLite – viestien tallentamiseen ikuisesti.

Mitä opit tästä oppitunnista