PostgreSQL (spesso abbreviato in "Postgres") è il database open source relazionale a oggetti più avanzato al mondo. È progettato per prestazioni di livello enterprise ed è apprezzato per le sue solide funzionalità e affidabilità.
Postgres nacque nel 1986 come evoluzione di Ingres, un precedente database della University of California, Berkeley. Dal 1994, utilizza Structured Query Language (SQL) per query e transazioni ed è stato continuamente aggiornato da una community di sviluppatori individuali e aziendali.
Questa lunga storia di sviluppo e utilizzo di SQL rende PostgreSQL uno dei database open source più popolari al mondo, con tutti i principali fornitori di cloud che offrono PostgreSQL o Database as a Service derivati da PostgreSQL.
Registrati per una prova gratuita di qualsiasi database PostgreSQL di Google Cloud, tra cui AlloyDB, Cloud SQL per PostgreSQL e Spanner.
Un database relazionale archivia i dati in tabelle strutturate di righe e colonne e conserva le informazioni sui dati collegati in più tabelle.
Ad esempio, una banca retail potrebbe avere un tabelle che contiene righe di informazioni sui clienti, in cui ogni riga include il nome, il numero di telefono e l'indirizzo del cliente come colonne. Potrebbe esserci una seconda tabella che memorizza le informazioni sulle transazioni. Un database relazionale collegherebbe le righe delle due tabelle, in modo che la banca possa tenere traccia di quali clienti hanno effettuato quali transazioni.
Una "query" è un'operazione singola per richiedere informazioni dal database. Una "transazione" è una sequenza di operazioni che può manipolare i dati nel database. Le operazioni di archiviazione di base sono comunemente indicate con l'acronimo "CRUD", che sta per: create, read, update, and delete (creazione, lettura, aggiornamento ed eliminazione).
Per ottimizzare il recupero delle informazioni dal database, PostgreSQL utilizza gli indici, ovvero copie di una parte di una tabella che vengono riorganizzate per una ricerca più rapida. Dal punto di vista concettuale, sono simili a un indice alla fine di un libro che consente di trovare rapidamente un elemento senza dover scorrere l'intero libro.
In quanto database relazionale, PostgreSQL utilizza descrizioni formali chiamate "schemi" per descrivere la struttura dei dati contenuti. In particolare, uno schema è la raccolta di tabelle, indici e funzioni nel database e PostgreSQL supporta più schemi.
I professionisti dei database sono responsabili della progettazione di uno schema e di un insieme di indici che rappresentino al meglio i dati e il modo in cui vengono utilizzati dagli utenti dell'applicazione. Sono inoltre responsabili delle attività di manutenzione e gestione per mantenere i dati al sicuro e il database in perfetto funzionamento.
Dal suo sviluppo a Berkeley, PostgreSQL è rimasto open source, il che significa che il codice è completamente aperto per la visualizzazione, la modifica e la distribuzione.
Gli sviluppatori possono utilizzare database open source per le loro applicazioni senza costi di licenza e con la massima flessibilità di deployment, poiché questi database vengono eseguiti su un'ampia varietà di piattaforme cloud e non cloud. Una community di sviluppatori contribuisce al miglioramento e alla manutenzione del software, migliorando la sicurezza e l'affidabilità.
La popolarità di PostgreSQL è aumentata negli ultimi anni, rendendolo uno dei database più utilizzati a livello mondiale. Offre numerosi vantaggi:
PostgreSQL viene utilizzato per un'ampia gamma di applicazioni grazie alla sua flessibilità, affidabilità e solido set di funzionalità. Ecco alcuni casi d'uso comuni:
Apprezzato per le applicazioni altamente sicure e noto per la possibilità di audit, la conformità e la protezione dei dati.
PostgreSQL può gestire query su miliardi di righe ed è comunemente utilizzato per aumentare i data warehouse e altri sistemi di analisi con dati operativi in tempo reale. Infatti, diversi prodotti di data warehouse famosi sono stati sviluppati a partire da PostgreSQL.
Scalabile, robusto e in grado di gestire elevati livelli di traffico, PostgreSQL è affidabile per applicazioni mobile, web, social media e altre applicazioni ad alto volume.
PostgreSQL supporta i dati geografici, in modo che le applicazioni possano calcolare la distanza tra i punti ed eseguire calcoli geospaziali per applicazioni di navigazione, logistica e agricoltura.
PostgreSQL offre una ricerca vettoriale ad alte prestazioni ed è comunemente utilizzato per fornire input ai modelli linguistici di grandi dimensioni (LLM), spesso estendendo questi modelli tramite la retrieval-augmented generation (RAG). Gli sviluppatori scelgono spesso PostgreSQL per creare
PostgreSQL è comunemente utilizzato dalle organizzazioni per spostare le app legacy su una piattaforma moderna e open source.
Le sezioni seguenti forniscono un approfondimento dell'ecosistema di PostgreSQL. Leggi i confronti con AlloyDB e Aurora, SQL Server, MySQL e Oracle e, infine, dai uno sguardo alle differenze tra database PostgreSQL completamente gestiti e con gestione autonoma.
Esistono sul mercato diversi prodotti commerciali con vari livelli di compatibilità con PostgreSQL. Due dei più popolari sono AlloyDB di Google Cloud e Aurora di AWS.
AlloyDB funziona su qualsiasi piattaforma e in qualsiasi cloud, mentre Aurora funziona solo su Amazon Web Services (AWS). AlloyDB, invece, si concentra su PostgreSQL, mentre Aurora offre sia motori PostgreSQL che MySQL.
AlloyDB è diventato una scelta popolare per le aziende perché:
PostgreSQL è un database open source che funziona sulla maggior parte dei sistemi operativi, mentre SQL Server è un prodotto commerciale che funziona su Microsoft Windows e Linux. Entrambi sono disponibili come servizi cloud gestiti da molti fornitori.
Pur condividendo molte funzionalità principali, i due sistemi presentano alcune differenze. Un vantaggio chiave di PostgreSQL è che utilizza il controllo della concorrenza multi-versione (MVCC) per l'elaborazione simultanea, quindi può elaborare frequenze di transazioni elevate con quasi nessun deadlock. SQL Server è noto per le sue prestazioni elevate e le funzionalità di database in memoria, funzionalità che sono fornite anche da AlloyDB.
Per un confronto completo, leggi PostgreSQL e SQL Server a confronto.
MySQL è un database relazionale basato su SQL, mentre PostgreSQL è un database relazionale a oggetti. Sebbene entrambi siano open source, PostgreSQL segue una licenza che consente la distribuzione commerciale. Il progetto open source MySQL è sponsorizzato da Oracle.
PostgreSQL scala aggiungendo processi, il che storicamente è un buon approccio per applicazioni affidabili. Il meccanismo di estensione di PostgreSQL lo rende una piattaforma generalmente più popolare per i contributi della community.
MySQL scala aggiungendo thread, il che in genere è utile per applicazioni su piccola scala con poche risorse.
La scelta spesso si riduce a una preferenza personale e all'esperienza degli sviluppatori qualificati disponibili.
Alcune differenze tecniche tra PostgreSQL e MySQL:
PostgreSQL
MySQL
PostgreSQL e Oracle sono entrambi database relazionali comuni che supportano SQL e utilizzano linguaggi procedurali comparabili (PL/SQL nel caso di Oracle). Entrambi sono apprezzati per la loro scalabilità e sicurezza.
Oracle è utilizzato da aziende di tutte le dimensioni per gestire applicazioni mission critical ed è noto per la sua disponibilità e il supporto di funzionalità avanzate come il clustering.
PostgreSQL offre caratteristiche e funzionalità simili a Oracle, tra cui disaster recovery, prestazioni elevate e replica integrata. Le aziende scelgono PostgreSQL come alternativa più aperta ed economica a Oracle.
Come per tutti i database, la gestione autonoma richiede esperienza tecnica all'interno del team. Ciò include la conoscenza della configurazione e della manutenzione dell'architettura, della scalabilità dei job e delle competenze generali di gestione del database, come l'esecuzione di upgrade, backup, manutenzione della sicurezza, disaster recovery e installazione di patch. I team di sviluppo preferiscono sempre di più un database completamente gestito per potersi concentrare sulle proprie applicazioni.
Database completamente gestiti:
Tuttavia, se hai bisogno del controllo completo sull'ambiente del database a causa di esigenze applicative uniche, il database autogestito ti offre questa flessibilità.
Le estensioni ti consentono di espandere e personalizzare la funzionalità del tuo database in base alle tue esigenze specifiche. PostgreSQL offre un supporto completo per le estensioni, che si comportano esattamente come le funzioni integrate, incluse quelle sviluppate esternamente.
Alcune estensioni usate comunemente sono:
PostgreSQL supporta sia tipi di dati di base che tipi di dati avanzati non comunemente presenti in altri database, tra cui booleano, numero, intero, timestamp, array e altro ancora. Gli sviluppatori possono anche creare i propri tipi di dati.
Il suo linguaggio procedurale predefinito è un'estensione di pgSQL (PL/pgSQL), con estensioni di linguaggi procedurali di Tcl, Perl e Python incluse nella distribuzione standard (scritte come PL/Tcl, PL/Perl e PL/Python). Questi linguaggi procedurali caricabili consentono di utilizzare il linguaggio di programmazione per creare funzioni e attivare procedure.
Molti altri linguaggi sono supportati tramite estensioni, tra cui Java, Ruby, C, C++, Delphi e JavaScript.
PostgreSQL ti consente di scrivere codice in più lingue senza ricompilare il database, un vantaggio fondamentale per gli sviluppatori.
Sì, PostgreSQL è conforme a ACID dal 2001.
ACID (atomicità, coerenza, isolamento, durabilità) è un insieme di proprietà che descrivono come i database transazionali garantiscono la validità dei dati. La conformità agli standard ACID garantisce la qualità dei dati anche in caso di interruzione della rete o guasto dell'hardware e consente la lettura e la scrittura contemporaneamente senza perdita o danneggiamento dei dati. Questi principi sono di fondamentale importanza per le applicazioni in molti settori, tra cui finanza e assistenza sanitaria.
Immaginiamo, ad esempio, che un'applicazione bancaria stia trasferendo un saldo tra due conti all'interno del database. In caso di interruzione o errore durante la transazione, un database conforme agli standard ACID assicura che i soldi non scompaiano o vengano accreditati più di una volta: i saldi degli account rimangono sempre validi.
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.