Corso
Data la popolarità di PostgreSQL, è probabile che il ruolo per cui ti stai candidando richieda una certa dimestichezza con PostgreSQL. Per aiutarti durante il processo di selezione, questo articolo offre una panoramica delle domande e risposte più comuni su PostgreSQL per tutti i livelli.
Di solito i colloqui partono da domande più basilari e generali per arrivare a quelle più complesse. Conta anche il livello di seniority: le domande saranno in generale più difficili se ti candidi per un ruolo più avanzato.
Infine, è importante essere concisi quando rispondi. Meglio andare dritti al punto che divagare, perché potrebbe portare a nuove domande su cui potresti non sentirti a tuo agio. Non preoccuparti: avrai tutto il tempo per dimostrare le tue competenze durante il colloquio e nelle fasi successive del processo di selezione.
Iniziamo!
15 migliori domande per principianti su PostgreSQL
1. Che cos’è PostgreSQL?
PostgreSQL è un sistema di gestione di database relazionali leggero, gratuito e open-source. È ampiamente usato in varie aree geografiche e aziende e può essere eseguito sui sistemi operativi più diffusi.
2. Quali sono i vantaggi di PostgreSQL?
PostgreSQL si distingue tra gli altri database SQL per diversi motivi, tra cui:
- Robustezza che lo rende adatto a ogni tipo di applicazione,
- Gratuito e open-source,
- Sicurezza e affidabilità
- Ampia varietà di tipi di dato,
- Una grande community di utenti in tutto il mondo.
3. Quali sono le principali applicazioni di PostgreSQL?
PostgreSQL ti permette di:
- Creare, eliminare e aggiornare tabelle in un database,
- Accedere, manipolare e modificare i dati in una tabella,
- Recuperare e sintetizzare le informazioni necessarie da una o più tabelle,
- Aggiungere o rimuovere determinate righe o colonne da una tabella
4. Cosa sono le operazioni CRUD in PostgreSQL?
CRUD (Create, Read, Update, Delete) sono le operazioni di base in qualsiasi sistema di database SQL, incluso PostgreSQL. Le operazioni CRUD sono frequentemente utilizzate nella progettazione e nella gestione dei database.
5. Che cos’è un database in PostgreSQL?
Come in altri dialetti SQL, il database è uno spazio di archiviazione strutturato in cui i dati sono conservati in molte tabelle e organizzati in modo che le informazioni necessarie possano essere facilmente recuperate, manipolate e sintetizzate.
6. Che cos’è pgAdmin in PostgreSQL?
pgAdmin è un’utile utility inclusa nell’installazione di PostgreSQL che ti consente di svolgere le normali attività legate al database tramite una comoda interfaccia grafica.
7. Come puoi creare un nuovo database in PostgreSQL?
PostgreSQL usa il comando standard CREATE DATABASE per creare nuovi database. Ma il diavolo sta nei dettagli. Ci sono molti aspetti da considerare quando si crea un database, e per questo abbiamo preparato il nostro corso Creating PostgreSQL Databases per coprire tutto ciò che ti serve.
8. Come puoi aggiungere nuovi valori a una determinata tabella?
PostgreSQL utilizza l’istruzione standard INSERT INTO per aggiungere dati alla tua tabella SQL.
9. Come puoi eliminare un database in PostgreSQL?
Per eliminare un database in PostgreSQL, usa il comando DROP DATABASE.
10. Che cos’è uno schema in PostgreSQL?
Uno schema di database contiene la configurazione logica e visiva dell’intero database relazionale. In PostgreSQL include le tabelle, insieme a tipi di dato, viste, indici, sequenze, vincoli e funzioni.
11. Come puoi selezionare le prime cinque righe in una tabella chiamata ‘customers’ in PostgreSQL?
Puoi recuperare quei dati con la seguente query:
SELECT * FROM customers LIMIT 5;
12. Che cos’è un vincolo in PostgreSQL?
Un insieme di condizioni che definiscono il tipo di dati che si possono inserire in ciascuna colonna di una tabella. I vincoli sono usati per garantire l’integrità dei dati in una tabella e prevenire azioni indesiderate.
13. Che cos’è una join in PostgreSQL?
Le join vengono utilizzate per combinare e recuperare record da due o più tabelle. PostgreSQL utilizza le join standard SQL per svolgere questo tipo di operazioni.
14. Puoi spiegare che cos’è una chiave primaria in PostgreSQL?
Una chiave primaria viene utilizzata per identificare in modo univoco una riga in una tabella. Le chiavi primarie possono essere composte da una o più colonne. Una chiave primaria è classificabile come un tipo di vincolo.
15. PostgreSQL è compatibile con Python?
Sì, esistono molti pacchetti che consentono di usare PostgreSQL tramite Python. Psycopg è una delle librerie Python più popolari per PostgreSQL. Sei curioso di usare PostgreSQL tramite Python? Leggi il nostro articolo dedicato Using PostgreSQL in Python Tutorial: Create, Connect, and Manage Databases.
15 domande intermedie su PostgreSQL
16. Qual è la differenza tra una chiave esterna e una chiave primaria in PostgreSQL?
Una chiave esterna fornisce chiavi condivise tra due o più tabelle, mentre una chiave primaria consente solo valori univoci e rigorosamente non nulli. Entrambe sono considerate tipi di vincoli.
17. Quali sono i principali vincoli in PostgreSQL?
PostgreSQL mette a disposizione i seguenti vincoli:
- Check constraint
- Not-null constraint
- Unique constraint
- Chiavi primarie
- Chiavi esterne
- Exclusion constraint
18. Qual è l’ultima versione di PostgreSQL?
A gennaio 2024, l’ultima versione è PostgreSQL 16.
19. Puoi eseguire PostgreSQL sul cloud?
Sì, PostgreSQL è compatibile ed è eseguibile sulla maggior parte dei provider cloud più popolari, tra cui AWS, Azure e Google Cloud.
20. Che cos’è PL/Python in PostgreSQL?
PostgreSQL supporta un linguaggio procedurale noto come PL/Python. Questo ti permette di scrivere funzioni e procedure SQL usando Python.
21. Che cos’è il Multi-version Concurrency Control in PostgreSQL?
Il Multi-version Concurrency Control, o MVCC, è una tecnica avanzata in PostgreSQL. Migliora le prestazioni del database in scenari multiutente. Significa che, durante l’interrogazione, ogni transazione vede uno snapshot dei dati (una versione del database) com’era in un certo momento, indipendentemente dallo stato attuale dei dati sottostanti. Ciò protegge la transazione dalla visualizzazione di dati incoerenti causati da aggiornamenti concorrenti (di altre) transazioni sulle stesse righe.
In parole povere, MVCC crea più versioni di un singolo record di database, consentendo a varie transazioni di accedere a versioni diverse dello stesso record senza entrare in conflitto tra loro, permettendo così l’elaborazione simultanea.
22. Qual è la dimensione massima di una tabella in PostgreSQL?
Sebbene PostgreSQL offra dimensioni illimitate per il database, esiste una dimensione massima per le tabelle, fissata a 32 TB.
23. Quali sono i principali operatori in PostgreSQL?
I principali tipi di operatori disponibili in PostgreSQL sono:
- Operatori aritmetici
- Operatori logici
- Operatori di confronto
- Operatori bitwise
24. Che cos’è un indice in PostgreSQL?
Un indice è una struttura dati speciale correlata a una tabella e utilizzata per memorizzarne le parti importanti, consentendo ricerche e recuperi più rapidi. Ciò è ottenuto creando una struttura dati ordinata che permette a PostgreSQL di individuare le righe più velocemente rispetto a una scansione completa della tabella. Gli indici sono particolarmente efficienti per database di grandi dimensioni, dove migliorano sensibilmente le prestazioni delle query.
25. Che cos’è il partitioning in PostgreSQL?
È il processo di suddivisione di una grande tabella in parti più piccole. Può essere effettuato con diversi metodi, tra cui range partitioning, list partitioning e hash partitioning.
26. Quali sono le 4 proprietà principali di una transazione in PostgreSQL? Quale acronimo si usa per riferirsi ad esse?
Le transazioni in PostgreSQL devono essere atomiche, consistenti, isolate e durevoli. Queste proprietà sono comunemente indicate con l’acronimo ACID.
27. Che cos’è il Write-Ahead Logging in PostgreSQL?
Il write-ahead logging è una tecnica usata per garantire l’integrità dei dati dei database PostgreSQL. Assicura che tutte le modifiche e le azioni nel database vengano registrate in un transaction log prima dell’aggiornamento o della modifica del database. In caso di crash del database, questo aiuta a disporre del registro delle modifiche.
28. Quali tipi di join sono disponibili in PostgreSQL?
In PostgreSQL, le principali join sono:
- INNER JOIN: Restituisce i record che hanno valori corrispondenti in entrambe le tabelle
- LEFT JOIN: Restituisce tutti i record della tabella di sinistra e quelli corrispondenti della tabella di destra
- RIGHT JOIN: Restituisce tutti i record della tabella di destra e quelli corrispondenti della tabella di sinistra
- FULL JOIN: Restituisce tutti i record quando c’è una corrispondenza in almeno una delle due tabelle
29. Che cos’è una funzione in PostgreSQL?
Le funzioni, note anche come stored procedure, ti consentono di racchiudere in un’unica procedura diverse operazioni che normalmente richiederebbero più query. Possono essere riutilizzate in qualsiasi momento, aiutando a risparmiare tempo. Per saperne di più sulle funzioni in PostgreSQL, dai un’occhiata al nostro corso Functions for Manipulating Data in PostgreSQL
30. Che cos’è una vista in PostgreSQL?
Le viste rappresentano il risultato di una query su una o più tabelle sottostanti. Sono utilizzate per semplificare query complesse, poiché queste vengono definite una volta nella vista e poi interrogate direttamente tramite essa.
15 domande avanzate e tecniche su PostgreSQL
31. Che cos’è la normalizzazione in PostgreSQL?
La normalizzazione del database è un processo con cui i database e le tabelle vengono creati o modificati per risolvere inefficienze legate all’archiviazione dei dati, alla loro modifica o ai processi di interrogazione. In termini semplici, la normalizzazione prevede più passaggi per ridurre ridondanza e complessità dei dati.
32. Che cosa sono i trigger in PostgreSQL?
Un trigger, noto anche come funzione di callback, è una specifica secondo cui il database deve eseguire automaticamente una determinata funzione ogni volta che viene effettuato un certo tipo di operazione. I trigger possono essere definiti per essere eseguiti prima o dopo qualsiasi operazione di INSERT, UPDATE o DELETE, una volta per ogni riga modificata oppure una volta per istruzione SQL. Se si verifica un evento di trigger, la funzione del trigger viene chiamata al momento opportuno per gestirlo. I trigger aiutano a garantire l’integrità dei dati durante le modifiche al database.
33. Come puoi effettuare un backup di un database in PostgreSQL?
Effettuare il backup del database in PostgreSQL è piuttosto semplice. Ci sono vari metodi, tra cui:
- Dump SQL
- Backup a livello di file system
- Backup online
34. A cosa serve il metodo pg_dump?
Il metodo pg_dump ti consente di creare un file di testo con una serie di comandi SQL che, se eseguiti su un server PostgreSQL, ricreeranno il database nello stesso stato in cui si trovava al momento del dump.
35. Come puoi eliminare una tabella e qualsiasi altro oggetto a essa associato, come viste, trigger, funzioni e stored procedure?
Per eliminare una tabella in PostgreSQL, usa il comando DROP TABLE seguito dal nome della tabella. Per assicurarti che vengano eliminati anche gli altri oggetti associati, devi aggiungere il comando CASCADE.
36. Quali sono i vantaggi del partitioning?
Il partitioning consente di suddividere una tabella in partizioni più piccole e più gestibili, con un conseguente aumento delle prestazioni delle query. È particolarmente indicato quando si lavora con tabelle di grandi dimensioni.
37. Qual è il modo più veloce per rimuovere tutte le righe in una grande tabella?
Ci sono due modi principali per rimuovere le righe in una tabella: il comando DELETE e il comando TRUNCATE. Il primo è pensato per rimuovere le righe in modo più selettivo e richiede una scansione completa delle tabelle. Il secondo rimuove rapidamente tutte le righe e libera spazio su disco senza richiedere una scansione della tabella. Pertanto, il comando TRUNCATE è il più adatto.
38. Quali comandi si usano per controllare le transazioni in PostgreSQL?
Ci sono 3 comandi principali per controllare le transazioni in PostgreSQL:
- BEGIN TRANSACTION o semplicemente BEGIN: per avviare una transazione.
- COMMIT o END TRANSACTION: per salvare le modifiche. Il comando COMMIT salva tutte le transazioni nel database dall’ultimo COMMIT o ROLLBACK.
- ROLLBACK: viene usato per annullare le transazioni che non sono ancora state salvate nel database.
39. Come viene garantita la sicurezza in PostgreSQL?
PostgreSQL è uno dei database SQL più sicuri. La sicurezza è affrontata su più livelli:
- Protezione dei file del database. Tutti i file archiviati nel database sono protetti dalla lettura da parte di qualsiasi account diverso dall’account superuser di Postgres.
- Le connessioni da un client al server del database sono, per impostazione predefinita, consentite solo tramite un socket Unix locale
- Le connessioni client possono essere limitate in base all’indirizzo IP e/o al nome utente.
- Le connessioni client possono essere autenticate tramite altri pacchetti esterni.
- A ogni utente in Postgres viene assegnato un nome utente e (facoltativamente) una password.
- Gli utenti possono essere assegnati a gruppi e l’accesso alle tabelle può essere limitato in base ai privilegi del gruppo.
40. Immagina di avere una grande tabella con le temperature giornaliere storiche di New York. Quale sarebbe la strategia più efficace per partizionarla?
Quando si lavora con dati di serie storiche, la strategia più efficace è il range partitioning, che consente di suddividere le tabelle in base a un intervallo di valori fisso. In questo caso, la partizione più probabile sarebbe basata sui giorni.
41. Che cos’è il parallel querying in PostgreSQL?
Il parallel querying è una tecnica in PostgreSQL che consente di creare piani di query in grado di sfruttare più CPU per rispondere alle interrogazioni in modo più efficiente. Questa tecnica è particolarmente adatta quando la query prevede la scansione di molti dati ma restituisce poche righe, ad esempio per calcoli aggregati.
42. Come puoi migliorare le prestazioni delle query in PostgreSQL?
Esistono diverse strategie per aumentare le prestazioni delle query, tra cui:
- Usare gli indici, soprattutto nelle query che prevedono clausole WHERE;
- Scrivere istruzioni SQL efficienti per ridurre l’overhead di elaborazione, ad esempio evitando colonne non necessarie nella SELECT.
- Implementare il partitioning per le tabelle di grandi dimensioni.
- Ottimizzare l’uso della memoria regolando i parametri del server in base alle specifiche hardware.
Soprattutto con database di grandi dimensioni, migliorare le prestazioni delle query è cruciale per evitare colli di bottiglia indesiderati. Dai un’occhiata al nostro corso Improving Query Performance in PostgreSQL per diventare un mago delle query.
43. In quali scenari il comando EXPLAIN ANALYZE può tornare utile?
Il comando EXPLAIN mostra il piano di esecuzione di un’istruzione SQL. Include il modo in cui verranno elaborati i riferimenti alle tabelle nella tua istruzione, gli algoritmi sottostanti che verranno usati per operazioni complesse come le join, nonché il tempo di esecuzione stimato.
Se, oltre al tempo stimato, vuoi conoscere il tempo effettivo richiesto, puoi aggiungere il comando ANALYZE e l’istruzione verrà effettivamente eseguita, non solo pianificata.
In generale, EXPLAIN ANALYZE è particolarmente utile per individuare i colli di bottiglia nelle query complesse, così da poterle riscrivere e migliorarne le prestazioni.
44. Come puoi gestire gli errori in PostgreSQL?
Ci sono due modi principali per gestire gli errori in PostgreSQL:
- È possibile sviluppare funzioni di callback per gestire condizioni di avviso ed errore. In questo caso, puoi specificare un certo comportamento in caso di errori e avvisi nelle query usando il comando WHENEVER.
- È possibile ottenere informazioni dettagliate sull’errore o sull’avviso dalla variabile sqlca. Questa variabile fornisce dettagli quando si verificano errori e avvisi durante l’esecuzione.
45. Qual è la rilevanza dei log per il troubleshooting in PostgreSQL?
I log di PostgreSQL sono una risorsa preziosa per risolvere problemi, monitorare le prestazioni e fare auditing dell’attività del database. PostgreSQL offre un’ampia varietà di log, compresi i log di errore. Questi log possono aiutarti a individuare query e istruzioni che portano a errori durante l’esecuzione.
Oltre alle competenze tecniche
Avere una solida conoscenza di PostgreSQL sarà fondamentale per superare il colloquio. Ma ricorda che i colloqui servono anche a valutare altre competenze oltre a quelle tecniche. Alla fine, il successo di un progetto di data science non dipende solo dal codice, ma anche dalle persone che lo scrivono.
Ecco perché dimostrare solide soft skill, come approccio al problem solving, comunicazione e lavoro di squadra in ruoli tecnici, aumenterà significativamente le tue possibilità di ottenere la posizione.
Quindi, preparati ad affrontare domande comportamentali, ad esempio come gestire le scadenze, le brutte atmosfere nel team e i clienti esigenti. Questi scenari non riguardano solo la vita quotidiana dei professionisti dei dati, ma i dipendenti di qualsiasi settore. Per questo motivo, le tue esperienze lavorative precedenti, anche se non legate ai dati, possono aiutarti a rispondere a queste domande. Prenditi il tempo per rispondere e sii te stesso: non esiste una risposta nettamente giusta o sbagliata.
Prepararsi al colloquio su PostgreSQL
Una preparazione accurata del tuo colloquio su PostgreSQL è fondamentale per superare questa fase del processo di candidatura. Abbiamo già menzionato l’importanza di una solida base su PostgreSQL, ma è probabile che durante il colloquio emergano anche altre tipologie di domande, incluse quelle non tecniche.
A causa dell’alto grado di incertezza che accompagna i colloqui, questa fase può essere stressante. Per aiutarti a superarla, abbiamo preparato alcuni suggerimenti e trucchi.
- Nessuno si aspetta che tu sappia tutto. Non avere una competenza specifica è normale. Se l’azienda chiede una soluzione in R ma tu sai farla solo in Python, mostra come risolveresti il problema con Python e dimostra la tua disponibilità a imparare R.
- Pensa prima di rispondere. Chiedi più tempo se la domanda lo richiede. Dimostra che prendi sul serio le loro domande. Tuttavia, non farlo per ogni domanda.
- Spiega perché il tuo ruolo è chiave per l’azienda. A volte, soprattutto nelle aziende più piccole, potrebbero non sapere appieno perché hanno bisogno di un data scientist. In tal caso, sottolinea come puoi migliorare visibilità e profitti dell’azienda migliorando i prodotti esistenti o creando nuove soluzioni.
- Gestire i rifiuti. È la realtà del mercato del lavoro competitivo di oggi. Impara dai tuoi errori, continua a imparare nuove competenze e migliora quelle che già hai. Chiedi consiglio a colleghi più senior, soprattutto se lavorano nella data science. Puoi anche chiedere un feedback all’intervistatore se non hai successo in una candidatura.
Ricorda, i settori differiscono. Lavorare come professionista dei dati in domini diversi può variare parecchio. Un’azienda biotech è diversa da un provider di servizi cloud. Dedica un po’ di tempo a capire le specificità del settore dell’azienda e mostra la tua voglia di imparare. Tuttavia, alla base, chiunque lavora con i dati, e i dati si approcciano in modi simili, indipendentemente dal settore.
Come ha spiegato Andrew Reiskind, CDO di Mastercard, in un episodio del podcast DataFramed:
Un esercizio interessante che abbiamo fatto all'inizio dell'anno scorso è stato capire dove fossero le nostre priorità. Le nostre priorità riguardano ancora molto la qualità dei dati. L'IA sostanzialmente consuma molti più dati, molto più velocemente, con meno intervento umano. E quindi, la qualità dei dati, la comprensibilità dei dati, sono diventate ancora più importanti. È questo loop di feedback che rafforza l'esigenza di mettere a posto le basi per alimentare l'IA, così da conoscere le metriche di qualità relative a completezza e accuratezza: è mission critical.
Andrew Reiskind, CDO at Mastercard
Conclusione
Congratulazioni per essere arrivato alla fine di questa guida. Speriamo che questo elenco di domande frequenti su PostgreSQL ti aiuti a prepararti al colloquio e a sentirti più sicuro.
Se pensi di aver bisogno di più formazione su PostgreSQL per prepararti meglio a un colloquio, DataCamp è qui. Dai un’occhiata ai seguenti corsi e materiali dedicati:
Sono una data analyst freelance e collaboro con aziende e organizzazioni di tutto il mondo in progetti di data science. Sono anche un'insegnante di data science con oltre 2 anni di esperienza. Scrivo regolarmente articoli su temi legati alla data science in inglese e spagnolo, alcuni dei quali sono stati pubblicati su siti affermati come DataCamp, Towards Data Science e Analytics Vidhya. Come data scientist con un background in scienze politiche e diritto, il mio obiettivo è lavorare all'intersezione tra politiche pubbliche, diritto e tecnologia, sfruttando la forza delle idee per promuovere soluzioni e narrazioni innovative che ci aiutino ad affrontare le sfide urgenti, in primis la crisi climatica. Mi considero autodidatta, una persona in continuo apprendimento e una convinta sostenitrice dell'approccio multidisciplinare. Non è mai troppo tardi per imparare cose nuove.


