mirror of
https://github.com/Steffo99/alexandria.git
synced 2024-11-23 14:14:19 +00:00
Elimina file sopravvissuti al merge
This commit is contained in:
parent
103ad3bfa0
commit
b24cf21e23
4 changed files with 0 additions and 72 deletions
|
@ -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.
|
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
@ -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">7Vxdj5s4FP01SLsPrbANBB4nM9PdlXar0c5WbZ9GTHATVIIzQL7669cOJgGbhITw4WSiSh1szMXcc4+vfXDQ0P109Ufkzib/EA8HGtS9lYYeNAgHjk3/ZxXrtMIwzbRiHPleWgV2Fc/+L8wrdV479z0cFxomhASJP+OVvN2IhCEeJYWGbhSRZfHaHyQo3nXmjnHBEKt4HrkBlpp99b1kktbacLCr/xP740l2Z2A56ZmpmzXmhuOJ65Flrgo9aug+IiRJj6arexww32V+Sa/7tOfstmMRDpNjLvi8dt++xS+PP/8evD1NPGv037+LDzC1snCDOX/gxwBPqUVCa38L/NeI/M67n6wzn0RkHnqYmdU1NFxO/AQ/z9wRO7ukQUDrJsk0oCVAD/kNcJTg1d6eg60/aBxhMsVJtKZN+AUW4DHDYwjZ3KXLHSID3mSSA8PizVweA+Ot5Z2b6AH31AleMw54rW9fOUVfbZ2Q8xXIQrITZ5mSs74k9GGwcq4qiapuPWVJntKgFdC7Dn8Q+kh5Z1lvc5Kd+BBvRs072gDYs9XuJD0as7/POPzlsjHYTXz2B0f+YnOYGqd9Te2nrSVcqIeTovPjJCI/8T0JSERrQhJi1hU/CIQqN/DHIS2OGN60fsjw8ungesdPTH3PY7cpRbsYD6yLz7xToAn0db04qMjoI1CCvtEW+k4J+gISOPTuWE5jLg3cOPZHRVzwyk++MX99NHnpO/ceO35Y5QvrrBDSzucuYsXvmT1W2F22KWXXpZ3DXpY+9wFA87UbjXFSNZzKQOWQMEuAyOoiHNBgXhS7UYYOv8MT8TdkymYo5p7kkpmIyTwaYX5VPr8KhmxbGHnFSEn9IBnaBMv2sevHD5Cz0hOhMYI9eailc5EZO4wmZPo6p/0bzuigQHvAWJrVPu2qqkZjiegtDM9g0Pf4DORUdoiifBDMuak4otVlXh2WH8/WNNyrJz+VrAZ7aH0mX20DftwzxTmVsUDXK221TVo55wMppiJMM7z7uinq5cSL0vCXEuwrSRIy3QYAXyVxW9p2bVJB1ANs2EtfcOLofB4zB50wU6/FTNAVM81+mTkwBwKbgHnBzLSlkPp8KcwcKMRMeVqbVxjoomHav8AwAGLk9i4xbPEv99vYJyMFlBlbNWUme4SmEkGDC6qq5NFgIoBHJoKcDtnoFA0KUaHXTAOOXWFoTw6g8LrrXLMZaxDv77BlouJ9TP1gv+zD7elB2oNGExJEB0cEVbRa1QYEhbVaYKim1UJlxVrRV72LtbAttfaehNpNqy2Any0jVJFq4WnLzWvSamGvYi3UGxJrEepXrIXy6vKixVpxeO5frIWnvU+5UrEWHqvWpgHZ+FIAOo2ptYbZtySE5DX5pYi1KRvUkIRQw2v0yxRr4bFqbVvM1BtTaxVgJpRC6lLEWlSRWDtl5mGJQQ2xFljKibXokMigjFirnDaDGn6ffqFiLToyEaB2XtttMT9XrTVQN2ot0E9Ta9Hh9u2otahMHtof24S2Oya2QT6yt3FeHtsx9XcikGdT98lnz8Kj2suVilqRxhB0HD1TdMrqG58QNR7eBijOTMSF/tGKASwaAqDjKY6sOX2eT3FEXlhalmJLHSFwXzg1KRAiSwBHl1ObUaI+wNZSm6zvvGf6N5+0hLkMQE3RWjTUNq1lmYrTeuF7mIzdqSwIvjNu2wJCsGduG7IMdON2i9x2GqK2aKdlZmcTD5nZ7FW9/95ZLWTskrVot6SWpQ+1SQ36pKi4N99x6lHUMg7baZuism6jNui9jsvSDzJAQ6hLhtqG/TTdqX/YleI6HNTMxyLskqG2Yb9ESUYd2G0nk93PBl421Tb0p23YuUFfwAuJUldd4CVDbcMuqzBfYhyF6i6qtfNn1mY2lRaWPb3NrGWF48mN4yWJvCNAON654utd/hqB2jWHmvnAbM0Tku6+bOqVminKUKDklVqXzjZlbeKvhxef+S6UNzxfurvLNkzbnbpbXuM/J27J1vKL87SU/WVPl+3zbM/TUB5FIrLAoZ9+3OLS/S1tcZb97XTq75secsKMSdz+WlcPqZBVWp4umTc55AzMa8shVbJK26jf1JAzUK+thlSpKm2jfhNDzkG9vhhSLau0jfxNCzkD+dpaSJWm0jbq71EKQWopIeYVKyFAMSHEumohBCimg1jXqoNIeb9nGcS6UhlEFdnDOm0xJP8kQdpnNdz80/gOGu6t43faZBazj0+jsyZD3fxK2xQ+rWrU/cmnaKixvZm0uPvwdtp89/Vy9Pg/</diagram></mxfile>
|
|
Binary file not shown.
Before Width: | Height: | Size: 37 KiB |
Loading…
Reference in a new issue