PostgreSQL database

È un motore di database sviluppato presso l’Università della California, è in costante crescita ed è il database relazionali open source più famosi e ben supportati secondo solo a MySQL. Il database PostgreSQL ha il grosso vantaggio di avere una delle comunità più integre e ampie nel mondo IT. Per la maggior parte degli sviluppatori, imparare ad utilizzare PostgreSQL è un gioco da ragazzi.

Potenzialità di PostgreSQL database

Il database PostgreSQL si basa sul modello relazionale. Abbiamo esaminato il modello relazionale parlandone nell’articolo dedicato a MySQL database. PostgreSQL offre una vera semantica ACID per le transazioni. Ricordiamo che ACID stà per:

  • Atomicità
  • Coerenza
  • Isolamento
  • Durabilità

Queste caratteristiche garantiscono affidabilità e integrità delle transazioni. Tutte le operazioni sono viste come unità indivisibili, tutto o niente, che rispettano regole definite. Le operazioni da e verso il database non interferiscono tra loro anche se sono concorrenti. Le modifiche completate sono permanenti, prevenendo corruzione dei dati anche in caso di guasti del sistema, un principio fondamentale per i database relazionali e talvolta adottato anche dai NoSQL per dati critici. Ha un supporto completo per chiavi esterne, join, viste, trigger e stored procedure, in molti linguaggi diversi. Include la maggior parte dei tipi di dati di SQL come INTEGER, VARCHAR, TIMESTAMP e BOOLEAN. Supporta anche la memorizzazione di oggetti binari di grandi dimensioni come immagini, video o suoni. Possiamo aggiungere che il database è scalabile nel numero di utenti concorrenti che può ospitare e nella quantità di dati che può gestire. Ovviamente PostgreSQL è multipiattaforma e può funzionare su tantissimi sistemi operativi come Linux, Windows, OS X, FreeBSD e Solaris.

Caricamento dinamico di nuove funzionalità

Il server PostgreSQL può includere il codice scritto dagli utenti utilizzando il caricamento dinamico. Lo sviluppatore può specificare un file di codice oggetto come ad esempio una libreria condivisa che realizza una nuova e specifica funzione o tipo. PostgreSQL può modificare il suo funzionamento per lo sviluppo rapido di nuove strutture di archiviazione e applicazioni. Questa funzionalità lo rende unico nel suo genere.

Architettura

Come ogni progetto open-source è nota la struttura del server PostgreSQL. Piuttosto semplice è composta da una memoria condivisa, processi in background e una struttura di directory di dati. I client inviano le richiesta al server. Successivamente il server PostgreSQL elabora i dati utilizzando buffer condivisi e processi in background. Il file fisico del server di database PostgreSQL è memorizzato nella directory dei dati.

Prestazioni

In PostgreSQL, le operazioni di scrittura possono avvenire in modo simultaneo senza richiedere blocchi di lettura o scrittura. Gli indici vengono impiegati per migliorare le prestazioni delle query su grandi volumi di dati. Il database così riesce ad individuare rapidamente le righe desiderate senza dover effettuare una scansione completa delle tabelle. Funzioni aggiuntive, oggetti e classi sono funzionalità supportate in modo nativo da PostgreSQL. Grazie al suo approccio orientato agli oggetti, il sistema consente di estendere i tipi di dati e di definire tipi personalizzati. Questo offre un elevato livello di flessibilità agli sviluppatori che lavorano con modelli di dati complessi e che necessitano di una forte integrazione con il database. Con questo approccio PostgreSQL gestisce l’ereditarietà delle tabelle. Una tabella figlia può ereditare le colonne della tabella madre e aggiungerne di proprie, differenziandosi così pur mantenendo una relazione strutturale con essa. PostgreSQL permette di creare indici basati su espressioni, che operano sul risultato di un’espressione o di una funzione anziché sul valore di una colonna. È supportata anche l’indicizzazione parziale, in cui solo un sottoinsieme della tabella viene indicizzato. A ciò si aggiungono la lettura parallela delle query, la compilazione Just-In-Time (JIT) delle espressioni e il supporto alle transazioni annidate tramite punti di salvataggio. Tutto questo garantisce elevati livelli di prestazioni ed efficienza. Come per MySQL non ha un sistema di backup automatico nativo, ma ha una serie di strumenti per gestire backup pianificati.

Conclusioni

Si distingue come uno dei migliori database per il supporto ai file CSV. Comandi semplici come COPY FROM e COPY TO consentono un’elaborazione rapida dei dati. In caso di errori durante l’importazione, il processo viene interrotto immediatamente e viene segnalata un’anomalia. PostgreSQL realizza query e relazioni complesse, che debbono essere aggiornate di frequente. Oltre a essere completamente gratuito e multipiattaforma. Per l’analisi dei dati, PostgreSQL mette a disposizione un’ampia gamma di espressioni regolari, offrendo una solida base per attività analitiche avanzate.