Skip to content

Commit

Permalink
vault backup: 2025-02-01 12:20:48
Browse files Browse the repository at this point in the history
  • Loading branch information
AglaiaNorza committed Feb 1, 2025
1 parent cc26b48 commit 5012ab9
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 6 deletions.
Empty file removed Untitled.md
Empty file.
Binary file added attachments/fi-inserimento1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions basi di dati 1/16 - file con indice.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Il costo sarà quindi **costo della ricerca + 1 accesso** in scrittura.
>- non conviene mettere un solo record nel nuovo blocco, ma metterne qualcuno e lasciare dello spazio libero sia nel vecchio che nel nuovo blocco (per facilitare futuri inserimenti)
>[!example]- esempio nuovo blocco
>![[fi-inserimento1.jpg|center|400]]
>![[fi-inserimento1.png|center|400]]
>![[fi-inserimento2.jpg|center|400]]
### cancellazione
Expand All @@ -84,7 +84,7 @@ Il costo è quindi **costo della ricerca + 1 accesso** per scrivere il blocco mo
- se invece il record cancellato è l'unico blocco del record, il blocco viene restituito al sistema e viene modificato l'indice
### modifica
Per modificare un blocco dobbiamo trovarlo e poi modificarlo.
(Se la modifica non coinvolge la chiave), il costo è quindi **costo della ricerca + 1 accesso**.
(Se la modifica non coinvolge la chiave), il costo è quindi **costo della ricerca + 1 accesso** (per scrivere il blocco modificato)

>[!warning] modifica della chiave
>Nel caso in cui dobbiamo modificare la chiave di un record, serviranno *una cancellazione e un inserimento* (dobbiamo cancellare e reinserire il record - non si può modificare una chiave)
Expand All @@ -101,7 +101,7 @@ Ogni record del file indice punta al *primo blocco* di un bucket, e *il file ind
![[record-puntati.jpeg|center|450]]
### operazioni
- la **ricerca** richiede la ricerca sul file indice di una chiave che ricopra il valore che si cerca, e la scansione del bucket corrispondente
- la **cancellazione** richiede la ricerca del record e la *modifica dei bit di cancellazione* nell'intestazione del blocco (non si possono cancellare completamente blocchi perché contengono puntatori ad altri blocchi utili?)
- la **cancellazione** richiede la ricerca del record e la *modifica dei bit di cancellazione* nell'intestazione del blocco
- la **modifica** richiede la ricerca del record, la modifica, e la riscrittura del blocco (se non coinvolge la chiave).
- se la modifica coinvolge la *chiave*, equivale alla cancellazione seguita da un inserimento
- in questo caso, non è sufficiente modificare il bit di cancellazione del record cancellato, ma è necessario *inserire in esso un puntatore al nuovo record inserito* in modo che sia raggiungibile da qualsiasi record che contenga un puntatore al record cancellato
Expand Down
7 changes: 4 additions & 3 deletions basi di dati 1/17 - B-tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ Il B-tree nasce dalla *generalizzazione della struttura di file con indice*.

Si accede ad un file attraverso una **gerarchia di indici** - l'indice a livello più alto (*radice*) è costituito da un unico blocco e *risiede in memoria principale*.
Ogni blocco di un file indice è costituito da record contenenti una coppia (v,b)
- v --> valore della chiave del primo record della porzione del file principale a cui fa riferimento la coppia
- b --> puntatore (ad un blocco del file indice a livello più basso, o ad un blocco del file principale)
- `v` --> valore della chiave del primo record della porzione del file principale a cui fa riferimento la coppia
- `b` --> puntatore (ad un blocco del file indice a livello più basso, o ad un blocco del file principale)

>[!tip] il primo record indice di ogni blocco contiene **solo un puntatore** (niente chiave) <small>ad un blocco che ha chiavi minori di quelle puntate dal secondo record</small>
Expand Down Expand Up @@ -73,7 +73,8 @@ L'*altezza massima* ($k$) si ha quando i blocchi sono pieni al minimo, ovvero qu
Quindi:
- il *file principale* ha al massimo $\frac{N}{e}$ blocchi (numero record/record x blocco)
- a livello $i$, il *file indice* ha
- $\frac{N}{ed^{i-1}}$ blocchi ($\frac{N}{e}$, che viene diviso per $d$ ad ogni livello)
- $\frac{N}{ed^{i-1}}$ record, memorizzati in:
- $\frac{N}{ed^{i}}$ blocchi ($\frac{N}{e}$, che viene diviso per $d$ ad ogni livello)
- (livello 1: $\frac{N}{ed}$ ...)

A livello $k$, l'indice avrà esattamente un blocco, quindi dobbiamo fermarci quando:
Expand Down

0 comments on commit 5012ab9

Please sign in to comment.