nille02 schrieb:
Die Anfragen sind doch Lächerlich. Wir reden hier von geringen Datenmengen die da bewegt werden.
Nehmen wir eine 128bit GUID und einen 32bit Zeitstempel machen 20 Byte pro ID. Wir haben aktuell ca 80.000 aktive Infektionen was eine Datenmenge von 1562,5 KiB oder 1,525 MiB an Daten für die Infizierten. Wenn sich der Client nur die neuen IDs zum Vortag laden kann, sind das bei 3000 Neuinfektionen 58,6 KiB an Daten die geholt werden müssen.
Diese Daten kann man zusätzlich in den Netzen per Broadcast verteilen was die Bandbreite weiter massiv reduziert.
Auf Severseite wird man ein rudimentäres System mit Caching wohl in weniger als einem Tag und in einer Woche sicher Implementiert haben.
Und mit einer GUID weiß ich aber leider genau, wer mich "angesteckt" hat, daher alle 15 min eine neue GUID. Also ist jeder Datensatz deutlich größer->20 B*4 (15min/h)*24 h *7 Tage=14 kB, jetzt nehmen wir mal an, es ist wirklich eine Pandemie und es gibt europaweit (Deutschland alleine reicht ja nicht zu überwachen) 1 M Neuinfektionen pro Tag->14 GB/Tag. Der Servertraffic bei 300 M Einwohnern sind das 4.2 EB/Tag (oder 50 PB/s).
Nehmen wir mal deine unsichere Lösung mit 20 B/Fall, dann sind es 20 MB/Tag pro Nutzer, Europaweit sind das dann immer noch 70 TB/s. Problematisch ist auch das Datenvolumen für Leute ohne Internet, 20 MB/Tag sind auch 600 MB/Monat, und damit für die 500 MB/mtl. Leute zu viel.
Machbar ist das alles schon, aber nicht mit nem Gurkenserver.
Du musst schon mit dem Worst-Case-Szenario rechnen. Bei 3000 Neuinfektionen wird das Thema Corona nie gegessen sein (80 M/3000 Tag^-1=27 kTage=73 Jahre, bis es alle hatten).
Das "schöne" an dem Problem ist, dass es quasi immer mit O(n*m*k) skaliert (n=Datensatzgröße, m=Infiziertenrate, k=Nutzer). Das explodiert also automatisch in dem Moment wo es schlimmer wird. Und da sollte es eigentlich auf keinen Fall verrecken.
Technische Machbarkeit der Gegenvariante (alles zentral auf dem Server):
Jedes Handy lädt all seine IDs auf den Server hoch: 300 M Handys*4 ID/h*24 h=30 TRows/Tag, 14 Tage Retention, 400 TRows in der Datenbank. Wenn einer infiziert ist, wird seine Liste an gesehenen IDs abgeglichen, das sind dann 1 M Personen/Tag*1000 IDs/Person=1 GQuerys/Tag=12 kQuerys/s.
Das ist servertechnisch anspruchsvoll aber machbar. Wenn jede Row mit Overhead 64 B belegt, dann sind das 25 PB Speicher, der vorgehalten werden muss. Das geht (ca. 20.000 Festplatten z.B.).
Also alles in allem, wenn man es europaweit machen will, braucht es fette Infrastruktur oder fehlende Privatsphäre. Clevere Methoden können die Anzahl der Daten, die Übertragen werden, deutlich minimieren, aber trotzdem wird das kein "Hobbyprojekt" sein, sondern infrastrukturtechnisch gut durchdacht werden müssen.