PostgreSQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
YurikBot (discussione | contributi)
m robot Aggiunta: id
Nessun oggetto della modifica
Riga 25:
 
I database SQL conservano dati semplici in "[[flat tables]]" (tabelle piatte n.d.t.), richiedendo che sia l'utente a prelevare e raggruppare le informazioni correlate utilizzando le query.
Questo contrasta con il modo in cui sia le applicazione che gli utenti utilizzano i dati: come ad esempio in un lingluaggiolinguaggio di alto livello con tipi di dato complessi dove tutti i dati correlati operano come elementi completi, normalmente definiti oggetti o record (in base la linguaggio).
 
Convertire le informazioni dal mondo SQL a quello della programmazioeprogrammazione orientata agli oggetti, presenta difficoltà dovute principalmente al fatto che i due mondi utilizzano modelli di organizzazione dei dati molto differenti. L'industria chiama questo problema "[[impedance mismatch]]" (discrepanza 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, normalmete dette "[[object-relational mapping]]", possono risorvererisolvere 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 nel database. PostgreSQL permette agli utenti di definire nuovi tipi basati sui normali tipi di dato SQL, permettendo al database stesso di comprendere daidati complessi. Per esempio, si può definire un indirrizzo come un insieme di diverse stringhe di testo per rappresentare il numero civico, la citta, ecc. Da qui in poi si possono creare facilmente tabelle che contengono tutti i campi necessari a memorizzare un indirizzo con una sola linea di codice.
 
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 nel database potrebbero quindi accettare entranbi i tipi, e regole specifiche potrebbero validare i dati in entranbi i casi. Nelle prime versioni di PostgreSQL, implementare nuovi tipi richiedeva scrivere estensioni in C e compilarle nel severserver di database. Dalla versione 7.4 è diventato molto più semplice creare ed usare tipi personalizzati attraverso il comando "CREATE DOMAIN".
 
La programmazione del database stesso può ottenere grandi vantaggi dall'uso delle funzioni. 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 il SQL stesso rimane inadatto come linguaggio di programmazione, pertanto gli utenti possono sperimentare grandi difficoltà nel costruire logiche complesse. Ancora peggio, il SQL stesso non supporta molti dei principali operatori di base dei linguaggi di programmazione, come le [[Struttura di controllo | strutture di controllo]] di [[ciclo (informatica)| ciclo ]] e [[condizionale]]. Pertanto ogni venditore ha scritto le sue estensioni al linguaggio SQL per aggiungere queste caratteristiche, e pertanto queste estensioni non per forza operano su diverse [[piattaforma|piattaforme]] di database.
Riga 37:
In PostgresSQL i programmatori posono 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 nllenelle procedure che fanno un intensivo uso di query.
*[[Wrappers]] per i più diffusi lingaggilinguaggi di scripting come [[Perl]], [[Python]], [[Tcl]], e [[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 plus plus|C++]].
*Inoltre è disponibile anche un interfacciamento all'esoterico linguaggio [[R]], ricco di funzioni statistiche e per il calcolo [[matrice (matematica)|matriciale]]
Il programmatore puàpuò inserire il condicecodice sul server come ''funzioni'', che rendono il codice riutilizzabile come ''stored procedure'', in modo che il codice SQL possa richiamare funzioni scritte in altri linguaggi (come il C o il Perl).
 
Punti di forza della programmabilità di PostgreSQL: