PostgreSQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
Tolto refuso |
||
(23 versioni intermedie di 19 utenti non mostrate) | |||
Riga 4:
|Didascalia =
|Sviluppatore = PostgreSQL Global Development Group
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta = 16devel git commit 1334b79a35
|DataUltimaVersioneBeta = 15 gennaio 2023
|SistemaOperativo = Multipiattaforma
|Genere = DBMS
Riga 13:
|SoftwareLibero = sì
|Lingua =
}}
'''PostgreSQL''' (pronuncia all'[[lingua inglese|inglese]] {{IPA|[poʊstɡrɛs ˌkjuːˈɛl]}} [https://www.postgresql.org/files/postgresql.mp3 Pronuncia]
== 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.
Riga 57 ⟶ 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]], hash. Si possono creare indici di espressioni con un indice del risultato di
== Schemi ==
Riga 74 ⟶ 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
===Tipi di dati===
Riga 99 ⟶ 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 ==
Riga 111 ⟶ 108:
== 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] |
{{Database management system}}
|