Area DATABASE — Database e SQL avanzato

SQL avanzato, livelli di isolamento delle transazioni (ACID), indici, ottimizzazione query, database distribuiti.

5 domande disponibili in questa area — Pratica solo questa area →

Domande del paniere

1. Rif. INF-0167 · Tipo: profilo

Un database NoSQL di tipo 'document store' (es. MongoDB) memorizza i dati come:

[A] Righe e colonne in tabelle con schema fisso
[B] Documenti JSON/BSON con schema flessibile ✓
[C] Coppie chiave-valore in memoria
[D] Grafi di nodi e archi
Spiegazione

I document store (MongoDB, CouchDB) memorizzano dati come documenti semi-strutturati (JSON, BSON) con schema flessibile. Key-value sono Redis/DynamoDB. Graph database sono Neo4j.

2. Rif. INF-0168 · Tipo: profilo

Il teorema CAP afferma che un sistema distribuito può garantire al massimo due proprietà tra: Consistency, Availability e:

[A] Performance
[B] Partition tolerance ✓
[C] Privacy
[D] Persistence
Spiegazione

Il teorema CAP (Brewer, 2000): un sistema distribuito può garantire al massimo due di: Consistency (tutti i nodi vedono gli stessi dati), Availability (ogni richiesta riceve risposta), Partition Tolerance (funziona anche se nodi si disconnettono).

3. Rif. INF-0169 · Tipo: profilo

Il problema N+1 query in un ORM si verifica quando:

[A] Il database esegue una query che torna N righe vuote
[B] Per N record principali vengono eseguite N query separate invece di un join ✓
[C] Il sistema esegue più di N connessioni simultanee al database
[D] La query impiega più di N secondi
Spiegazione

Il problema N+1 query: si carica 1 query per N oggetti, poi per ogni oggetto si fa 1 query aggiuntiva, risultando in N+1 query totali invece di una sola con JOIN. Risolto con eager loading.

4. Rif. INF-0170 · Tipo: profilo

In SQL, gli indici B-Tree sono ottimali per:

[A] Ricerche full-text su testi lunghi
[B] Confronti di uguaglianza e range (>, <, BETWEEN, ORDER BY) ✓
[C] Aggregazioni numeriche (SUM, AVG)
[D] Join tra tabelle con molte colonne
Spiegazione

Gli indici B-Tree sono ottimali per equality lookups (=), range queries (BETWEEN, >, <), e ORDER BY. Per full-text si usano indici GIN/GIST (PostgreSQL) o FULLTEXT (MySQL).

5. Rif. INF-0171 · Tipo: profilo

Il livello di isolamento 'SERIALIZABLE' in SQL garantisce:

[A] Solo la protezione dalle dirty read
[B] Il massimo isolamento: le transazioni si comportano come se fossero eseguite in serie ✓
[C] La velocità massima delle transazioni concorrenti
[D] Solo la protezione da non-repeatable read
Spiegazione

SERIALIZABLE è il livello di isolamento più alto: garantisce che il risultato di transazioni concorrenti sia equivalente a una loro esecuzione seriale. Protegge da dirty read, non-repeatable read e phantom read.