Normalizzazione dei database

Introduzione alla normalizzazione Perché si normalizza? 🟩 Cercare di aumentare la qualità del nostro database, perché praticamente andiamo a risolvere delle anomalie possibili al nostro interno, e questo aiuta per la qualità. Solitamente queste anomalie sono interessanti per sistemi write intensive, in cui vogliamo mantenere i nostri dati in una forma buona. Però capita non raramente che vogliamo solamente leggere. In quei casi sistemi come Cloud Storage, Distributed file systems potrebbero risultare più effettivi. ...

6 min · Xuanqiang 'Angelo' Huang

Structured Query Language

Little bits of history It was invented in 1970 in Almaden (San Jose) by IBM (Don Chamberlin, Raymond Boyce worked on this) for the first relational database, called system R. Then for copyright issues it hasn’t been called SEQUEL, so they branded it as SQL. SQL is a declarative language With declaratives language there is a separation between what I call the intentionality and the actual process. In declarative languages we just say what we want the result to be, and don’t care what the actual implementation is like. This allows queries to be executed and optimized in different ways, even if the query on the surface is the same ...

7 min · Xuanqiang 'Angelo' Huang

Relational Algebra

Introduzione all’algebra relazionale Confronto con relazioni matematiche Le relazioni come le intendiamo in database sono leggermente diverse rispetto a quelle presenti per le relazioni matematiche: Non conta l’ordine Ci sono gli attributi Per il resto se introduciamo questo sistema per tenere conto delle astrazioni, possiamo analizzarle matematicamente, e questo ci fornisce qualche sicurezza in più diciamo. Four types of operations Set operations: union, intersection, difference Filter queries: Projecting or selecting Renaming queries: renames Join: correlare tuple di relazioni diverse Definition of tuples 🟩 Le relazioni sono esattamente quelle definite in matematica, però noi aggiungiamo anche gli attributi, in modo da poter considerare l’ordine delle colonne non importante. ...

8 min · Xuanqiang 'Angelo' Huang

Index, B-trees and hashes

Indexes Trattiamo qui di alcuni metodi che sono utilizzati per costruire indici Introduction to indexes Gli indici sono una struttura di dati aggiuntiva che ci permette di ricercare più in fretta alcuni valori per le queries. In questa sezione proviamo ad approfondire in che modo possono essere costruite e gestite. Search keys 🟩 Sono in breve la cosa che vogliamo andare a cercare. Solitamente sono nella forma <key, label>, che ci permette di trovare in fretta il label, che si potrebbe intendere come il valore che noi stiamo provando a cercare. ...

5 min · Xuanqiang 'Angelo' Huang

Introduction to databases

Basi di dati Cosa è un database? (2) 🟩 Si potrebbe intendere come un insieme di dati strutturato, utili per certi obiettivi di enterprise, aziende pubbliche o simili (uno delle necessità che la rivoluzione informatica ha più contribuito diciamo.) Un altro significato più importante è Un insieme di dati gestito da un Database Management System Tristemente con questa definizione anche excel è un DBMS… Solitamente sono utilizzati per gestire grandi quantità di dati. ...

6 min · Xuanqiang 'Angelo' Huang

Relational Model

This is the classical format that we encounter, it is the format used for relational databases introduced in databases course introduction, introduced in (Codd 1970). Introduzione, i modelli di dati Lista modelli di dati (4) Nel tempo sono stati sviluppati molti modelli di dati: Relational Data Model: This is the most common data model and uses tables to represent data. It organizes data into rows and columns, where each row represents a record, and each column represents an attribute of that record. Relationships between data are established through keys. ...

5 min · Xuanqiang 'Angelo' Huang

Advanced SQL

Check function A volte può essere molto pesante, perché What does check do? Viene utilizzato per introdurre un constraint check per avere sicurezza su un range. Check e innestamenti 🟩- Può essere che certe implementazioni non permettano il check innestato, questo è una cosa molto pesante, perché ogni modifica deve andare a rifare la modifica ai subalterni, quindi questo è pesante pesante. Assertions 🟩– Sono dei check fatti al livello dello schema, quindi valgono sempre, e possono essere riutilizzati in table diversi credo. Un altro aspetto è che è database wide. ...

4 min · Xuanqiang 'Angelo' Huang

Database logical design

Introduzione al design logico Conoscenze sul carico dell’applicazione, ossia se ha più read rispetto a writes per esempio, sono dei priors in pratica Un design concettuale spiegato in precedenza. E si avrà in output un design logico con anche un po’ di documentazione. bisogna in questa fase valutare la performance principalmente su indicatori, ossia una operazione quante istanze visiterà? Invece di garanzie sul numero di transazioni al secondo. ...

4 min · Xuanqiang 'Angelo' Huang

Design del database

Processo design del database Il design Some design steps (3) (non impo) How to gather requirements? 🟨+ Come si può raccogliere i dati degli utilizzatori? parlare col il personale che dovrà utilizzare questi sistemi Documentazione esistente Interview di persone che dovrà utilizzare queste risorse O Moduli per fare sampling Top-down approach La cosa brutta è che questi requisiti non possono essere standardizzati, ci sono molte necessità, molto diverse fra i loro, quindi è utile andare a parlare con gli esperti e capire cosa abbiano bisogno per i dati. Consiglio del prof. è partire dai senior e poi scendere, perché quelli in alto hanno un punto di vista più ampio ma con meno dettagli diciamo. ...

5 min · Xuanqiang 'Angelo' Huang

The Database Management System

Struttura del DBMS Introduzione ai DBMS Schema riassuntivo #### Operazioni classiche Ci stiamo chiedendo, come facciamo a descrivere i processi che portano alla comprensione della query e della retrieval degli elementi utili? Questo deve fare il DBMS, ossia capace di - Aggiornare tuple - Trovare tuple - Gestire gli accessi - Gestire accessi concorrenti? ### Query processor #### Query compiler (3) 🟩 - Parsing (crea l'albero di derivazione per la nostra query) - Pre-processing (fa check semantici sulla query) - Optimization, si occupa lui di migliorare L'ottimizzazione #### Execution engine 🟩 Esegue l'effettiva computazione per la query, ed è il punto d'incontro col resto (indexes, e logging per dire) Esegue il piano di esecuzione che probabilmente un livello superiore ha calcolato Interagisce con tutti gli altri componenti del db (ad esempio Log per transazioni e durabilità, buffer e scheduler delle operazioni prolly). Anche se non so nei dettagli in che modo esegue questo (alla fine roba assembly? che livello di astrazione ha?) ...

5 min · Xuanqiang 'Angelo' Huang