b'\n_START_ARTICLE_\nPostgreSQL\n_START_SECTION_\nStoria\n_START_PARAGRAPH_\nInizialmente il DBMS si chiamava INGRES ed era un progetto della Universit\xc3\xa0 di Berkeley. Nel 1982 il capo progetto, Michael Stonebraker, lasci\xc3\xb2 la Berkeley per commercializzare il prodotto, ma in seguito torn\xc3\xb2 nel contesto accademico. Nel 1985 lasci\xc3\xb2 nuovamente l\'universit\xc3\xa0 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._NEWLINE_Il nuovo progetto puntava a fornire un supporto completo ai tipi di dati, in particolare la possibilit\xc3\xa0 di definire nuovi tipi di dati, UDF (User Defined Function), User Defined Types. Vi era anche la possibilit\xc3\xa0 di descrivere la relazione tra le entit\xc3\xa0 (tabelle), che fino ad allora veniva lasciata completamente all\'utente. Perci\xc3\xb2 non solo Postgres preservava l\'integrit\xc3\xa0 dei dati, ma era in grado di leggere informazioni da tabelle relazionate in modo naturale, seguendo le regole definite dall\'utente._NEWLINE_Dal 1986 gli sviluppatori diffusero un gran numero di articoli che descrivevano il nuovo sistema e nel 1988 venne rilasciato un primo prototipo funzionante. La versione 1 venne pubblicata nel giugno del 1989 per un numero di utenti contenuto. Segu\xc3\xac 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\xc3\xa0 un numero di utenti notevole che inondava il team di sviluppo con richieste di supporto e di nuove caratteristiche. Dopo aver rilasciato la versione 4, che fu principalmente un ripulimento del codice, il progetto termin\xc3\xb2._NEWLINE_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 rilasciato sul web col nome di Postgres95. Nel 1996 cambi\xc3\xb2 nome di nuovo: per evidenziare il supporto al linguaggio SQL, venne chiamato PostgreSQL._NEWLINE_Il primo rilascio di PostgreSQL \xc3\xa8 stata la versione 6. Da allora ad occuparsi del progetto \xc3\xa8 una comunit\xc3\xa0 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 \xc3\xa8 stata rilasciata la 8, la prima nativa per Windows._NEWLINE_Sebbene la licenza permetta la commercializzazione del software, il codice di Postgres non \xc3\xa8 stato sviluppato commercialmente con la stessa rapidit\xc3\xa0 di Ingres. Ad un certo punto, per\xc3\xb2, Paula Hawthorn (membro originale del team di Ingres) e Michael Stonebraker formarono una societ\xc3\xa0 chiamata Illustra Information Technologies per commercializzarlo.\n_START_SECTION_\nIndici\n_START_PARAGRAPH_\nSupporta gli indici GiST e GIN (Indice generalizzato invertito) usa B+-tree, hash. Si possono creare indici di espressioni con un indice del risultato di una espressione o una funzione anzich\xc3\xa9 il semplice valore di una colonna, indici parziali dove si indicizza parte di una tabella con l\'espressione SQL: CREATE INDEX. \xc3\x88 anche in grado di usare indici multipli insieme per eseguire interrogazioni complesse.\n_START_SECTION_\nSchemi\n_START_PARAGRAPH_\nIn 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._NEWLINE_Gli schemi sono analoghi alle cartelle nel sistema dei file, ad eccezione che non possono essere una dentro l\'altra, e non \xc3\xa8 possibile creare collegamenti simbolici che puntano ad un altro schema o oggetto._NEWLINE_Le basi di dati sono create in modo predefinito con lo schema "public" (comune), ma pu\xc3\xb2 essere aggiunto qualsiasi altro schema addizionale e il public non \xc3\xa8 obbligatorio._NEWLINE_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 una schema con nome dell\'utente connesso alla base di dati. Se non viene trovato procede a cercare il prossimo schema.\n_START_SECTION_\nMVCC\n_START_PARAGRAPH_\nPostgreSQL gestisce la concorrenza attraverso un sistema conosciuto come controllo della concorrenza multiversione (MVCC) che d\xc3\xa0 ad ogni transazione una "immagine" della base di dati, permettendo cambiamenti non visibili ad altre transazioni fino a che questi non sono eseguiti._NEWLINE_Ci\xc3\xb2 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.'