Pillola teorica: scopriamo insieme cosa è PostgreSQL e come funziona #axts #devdiary #pillole #postgresql
NEWSLETTER? NO, GRAZIE!
Unisciti al mio canale Telegram! Onnipresente. Silenzioso. Non ingombrante.
> AxelTheSaint <
PostgreSQL
PostgreSQL è un sistema di database relazionale a oggetto (ORDBMS), open source e gratuito.
Il punto di forza la programmabilità: rende, infatti, più semplice costruire applicazioni per il mondo reale. Le altre principali caratteristiche di Postgres sono affidabilità, integrità dei dati, funzionalità ed estendibilità.
PostgreSQL è disponibile per tutte le principali piattaforme, tra cui Linux, UNIX, Windows e OS, per l’interrogazione ed interazione con i dati utilizza un linguaggio sottoinsieme di SQL. Il sistema è supportato da una community open source che lo gestisce, manutiene, aggiorna e sviluppa.
N.B. : database e base di dati sono il solito concetto chiamato in modo differente per non rendere la lettura monotona.
SQL e PostgreSQL: la soluzione al problema di impedance mismatch
I database SQL conservano dati semplici in “flat table”, l’utente deve quindi prelevare e raggruppare le informazioni correlate utilizzando le query. Questo contrasto con il modo in cui sia le applicazioni che gli utenti utilizzando i dati (come nel linguaggio di programmazione orientato a oggettiLa programmazione ad oggetti, chiamata anche Object Oriented Programming (OOP), è un paradigma di programmazione che pe... Leggi). La conversione delle informazioni dal mondo SQL a quello della programmazione OOPLa programmazione ad oggetti, chiamata anche Object Oriented Programming (OOP), è un paradigma di programmazione che pe... Leggi, presenta difficoltà dovute principalmente al fatto che i due mondi utilizzano differenti modelli di organizzazione dati. L’industria chiama questo problema “impedance mismatch” (conflitto di impedenza): mappare i dati da un modello all’altro può assorbire fino al 40% del tempo di sviluppo di un progetto.
Un certo numero di soluzioni di mappatura, normalmente dette “object-relational mapping”, possono risolvere il problema, ma tendono ad essere costose e ad avere i loro problemi, causando scarse prestazioni o forzando tutti gli accessi ai dati ad aver luogo attraverso il solo linguaggio che supporta la mappatura stessa.
PostregSQL risolve molti di questi problemi direttamente nel database. Infatti permette agli utenti di definire nuovi tipi basati sui normali tipi di dato SQL, in modo tale da permette alla base di dati stessa la comprensione di dati più complessi. Ad esempio: si può definire un indirizzo di una abitazione come un insieme di diverse stringhe di testo per il numero civico, la città, il cap, la strada etc.
Un’altra caratteristica vincente è il fatto che sia permessa l’ereditarietàNella programmazione orientata ad oggetti, l'ereditarietà è la proprietà per la quale attributi o funzioni di una cla... Leggi: sempre prendendo l’esempio dell’indirizzo, possiamo definire un tipo “codice_postale” e successivamente un tipo “cap” e un tipo “zip_code” basati sul tipo “codice_postale”. Gli indirizzi abitativi basati su questi ultimi due accetteranno entrambi i tipi di dati in quanto figli del tipo “madre”.
La programmabilità
La maggior parte dei sistemi SQL permette agli utenti di scrivere una procedura, un blocco di codice SQL che le altre istruzioni SQL possono richiamare. Comunque l’ SQL stesso rimane inadatto come linguaggio di programmazioneUn insieme di istruzioni descritte in un linguaggio formale che possono essere usate per produrre dati in uscita. Il lin... Leggi, pertanto gli utenti possono sperimentare grandi difficoltà nel costruire logiche complesse. Ancora peggio, l’ SQL stesso non supporta molti dei principali operatori di base dei linguaggi di programmazione, come le strutture di controllo di ciclo e condizionale.
In PostgreSQL invece i programmatori possono implementare la logica in uno dei molti linguaggi supportati:
- PL/pgSQL : un linguaggio nativo simile al linguaggio procedurale di Oracle PL/SQL, che offre particolari vantaggi nelle procedure che fanno un massiccio uso di query.
- Wrapper: per i più diffusi linguaggi di scripting (come Perl, Python, Tcl, Ruby) che permettono di utilizzare la loro potenza nella manipolazione delle stringhe.
- C e C++: per tutte quelle procedure che richiedono prestazioni maggiori e logiche di programmazione complesse
Il programmatore può inserire il codice sul server come funzione in modo da renderlo riusabile come “stored procedure”. Il codice SQL quindi potrà richiamare quelle funzioni anche se scritti in linguaggi diversi.
Punti di forza
- incremento delle prestazioni: la logica viene applicata direttamente dal server al database in una volta, riducendo così il passaggio di informazioni tra client e server.
- incremento dell’affidabilità: il codice di controllo è centralizzato sul server e di conseguenza non deve gestire la logica di sincronizzazione tra molti client e i dati memorizzati sul server.
- codice snello e semplice: dal momento che i livelli di astrazioneNella programma a oggetti, la proprietà dell'astrazione consente di semplificare un problema che ad un primo approccio ... Leggi sono inseriti direttamente sul server, il codice del client risulterà meno complesso.
Grazie alle sue caratteristiche PostgreSQL si attesta il più avanzato sistema di database dal punto di vista della programmabilità.
Schemi
In PostgreSQL, tutti gli oggetti (ad eccezion fatta di ruoli e tablespace) si trovano in uno schema. Lo schema agisce come un namespace, permettendo così agli oggetti con lo stesso nome di coesistere nella stessa base di dati.
Gli schemi sono simili alle cartelle che abbiamo sul computer, contenti files. La differenza è che non possono stare una dentro l’altra, e non è possibile creare collegamenti simbolici che puntano ad un altro schema.
I database, in PostgreSQL, sono creati con una struttura predefinita con lo schema chiamato “public”, tuttavia può essere aggiunto qualsiasi altro schema addizionale e il “public” non è obbligatorio.
Tipi di dati in PostgreSQL
Il sistema include nativamente una grande varietà di tipi di dati:
- Booleani
- Numeri con precisione arbitraria
- Caratteri (testo, varchar, char)
- Binari
- Data/ora (timestamp/time con/senza fusi orari, date, interval)
- Money
- Enum
- Bit strings
- Text search type
- Composite
- Arrays (lunghezza variabile e qualsiasi tipo di dato, incluso text e tipi composti) fino a 1GB
- Primitive geometriche
- Indirizzi IPv4 e IPv6
- Blocchi CIDR e Indirizzi MAC
- XML (che supporta interrogazioni XPath dalla versione 8.3)
- UUID (dalla versione 8.3)
- JSON (dalla versione 9.2)
Risorse
Se vuoi maggiori informazioni e sapere di più sul progetto ecco il portale ufficiale: PostgreSQL
Se vuoi sapere come installare PostgreSQL in locale, ho preparato una guida dedicata per l’installazione in ambiente Windows: Come installare PostgreSQL in ambiente Windows.
Fonte: wikipedia