1
Fork 0
mirror of https://github.com/Steffo99/alexandria.git synced 2024-10-16 05:27:27 +00:00

Elimina file sopravvissuti al merge

This commit is contained in:
Steffo 2020-06-08 00:32:40 +02:00
parent 103ad3bfa0
commit b24cf21e23
Signed by: steffo
GPG key ID: 896A80F55F7C97F0
4 changed files with 0 additions and 72 deletions

View file

@ -1,71 +0,0 @@
# Caso di studio: aggiunta di un dato derivato
In `alexandria` non sono presenti molti dati quantitativi: la maggior parte delle proprietà sono infatti qualitative, e come tali descritte da stringhe. Un dato derivato aggiungibile, però, è il numero di libri, film o videogame presenti nella libreria multimediale di un utente.
![](img/datoderivato.png)
Per sapere se conviene mantenere questo dato derivato, effettuiamo un'analisi dei costi:
## Analisi dei costi
*(Ndr: in seguito verranno calcolati i costi di mantenimento solo di uno dei tre dati derivati, perché il costo e il procedimento sono sempre gli stessi.)*
Valuteremo il costo di due operazioni:
- Operazione 1: Inserimento di un nuovo libro/film/videogame nella tabella
- Operazione 2: Visualizzazione dei dati di un utente, compreso il numero di libri/film/videogame presenti nella sua libreria multimediale
Le tabelle dei volumi sono state create in base a statistiche trovate ricercando online: Ogni anno in media una persona legge 12 libri, guarda 60 film e compra 24 videogame, per un totale di 96 elementi per ogni utente, circa. Immaginandoci 100 utenti, avremo quindi 9600 elementi:
| Concetto | Tipo | Volume |
|----------|:----:|-------:|
| Utente | E | 100 |
| Elemento | E | 9600 |
La tabella degli accessi non sarà ricavata: i dati verranno analizzati in funzione di quest'ultima come conclusione.
### Con dato derivato:
Operazione 1: Inserisco una nuova tupla nella tabella Elemento, e poi aggiorno l'apposito attributo nella tabella Utente, passando per l'associazione Possiede.
Ogni elemento è posseduto da un unico utente, quindi l'associazione in questo caso è 1 a 1. Ne segue che occorreranno un aggiornamento per Possiede e uno per Utente, quindi due aggiornamenti in tutto.
1 write + (2 read + 2 write) = 7 per operazione
Operazione 2: Leggo il dato dalla tabella Utente
1 read = 1
### Senza dato derivato:
*Operazione 1*: Inserisco una nuova tupla nella tabella elemento, senza aggiornare altro
1 write = 2 per operazione
Operazione 2: Passando per l'associazione Possiede, calcolo la quantità di elementi del tipo desiderato. Poniamo che, per calcolare la quantità di elementi che soddisfano una condizione, sia necessario e sufficiente leggerli tutti.
Ogni utente possiede in media N elementi, quindi occorreranno un numero 2*N di operazioni read (N per l'associazione e N per l'entità). N, ossia la cardinalità di passaggio, verrà calcolato in base alla tabella dei volumi fra Utente e Possiede:
Card(Utente -> Possiede) = Vol(Possiede) / Vol(Utente)
Vol(Utente) = 100
Vol(Possiede) = Vol (Elemento) = 9600
Card(Utente -> Possiede) = 9600 / 100 = 96
Il costo sarà quindi
96 read = 96 per operazione
## Risultato finale
Abbiamo calcolato i costi singoli di ciascuna operazione, adesso calcoliamo quale rapporto devono avere le due operazioni perché convenga il dato derivato.
Al momento abbiamo queste due equazioni che rappresentano i costi totali:
CostoCon: 7 * Op1 + 2 * Op2
CostoSenza: 2 * Op1 + 96 * Op2
Dove Op1 e Op2 sono rispettivamente la frequenza di esecuzione dell'operazione 1 e dell'operazione 2, e CostoCon e Costosenza sono le equazioni dei costi con e senza il dato derivato.
Ponendo CostoCon < CostoSenza e facendo tutti i calcoli del caso, risulta che il rapporto fra Op1 e Op2 deve essere strettamente minore di 94/5. Ne consegue che, perché convenga tenere il dato derivato, le operazioni di inserimento di un nuovo dato devono essere al massimo 19 volte di più delle operazioni di visualizzazione.

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -1 +0,0 @@
<mxfile host="app.diagrams.net" modified="2020-05-12T10:30:03.200Z" agent="5.0 (X11)" etag="JBPPYsUAt0iNgwefikyf" version="13.0.3" type="github"><diagram id="7_QHWCsFfzk6Nme5OQ3d" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB