# Gegevens voor later bewaren [Programmeergidsen](LEESMIJ.md) Met opslag onthoudt een programma gegevens voor later. **Blijvende** of **duurzame** gegevens kunnen na een uitvoering bewaard blijven; **tijdelijke** of **efemere** gegevens bestaan alleen tijdens de sessie. Een **momentopname** is een kopie van de waarde op het bewaarmoment. Een **quotum** is het maximum dat je mag bewaren. De [JSON-uitleg](../begrippen/json.md) introduceert de waardesoorten die hieronder zijn toegestaan. | Nederlandse aanroep | Canonieke ID | Resultaat | Vereisten | |---|---|---|---| | `bewaarGegeven(sleutel, waarde)` | `storage.set` | `None` | Geldige tekstsleutel en JSON-compatibele waarde. | | `laadGegeven(sleutel, standaard)` | `storage.get` | Opgeslagen waarde of standaard. | Geldige tekstsleutel en JSON-compatibele standaardwaarde. | | `verwijderGegeven(sleutel)` | `storage.delete` | `Boolean` | Geldige tekstsleutel. | | `bewaardeSleutels()` | `storage.keys` | `List` | Geen argumenten. | Waarden mogen `geen`, eindige getallen, tekst, Booleans, lijsten en maps met tekstuele sleutels zijn. Een sleutel is geen pad of bestandsnaam: niet leeg, geen omringende witruimte of besturingstekens, maximaal 128 UTF-8-bytes. Opslaan legt een momentopname vast; laden geeft een nieuwe kopie, ook van een standaardwaarde. Sleutels worden deterministisch op UTF-8-bytevolgorde gesorteerd. Een project met bruikbare appidentiteit kan begrensde eigen gegevens over normale saves heen bewaren. Een los of nog niet gemigreerd bronbestand krijgt verse tijdelijke opslag. Deze functies geven geen willekeurige bestandstoegang. Zie de [opslagspecificatie](../../../docs/spec/storage.md). ## De opslaggrenzen lezen Een **node**, of knooppunt, is hier één onderdeel van een opgeslagen waarde, zoals een lijst, map of waarde daarin. **Nesten** betekent verzamelingen in andere verzamelingen stoppen, zoals dozen in dozen. De nestgrens beperkt hoeveel lagen je mag gebruiken. **KiB** betekent kibibyte: 1.024 bytes. 64 KiB is dus 65.536 bytes, niet noodzakelijk zoveel letters. Bij [UTF-8](../begrippen/utf-8.md) lees je waarom een letter of emoji meerdere bytes kan gebruiken. Een **schema** is de afgesproken opbouw van een opgeslagen document. De versie vertelt Pliro welke opbouw het moet verwachten. **Migratie** werkt een oudere projectopbouw bij. De **identiteit** van een app vertelt de host welke eigen opslag bij dat project hoort. **Atomair vervangen** betekent dat opslaan als één geheel lukt of de vorige gegevens intact laat. Een mislukte schrijfactie mag geen half nieuw document achterlaten. **Deterministische volgorde** betekent dat dezelfde sleutels steeds hetzelfde worden gesorteerd. Bytevolgorde is een computervolgorde, niet noodzakelijk woordenboekvolgorde. ## Gedrag en details Een bruikbare schema-3-identiteit van .bipli bezit haar gegevensnaamruimte. Normaal opslaan, verplaatsen en hernoemen bewaren die; Opslaan als, Dupliceren en Importeren als kopie maken een aparte identiteit. Losse bronnen en ongemigreerde projecten gebruiken tijdelijke sessieopslag. Limieten: 128 sleutels; 64 KiB per JSON-waarde; 512 KiB voor het volledige document; 32 nestniveaus en 8.192 waarden/nodes per waarde. Mislukte schrijfacties bewaren vorige gegevens. E4014 betekent onbeschikbare opslag, E4015 een ongeldige sleutel, E4016 een ongeschikte waarde en E4017 overschreden quota. Externe preview toont desktopuitvoering en ontvangt geen privégegevens. ## Gerelateerde lemma’s [Syntaxis en waarden](../syntaxis/LEESMIJ.md) · [Ingebouwde functies](../ingebouwde-functies/LEESMIJ.md) · [Programmeergidsen](LEESMIJ.md)