PostgreSQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Rimosso il contributo di un troll. |
→Collegamenti esterni: Aggiunto il template "FOLDOC" |
||
(41 versioni intermedie di 32 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = PostgreSQL
|Screenshot =
|Didascalia =
Line 9 ⟶ 6:
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta = 16devel git commit 1334b79a35
|DataUltimaVersioneBeta = 15 gennaio 2023
|SistemaOperativo = Multipiattaforma
|
|Licenza = [[Licenza BSD]]
|SoftwareLibero = sì
|Lingua =
}}
'''PostgreSQL''' (pronuncia all'[[lingua inglese|inglese]] {{IPA|[poʊstɡrɛs ˌkjuːˈɛl]}} [https://www.postgresql.org/files/postgresql.mp3 Pronuncia], 5,6 kB MP3) è un completo [[Base di dati ad oggetti|DBMS ad oggetti]] pubblicato con [[licenza libera]] (stile [[Licenza BSD]]). Spesso abbreviato come "''Postgres''", sebbene questo sia un nome vecchio dello stesso progetto, è una reale alternativa sia rispetto ad altri prodotti liberi come [[MySQL]], [[Firebird SQL]] e [[MaxDB]] che a quelli a codice chiuso come [[Oracle Database|Oracle]], [[IBM Informix]] o [[IBM DB2|DB2]] ed offre caratteristiche uniche nel suo genere che lo pongono per alcuni aspetti all'avanguardia nel settore
▲PostgreSQL è una reale alternativa sia rispetto ad altri prodotti liberi come [[MySQL]], [[Firebird SQL]] e [[MaxDB]] che a quelli a codice chiuso come [[Oracle]], [[IBM Informix]] o [[DB2]] ed offre caratteristiche uniche nel suo genere che lo pongono per alcuni aspetti all'avanguardia nel settore dei [[database]].
== Storia ==
Inizialmente il DBMS si chiamava [[Ingres (database)|INGRES]] ed era un progetto della [[Università della California
Il nuovo progetto puntava a fornire un supporto completo ai tipi di dati, in particolare la possibilità di definire nuovi tipi di dati, UDF (User Defined Function), User Defined Types. Vi era anche la possibilità di descrivere la relazione tra le entità (tabelle), che fino ad allora veniva lasciata completamente all'utente. Perciò non solo Postgres preservava l'integrità dei dati, ma era in grado di leggere informazioni da tabelle relazionate in modo naturale, seguendo le regole definite dall'utente.
Dal [[1986]] gli sviluppatori diffusero un gran numero di articoli che descrivevano il nuovo sistema e nel [[1988]] venne
Sebbene il progetto Postgres fosse ufficialmente abbandonato, la licenza BSD dava modo agli sviluppatori [[Open Source]] di ottenere una copia del software per poi migliorarlo a loro discrezione. Nel [[1994]] due studenti del Berkeley, Andrew Yu e Jolly Chen aggiunsero a Postgres un interprete [[SQL]] per rimpiazzare il vecchio [[QUEL]] che risaliva ai tempi di Ingres. Il nuovo software venne quindi
Sebbene la licenza permetta la commercializzazione del software, il codice di Postgres non è stato sviluppato commercialmente con la stessa rapidità di Ingres. Ad un certo punto, però, Paula Hawthorn (membro originale del team di Ingres) e Michael Stonebraker formarono una società chiamata [[Illustra Information Technologies]] per commercializzarlo.
== Descrizione ==
Un rapido esame di PostgreSQL potrebbe suggerire che sia simile
Questo contrasta con il modo in cui sia le applicazioni che gli utenti utilizzano i dati: come ad esempio in un linguaggio di alto livello con tipi di dato complessi dove tutti i dati correlati operano come elementi completi, normalmente definiti oggetti o record (in base al linguaggio).
La conversione delle informazioni dal mondo SQL a quello della programmazione orientata agli oggetti, presenta difficoltà dovute principalmente al fatto che i due mondi utilizzano differenti modelli di organizzazione dei 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.
PostgreSQL può risolvere molti di questi problemi direttamente
PostgreSQL, inoltre, permette l'ereditarietà dei tipi, uno dei principali concetti della [[programmazione orientata agli oggetti]]. Ad esempio, si può definire un tipo codice_postale, quindi creare un tipo cap (codice di avviamento postale) o un tipo us_zip_code basato su di esso. Gli indirizzi
La programmazione
In PostgreSQL i programmatori possono implementare la logica in uno dei molti linguaggi supportati.
*Un linguaggio nativo chiamato [[PL/pgSQL]] simile al linguaggio procedurale di Oracle [[PL/SQL]], che offre particolari vantaggi nelle procedure che fanno uso intensivo di query.
*[[Wrapper]] per i più diffusi linguaggi di scripting come [[Perl]], [[Python]], [[Tcl]], e [[Ruby (linguaggio di programmazione)|Ruby]] che permettono di utilizzare la loro potenza nella manipolazione delle stringhe e nel link ad estese librerie di funzioni esterne.
*Le procedure che richiedono prestazioni maggiori e logiche di programmazione complesse possono utilizzare il [[C (linguaggio)|C]] ed il [[C++]].
*Inoltre è disponibile anche un interfacciamento al linguaggio [[R (software)|R]], ricco di funzioni statistiche e per il calcolo [[matrice|matriciale]].
Line 61 ⟶ 54:
Punti di forza della programmabilità di PostgreSQL:
*Incremento delle prestazioni, in quanto la logica viene applicata direttamente dal server della base di
*Incremento dell'affidabilità, dovuto alla centralizzazione del codice di controllo sul server, non dovendo gestire la sincronizzazione della logica tra molteplici client e i dati memorizzati sul server.
*Inserendo livelli di astrazione dei dati direttamente sul server, il codice del client può essere più snello e semplice.
Questi vantaggi fanno di PostgreSQL, probabilmente, il più avanzato sistema
== Indici ==
Supporta gli indici [[GiST]] e GIN ([[Indice generalizzato invertito]]) usa [[B-albero#B+tree|B+-tree]],
== Schemi ==
Line 80 ⟶ 71:
Le basi di dati sono create in modo predefinito con lo schema "public" (comune), ma può essere aggiunto qualsiasi altro schema addizionale e il public non è obbligatorio.
Un "percorso di ricerca" determina l'ordine in quale schema sono controllati gli oggetti non qualificati (quelli senza uno schema prefissato) che possono essere configurati sulla base di dati o sul livello di ruolo. Il "percorso di ricerca" contiene in modo predefinito il nome di schema speciale di "$user" (utente) che prima cerca uno schema con nome dell'utente connesso alla base di dati. Se non viene trovato procede a cercare il prossimo schema.
===Tipi di dati===
Line 107 ⟶ 96:
== MVCC ==
PostgreSQL gestisce la concorrenza attraverso un sistema conosciuto come ''[[controllo della concorrenza multiversione]]'' (MVCC) che dà ad ogni transazione
Ciò permette di eliminare quasi sempre il bisogno di ricorrere all'utilizzo di lock di lettura (''read locks'') e assicura il mantenimento dei principi ACID in maniera efficiente.
== Programmi di gestione a interfaccia grafica ==
* [[phpPgAdmin]] – è un'applicazione [[PHP]] libera che consente di amministrare in modo semplificato, con
* [[pgAdmin]] – è un'applicazione multipiattaforma, scritta in [[C++]], che consente di amministrare in modo semplificato, con
== Altri progetti ==
{{interprogetto
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
* {{it}} [https://web.archive.org/web/20160304191006/http://appuntilinux.mirror.garr.it/mirrors/appuntilinux/a2/a2107.htm#almlindex11042 PostgreSQL] su [[Appunti di informatica libera]]
* {{en}} * {{it}} {{collegamento interrotto|1=[https://a31c1dc3-a-62cb3a1a-s-sites.googlegroups.com/site/opensourceerp/Home/openerp/OpenERP61_Capitolo1.pdf?attachauth=ANoY7coMh9FJsOj6khdgIui30CYQxpdRKYzDiHKeEJjjO9k1Xqqv5ETx-SNPyQRU23z4LQ3lmLMmhioIL0OXOGI53-8CQq3whCJwDUtjN7cQJozIzqEs1OCe-cPMMYWKM0lurNi24tJDZnSjNbl0e9oSMoXEHYemSzdX2ExTAiCfvkxU0mn7D9hFI6bjpHdiWTa05Slxx6EiXqwYLv5-fJ7CJE3xGraK3vsBh_f7OhU_ixko0kPyiDxpfPYAttjceZPlDexBqXUB&attredirects=0 PostgreSQL] |data=aprile 2018 |bot=InternetArchiveBot }} su [[Odoo|OpenERP]]
{{Database management system}}
{{Controllo di autorità}}
{{Portale|Software libero}}
|