Daten aufbewahren, dann löschen
Eine Aufbewahrungsfrist ist die Regel, die sagt, wie lange eine App jede Art von Daten behält. Danach werden die Daten gelöscht.
Eine Chat-App, die jedes Gespräch für immer behält, trägt jedes Jahr mehr Risiko. Hier räumen Sie auf, löschen auf Anfrage und zählen, was übrig ist.
Am Ende dieser Lektion
Notiz
Ich kann Daten nach einer Regel und auf Wunsch einer Person löschen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Aufbewahrungsfrist | wie lange Daten behalten werden | |
| Aufräumlauf | ein Auftrag, der löscht, was zu alt ist | |
| Löschanfrage | eine Person bittet darum, ihre Daten zu entfernen | |
| Kopie | ein weiterer Ort, an dem dieselben Daten liegen | ein Zwischenspeicher |
| Sicherung | eine gesicherte Kopie für die Wiederherstellung nach einem Fehler |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Aufbewahrungsregel legt eine Frist fest
Verschiedene Daten brauchen verschiedene Zeiten. Ein Chat darf 30 Tage bleiben. Eine Rechnung bleibt länger, weil man sie für die Buchführung braucht. In der Praxis sind es oft Jahre, diese Lektion rechnet der Einfachheit halber mit 365 Tagen.
Jeder Eintrag hat einen Tag, an dem er entstand. Ein Aufräumlauf rechnet sein Alter aus: heute minus dieser Tag. Ist das Alter größer als die Frist, wird der Eintrag gelöscht. Ein Eintrag genau an der Grenze bleibt.
Durchgerechnetes Beispiel: ein Aufräumlauf an Tag 100
| Eintrag | Art | Erstellt an Tag | Alter | Frist | Ergebnis |
|---|---|---|---|---|---|
| c1 | chat | 10 | 90 | 30 | Gelöscht |
| c2 | chat | 80 | 20 | 30 | Bleibt |
| r1 | rechnung | 20 | 80 | 365 | Bleibt |
| c3 | chat | 70 | 30 | 30 | Bleibt, genau an der Grenze |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Löschanfrage muss jede Kopie erreichen
Eine Person darf darum bitten, ihre Daten zu löschen. Ihre Nachrichten können im Hauptspeicher liegen, in einem Zwischenspeicher, der alles beschleunigt, und in einer Sicherung.
Ein Löschen, das nur den Hauptspeicher erreicht, lässt den Rest übrig. Listen Sie zuerst jeden Ort auf. Die Datenschutz-Grundverordnung kennt ein Recht auf Löschung, das Grenzen hat. Fragen Sie Fachleute. Das ist keine Rechtsberatung.
Ein häufiger Fehler
Warnung
Viele denken, ein Löschen im Hauptspeicher lösche die Daten einer Person. Das stimmt nicht. Zwischenspeicher, Protokolle und Sicherungen halten Kopien. Eine Sicherung lässt sich nicht bearbeiten, sie wird erst frei, wenn sie abläuft. Sagen Sie der Person das, mit dem Datum.
Die Modellhilfe schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' ' return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Modellhilfe schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' ' try {' ' const res = await fetch(basis + \"/v1/chat/completions\", {' ' method: \"POST\",' ' headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' ' body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"Status \" + res.status);' ' const d = await res.json();' ' return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' ' } catch (fehler) {' ' console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' ' return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' ' }' '}' 'module.exports = { fragen };' >> model.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const regeln = { chat: 30, rechnung: 365 };' 'const heute = 100;' 'const eintraege = [' ' { id: \"c1\", nutzer: \"n1\", tag: 10, art: \"chat\" },' ' { id: \"c2\", nutzer: \"n2\", tag: 80, art: \"chat\" },' ' { id: \"r1\", nutzer: \"n1\", tag: 20, art: \"rechnung\" },' ' { id: \"c3\", nutzer: \"n1\", tag: 70, art: \"chat\" },' '];' > retain.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function abgelaufen(e) {' ' return typeof regeln[e.art] === \"number\" && heute - e.tag > regeln[e.art];' '}' 'function ids(liste) {' ' return liste.map(function (e) { return e.id; });' '}' 'const speicher = {' ' aktiv: eintraege.filter(function (e) { return abgelaufen(e) === false; }),' ' zwischenspeicher: [eintraege[3]],' ' sicherung: [eintraege[0], eintraege[2], eintraege[3]],' '};' >> retain.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function uebrig(nutzer, erreicht) {' ' const rest = {};' ' Object.keys(speicher).forEach(function (name) {' ' const meine = speicher[name].filter(function (e) { return e.nutzer === nutzer; });' ' if (erreicht.indexOf(name) < 0 && meine.length > 0) rest[name] = ids(meine);' ' });' ' return rest;' '}' >> retain.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' console.log(\"heute abgelaufen: \" + JSON.stringify(ids(eintraege.filter(abgelaufen))));' ' console.log(\"nach dem Aufräumen behalten: \" + JSON.stringify(ids(speicher.aktiv)));' >> retain.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf schreiben, Teil 5
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' console.log(\"n1 aus aktiv und zwischenspeicher gelöscht, übrig: \" + JSON.stringify(uebrig(\"n1\", [\"aktiv\", \"zwischenspeicher\"])));' ' console.log(\"n1 aus allen dreien gelöscht, übrig: \" + JSON.stringify(uebrig(\"n1\", [\"aktiv\", \"zwischenspeicher\", \"sicherung\"])));' ' console.log(\"Sicherung von Tag 90, 35 Tage aufbewahrt, Resttage: \" + Math.max(0, 90 + 35 - heute));' ' const q = \"Schreiben Sie in einem kurzen Satz, warum eine Sicherung Daten noch enthalten kann, obwohl sie gelöscht wurden.\";' ' const probe = \"Eine Sicherung ist eine getrennte Kopie, sie ändert sich also erst, wenn sie abläuft.\";' ' const antwort = await fragen([{ role: \"user\", content: q }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> retain.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Aufräumlauf ausführen
docker exec -w /home/node/project agent node retain.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Run ausgibt
| Zeile | Was sie zeigt |
|---|---|
| heute abgelaufen: ["c1"] | Nur c1 ist älter als seine Frist |
| nach dem Aufräumen behalten: ["c2","r1","c3"] | Was im Hauptspeicher bleibt |
| n1 aus aktiv und zwischenspeicher gelöscht, übrig: {"sicherung":[...]} | Die Sicherung hält n1 noch |
| n1 aus allen dreien gelöscht, übrig: {} | Jede Kopie erreicht |
| Resttage: 25 | Wann die Sicherung frei wird |
| Das Modell sagte: ... | Ein Satz. Die Worte ändern sich bei jedem Lauf |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.