PostgreSQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiornato campo "ultimo rilascio" |
→Collegamenti esterni: Aggiunto il template "FOLDOC" |
||
(219 versioni intermedie di oltre 100 utenti non mostrate) | |||
Riga 1:
{{
|Screenshot =
|Didascalia =
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta = 16devel git commit 1334b79a35
|DataUltimaVersioneBeta = 15 gennaio 2023
|SistemaOperativo = Multipiattaforma
|Genere = DBMS
|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 delle [[basi di dati]].
== Storia ==
Inizialmente il DBMS si chiamava [[Ingres (database)|INGRES]] ed era un progetto della [[Università della California - Berkeley|Università di Berkeley]]. Nel [[1982]] il capo progetto, [[Michael Stonebraker]], lasciò la Berkeley per commercializzare il prodotto, ma in seguito tornò nel contesto accademico. Nel [[1985]] lasciò nuovamente l'università per dare vita a un progetto post-Ingres (che prese il nome di '''Postgres''') che superasse gli evidenti limiti dei prodotti concorrenti dell'epoca. Le basi dei sorgenti di Ingres e di Postgres erano, e sono rimaste nel tempo, ben distinte.
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 pubblicato un primo prototipo funzionante. La versione 1 venne pubblicata nel giugno del [[1989]] per un numero di utenti contenuto. Seguì una versione 2 nel giugno del [[1990]], in cui il sistema delle regole venne completamente riscritto. Nella versione 3, del [[1991]], questo sistema venne riscritto ancora, ma venne aggiunto anche il supporto a gestori multipli di immagazzinamento dei dati e un motore di query migliorato. Nel [[1993]] vi era già un numero di utenti notevole che inondava il team di sviluppo con richieste di supporto e di nuove caratteristiche. Dopo aver pubblicato la versione 4, che fu principalmente un ripulimento del codice, il progetto terminò.
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 pubblicato sul web col nome di '''Postgres95'''. Nel [[1996]] cambiò nome di nuovo: per evidenziare il supporto al linguaggio SQL, venne chiamato '''PostgreSQL'''.
La prima pubblicazione di PostgreSQL è stata la versione 6. Da allora ad occuparsi del progetto è una comunità di sviluppatori volontari provenienti da tutto il mondo che si coordina attraverso Internet. Alla versione 6 ne sono seguite altre, ognuna delle quali ha portato nuovi miglioramenti. Nel gennaio [[2005]] è stata pubblicata la 8, la prima nativa per Windows.
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
PostgreSQL può risolvere molti di questi problemi direttamente
PostgreSQL, inoltre,
La programmazione
In
*Un linguaggio nativo chiamato [[PL/
*[[
*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
Il programmatore può inserire il codice sul server come ''funzioni'', che rendono il codice
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
*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]], hash. Si possono creare indici di espressioni con un indice del risultato di un'espressione o una funzione anziché il semplice valore di una colonna, indici parziali dove si indicizza parte di una tabella con l'espressione SQL: CREATE INDEX. È anche in grado di usare indici multipli insieme per eseguire interrogazioni complesse.
== Schemi ==
In PostgreSQL, tutti gli oggetti (con l'eccezione di ruoli e [[tablespace]]) sono situati in uno schema. Esso agisce effettivamente come un [[namespace]], permettendo agli oggetti con lo stesso nome di coesistere nella stessa base di dati.
Gli schemi sono analoghi alle cartelle nel [[sistema dei file]], ad eccezione che non possono essere una dentro l'altra, e non è possibile creare collegamenti simbolici che puntano ad un altro schema o oggetto.
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===
Sono inclusi nativamente una grande varietà di tipi di dati:
* Booleani
* numerici 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 [[Classless Inter-Domain Routing|CIDR]] e [[MAC address|Indirizzi MAC]]
* [[XML]] che supporta interrogazioni [[XPath]] (dalla 8.3)
* [[UUID]] (dalla 8.3)
* [[JSON]] (dalla 9.2)
== MVCC ==
PostgreSQL gestisce la concorrenza attraverso un sistema conosciuto come ''[[controllo della concorrenza multiversione]]'' (MVCC) che dà ad ogni transazione un'"immagine" della base di dati, permettendo cambiamenti non visibili ad altre transazioni fino a che questi non sono eseguiti.
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 un'interfaccia grafica basata sul web, base di dati di PostgreSQL
* [[pgAdmin]] – è un'applicazione multipiattaforma, scritta in [[C++]], che consente di amministrare in modo semplificato, con un'interfaccia grafica, base di dati di PostgreSQL.
== 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à}}
[[
|