Skip to content
This repository has been archived by the owner on Apr 7, 2022. It is now read-only.

Příliš velký objem dat #353

Closed
Jardal opened this issue Sep 20, 2020 · 2 comments
Closed

Příliš velký objem dat #353

Jardal opened this issue Sep 20, 2020 · 2 comments

Comments

@Jardal
Copy link

Jardal commented Sep 20, 2020

Drazí vývojáři, dovolili jste se zamyslet nad objemem potřebných dat? Pokud se oficiálně přenáší jen MAC adresa bluetooth, je to 8 bajtíků. To máme 100.000 nakažených uživatelů e-roušky, že si to za den stáhne mego dat? Zamyslete se i nad tím co děláte, nejen nad tím proč to děláte. Opravdu, takhle se v reálu neprogramuje, s takovým přístupem by brzo došly výpočetní prostředky a o neefektivitě programování posledních 25 let (ano, od většího rozšíření Windows), kdy se výkon počítače jako uživatelského celku relativně snižuje rychleji než jde výkon procesorů nahoru díky špatnému programování aplikací (ano, dřív bylo všechno rychlejší), bych mohl už začít psát knihy.

Použijte rozdílovou synchronizaci pomocí RSYNC, místo XML nebo JSON struktury (nezkoumal jsem co používáte ani co přenášíte, ale objem dat na to vypadá), použijte přímo binární data. Nadefinujte si strukturované datové pole jak se to dělá v C jazyku, to co používáte to bude umět určitě taky.

http://jazykc.inf.upol.cz/strukturovane-datove-typy/index.htm

typedef struct {
unsigned int Den = 0; // od 1.1.2020, to máme 65536 dní celkem, to by mohlo stačit
byte Stav = 1; // 0 vyléčený, 1 nakažený, 2 v karanténě ...
byte BluetoothMAC [8]; // inicializujte si to pole
} koronaci;
koronaci koronak[];

No a celou tuhle proměnnou pak vysypete jako soubor, který se bude synchronizovat pomocí toho zmíněného RSYNC protokolu. Ten upravte, protože defaultně používá příliš velké bloky dat tak, aby byly v korelaci s velikostí jedné položky (v tomto konkrétním případě je to 11B). Checksum malého datového bloku může být i 1 bajt (jste programátoři, neskládáte LEGO, poradíte si) a komunikace bude tak velmi úsporná. A že to nepůjde přečíst v textovém editoru? No o to mám přece nejde, jde nám přece o to, aby aplikace byla funkční a úsporná, ne aby šlo jednoduše bádat nad daty.

@petacz
Copy link

petacz commented Sep 20, 2020

V kódu vidím, že se používá ZIP komprese a inkrementální stahování změn.
https://github.com/covid19cz/erouska-android/blob/develop/app/src/main/kotlin/cz/covid19cz/erouska/net/ExposureServerRepository.kt

Tady jsou přímo i ty soubory: https://storage.googleapis.com/exposure-notification-export-qhqcx/

Když se podíváte jak jsou soubory veliké, tak jsou zhruba 20kB a obsahují binární obsah.
Nevím jak jste vypočítal to 1GB.
Myslím, že jste se spletl v jednotkách 😄
800 000 bajtů je necelý 1MB.
Navíc ten bluetooth identifikator se mění každých 20 sekund, takže tam nebude jedna adresa na pozitivního člověka.
Prostě bych řekl, že jste totálně mimo.

Já mám spíš opačný problém. Žádná nová data se mi nestahují. Poslední aktualizaci mám včera ráno.

@davidvavra
Copy link
Collaborator

Máme odhad, že 500 nakažených uživatelů znamená 300 kB. Data se také drží jenom posledních 14 dní. Nemyslíme si, že by stahovaný objem dat byl problém.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants