Database-SQL-RDBMS HOW-TO document for Linux (PostgreSQL Object Relational Database System) Al Dev (Alavoor Vasudevan) alavoor@yahoo.com v45.0, 27 Gen 2001 Questo documento e una "guida pratica" volta ad una rapidissima installazione di un motore per Database SQL, e delle relative inter- facce-utente, su un sistema Unix. Il documento tratta anche il lin- guaggio SQL (standard internazionale ANSI/ISO), e riesamina i mer- iti/vantaggi del motore per Database SQL, sviluppato attraverso la rete Internet, in un ambiente di "sviluppo aperto". Sara trattata l'installazione, su un sistema Unix, dell'innovativo database SQL relazionale ad oggetti "PostgreSQL", che puo essere usato come server database per applicazioni o come server database per il web. Post- greSQL si sforza di implementare gli attuali e futuri standard SQL internazionali ISO/ANSI. Questo documento fornisce anche informazioni sui programmi di interfaccia al database come: i front end grafici, gli strumenti RAD (sviluppo rapido di applicazioni), i driver ODBC e JDBC, le interfacce di programmazione nei linguaggi "C", "C++", Java, Perl, e gli strumenti per l'uso di database nel Web. Le informazioni contenute in questo documento si applicano alle piattaforme Unix/Win- dows NT, e a tutti gli altri database SQL; queste informazioni saranno utilissime a chi non conosce i database, il linguaggio SQL, e Post- greSQL. Questo documento contiene anche una guida a SQL, una sintassi di SQL che dovrebbe essere molto utile ai principianti. Gli esperti troveranno in questo documento un'utile guida di riferimento. Gli stu- denti vi troveranno informazioni che permetteranno loro di ottenere il codice sorgente del sistema di database relazionale PostgreSQL. Attraverso il sorgente si potra apprendere come sia stato creato un motore per database SQL RDBMS. (Documentazione tradotta da Fabio Tea- tini , 7 Feb 2001 - Un ringraziamento a Michele Rossetto, che ha collaborato alla traduzione in qualita di revisore) ______________________________________________________________________ Table of Contents 1. Introduzione 1.1 Computer quantistici - La fisica quantistica utile !! 2. Le leggi della fisica si applicano al software! 3. Cos'e PostgreSQL ? 3.1 Libro bianco 4. PostgreSQL o MySQL ? Quale dei due? 4.1 PostgreSQL ha sconfitto Oracle, IBM DB2, MS SQL server e altri!! 4.2 MySQL e altri RDBMS duplicati 4.3 Le limitazioni di MySQL 5. Dove ottenerlo ? 6. Istruzioni per un'installazione rapida di PostgreSQL 6.1 Installazione e collaudo 6.2 RPM di PostgreSQL 6.3 Maximum RPM 6.4 RPM degli esempi 6.5 Provare PyGreSQL - interfaccia a Python 6.6 Provare Perl - interfaccia al Perl 6.7 Provare le interfacce a libpq, libpq++ 6.8 Provare le interfacce a Java 6.9 Provare l'interfaccia a ecpg 6.10 Provare esempi di SQL - Tipi definiti dall'utente e funzioni 6.11 Provare Interfacce Tcl/Tk 6.12 Provare interfacce ODBC 6.13 Provare l'interfaccia MPSQL Motif-worksheet 6.14 Verifica 6.15 Correzione dei bug critici 7. Guida per un avvio rapido 7.1 Creare, eliminare, rinominare database 7.2 Creare ed eliminare gli utenti 7.3 Creare ed eliminare i gruppi 7.4 Creare, modificare ed eliminare una tabella 7.5 Creare, modificare ed eliminare record in una tabella 7.6 Cambiare il database attivo 7.7 Effettuare backup e restore del database 7.8 Protezione del database 7.9 Aiuto in linea 7.10 Creare trigger e stored procedure 7.11 Documentazione di PostgreSQL 8. Regolazioni: come migliorare le prestazioni del server PostgreSQL 8.1 Messa a punto del SO, per il server database 8.2 Come ottimizzare il processo del server database 9. PostgreSQL gestisce database estremamente estesi, piu grandi di 200 GB 9.1 Tipi di CPU: a 32 bit o 64 bit 9.2 CPU multiple 9.3 Server di duplicazione 10. Quanto posso aver fiducia in PostgreSQL ? Il pacchetto del test della regressione crea la fiducia del cliente 11. Protezione del database 11.1 Autenticazione degli utenti 11.2 Controllo d'accesso basato su host (host-based) 11.3 Metodi di autenticazione 11.4 Controllo dell'accesso 11.5 Connessioni TCP/IP protette mediante SSH 11.6 Autenticazione Kerberos 12. Strumenti GUI per PostgreSQL (interfacce-utente grafiche) 13. Driver di interfaccia per PostgreSQL 13.1 Driver ODBC per PostgreSQL 13.2 Driver UDBC per PostgreSQL 13.3 Driver JDBC per PostgreSQL 13.4 Java per PostgreSQL 14. Driver d'interfaccia ai database di Perl, per PostgreSQL (DBI) 14.1 Interfaccia del Perl a PostgreSQL 14.2 Interfaccia DBI del Perl ai database 14.2.1 COS'E DBI ? 14.2.2 Driver DBI per PostgreSQL 14.2.3 Supporto tecnico per DBI 14.2.4 Documenti sulla DBI 14.2.5 DBI e supportata sotto le piattaforme Windows 95 / NT ? 14.2.6 Supporto Commerciale e Addestramento 14.3 Provare l'interfaccia al Perl 15. Strumenti di gestione di PostgreSQL 15.1 PGACCESS - Uno strumento grafico (GUI) per la gestione di PostgreSQL 15.2 GtkSQL, Strumento grafico di query per PostgreSQL 15.3 Strumento interattivo di query in Windows per PostgreSQL (WISQL o MPSQL) 15.4 Strumento Interattivo di query (ISQL) per PostgreSQL, denominato PSQL 15.5 MPMGR - Uno strumento di gestione di database per PostgreSQL 15.6 Gli strumenti PgAdmin, PhpPgAdmin 15.7 PgBash - strumento SQL per la shell 15.8 Lo strumento Webmin per PostgreSQL 16. CPU per PostgreSQL 17. Predisporre macchine multiple con PostgreSQL ed un solo monitor 18. Web-Application-Server per PostgreSQL 18.1 Web Application Server in PERL 18.2 Web Application Server per PHP 18.3 Lutris Corp "Enhydra Enterprise" (Java) 18.4 Zope (in linguaggio Python) 18.5 OpenACS (in linguaggio Tcl) 18.6 Web Application Server CORBA in C++ 18.7 Pike, Roxen Web Application Server 18.8 Web Application Servers Directory 19. Applicazioni e strumenti per PostgreSQL 19.1 4GL per applicazioni web database con PostgreSQL - AppGEN Development System 19.2 Interfaccia Web WWW per PostgreSQL - DBENGINE 19.3 Un modulo del Webserver Apache per PostgreSQL: NeoWebScript di NeoSoft 19.4 HEITML: estensione lato server dell'HTML, e linguaggio 4GL per PostgreSQL 19.5 Web Server AOL di America On-line per PostgreSQL 19.6 Problem/Project Tracking System Application Tool per PostgreSQL 19.7 Conversione di file dbase dbf a PostgreSQL 19.8 Conversione di file database MDB di Microsoft Access in PostgreSQL 19.9 Client Zeos 19.10 Report Writer in Java 20. Strumento di progettazione di database - Strumento per rappresentare le relazioni tra entita, in forma di diagramma 21. EARP - strumento di progettazione/implementazione di database web 21.1 Cos'e EARP ? 21.2 Implementazione 21.3 Come funziona? 21.4 Dove ottenere EARP ? 22. PHP Hypertext Preprocessor - Linguaggio di scripting lato server, incorporabile nel codice html, per PostgreSQL 22.1 Le funzionalita piu rilevanti 22.2 PHP - Breve storia 22.3 Ebbene, cosa posso fare con PHP ? 22.4 Un semplice esempio 22.5 Ridirezione CGI 22.5.1 Note su Apache 1.0.x 22.5.2 HTTPD di Netscape 22.5.3 HTTPD di NCSA 22.6 Eseguire PHP dalla riga di comando 22.7 Pacchetto PHPGem 23. Interfaccia di Python a PostgreSQL 23.1 Dove ottenere PyGres ? 23.2 Informazioni e supporto 23.3 Provare l'interfaccia di Python 24. WDB-P95 - Interfaccia di collegamento tra PostgreSQL e il WWW 24.1 Informazioni su wdb-p95 24.2 Il server PostgreSQL, pgperl, e httpd, devono essere sullo stesso host? 25. Interfaccia dei linguaggi "C", "C++", ESQL/C, a PostgreSQL, ed operatori orientati ai bit 25.1 Interfaccia "C" 25.2 Interfaccia "C++" 25.3 ESQL/C 25.4 Operatori orientati ai bit per PostgreSQL 26. Codice giapponese Kanji per PostgreSQL 27. Versione di PostgreSQL per Windows 95/Windows NT 27.1 Autori della versione per NT 27.2 Installazione del pacchetto Cygwin 27.3 Messa a punto della finestra di Bash 27.4 Installazione degli strumenti di Andy Piper 27.5 Installazione del pacchetto Cygwin32 IPC di Ludovic Lange 27.6 Installazione di PostgreSQL 28. Mailing list 28.1 Account di e-mail per PostgreSQL 28.2 Mailing list in lingua Inglese 28.3 Archivio di mailing list 28.4 Mailing list spagnola 29. Documentazione e libri di riferimento 29.1 Manuali e guide per l'utente 29.2 Documentazione disponibile in linea 29.3 Libri di riferimento utili 29.4 Documenti delle specifiche SQL ANSI/ISO - SQL 1992, SQL 1998 29.5 Sintassi di 1992 ANSI/ISO SQL 29.6 Sintassi di 1998 ANSI/ISO SQL 29.7 Tutorial su SQL per principianti 29.8 Estensioni temporali a SQL92 29.9 Parte 0 - Procurarsi documenti su SQL ISO/ANSI 29.10 Parte 1 - Stato attuale di SQL ISO/ANSI 29.11 Parte 2 - Foundation - Fondamenti di SQL ISO/ANSI 29.12 Parte 3 - Interfaccia ISO/ANSI SQL a livello di chiamata (Call Level Interface) 29.13 Parte 4 - Persistent stored modules (moduli memorizzati persistenti) SQL ISO/ANSI 29.14 Parte 5 - ISO/ANSI SQL/Binding 29.15 Parte 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA) 29.16 Parte 7 - ISO/ANSI SQL Temporal 29.16.1 INTRODUZIONE 29.16.2 UN CASO DI STUDIO - ARCHIVIARE LE INFORMAZIONI CORRENTI 29.16.3 UN CASO DI STUDIO - ARCHIVIARE INFORMAZIONI STORICHE 29.16.4 UN CASO DI STUDIO - PROIEZIONE 29.16.5 UN CASO DI STUDIO - JOIN 29.16.6 UN CASO DI STUDIO - FUNZIONI AGGREGATE 29.16.7 RIASSUNTO 29.17 Parte 8 - ISO/ANSI SQL MULTIMEDIA (SQL/MM) 30. Supporto tecnico per PostgreSQL 30.1 Supporto commerciale 31. Aspetti imprenditoriali ed economici 32. Lista di altri database 33. Suggerimenti per la ricerca nel World Wide Web di Internet 34. Conclusione 35. FAQ - Domande su PostgreSQL 36. Altri formati di questo documento 37. Diritto d'autore e licenza 37.1 Copyright and License (in inglese) 37.2 Copyright and License (in italiano) A. Appendice A - Sintassi di ANSI/ISO SQL 1992 B. Appendice B - Tutorial su SQL per principianti B.1 Tutorial per PostgreSQL B.2 Puntatori ad URL in Internet B.3 Tutorial on-line su SQL C. Appendice C - Istruzioni per un'installazione rapida di Linux D. Appendice C - Installazione di Midgard D.1 Provare il Server PHP Midgard D.2 Security OpenSSL ______________________________________________________________________ 11.. IInnttrroodduuzziioonnee Con questo documento si vuole fornire un'esauriente lista di puntatori/URL, utili per installare rapidamente PostgreSQL; questo testo permettera, inoltre, di promuovere il valore dei sistemi con codice open source, come PostgreSQL e Linux. PostgreSQL si pronuncia Post-gres-chiu-el (Postgres-QL) e nnoonn Postgre- es-chiu-el. Ovunque nel mondo, i sistemi di computer hanno bisogno di un database per archiviare/recuperare le informazioni. Il computer e usato, principalmente, perche permette di archiviare, recuperare ed elaborare le informazioni, con grande rapidita ed economia di tempo. Nello stesso tempo, il sistema deve essere semplice, robusto, veloce, affidabile, economico, e molto semplice da usare. Il database diventa il principale SSIISSTTEEMMAA VVIITTAALLEE quando archivia informazioni di importanza capitale, per le imprese nel mondo. Ogni industria nel mondo ha necessita di un sistema di database. Senza un sistema di database, le industrie di telecomunicazioni, di automobili, le banche, le compagnie aeree, ecc., non funzioneranno efficientemente. I sistemi di database piu diffusi sono basati sulle specifiche SQL dell'International Standard Organisation (ISO), e sugli standard ANSI SQL (Americani). Le attuali specifiche, largamente usate nell'industria, sono le ISO/ANSI SQL 1992. E in ascesa lo standard SQL 1998/99, chiamato anche SQL-3, tuttora in fase di sviluppo. Database diffusi come i sistemi Oracle, Sybase, e Informix, sono basati su questi standard, o stanno cercando di implementarli. Senza uno standard come l'ANSI/ISO SQL, sarebbe molto difficile sviluppare un'applicazione singola e renderla in grado di accedere a tutti i sistemi di database esistenti. L'utente finale vuole sviluppare una sola applicazione, e vuole che sia in grado di interagire (per mezzo di ISO SQL, ODBC, JDBC) con tutta la varieta di sistemi di database del mondo. PostgreSQL, tra i database LIBERI (FREE) che implementano parte dell'ISO SQL, ANSI SQL/98, SQL/92, e ANSI/ SQL/89 RDBMS, e il piu diffuso nel mondo. PostgreSQL e un innovativo database relazionale ad oggetti, ed e volto ad essere pienamente conforme agli standard SQL come ISO/ANSI SQL. PostgreSQL e il solo RDBMS libero, nel mondo, che supporti database ad oggetti e SQL. Questo documento vi dira come installare il database, come avviare il database per il web e per le applicazioni, come attivare i front-end grafici ed i programmi di interfacciamento. Se si desiderano applicazioni portabili verso molteplici database come PostgreSQL, Oracle, Sybase, Informix, ecc., e vivamente consigliato sviluppare applicazioni per database rimanendo conformi al 100% agli standard ISO/ANSI SQL, ODBC. Con PostgreSQL si otterra la piu elevata qualita, e moltissime altre funzionalita, che derivano dal "modello di programmazione open source". Il modello di programmazione open source e quello che mette il codice sorgente a disposizione di tutti; lo sviluppo di questo codice avviene in internet, attraverso una vastissima rete di menti umane. Le analisi sulle tendenze del futuro mostrano che la maggior parte dello sviluppo di software avra luogo in quella che e chiamata "autostrada dell'informazione", che e estesa sull'intero globo. Negli anni a venire la crescita di Internet sara esplosiva, e cio favorira una rapida adozione di PostgreSQL da parte dell'industria. Applicando principi di statistica, matematica e scienza, alla qualita del software, si vedra che la miglior qualita del software e ottenibile solo con "sistemi di programmazione open source", come PostgreSQL; il codice sorgente di questi sistemi e aperto ad un vastissimo numero di menti umane, interconnesse dall'autostrada dell'informazione. Quanto piu elevato sara il numero delle menti umane al lavoro, tanto migliore sara la qualita del software. Il modello di programmazione open source ci preservera anche dalla RREE-- IINNVVEENNZZIIOONNEE DDEELLLLAA RRUUOOTTAA, eliminera la DDUUPPLLIICCAAZZIIOONNEE DDEELL LLAAVVOORROO, sara molto economico, e permettera di abbreviare i tempi di distribuzione. Il modello open source, inoltre, si allinea alle moderne leggi economiche, riguardo all'ottimizzazione delle risorse nazionali e globali. Un software gia sviluppato da altri, NNOONN dovra essere creato nuovamente. Non dovrete sprecare il vostro tempo prezioso su qualcosa che e gia stato FFAATTTTOO BBEENNEE. Il tempo e estremamente prezioso e deve essere utilizzato in modo efficiente, perche si hanno solo 8 ore al giorno per lavorare. Con l'approssimarsi del 21 secolo, ci sara un mutamento nel modo in cui si potra ottenere software per uso personale. Tutti avranno un occhio di riguardo principalmente per i software open source, come PostgreSQL e Linux. Acquistando programmi in forma di binari, non avrete un trattamento equo; inoltre vi sara negata la proprieta del codice sorgente. Il codice sorgente e il bene piu prezioso, mentre il codice binario non ha valore. Comprare software _p_u_o diventare una cosa del passato. Comprate piuttosto buon hardware: e la sola cosa di cui avete bisogno; e conveniente utilizzare il proprio denaro per acquistare hardware, ed ottenere il software da internet. Il punto importante e: iill ggrroossssoo ddeell llaavvoorroo e svolto dall'hardware del computer. L'hardware e il vero cavallo da tiro, ed il software e solo cio che lo guida. L'hardware di un computer e cosi complesso che solo 6 nazioni nel mondo, finora, hanno dimostrato la capacita di progettare e produrre chip/hardware per computer. La progettazione, e la produzione di chip per computer, e una tecnologia avanzata. E un procedimento complesso, che assorbe grandi capitali, richiede grandi investimenti per impiantare fabbriche e macchinari di produzione, dove sono impiegate tecnologie a 0.18 micron (e si lavora anche su scala piu piccola). Su un singolo e minuscolo chip di silicio sono miniaturizzati milioni di transistor/circuiti. Compagnie come Applied Material, AMD, Intel, Cyrix, Hitachi, IBM e altre, impiegano un significativo numero di anni-uomo per dominare le alte tecnologie come: la progettazione di chip, la microelettronica, e la nanoelettronica. Micro significa: un milionesimo di metro (10^-6), Nano significa: un miliardesimo di metro (10^-9). L'attuale tecnologia utilizza circuiti microelettronici delle dimensioni di circa 0.35 micron, impiegando l'alluminio come conduttore, mentre la tecnologia a 0.25 micron impiega il rame. Nel prossimo futuro, i chip per i computer saranno realizzati con la tecnologia a 0.10 micron, ed anche con la nanoelettronica. I conduttori di alluminio saranno sostituiti con il rame sui chip dei computer, poiche il rame e un miglior conduttore di elettroni. Tecniche di irraggiamento con elettroni, oppure con raggi X o estremo ultravioletto, tipiche dei processi fotolitografici, saranno utilizzate per eccitare i circuiti con dimensioni minori di 0.15 micron. In circa 20 anni a partire da oggi, i chip di silicio saranno sostituiti da computer molecolari e bio-chip; questi ultimi saranno miliardi di volte piu veloci dei chip al silicio. Le molecole sono gruppi di atomi. E gli atomi sono piccole particelle che costituiscono tutto quello che vedete in questo mondo. I computer molecolari impiegheranno le molecole come interruttori elettronici ultra veloci. Quando l'interruttore e su ON, indica il valore 1, e quando e su OFF, indica 0. Tutti i programmi per computer sono basati sul sistema di numerazione binario (i numeri 1 e 0). La tabella seguente mostra il progresso e l'andamento dei futuri sviluppi dei chip per computer. Progressi delle future prestazioni dei chip ********************************************* +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | Tipo/Anno | 1997 | 1999 | 2001 | 2003 | 2012 | 2020 | 2030 | +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | dimens.circuitali(micron)| 0.25 | 0.18 | 0.15 | 0.13 | 0.05 |< 0.00001| atomiche | +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | dimensioni dei Wafer (mm)| 200 | 300 | 300 | 300 | 450 | Mol/Bio |Quantistiche| +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | Tensione operativa Min. | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| < 0.001 |infinitesima| +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | Potenza dissipata Max | 70 | 90 | 110 | 130 | 175 | 600 |infinitesima| +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | frequenza On-chip (MHz) | 750 | 1,250 | 1,500 | 2,100 | 10,000 | > 50,000| ----- | +--------------------------+---------+---------+---------+---------+--------+---------+------------+ | capacita della DRAM | 256 MB | 1 GB | 2 GB | 4 GB | 256 GB | > 1000GB| ---- | +--------------------------+---------+---------+---------+---------+--------+---------+------------+ Come potete vedere, l'hardware e il vero protagonista dell'alta tec- nologia; lavorare con il software richiede certamente un serio impegno, ma comporta una minore difficolta tecnologica. D'altra parte, tutti i paesi del mondo sviluppano/realizzano software. Infatti ogni persona in questo mondo, munita di un piccolo PC di basso costo, e in grado di scrivere programmi. I database come Oracle, Informix, Sybase, IBM DB2 (Unix), sono stati scritti usando il linguaggio "C"; il codice binario, ottenuto compilando il codice sorgente, viene venduto direttamente ai clienti. I database Oracle, Sybase, Informix, sono programmi in "C" al 100% !! Poiche negli ultimi 14 anni e stata fatta una gran mole di lavoro su PostgreSQL, non ha alcun senso ricreare da capo un altro sistema di database che soddisfi lo standard SQL ANSI/ISO. Sara invece di grande vantaggio prendere il codice gia esistente di PostgreSQL, e aggiungergli le funzionalita mancanti o gli eventuali miglioramenti necessari, per usarli immediatamente. Si prevede che la domanda di "prodotti Internet" come PostgreSQL crescera esponenzialmente, in misura di quanto questi potranno mantenersi di alta qualita, basso costo, e diffusione estremamente vasta sia sul lato utenti, sia su quello degli sviluppatori. Quelle nazioni che non usano "prodotti Internet" perderanno clamorosamente la "rivoluzione della rete Internet", e rimarranno indietro rispetto agli altri paesi. La ragione e che "Internet" stessa e LLAA PPIIUU EESSTTEESSAA industria di software del mondo, ed e una grande e potente "software house". 11..11.. CCoommppuutteerr qquuaannttiissttiiccii -- LLaa ffiissiiccaa qquuaannttiissttiiccaa uuttiillee !!!! Come potete vedere dalla precedente tabella, dedicata ai "progressi delle future prestazioni dei chip", negli anni successivi al 2030 i sistemi di database come PostgreSQL gireranno su ccoommppuutteerr qquuaannttiissttiiccii. I computer quantistici utilizzano le caratteristiche di una particella atomica, come la direzione dello spin, per creare uno stato (cioe: uno stato logico, n.d.t.). Per esempio, quando lo spin e "su", una particella puo essere letta come ""uunnoo""; quando il suo spin e "giu", la particella deve essere letta come ""zzeerroo"". Atomi e nuclei possono esistere in uno stato di sovrapposizione (di altri stati n.d.t.), in modo tale che tutti i valori da zero ad uno possono essere rappresentati. Intrappolando gli spin degli atomi, i ""qquubbiitt"" possono essere connessi gli uni agli altri; cio conferisce loro la capacita di agire come un tutto unico, e permette di raggiungere la potenza del calcolo non lineare, che ssoorrppaasssseerraa ddii ggrraann lluunnggaa le possibilita dei supercomputer oggi disponibili!! A livello atomico, la fisica quantistica ci viene in aiuto per una migliore comprensione del comportamento delle particelle atomiche. 22.. LLee lleeggggii ddeellllaa ffiissiiccaa ssii aapppplliiccaannoo aall ssooffttwwaarree!! In questo capitolo sara mostrato come la scienza giochi un ruolo importante nella creazione di svariati oggetti come: il software, quest'universo, la massa, gli atomi, l'energia, ed anche voi stessi! Questo capitolo mostra anche quanto sia importante conoscere la scienza, prima di iniziare ad usarne i prodotti. La regola d'oro e: _"_N_O_N _s_i _D_E_V_E _u_s_a_r_e _u_n _p_r_o_d_o_t_t_o _s_e_n_z_a _c_o_m_p_r_e_n_d_e_r_e _c_o_m_e _e_s_s_o _s_i_a _s_t_a_t_o _c_r_e_a_t_o_!_!_" Questa regola si applica ad ogni cosa: sistemi di database, sistemi di computer, sistemi operativi, quest'universo e anche il vostro corpo! Cio significa che dovreste cercare di avere tutte le informazioni, e il codice completo del sistema. E importante comprendere come funzionino il corpo umano e gli atomi al suo interno, perche gli esseri umani creano PostgreSQL, MS Windows95, ecc.. La creazione e un passo molto importante. Le persone che usano gli oggetti della scienza, devono sapere come questi vengono creati. Cio si applica anche ai computer e a PostgreSQL. La maggior parte della gente non ha cognizioni di scienza, e quindi non sa come siano stati creati i sistemi come MS Windows NT/95, Oracle, il corpo umano e quest'universo. La grande maggioranza di persone non sa come sono fatti l'universo e MS Windows 95/NT, e cosa c'e dentro di essi. I sistemi complessi sono costruiti utilizzando semplicissimi mattoni elementari: ognuno dei milioni di universi che sono stati creati ha milioni di super-ammassi di galassie; ogni super-ammasso ha milioni di galassie; ogni galassia ha milioni di stelle; qualche stella ha molti pianeti; ogni pianeta e costituito da miliardi di atomi. _(_N_e_l_l_a _s_t_o_r_i_a _d_i _q_u_e_s_t_o _m_o_n_d_o_, ssoolloo uunn uunniivveerrssoo ee ssttaattoo ccrreeaattoo ddaa uunn uuoommoo, nell'antica India, eoni fa; ma nessun altro caso ci e stato riportato nella storia moderna. Esiste solo un universo creato dall'uomo). Creare un universo richiede una tecnologia molto avanzata; molto piu di quella della bomba atomica, sganciata su Hiroshima e Nagasaki, che ha causato uunn''oorrrriibbiillee ddiissttrruuzziioonnee. Le armi nucleari moderne sono cosi minuscole e potenti che, se una di queste bombe fosse sganciata nell'Oceano Pacifico, potrebbe vaporizzare completamente il pianeta terra! La varieta di armi e infinita. Esistono armi in grado, perfino, di distruggere gli universi (fornire a chiunque la tecnologia delle armi nucleari, non e una buona idea). Armi nucleari ed altre aarrmmii ddiivviinnee aannccoorraa ppiiuu ppootteennttii, sono state usate sui campi di battaglia dell'antica India! Nessuno credette ad Albert Einstein (uno scienziato del 1900), quando previde che le armi nucleari sarebbero state in grado di vaporizzare grandi citta. Il software come MS Windows 95 e stato creato semplicemente con i linguaggi di programmazione "C" e Assembler, utilizzando solo 1 e 0; ggllii uunniivveerrssii ccoommee iill nnoossttrroo ssoonnoo ssttaattii ccrreeaattii sseemmpplliicceemmeennttee ddaallll''iinntteerraazziioonnee ddii uunn''ooppppoorrttuunnaa ccoommbbiinnaazziioonnee ddii mmiinnuussccoollee ppaarrttiicceellllee eelleemmeennttaarrii,, pprroovveenniieennttii ddaa aallttrree ddiimmeennssiioonnii.. _(_q_u_a_l_c_o_s_a _d_i _i_n_t_e_r_e_s_s_a_n_t_e _e _a_v_v_e_n_u_t_o aappppeennaa pprriimmaa dell'interazione delle minuscole particelle). Un corpo umano viene creato in seguito all'interazione di un'opportuna combinazione di piccole cellule!! _(_q_u_a_l_c_o_s_a _d_i _i_n_t_e_r_e_s_s_a_n_t_e _a_v_v_i_e_n_e aappppeennaa pprriimmaa dell'interazione delle piccole cellule). Gli esseri umani hanno ereditato le proprieta di quest'universo. L'universo, in cui state vivendo attualmente, NON esisteva: tutti gli atomi contenuti nell'universo non c'erano per niente, e neanche il TEMPO esisteva!! Il neonato universo e stato generato in seguito ad un grande scoppio (il big bang), ha iniziato ad espandersi, e ha continuato a crescere. Oggi il nostro universo non e statico, ed e ancora in espansione!! Una persona di nome ''BBrraahhmmaa'', proveniente da un altro universo, ha creato l'universo in cui state vivendo attualmente. LLaa CCoonnoosscceennzzaa ee llaa MMAADDRREE ddii qquueesstt''uunniivveerrssoo!!!! 'Brahma' ha amato 'Madre Conoscenza' prima della nascita dell'universo in cui state vivendo!! E qualcosa di simile a quel che e successo quando voi siete nati! Senza i 'geni' di Madre Conoscenza, non e possibile creare neanche un piccolo programma in "C" ! Il nostro universo ricollassera in qualche punto (in un 'big crunch'), e tutti gli atomi in esso contenuti svaniranno, e scompariranno completamente! Tutti gli atomi, che si vedono in questo universo, saranno dispersi! Il numero totale di universi che sono stati creati e IINNFFIINNIITTOO e, analogamente, il numero totale dei sistemi operativi che possono essere creati, e anch'esso iinnffiinniittoo!! E un processo ciclico infinito, che vede universi nascere e morire. Esistono milioni di universi che possono essere classificati in 3 categorie principali. Un numero infinito di universi, ed un'infinita varieta di atomi multi- dimensionali, collassano in pochi _u_n_i_v_e_r_s_i_-_d_i_m_e_n_s_i_o_n_a_l_i_-_p_r_i_m_a_r_i. E gli universi-dimensionali-primari collassano in un'unica entita concentrata, chiamata _'_e_e_s_h_w_a_r_' (eeshara e una parola in _s_a_n_s_c_r_i_t_o). Equazioni matematiche molto avanzate danno fondamento a questa teoria. Le leggi della scienza e della statistica giocano a favore dei sistemi open source come PostgreSQL e Linux. Con le crescenti velocita ed affidabilita di Internet, il sistema di programmazione open source guadagnera sempre piu slancio. Quindi, se le leggi della statistica e della fisica sono corrette, con l'accrescersi della consapevolezza della scienza, e il suo apprendimento da parte della gente IIGGNNOORRAANNTTEE, accadra che i sistemi a codice sorgente chiuso spariranno da questo pianeta. Sviluppare un progetto come PostgreSQL richiede risorse come energia e tempo, percio PostgreSQL e un prodotto di energia e tempo. Poiche l'energia ed il tempo possono essere spiegati solo per mezzo della scienza, c'e una diretta correlazione tra la fisica e i progetti software come PostgreSQL e Linux. Le leggi della scienza (fisica) si applicano a qualsiasi cosa voi facciate, anche quando state sviluppando progetti software. La fisica e in azione anche quando state parlando (onde sonore), o camminando (attrito tra la terra e i vostri piedi), oppure quando leggete un libro, o scrivete software. Ogni scienza di questo mondo ha profonde radici nella matematica, e questo vale anche per PostgreSQL. PostgreSQL impiega l'"algebra moderna", che e una piccola branca della matematica. L'algebra moderna tratta di "teoria degli insiemi", "algebra relazionale", teoria dei gruppi, anelli, collezioni, insiemi, unioni, intersezioni, esclusioni, domini, liste, ecc... Il software come PostgreSQL esiste, oggi, a causa di energia e tempo. Inoltre massa ed energia sono UNA cosa sola, una SSTTEESSSSAA entita. Il fatto che massa ed energia siano la stessa cosa, era ignoto alla gente vissuta fino a 100 anni fa! E anche ooggggii la popolazione mondiale non sa che Internet e la piu estesa "azienda di sviluppo di software", e la piu grande "compagnia di software" del mondo! Le cellule nel cervello umano consumano energia mentre lavorano (creando software): convertono l'energia chimica, tratta dal cibo, in energia elettrica e calore. Anche mentre state leggendo questo paragrafo, le cellule nel vostro cervello stanno bruciando il combustibile, e stanno utilizzando piccole quantita di energia. Tutto cio implica che il cervello umano e un motore termodinamico. Poiche il cervello umano e un motore termodinamico, ne deriva che le leggi della termodinamica si applicano al cervello, e cosi la termodinamica ha effetti indiretti sul software come PostgreSQL. Puo esserci un infinito numero di colori, di linguaggi di programmazione, di progetti di chip e di teorie; ma NON esiste UN SINGOLO E PERFETTO colore, linguaggio, progetto o sistema! Quel che si puo avere, e solo un QUASI PERFETTO colore (lunghezza d'onda), sistema di database, o teoria! LLaa nnaattuurraa ee ccoommee uunn _C_A_L_E_I_D_O_S_C_O_P_I_O: c'e un infinito numero di dimensioni, un'infinita varieta di particelle di altre dimensioni, ma essi si combinano in pochissime dimensioni primarie, e viceversa. Combinando via Internet le energie di milioni di persone intorno al mondo, e possibile ottenere un sistema QQUUAASSII PPEERRFFEETTTTOO (ad esempio un sistema di software per database). Presa individualmente, l'energia di una singola persona e insignificante; tuttavia, interconnettendo un vasto numero di persone, l'energia totale sara enorme, e potra essere concentrata su un progetto per generare un sistema quasi perfetto. L'energia e misurata in joule, kiloJoule o kilogrammo-massa; il tempo e misurato in secondi o ore. La potenza e l'energia divisa per il tempo, ed e misurata in watt o kilowatt . ______________________________________________________________________ Energia di ogni persona = y joule o, in termini di massa energia di ogni persona = y grammi Il fattore di conversione tra massa ed energia e: E = m * c * c dove 'c' e la velocita della luce e 'm' e la massa. Tempo = 8 ore (questa e una costante perche ogni persona lavora solo 8 ore al giorno) Potenza = Energia / Tempo = (y / (8 * 60 * 60) ) watt Potenza Totale del mondo = n * (y / (8 * 60 * 60) ) watt dove n = numero di persone che collaborano al progetto. ______________________________________________________________________ Dall'equazione sopra riportata risulta che, incrementando la 'n', si migliorera notevolmente la qualita del prodotto. E sorprendente come la rete globale Internet possa concentrare cosi tanta energia (espressa in kilojoule) e potenza (in kilowatt) su sistemi come Linux e PostgreSQL! Internet puo interconnettere un grande numero di persone, e cosi Internet possiede una grande quantita di energia e di tempo; cio porta a produrre software della piu alta qualita, in molto meno tempo rispetto alle compagnie commerciali. Anche compagnie molto grandi, come Microsoft e IBM, non possono sopraffare ed annullare le leggi della fisica; piuttosto dovranno AARRRREENNDDEERRSSII alle leggi della scienza! La conclusione e: in virtu delle leggi della scienza, i sistemi con "codice open source", come PostgreSQL e Linux, prevarranno e saranno sempre migliori dei sistemi con "codice sorgente chiuso"; e possibile provare quest'affermazione in modo scientifico. Gli uomini non dovrebbero sprecare tempo nel creare troppi prodotti software duplicati. 33.. CCooss''ee PPoossttggrreeSSQQLL ?? PostgreSQL e un database gratuito e libero, il cui codice sorgente completo e disponibile liberamente per tutti; e un sistema di database relazionale ad oggetti, ed ha come obiettivo la totale conformita a SQL/ISO-ANSI 1998,92; funziona su diverse piattaforme hardware e vari sistemi operativi. Obiettivo ultimo, e scopo finale di PostgreSQL, e diventare aderente al 100% a SQL ANSI/ISO, e diventare il numero UNO del mondo tra i database genericamente "open". PostgreSQL si pronuncia Post-gres-chiu-el (Postgres-QL) e nnoonn Postgre- es-chiu-el. Oggi PostgreSQL e iill ppiiuu aavvaannzzaattoo sistema del mondo, ed e sorprendente che molti sistemi di database commerciali non raggiungano la qualita, le funzionalita, e le capacita di PostgreSQL !! PostgreSQL e lo sforzo congiunto di molte nazioni intorno al globo, ed e un progetto paragonabile a quello della SSttaazziioonnee SSppaazziiaallee IInntteerrnnaazziioonnaallee. PostgreSQL rimarra il ssiisstteemmaa ddii ddaattaabbaassee nnuummeerroo uunnoo nei decenni a venire, perche e un sistema realizzato con il metodo open source. L'idea fondamentale dietro PostgreSQL e quella secondo cui, una volta che un modulo di codice sia gia stato scritto, non dovreste sprecare neanche un milli-secondo del vostro tempo nel provare a reinventarlo!! Informix Universal server (rilasciato nel 1997) e basato su una prima versione di PostgreSQL, in quanto Informix compro Illustra Inc. e l'integro con Informix stessa. Il database Illustra era basato su Postgres (una prima versione di PostgreSQL). PostgreSQL e un ampliamento del sistema di gestione di database POSTGRES, e un DBMS di nuova generazione, ed e un prototipo di ricerca. PostgreSQL permette l'uso dei modelli di dati piu potenti, ed una maggiore ricchezza di tipi di dati rispetto a POSTGRES; inoltre il linguaggio di interrogazione PostQuel e stato sostituito con un sottoinsieme esteso di SQL. Lo sviluppo di PostgreSQL e stato realizzato da un gruppo di sviluppatori attivi in Internet, tutti iscritti alla mailing list di sviluppo di PostgreSQL. L'attuale coordinatore e Marc G. Fournier +o scrappy@postgreSQL.org Questo gruppo e ora responsabile dello sviluppo attuale e futuro di PostgreSQL. Naturalmente gli utilizzatori del database sono gli stessi sviluppatori di PostgreSQL! Il carico di sviluppo e distribuito, in internet, su un grandissimo numero di utenti finali del database. Gli autori di PostgreSQL 1.01 sono stati Andrew Yu e Jolly Chen. Il codice del Postgres originale, da cui PostgreSQL e derivato, e stato il risultato dello sforzo di molti laureati, studenti universitari, gruppi di programmatori, tutti al lavoro sotto la direzione del Professor Michael Stonebraker dell'Universita della California, a Berkeley. Milioni di PostgreSQL sono installati come server database, server database per web, e server di dati per applicazioni. PostgreSQL e un sofisticatissimo sistema di database relazionale ad oggetti (ORDBMS). PostgreSQL gira su Solaris, SunOS, HPUX, AIX, Linux, Irix, Digital Unix, BSDi, NetBSD, FreeBSD, SCO unix, NEXTSTEP, Unixware, e su tutte le versioni di Unix. Una versione per Windows NT e stata realizzata usando il pacchetto cygwin32 della Cygnus. PostgreSQL, e gli argomenti connessi in questo documento, sono soggetti al COPYRIGHT dell'Universita della California, Berkeley. 33..11.. LLiibbrroo bbiiaannccoo PostgreSQL in pochi dettagli: +o Titolo: PostgreSQL SQL RDBMS Database (Object Relational Database Management System) +o Versione Attuale: 7.0.1 +o Eta: PostgreSQL ha 15 anni. E stato sviluppato a partire dal 1985 +o Autori: Sviluppato da milioni di universita/compagnie su Internet, durante i trascorsi 15 ANNI Il libro bianco su PostgreSQL si trova al sito PostgreSQL si pronuncia Post-gres-chiu-el (Postgres-QL) e nnoonn Postgre- es-chiu-el. 44.. PPoossttggrreeSSQQLL oo MMyySSQQLL ?? QQuuaallee ddeeii dduuee?? 44..11.. PPoossttggrreeSSQQLL hhaa ssccoonnffiittttoo OOrraaccllee,, IIBBMM DDBB22,, MMSS SSQQLL sseerrvveerr ee aallttrrii!!!! PostgreSQL ha battuto Oracle 8 (e 8i), IBM DB2, MS SQL server, Sybase, Interbase e MySQL, nei benchmark standard relativi a test su prestazioni, velocita, scalabilita ed affidabilita! Leggete i benchmark al sito , o presso . 44..22.. MMyySSQQLL ee aallttrrii RRDDBBMMSS dduupplliiccaattii MySQL e un altro server SQL open source, ma non gestisce le transazioni. E adatto ad una base di dati molto piccola, e non supporta le funzionalita SQL avanzate. Invece PostgreSQL e un database adatto a grandi aziende, supporta le transazioni e quasi tutti i costrutti SQL. PostgreSQL e molto piu avanzato dei database commerciali come Oracle, Sybase e Informix. PostgreSQL supporta meccanismi di locking molto avanzati, e molte altre funzionalita innovative che non sono disponibili sui sistemi di database commerciali!! In un prossimo futuro lo sviluppo di MySQL cessera, poiche MySQL, in qualita di prodotto funzionante secondo l'ANSI SQL, e un prodotto duplicato. Dovremmo scegliere il server SQL open source piu maturo ed avanzato, lasciando perdere tutti gli altri, perche non dobbiamo perdere il nostro tempo (ad occuparci di tutti i RDBMS esistenti)!! Infatti, avete tempo per occuparvi solo del server SQL piu potente, che e PostgreSQL! Ne segue che tutti gli utenti di MySQL migreranno verso PostgreSQL. Inoltre MySQL e un prodotto "quasi commerciale", contrariamente a PostgreSQL, che e open source e non richiede il pagamento di licenze. Non c'e alcuna necessita di un altro sistema di database come PostgreSQL, in questo mondo!! I prodotti duplicati, come MySQL, confondono la base di utenti e causano divisioni di risorse. Se si vuole un sistema ""QQUUAASSII PPEERRFFEETTTTOO"", deve esserci uunn ssoolloo sistema, e ognuno, nel mondo, deve lavorare su di esso!! I prodotti duplicati causano piu danni che vantaggi, e quindi le frammentazioni di risorse devono essere fortemente scoraggiate. Questo e gia successo nel caso dei sistemi di database commerciali Oracle, Sybase, Informix e MS SQL server, che hanno causato la scissione della base di utenti, e sono spesso tra loro incompatibili. _V_o_g_l_i_o _m_e_t_t_e_r_e _i_l _c_o_d_i_c_e _s_o_r_g_e_n_t_e _d_e_l _s_e_r_v_e_r _S_Q_L _s_o_t_t_o _i_l _v_o_s_t_r_o _c_o_n_t_r_o_l_l_o_!_!_! Non vi servono centinaia di sistemi di database; tutto quello che vi serve e soltanto il migliore server database che, guarda caso, e proprio 'PostgreSQL'. AATTTTEENNZZIIOONNEE:: A partire da specifiche come quelle di ANSI SQL, e possibile creare un infinito numero di sistemi di database !! Le funzionalita, assenti in MySQL e supportate da PostgreSQL, sono: +o Le transazioni +o Le stored procedure +o I trigger (per update, insert e delete) +o I database orientati agli oggetti +o Il sistema avanzato di locking, la gestione di multi-utenza simultanea, l'ambiente multi-transazionale +o Le interrogazioni annidate (Sub-query) +o I cursori dal lato server +o Il caching delle query +o Il locking dei database +o Un miglior supporto delle join sulle tabelle (JOIN, UNION, MINUS, INTERSECT, join esterna) +o E molte altre funzionalita piu avanzate, troppo numerose da elencare qui. MySQL si trova al sito 44..33.. LLee lliimmiittaazziioonnii ddii MMyySSQQLL PostgreSQL dovrebbe essere comparato con sistemi come Oracle, perche entrambi sono pienamente conformi alle proprieta ACID, nonche robusti sistemi sviluppati da lunghissimo tempo. E del tutto fuori luogo comparare MySQL con Oracle, oppure MySQL con PostgreSQL. Per altri dettagli leggete Why Not MySQL . E chiaro, quindi, che si commettera un grave errore nel sostituire Oracle con MySQL!! Se volete sostituire Oracle, prendete in considerazione PostgreSQL. 55.. DDoovvee ootttteenneerrlloo ?? Potete comprare i CDROM di Linux Redhat, Debian o Slackware, che contengono gia PostgreSQL in forma di pacchetti (sia in codice sorgente che in binari), presso: +o Linux System Labs al sito Web: (7 dollari U.S.A.) +o Cheap Bytes Inc al sito Web: (7 dollari U.S.A.) +o Debian al sito web principale: Anche l'organizzazione di PostgreSQL vende il "CDROM PostgreSQL", che contiene il codice sorgente completo ed i binari per molti sistemi operativi Unix, insieme a tutta la documentazione. +o CDROM PostgreSQL, presso il sito Web principale: (30 dollari U.S.A.) Distribuzione dei soli binari di PostgreSQL: +o Il curatore dei pacchetti RPM di PostgreSQL e Lamar Owen, che ha l'e-mail lamar.owen@wgcr.org. +o pacchetti RPM di sorgenti e binari di PostgreSQL +o pacchetti RPM di sorgenti e binari di PostgreSQL . Fate click su "Latest News", e poi sugli RPM Redhat. +o pacchetti RPM di sorgenti e binari di PostgreSQL ; il sito ftp e +o sito dei binari per Solaris, HPUX, AIX, IRIX, Linux: Siti Web WWW: +o Sito web primario: +o Sito web secondario: +o +o +o +o I siti ftp sono elencati di seguito: +o FTP primario: +o FTP secondario: +o +o +o +o +o +o +o +o +o +o Il codice sorgente di PostgreSQL e ottenibile anche presso tutti i siti mirror di sunsite unc (per un totale di circa 1000 siti intorno al globo). Inoltre, il sorgente e incluso nella distribuzione Red Hat: e nel file /pub/contrib/i386/postgresql.rpm . +o Per una lista di siti mirror andate su 66.. IIssttrruuzziioonnii ppeerr uunn''iinnssttaallllaazziioonnee rraappiiddaa ddii PPoossttggrreeSSQQLL PostgreSQL si pronuncia Post-gres-chiu-el (Postgres-QL), e nnoonn Postgre-es-chiu-el. Questo capitolo vi aiutera ad installare e a lanciare il database molto rapidamente: in meno di 5 minuti. 66..11.. IInnssttaallllaazziioonnee ee ccoollllaauuddoo Installazione, collaudo, verifica e lancio di PostgreSQL, in pochi passi. Effettuate il login come root. ______________________________________________________________________ # cd /mnt/cdrom/RedHat/RPMS # man rpm # ls postgre*.rpm # rpm -qpl postgre*.rpm | less (per vedere la lista dei file) # rpm -qpi postgre*.rpm (per vedere le informazioni dei pacchetti) # cat /etc/passwd | grep postgres ______________________________________________________________________ Nota: Se esiste un utente "postgres", potreste dover fare il backup dei suoi file, cancellare la home directory di postgres, ~postgres, e poi dovreste eliminare l'utente unix "postgres"; oppure potreste rinominarlo come "postgres2", o qualcosa di simile. L'installazione deve essere realizzata come se fosse la prima volta. ______________________________________________________________________ # rpm -i postgre*.rpm (per installare tutti i pacchetti dei client, di sviluppo, dei dati, e quelli principali per il funzionamento di pgaccess) # man chkconfig # chkconfig --add postgresql (per avviare pg in fase di boot) # /etc/rc.d/init.d/postgresql start (per avviare postgres) # man xhost # xhost + (affinche pgaccess abbia accesso al display) # su - postgres bash$ man createdb bash$ createdb miodatabase bash$ man psql bash$ psql miodatabase ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s bash$ export DISPLAY=:0.0 bash$ man pgaccess bash$ pgaccess miodatabase ______________________________________________________________________ Adesso potete cominciare a SSPPAARRAARREE comandi SQL in psql o in pgaccess !! ______________________________________________________________________ bash$ cd /usr/doc/postgresql* ______________________________________________________________________ Qui potete leggere tutte le FAQ, i tutorial, e le guide per l'utente, il programmatore, l'amministratore. 66..22.. RRPPMM ddii PPoossttggrreeSSQQLL Vedere anche _"_I_n_s_t_a_l_l_a_t_i_o_n _S_t_e_p_s_" presso Il curatore degli RPM di PostgreSQL e Lamar Owen, la cui e-mail e lamar.owen@wgcr.org. Altri dettagli su PostgreSQL si trovano nel sito 66..33.. MMaaxxiimmuumm RRPPMM Per effettuare buone installazioni di PostgreSQL, familiarizzate con il gestore dei pacchetti RPM. Scaricate il testo 'Maximum RPM' dal sito , e cercate il file di nome maximum- rpm.ps.gz Leggetelo in Linux usando il comando gv : ______________________________________________________________________ # gv maximum-rpm.ps.gz ______________________________________________________________________ Esiste anche rpm2deb, che converte i pacchetti RPM in pacchetti per Debian. 66..44.. RRPPMM ddeeggllii eesseemmppii Gli esempi sono necessari per il collaudo delle varie interfacce al PostgreSQL. Installate la directory degli esempi di postgresql da : +o Linux cdrom - postgresql-*examples.rpm +o postgresql-*examples.rpm dal sito e dai siti mirror webjump , angelfire , geocities , virtualave , bizland , theglobe , spree , infoseek , bcity , 50megs +o Il codice sorgente di PostgreSQL e nei file postgresql*.src.rpm, e contiene le directory degli esempi, delle prove, e dei tutorial. 66..55.. PPrroovvaarree PPyyGGrreeSSQQLL -- iinntteerrffaacccciiaa aa PPyytthhoonn Installate il pacchetto degli esempi, come in ``''; poi digitate: ______________________________________________________________________ bash$ cd /usr/lib/pgsql/python bash$ createdb thilo bash$ psql thilo thilo=> create table prova (aa char(30), bb char(30) ); thilo=> \q bash$ /usr/bin/python >>> import _pg >>> db = _pg.connect('thilo', 'localhost') >>> db.query("INSERT INTO prova VALUES ('ping', 'pong')") >>> db.query("SELECT * FROM prova") eins|zwei ----+---- ping|pong (1 row) >>>CTRL+D bash$ ..... Sembra funzionare - adesso installatelo opportunamente bash$ su - root #cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload ______________________________________________________________________ 66..66.. PPrroovvaarree PPeerrll -- iinntteerrffaacccciiaa aall PPeerrll Installate il pacchetto degli esempi, come in ``''; poi digitate: ______________________________________________________________________ root# chown -R postgres.postgres /var/lib/pgsql/examples bash$ cd /var/lib/pgsql/examples/perl5 bash$ perl ./example.pl ______________________________________________________________________ Nota: Se il comando precedente non funziona, fate quel che segue. La variabile globale @INC dovrebbe includere il modulo Pg.pm nella direc- tory site_perl, e poi deve essere usata l'opzione -I ______________________________________________________________________ bash$ perl -I/usr/lib/perl5/site_perl/5.005/i386-linux-thread ./example.pl ______________________________________________________________________ .... Ora potete far girare programmi perl con accesso al database PostgreSQL!! Leggete il file example.pl per usare l'interfaccia per il Perl. 66..77.. PPrroovvaarree llee iinntteerrffaaccccee aa lliibbppqq,, lliibbppqq++++ Installate il pacchetto degli esempi, come in``''; poi digitate: ______________________________________________________________________ root# chown -R postgres.postgres /var/lib/pgsql/examples bash$ cd /var/lib/pgsql/examples/libpq bash$ gcc testlibpq.c -I/usr/include/pgsql -lpq bash$ export PATH=$PATH:. bash$ a.out bash$ cd /var/lib/pgsql/examples/libpq++ bash$ g++ testlibpq0.cc -I/usr/include/pgsql -I/usr/include/pgsql/libpq++ -lpq++ -lpq -lcrypt bash$ ./a.out (Nota: Ignorate gli eventuali Messaggi di Errore, come segue) > create table foo (aa int, bb char(4)); No tuples returned... status = 1 Error returned: fe_setauthsvc: invalid name: , ignoring... > insert into foo values ('4535', 'vasu'); No tuples returned... status = 1 Error returned: fe_setauthsvc: invalid name: , ignoring... > select * from foo; aa |bb | -----|-----| 4535 |vasu | Query returned 1 row. > >CTRL+D bash$ ______________________________________________________________________ .... Ora potete far girare interfacce al database PostgreSQL, scritte in C/C++ !! 66..88.. PPrroovvaarree llee iinntteerrffaaccccee aa JJaavvaa Installate il pacchetto degli esempi, come in``''; installate anche quel che segue: +o Prelevate JDK jdk-*glibc*.rpm presso o presso +o Prelevate postgresql-jdbc-*.rpm ___________________________________________________________________ root# chown -R postgres.postgres /var/lib/pgsql/examples bash$ cd /var/lib/pgsql/examples/jdbc bash$ echo $CLASSPATH --> Dovrebbe visualizzare CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib:/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar con l'appropriato numero di versione di jdbc*.jar. Le directory /usr/lib/pgsql e /usr/libjdk*/lib dovrebbero contenere i file *.jar. bash$ export CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib:/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar Aprite il file psql.java, e commentate la linea del 'package'. bash$ javac psql.java bash$ java psql jdbc:postgresql:template1 postgres < password >[1] select * from pg_tables; tablename tableowner hasindexes hasrules pg_type postgres true false false pg_attribute postgres true false false [2] CTRL+C bash$ ___________________________________________________________________ .... Ora fate girare le interfacce Java al database PostgreSQL! 66..99.. PPrroovvaarree ll''iinntteerrffaacccciiaa aa eeccppgg Installate il pacchetto degli esempi, vedere``''; poi digitate: ______________________________________________________________________ root# chown -R postgres.postgres /var/lib/pgsql/examples bash$ cd /var/lib/pgsql/examples/ecpg bash$ ecpg test1.pgc -I/usr/include/pgsql bash$ cc test1.c -I/usr/include/pgsql -lecpg -lpq -lcrypt bash$ createdb mm bash$ ./a.out ______________________________________________________________________ .... Adesso potete far girare Embedded "C"-SQL col database Post- greSQL! 66..1100.. PPrroovvaarree eesseemmppii ddii SSQQLL -- TTiippii ddeeffiinniittii ddaallll''uutteennttee ee ffuunnzziioonnii Installate il pacchetto degli esempi, vedere``''; poi digitate: ______________________________________________________________________ root# chown -R postgres.postgres /var/lib/pgsql/examples bash$ cd /var/lib/pgsql/examples/sql Sezione in ampliamento.. ______________________________________________________________________ 66..1111.. PPrroovvaarree IInntteerrffaaccccee TTccll//TTkk Un esempio di interfaccia Tcl/Tk e il programma pgaccess. Leggete il file /usr/bin/pgaccess utilizzando un editor: ______________________________________________________________________ bash$ view /usr/bin/pgaccess bash$ export DISPLAY=:0.0 bash$ createdb miodb bash$ pgaccess miodb ______________________________________________________________________ 66..1122.. PPrroovvaarree iinntteerrffaaccccee OODDBBCC 1. Prelevate il driver odbc pgsql per win32 presso 2. Vedere anche /usr/lib/libpsqlodbc.a 66..1133.. PPrroovvaarree ll''iinntteerrffaacccciiaa MMPPSSQQLL MMoottiiff--wwoorrkksshheeeett Prelevare gli RPM presso 66..1144.. VVeerriiffiiccaa Per verificare l'eccellente qualita di PostgreSQL, lanciate il pacchetto del test della regressione. Effettuate il login come root: ______________________________________________________________________ # rpm -i postgresql*test.rpm E leggete il file README, o installate l'albero del codice sorgente con la directory regress # rpm -i postgresql*.src.rpm # cd /usr/src/redhat/SPECS # more postgresql*.spec (per vedere quali pacchetti RPM di sistema debbano essere installati) # rpm -bp postgresql*.spec (.. questo preparera il pacchetto) Al test di regressione servono i Makefile, e qualche file header come *fmgr*.h, che possono essere creati con: # rpm --short-circuit -bc postgresql*.spec ( .. usate l'opzione 'short circuit' come scorciatoia!) Quando leggete 'make -C common SUBSYS.o', fermate la creazione del Makefile con CRTL+C. Ora la configurazione e terminata con successo, e tutti i makefile e gli header sono stati creati. Non dovete intervenire in altro modo. # cd /usr/src/redhat/BUILD # chown -R postgres postgresql* # su - postgres bash$ cd /usr/src/redhat/BUILD/postgresql-6.5.3/src/test/regress bash$ more README bash$ make clean; make all runtest bash$ more regress.out ______________________________________________________________________ 66..1155.. CCoorrrreezziioonnee ddeeii bbuugg ccrriittiiccii Patch di emergenza, per la correzione dei bug critici, possono essere rilasciate dopo la release GA di PostgreSQL. Potete applicare queste patch opzionali a seconda delle necessita delle vostre applicazioni. Seguite i seguenti passi per applicare le patch: spostatevi nella directory dei sorgenti di postgresql # rpm -i postgresql*.src.rpm # cd /usr/src/postgresql6.5.3 # man patch # patch -p0 < file_di_patch # make clean # make I file di patch sono posizionati presso +o Le patch di PostgreSQL: 77.. GGuuiiddaa ppeerr uunn aavvvviioo rraappiiddoo Rifatevi anche al capitolo ``Installazione Rapida''. 77..11.. CCrreeaarree,, eelliimmiinnaarree,, rriinnoommiinnaarree ddaattaabbaassee Potete usare l'interfaccia grafica 'pgaccess' per creare ed eliminare i database; oppure potete usare la utility a riga di comando 'psql'. ______________________________________________________________________ Se siete connessi come root, passate all'utente 'postgres': # xhost + (Per permettere a pgaccess l'accesso al display) bash$ man createdb bash$ createdb miodatabase bash$ man psql bash$ psql miodatabase ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s bash$ export DISPLAY=:0.0 bash$ man pgaccess bash$ pgaccess miodatabase ______________________________________________________________________ Adesso potete cominciare a SSPPAARRAARREE comandi SQL in psql o in pgaccess !! Per eliminare il database, eseguite: ______________________________________________________________________ bash$ man dropdb bash$ man destroydb (per le versioni precedenti di pgsql) bash$ dropdb ______________________________________________________________________ E anche possibile eliminare un database dall'interno di una sessione SQL, digitando: ______________________________________________________________________ > drop database ______________________________________________________________________ Per rinominare un database vedere ``Backup e Restore'' 77..22.. CCrreeaarree eedd eelliimmiinnaarree ggllii uutteennttii Per creare nuovi utenti, effettuate il login come utente unix 'postgres'. Potete usare l'interfaccia grafica 'pgaccess' per creare o eliminare utenti. (n.d.t.: d'ora in poi ci riferiremo alla versione in lingua italiana di pgaccess, attivabile con la sequenza Database|Preferences|Preferred language italiano|Save; ma accanto, tra parentesi, indicheremo anche i comandi originali in lingua inglese) ______________________________________________________________________ bash$ man pgaccess bash$ pgaccess ______________________________________________________________________ fate click sull'etichetta "Utenti" ("Users"), poi fate click su Oggetto|Nuovo (Object|New), oppure Oggetto|Cancella (Object|Delete) Potete anche usare script da riga di comando. Usate lo script di shell chiamato 'createuser', che aziona psql ______________________________________________________________________ bash$ man createuser bash$ createuser bash$ createuser -h host -p porta -i userid ______________________________________________________________________ Per eliminare un utente postgres, usate lo script di shell 'destroyuser': ______________________________________________________________________ bash$ man dropuser bash$ man destroyuser (per precedenti versioni di pgsql) bash$ destroyuser ______________________________________________________________________ 77..33.. CCrreeaarree eedd eelliimmiinnaarree ii ggrruuppppii Non esiste, per ora, un'interfaccia grafica per impostare i gruppi di utenti. Dovete inserire/aggiornare esplicitamente i gruppi della tabella ppgg__ggrroouupp. Per esempio: ______________________________________________________________________ bash$ su - postgres bash$ psql ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> insert into pg_group (groname, grosysid, grolist) psql=> values ('posthackers', '1234', '{5443, 8261}' ); INSERT 58224 psql=> grant insert on foo to group posthackers; CHANGE psql=> ______________________________________________________________________ I campi in ppgg__ggrroouupp sono: ggrroonnaammee - Il nome del gruppo. Questo nome dovrebbe essere puramente alfanumerico; non aggiungetegli caratteri di sottolineatura o di punteggiatura. ggrroossyyssiidd - L'ID del gruppo. Questo e un int4, e dovrebbe essere unico per ogni gruppo. ggrroolliisstt - La lista degli ID degli utenti che appartengono al gruppo. Questo dato e un int4[]. Per eliminare il gruppo: ______________________________________________________________________ bash$ su - postgres bash$ psql ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> delete from pg_group where groname = 'posthackers'; ______________________________________________________________________ 77..44.. CCrreeaarree,, mmooddiiffiiccaarree eedd eelliimmiinnaarree uunnaa ttaabbeellllaa Potete usare l'interfaccia grafica 'pgaccess', oppure lo strumento da riga di comando 'psql', per creare, modificare o eliminare una tabella in un database. ______________________________________________________________________ bash$ man pgaccess bash$ pgaccess ______________________________________________________________________ Fate clic sui bottoni Tabelle | Nuovo | Disegna (Table|New|Design). ______________________________________________________________________ bash$ man psql bash$ psql ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s ______________________________________________________________________ Al prompt di psql, digitate le istruzioni standard SQL per la gestione delle tabelle, come 'create table', 'alter table', o 'drop table'. 77..55.. CCrreeaarree,, mmooddiiffiiccaarree eedd eelliimmiinnaarree rreeccoorrdd iinn uunnaa ttaabbeellllaa Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql', per creare, modificare od eliminare record nella tabella di un database. ______________________________________________________________________ bash$ man pgaccess bash$ pgaccess ______________________________________________________________________ Fate clic sui bottoni Tabella | < cliccare su una tabella > | Apri (Table||Open). ______________________________________________________________________ bash$ man psql bash$ psql ..... in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s ______________________________________________________________________ Al prompt di psql, digitate le istruzioni standard SQL per la gestione delle tabelle, come 'insert into nome_tabella', 'update nome_tabella', o 'delete from nome_tabella'. 77..66.. CCaammbbiiaarree iill ddaattaabbaassee aattttiivvoo Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql', per cambiare il database attivo. ______________________________________________________________________ bash$ man pgaccess bash$ pgaccess ______________________________________________________________________ Fate click sui bottoni Database | Apri (Database|Open) . ______________________________________________________________________ bash$ man psql bash$ psql ..... in psql, premete i tasti freccia su/giu, per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> connect ______________________________________________________________________ 77..77.. EEffffeettttuuaarree bbaacckkuupp ee rreessttoorree ddeell ddaattaabbaassee PostgreSQL fornisce due programmi di utilita per salvare una copia di sicurezza (backup) del vostro sistema: ppgg__dduummpp per fare il backup di database individuali, e ppgg__dduummppaallll per fare il backup di tutto il database in un colpo solo. ______________________________________________________________________ bash$ su - postgres bash$ man pd_dump bash$ pd_dump > nome_database.pgdump Per scaricare il dump di tutti i database: bash$ man pg_dumpall bash$ pg_dumpall -o > db_all.out Per ricaricare (ripristinare) un database scaricato con pg_dump: bash$ cat nome_database.pgdump | psql Per ricaricare (ripristinare) tutti i database scaricati con pg_dump: bash$ psql -e template1 < db_all.out ______________________________________________________________________ Questa tecnica puo essere usata per spostare i database in nuove col- locazioni, e per rinominare i database esistenti. AATTTTEENNZZIIOONNEE:: Di ogni database si dovrebbe fare il backup in maniera regolare. PostgreSQL gestisce autonomamente i suoi file, all'interno del file system. Per questo motivo, per fare i backup dei vostri database, non e consigliabile affidarsi ai soli sistemi di backup del file system; non c'e garanzia che i file saranno utilizzabili e in uno stato coerente, dopo il ripristino. BBAACCKKUUPP DDII DDAATTAABBAASSEE EESSTTEESSII:: Poiche PostgreSQL ammette tabelle piu grandi della dimensione massima dei file sul vostro file system, puo essere problematico scaricare la tabella in un file, perche il file risultante sara probabilmente piu grande della dimensione massima ammissibile sul vostro sistema. Nel momento in cui ppgg__dduummpp scrive su ssttddoouutt, potete usare solo gli strumenti standard di unix per aggirare questo possibile problema: scaricate il database utilizzando la compressione: ______________________________________________________________________ bash$ pg_dump | gzip > nomefile.dump.gz Ricaricate con: bash$ createdb bash$ gunzip -c nomefile.dump.gz | psql Oppure bash$ cat nomefile.dump.gz | gunzip | psql Uso di split: bash$ pg_dump | split -b 1m - nomefile.dump. Nota: C'e un punto (.) dopo nomefile.dump, nel comando sopra riportato!! Potete ricaricare con: bash$ man createdb bash$ createdb bash$ cat nomefile.dump.* | pgsql ______________________________________________________________________ Naturalmente il nome del file (nomefile), ed il contenuto dell'output di ppgg__dduummpp, non devono necessariamente coincidere con il nome del database. Inoltre il database ripristinato puo avere un nuovo nome scelto arbitrariamente, e percio questo meccanismo e anche adatto per rinominare i database. BBaacckkuupp ddii ooggggeettttii EESSTTEESSII:: Gli oggetti estesi non vengono gestiti da pg_dump. La directory _c_o_n_t_r_i_b_/_p_g___d_u_m_p_l_o, dell'albero dei sorgenti di Postgres, contiene un programma che puo farlo. BBAACCKKUUPP DDEELL FFIILLEESSYYSSTTEEMM:: Potete usare gli strumenti e i comandi del Sistema Operativo Linux per effettuare il backup dell'intero database. Ma prima di usare questo metodo, per fare il backup o il ripristino, ddoovveettee bbllooccccaarree ddeell ttuuttttoo il server database postgresql. Il backup o il ripristino del filesystem puo essere ddaa 22 aa 33 vvoollttee ppiiuu rraappiiddoo dell'esecuzione del comando pg_dump, con il solo svantaggio che ssii ddeevvee bbllooccccaarree ddeell ttuuttttoo il server database. E altamente raccomandabile l'uso di strumenti di backup e ripristino come Arkeia, Bru. Questi strumenti vengono forniti nella sotto-intestazione "Backup and Restore Utility" della lista di analogie Mic-Lin presso , e i cui siti mirror sono: webjump , angelfire , geocities , virtualnet , bizland , theglobe , spree , infoseek , bcity , 50megs I comandi del SO da impiegare sono: ______________________________________________________________________ bash$ man tar bash$ tar -cvf backup.tar /usr/local/pgsql/data oppure, impiegando la compressione bash$ tar -zcvf backup.tgz /usr/local/pgsql/data ______________________________________________________________________ BBAACCKKUUPP IINNCCRREEMMEENNTTAALLEE:: Questa funzionalita e elencata nella lista delle cose da fare (todo), e apparira nei futuri rilasci di PostgreSQL. 77..88.. PPrrootteezziioonnee ddeell ddaattaabbaassee Vedere il capitolo in ``Protezione di PostgreSQL''. 77..99.. AAiiuuttoo iinn lliinneeaa E molto importante che impariate ad usare l'aiuto in linea di PostgreSQL, poiche vi risparmiera molto tempo e vi consentira un rapidissimo accesso alle informazioni. Leggete le pagine di manuale in linea sui vari comandi come createdb, createuser, ecc.. ______________________________________________________________________ bash$ man createdb ______________________________________________________________________ Leggete anche l'aiuto in linea di psql, digitando \h al prompt di psql ______________________________________________________________________ bash$ psql miodatabase psql> \h Suggerimento: in psql, premete i tasti freccia su/giu per utilizzare lo storico dei comandi; oppure usate il comando \s ______________________________________________________________________ 77..1100.. CCrreeaarree ttrriiggggeerr ee ssttoorreedd pprroocceedduurree Per creare trigger o stored procedure, si deve prima installare 'plpgsql' nel particolare database che state usando, eseguendo lo script 'createlang'. Se volete che il vostro database sia quello predefinito, installate 'plpgsql' nel 'template1', cosi i database creati saranno cloni del template1. Leggete la pagina web di 'createlang', e precisamente la guida dell'Utente presso /usr/doc/postgresql-7.0.2/user/index.html. ______________________________________________________________________ bash$ man createlang bash$ createdb miodb bash$ export PGLIB=/usr/lib/pgsql bash$ createlang plpgsql miodb bash$ createlang plpgsql template1 ______________________________________________________________________ Leggete anche gli esempi di trigger e di stored procedure che trovate in ``''. Ecco un frammento di codice tratto dall'RPM degli esempi: ______________________________________________________________________ create function tg_pfield_au() returns opaque as ' begin if new.name != old.name then update PSlot set pfname = new.name where pfname = old.name; end if; return new; end; create trigger tg_pfield_au after update on PField for each row execute procedure tg_pfield_au(); ______________________________________________________________________ Un altro esempio di trigger: ______________________________________________________________________ create trigger check_fkeys_pkey_exist before insert or update on fkeys for each row execute procedure check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2'); ______________________________________________________________________ Potete installare anche il pacchetto di TEST: postgresql- test-7.0.2-2.rpm, e potete leggere gli esempi di script sql posti in /usr/lib/pgsql/test/regress/sql Per vedere la lista di trigger nel database, digitate: ______________________________________________________________________ bash$ psql miodb psql=> \? psql=> \dS psql=> \d pg_trigger psql=> select tgname from pg_trigger order by tgname; ______________________________________________________________________ Per leggere la lista di funzioni e stored procedure nel database, digitate: ______________________________________________________________________ bash$ psql miodb psql=> \? psql=> \dS psql=> \d pg_proc psql=> select proname, prosrc from pg_proc order by proname; psql=> \df ______________________________________________________________________ 77..1111.. DDooccuummeennttaazziioonnee ddii PPoossttggrreeSSQQLL Per altre domande, leggete gli eccellenti manuali di PostgreSQL, molto approfonditi. La documentazione di PostgreSQL e distribuita insieme al pacchetto. Leggete le guide 'User's Guide', 'Programmer's Guide', 'Administrator's Guide', e gli altri manuali. I documenti dei rilasci sono reperibili presso . 88.. RReeggoollaazziioonnii:: ccoommee mmiigglliioorraarree llee pprreessttaazziioonnii ddeell sseerrvveerr PPoossttggrreeSSQQLL Generalmente il server database e uno scatolotto autonomo connesso alla rete. Poiche il server database e il solo processo unix funzionante sulla CPU, potete fare svariate ottimizzazioni per aumentare la produttivita del server. 88..11.. MMeessssaa aa ppuunnttoo ddeell SSOO,, ppeerr iill sseerrvveerr ddaattaabbaassee Per ottenere piu potenza elaborativa, da una data CPU, fate quanto segue: +o Ricompilate il kernel di linux per renderlo piu piccolo e snello. Eliminate le voci che non vengono utilizzate. Leggete il kernel howto situato presso +o Chiudete i processi unix non necessari: eseguite chkconfig su sistemi linux/unix ___________________________________________________________________ bash$ su - root bash# man chkconfig bash# chkconfig --help bash# chkconfig --list | grep on | less Ora, dalla lista cosi ottenuta, mettete a off i processi che volete lasciar disattivati al boot: bash# chkconfig --level 0123456 off La prossima volta, al boot della macchina, questi servizi non verranno inizializzati. Ora chiudete manualmente i servizi che avete disattivato. bash# cd /etc/rc.d/init.d bash# ./ stop ___________________________________________________________________ +o Non fate girare altri processi applicativi che non siano necessari. +o Non lasciate girare X-Window a vuoto, inutilizzato. Infatti i processi di X-window consumano memoria, appesantiscono la CPU, e possono essere una seria falla nella sicurezza, favorendo attacchi esterni. I window manager solitamente usati da X-window sono: KDE, GNOME, CDE, XDM, e altri. Dovete uscire da X-window immediatamente dopo averlo utilizzato e, per la maggior parte del tempo, la macchina del server database dovrebbe presentare a video solo la console, con la riga di comando fissa sul prompt di login. 88..22.. CCoommee oottttiimmiizzzzaarree iill pprroocceessssoo ddeell sseerrvveerr ddaattaabbaassee Suggerimenti di carattere generale per l'ottimizzazione: +o Gli indici possono velocizzare le interrogazioni. Il comando eexxppllaaiinn vi permette di verificare il modo in cui PostgreSQL sta interpretando la vostra interrogazione, e quali indici stia usando. +o Usate il comando cclluusstteerr per raggruppare i dati nelle tabelle di base secondo la corrispondenza con un indice. Leggete la pagina di manuale mmaann cclluusstteerr((11)) per maggiori dettagli. +o Se state effettuando un gran numero di inserimenti, considerate la possibilita di farli mediante un solo grande processo batch, usando il comando ccooppyy. E molto piu rapido che effettuare inserimenti individuali. +o Le istruzioni non comprese in un blocco di transazioni bbeeggiinn wwoorrkk//ccoommmmiitt, vengono considerate come fossero in una propria transazione. Considerate la possibilita di raccogliere piu istruzioni in un unico blocco di transazioni. Cio riduce il lavoro extra (overhead) dovuto alla transazione. Verificate anche la possibilita di ricreare gli indici, quando vengono effettuate vaste variazioni dei dati. +o E consigliato l'acquisto della "Performance Tuning guide", e del "tuning support" (l'assistenza all'ottimizzazione), dalla PostgreSQL Corp. . Suggerimenti di carattere specialistico per l'ottimizzazione: +o L'ottimizzazione interna di PostgreSQL e un argomento complesso; per affrontarla serve una conoscenza profonda del codice sorgente e del funzionamento interno di postgresql. E altamente raccomandabile che i seguenti suggerimenti specialistici siano provati soltanto da professionisti: +o Potete disabilitare ffssyynncc(()), inizializzando il postmaster con l'opzione --oo --FF. Cio impedira ad ffssyynncc(()) di effettuare il flushing dopo ogni transazione. Tuttavia esistono rischi di perdita dei dati, dovuti a mancanza tensione elettrica, o ad errori di lettura del mezzo di memorizzazione. Potete ridurre il rischio di perdita dei dati dovuti a mancanza di tensione, usando un APC UPS (Uninterrupted Power Supply, o Gruppo di continuita); e potete usare i sistemi di dischi RAID (Antares-Sparc-Raid Software-Raid Old- Software-Raid Root-Raid Boot-Root-Raid ) come protezione dai guasti dovuti al mezzo di memorizzazione. +o Usate l'opzione --BB di postmaster per aumentare il numero di buffer di memoria condivisa, usata dai processi del back-end. Se rendete troppo grande questo parametro, postmaster potrebbe non partire perche potreste aver superato i vostri limiti, di spazio di memoria condivisa, imposti dal kernel. Ogni buffer e di 8K, ed il valore predefinito e di 64 buffer. +o Usate l'opzione --SS del back-end per incrementare l'ammontare massimo di memoria, usata da ogni processo di backend, per gli ordinamenti temporanei. Il valore --SS e misurato in kilobyte, ed e predefinito a 512 (cioe 512K). Non e saggio rendere troppo grande questo valore, perche potreste terminare la memoria quando l'interrogazione richiede diversi ordinamenti concorrenti. 99.. PPoossttggrreeSSQQLL ggeessttiissccee ddaattaabbaassee eessttrreemmaammeennttee eesstteessii,, ppiiuu ggrraannddii ddii 220000 GGBB PostgreSQL e gia utilizzato da molte aziende che si appoggiano a grandi database. Si suggeriscono le seguenti tecniche: 99..11.. TTiippii ddii CCPPUU:: aa 3322 bbiitt oo 6644 bbiitt Quando la dimensione del database supera i 5 GigaByte, le prestazioni delle macchine con cpu a 32 bit decadranno rapidamente. Potete far girare database di 30 GB su cpu a 32 bit, ma le prestazioni saranno scadenti. Le macchine con cpu a 32 bit impongono una limitazione di 2 GB alla RAM, di 2 GB alla dimensione del file system, e altre limitazioni al sistema operativo. Usate il file system speciale per Linux, realizzato da SGI, IBM o HP oppure ext3-fs, per supportare file di dimensioni maggiori di 2 GB su macchine a 32 bit con Linux. Per database estremamente estesi, e fortemente consigliato l'uso di macchine a 64 bit come le Digital Alpha, Sun Ultra-sparc con cpu a 64 bit, Silicon graphics con cpu a 64 bit, Intel Merced con cpu IA-64, macchine HPUX a 64 bit o macchine IBM a 64 bit. Compilate PostgreSQL per cpu a 64 bit, e potra gestire database enormi, e grandi query. Inoltre le prestazioni di PostgreSQL, per query su grandi tabelle e grandi database, saranno molto piu rapide che su macchine con cpu a 32 bit. Il vantaggio di una macchina a 64 bit, e che potete avere un grandissimo spazio di indirizzamento di memoria, e il sistema operativo puo supportare file system molto estesi, puo fornire migliori prestazioni con grandi database, puo supportare memoria (RAM) molto maggiore, ha maggiori funzionalita, ecc.. 99..22.. CCPPUU mmuullttiippllee Per database estesi e consigliabile utilizzare macchine SMP che abbiano 4, 16 o 32 CPU. Alternativamente potete usare box con 4 o 5 CPU singole; in questo caso si deve ripartire il database in 4 o 5 database separati, ed ogni database girera su una macchina separata. Ogni CPU sara connessa con una scheda fast ethernet NIC (100MBit). Per esempio: se avete 200 tabelle in un database, potete distribuire 200 tabelle in 4 database da 50 tabelle l'uno. In tal modo, potete distribuire il carico di lavoro equamente tra 4 macchine diverse. Questa e un'alternativa economica a un box di CPU a 4 vie. Per realizzare cio, dovreste effettuare ''iinntteerrrrooggaazziioonnii ssuu ddaattaabbaassee mmuullttiippllii'', il montaggio di NFS nella LAN, e 'CREATE VIEW' per tabelle in sola lettura. Cosi ogni CPU "puo vedere" tutti i database, cioe tutte le 200 tabelle. In futuro PostgreSQL potra fornire supporto per ''QQuueerryy ssuu ddaattaabbaassee mmuullttiippllii''; questa funzionalita (gia presente nel TODO, la lista di cose da fare), potra apparire nell'imminente versione 7.1. Ad esempio, le query tra database multipli, che usano gli alias 'a' e 'b' per i nomi delle tabelle, possono apparire come segue: ______________________________________________________________________ select a.col1, a.col2, b.col4, b.col7 from database1.mia_tabellaa a, database2.mia_tabellab b where a.col1 = b.col3 and a.col4 = b.col9; update mia_tabellaa set col1 = b.col2 from database1.mia_tabellaa a, database2.mia_tabellab b where a.col4 = b.col9; ______________________________________________________________________ 99..33.. SSeerrvveerr ddii dduupplliiccaazziioonnee Un server di duplicazione per grandi aziende e disponibile presso , e da . L'assistenza e venduta ($$$$) commercialmente da PostgreSQL Inc. Utilizzate un server di duplicazione per fornire ridondanza ed elevata disponibilita. Un server di duplicazione e un prodotto complesso e sofisticato. 1100.. QQuuaannttoo ppoossssoo aavveerr ffiidduucciiaa iinn PPoossttggrreeSSQQLL ?? IIll ppaacccchheettttoo ddeell tteesstt ddeellllaa rreeggrreessssiioonnee ccrreeaa llaa ffiidduucciiaa ddeell cclliieennttee Grazie alle _"_L_e_g_g_i _d_e_l_l_a _f_i_s_i_c_a_", e possibile verificare SSCCIIEENNTTIIFFIICCAAMMEENNTTEE se PostgreSQL lavora aderente alle specifiche ISO/ANSI SQL. Per confermare il valore di PostgreSQL, il pacchetto (in src/test/regress) del test della regressione e stato incluso nella distribuzione di Postgres. Il test della regressione verifichera sia le operazioni SQL standard, sia l'estendibilita delle capacita di PostgreSQL. Il pacchetto del test contiene gia centinaia di programmi di test per SQL. Per verificare la validita di PostgreSQL, dovreste usare la potenza dei computer alla loro massima velocita, piuttosto che usare la potenza del cervello umano. I computer possono eseguire i test di regressione milioni o anche miliardi di volte piu celermente di quanto possano fare gli esseri umani. I computer moderni possono eseguire miliardi di test SQL in tempi brevissimi. Nel prossimo futuro la velocita dei computer sara di diversi zilioni di volte superiore a quella del cervello umano! Percio, per confermare la validita del software, e piu indicato utilizzare la potenza dei computer. Potete realizzare altri test in caso di necessita e, se pensate che potranno essere utili ad altri in Internet, potete trasferirli sul sito web primario di PostgreSQL. Il test di regressione aiuta a consolidare la fiducia dei clienti, e facilita un rapido dispiegamento di PostgreSQL su sistemi di produzione. Il test di regressione puo essere considerato come un documento tecnico ""MMOOLLTTOO SSOOLLIIDDOO"", sul cui valore sono d'accordo sia sviluppatori che utenti finali. Gli sviluppatori di PostgreSQL usano in modo estensivo il test di regressione nella fase di sviluppo, ed anche prima di rilasciare il software al pubblico, allo scopo di assicurarne la buona qualita. Il test di regressione permette di valutare accuratamente le capacita di PostgreSQL. Se una funzionalita, o una sintassi, o una caratteristica, e presente nel pacchetto del test di regressione, allora e supportata; tutte le altre, che NON sono elencate nel pacchetto, potrebbero NON essere supportate da PostgreSQL!! Potreste dover fare delle verifiche in merito, e aggiungerle al pacchetto del test di regressione. 1111.. PPrrootteezziioonnee ddeell ddaattaabbaassee La protezione del database e distribuita su diversi livelli: +o Protezione dei file del database. Tutti i file, archiviati internamente al database, sono protetti dalla lettura di qualsiasi altro account che non sia l'account del superuser _p_o_s_t_g_r_e_s +o Come impostazione predefinita, le connessioni da un client al server database sono ammesse solo attraverso socket UNIX locali, e non attraverso socket TCP/IT. Il back-end deve essere stato lanciato con l'opzione -i, per permettere ai client non locali di connettersi. +o Le connessioni dei client possono essere ristrette secondo l'indirizzo IP e/o lo username, mediante il file ppgg__hhbbaa..ccoonnff in $$PPGG__DDAATTAA. +o Le connessioni dei client possono essere autenticate mediante uso di altri pacchetti esterni. +o Ad ogni utente di PostgreSQL e assegnato uno username e (facoltativamente) una password. Come impostazione predefinita, gli utenti non hanno accesso in scrittura su database non creati da loro. +o Gli utenti possono essere assegnati a dei gruppi, e l'accesso alle tabelle puo essere ristretto in base ai privilegi del gruppo. 1111..11.. AAuutteennttiiccaazziioonnee ddeeggllii uutteennttii L'Autenticazione e il processo con cui il server backend ed il postmaster si assicurano che il richiedente l'accesso ai dati corrisponda effettivamente all'utente di cui afferma l'identita. Tutti gli utenti che richiedono i servizi di Postgres sono messi a confronto con il contenuto della classe ppgg__uusseerr, per accertare che siano autorizzati a farlo. Tuttavia, la verifica dell'effettiva identita dell'utente e effettuata in diversi modi: +o DDaallllaa sshheellll ddeellll''uutteennttee:: Un server backend, lanciato dalla shell di un utente, conserva lo user-id dell'utente (reale) prima di effettuare un sseettuuiidd allo user-id dell'utente ppoossttggrreess. Lo user-id reale e usato come dato fondamentale per le verifiche relative al controllo d'accesso. Nessun'altra autenticazione viene effettuata. +o DDaallllaa rreettee:: Se il sistema Postgres e stato installato direttamente dai suoi pacchetti di distribuzione, l'accesso alla porta TCP Internet, del processo postmaster, e utilizzabile da chiunque. Il DBA (Data Base Administrator = Amministratore del database) configura il file ppgg__hhbbaa..ccoonnff, situato nella directory $$PPGGDDAATTAA, per specificare quale sistema di autenticazione verra usato concordemente con l'host che effettua la connessione, e a quale database verra connesso. Leggete ppgg__hhbbaa..ccoonnff((55)) (man 5 pg_hba.conf) per consultare la descrizione dei sistemi di autenticazione disponibili. Naturalmente, l'autenticazione basata su host non e infallibile, neanche in Unix. Per ostacolare i malintenzionati risoluti e possibile anche mascherare l'host di origine. Tali questioni sulla sicurezza vanno oltre la competenza di Postgres. 1111..22.. CCoonnttrroolllloo dd''aacccceessssoo bbaassaattoo ssuu hhoosstt ((hhoosstt--bbaasseedd)) Il controllo d'accesso host-based, e il nome per i controlli elementari che PostgreSQL effettua su quale parte del database sia concessa ai client, e su come gli utenti di questi client devono accreditarsi. Ogni sistema di database contiene un file chiamato ppgg__hhbbaa..ccoonnff, nella sua directory $$PPGGDDAATTAA, che controlla chi puo connettersi ad ogni database. Ogni client che accede ad un database, deve essere citato nel gruppo degli iscritti in ppgg__hhbbaa..ccoonnff. Altrimenti tutti i tentativi di connessione da quel client saranno respinti, e daranno il messaggio d'errore ""UUsseerr aauutthheennttiiccaattiioonn ffaaiilleedd"". Leggete le pagine di manuale in linea di ppgg__hhbbaa..ccoonnff((55)) (man 5 pg_hba.conf). Il formato generale del file ppgg__hhbbaa..ccoonnff, e costituito da un insieme di record, uno per ogni riga. Le righe vuote, e quelle che iniziano con il carattere "#", sono ignorate. Un record e composto da un gruppo di campi separati da spazi e/o tabulazioni. I client possono effettuare le connessioni usando socket di dominio Unix, o socket di dominio Internet (ad esempio TCP/IP). Le connessioni, effettuate mediante socket di dominio Unix, sono controllate usando record del seguente formato: ______________________________________________________________________ database_locale metodo_di_autenticazione ______________________________________________________________________ dove ddaattaabbaassee__llooccaallee specifica il database cui e riferito il record. Il valore aallll specifica che quanto segue verra applicato a tutti i database. mmeettooddoo__ddii__aauutteennttiiccaazziioonnee specifica il metodo che un utente deve usare per autenticare se stesso, quando si connette a quel database usando socket di dominio Unix. I diversi metodi sono descritti piu avanti. Le connessioni, effettuate usando i socket di dominio Internet, sono controllate usando record con il seguente formato. ______________________________________________________________________ host database indirizzo-TCP/IP maschera-TCP/IP metodo_di_autenticazione ______________________________________________________________________ L'indirizzo TTCCPP//IIPP viene _m_o_l_t_i_p_l_i_c_a_t_o _l_o_g_i_c_a_m_e_n_t_e (mediante l'operatore binario AND) sia alla maschera TCP/IP specificata, sia all'indirizzo TCP/IP del client connesso. Se i due valori risultanti sono uguali, il record viene usato per la connessione. Se ad una connessione corrispondo piu record validi, viene usato il primo che appare nel file. Sia l'indirizzo TCP/IP, sia la maschera TCP/IP, sono espressi nella notazione decimale puntata. Se per una connessione non viene trovato un record corrispondente, tra i metodi di autenticazione viene applicato il 'reject' (vedere ``Metodi di Autenticazione''). 1111..33.. MMeettooddii ddii aauutteennttiiccaazziioonnee I seguenti metodi di autenticazione sono supportati sia da Unix che dai socket di dominio TCP/IP: +o ttrruusstt: la connessione e permessa incondizionatamente. +o rreejjeecctt: la connessione e rifiutata incondizionatamente. +o ccrryypptt: al client viene chiesta una password per l'utente. Questa viene inviata cifrata (usando crypt(3)), e confrontata con la password contenuta nella tabella pg_shadow. Se le password sono coincidenti, la connessione viene permessa. +o ppaasssswwoorrdd: al client viene chiesta una password per l'utente. Questa viene inviata in chiaro e confrontata con la password contenuta nella tabella ppgg__sshhaaddooww. Se le password sono coincidenti, la connessione viene permessa. Dopo la parola chiave 'password' puo essere specificato un file di password facoltativo, da usarsi in alternativa alla tabella ppgg__sshhaaddooww per il confronto delle password fornite. Vedere ppgg__ppaasssswwdd. I seguenti metodi di autenticazione sono supportati soltanto per i socket di dominio TCP/IP: +o kkrrbb44: l'autenticazione dell'utente si effettua con Kerberos V4. +o kkrrbb55: l'autenticazione dell'utente si effettua con Kerberos V5. +o iiddeenntt: il server ident e usato sul client per autenticare l'utente (RFC 1413). Un nome di mappa opzionale puo essere specificato dopo la parola chiave iiddeenntt; questo nome permette ai nomi utente ident di essere mappati tra i nomi degli utenti di Postgres. Le mappe sono conservate nel file $$PPGGDDAATTAA//ppgg__iiddeenntt..ccoonnff. Ecco alcuni esempi: ______________________________________________________________________ # Ci fidiamo di qualsiasi connessione via socket di dominio Unix. local trust # Ci fidiamo di qualsiasi connessione via TCP/IP da questa macchina. host all 127.0.0.1 255.255.255.255 trust # Questa macchina non e desiderata. host all 192.168.0.10 255.255.255.0 reject # Questa macchina non puo cifrare, quindi le chiediamo le password in chiaro. host all 192.168.0.3 255.255.255.0 password # Il resto di questo gruppo di macchine dovrebbe fornire password cifrate. host all 192.168.0.0 255.255.255.0 crypt ______________________________________________________________________ 1111..44.. CCoonnttrroolllloo ddeellll''aacccceessssoo Postgres fornisce meccanismi per consentire agli utenti, che mettono i loro dati a disposizione di altri utenti, di limitarne l'accesso. +o SSuuppeerruutteennttii ddeell ddaattaabbaassee I super-utenti del database (cioe gli utenti che hanno impostato ppgg__uusseerr..uusseessuuppeerr) saltano tranquillamente tutti i controlli d'accesso descritti piu avanti, con due eccezioni: gli aggiornamenti manuali del catalogo di sistema non sono permessi, se l'utente non ha impostato ppgg__uusseerr..uusseeccaattuuppdd; inoltre la cancellazione dei cataloghi dei sistemi (o le modifiche dei loro schemi) non e mai concessa. +o PPrriivviilleeggiioo dd''aacccceessssoo L'uso del privilegio d'accesso per limitare lettura, scrittura e impostazione di regole sulle classi, e previsto nei comandi SQL ggrraanntt//rreevvookkee((ll)). +o SSoopppprreessssiioonnee ddii ccllaassssee ee mmooddiiffiicchhee ddii sscchheemmaa I comandi per cancellare o modificare le strutture di una classe esistente, come alter, drop table, e drop index, hanno effetto solo per il proprietario della classe. Come e gia stato precedentemente segnalato, queste operazioni non sono mai consentite sui cataloghi di sistema. 1111..55.. CCoonnnneessssiioonnii TTCCPP//IIPP pprrootteettttee mmeeddiiaannttee SSSSHH Potete usare sssshh per cifrare la connessione di rete tra i client e il server Postgres. Se fatto correttamente, cio dovrebbe portare ad una connessione di rete adeguatamente sicura. La documentazione per sssshh fornisce la maggior parte delle informazioni per cominciare ad operare. Riferitevi all'url per approfondimenti. La realizzazione di una connessione con SSL puo essere fatta in sole due fasi. LLaanncciiaarree uunn ttuunnnneell ssiiccuurroo mmeeddiiaannttee sssshh:: La realizzazione di una connessione con SSL puo essere fatta in sole due fasi. +o Collegatevi con un tunnel, alla macchina back-end, come segue: ___________________________________________________________________ ssh -L 3333:wit.mcs.anl.gov:5432 postgres@wit.mcs.anl.gov ___________________________________________________________________ +o Il numero 33333333, posto subito dopo l'argomento --LL, e il numero della porta della vostra estremita del tunnel. Il secondo numero, 55443322, e l'altra estremita remota del tunnel (il numero di porta che sta usando il vostro backend). Il nome o l'indirizzo, posti tra i numeri delle porte, appartengono al server della macchina; questo vale anche per l'ultimo argomento di sssshh, che comprende anche il nome dell'utente opzionale. Senza il nome dell'utente, sssshh provera con il nome col quale siete al momento connessi sulla macchina client. Potete usare qualsiasi nome-utente accettabile per la macchina server, e questo nome-utente non e necessariamente correlato a postgres. +o Con una sessione sssshh attiva potete connettervi, con un client postgres, al vostro host locale, sul numero di porta da voi specificato nella fase precedente. Se il client e ppssqqll, avrete bisogno di un'altra shell; infatti la sessione di shell da voi usata, nella fase 1, e ora occupata da sssshh. ___________________________________________________________________ psql -h localhost -p 3333 -d mpw ___________________________________________________________________ +o Notate che avete specificato l'argomento --hh per forzare il client ad usare il socket TCP/IP, invece del socket Unix. Potete omettere l'argomento relativo alla porta, se scegliete 55443322 come quella relativa alla vostra estremita del tunnel. 1111..66.. AAuutteennttiiccaazziioonnee KKeerrbbeerrooss Kerberos e un sistema standard di autenticazione sicura; e diffuso tra le aziende, ed e adatto a reti pubbliche per il calcolo distribuito. DDiissppoonniibbiilliittaa:: Il sistema di autenticazione Kerberos non viene distribuito insieme a Postgres. Le versioni di Kerberos sono solitamente rese disponibili, come software opzionale, dal rivenditore del sistema operativo. In aggiunta, una distribuzione del codice sorgente puo essere ottenuta direttamente dal Progetto Athena del MIT. ______________________________________________________________________ Nota: Potreste voler ottenere la versione del MIT anche se il vostro rivenditore ne fornisce una sua versione; infatti le versioni di qualche rivenditore possono essere state storpiate o rese non interoperanti con la versione del MIT. ______________________________________________________________________ Le richieste di informazioni, riguardanti il 'vostro' Kerberos, dovrebbero essere rivolte al vostro rivenditore, o al Progetto Athena del MIT. Notate che le FAQL (Frequently-Asked Questions Lists) sono pubblicate periodicamente sulla mailing list di Kerberos (mandate una mail per iscrivervi), e sui news group USENET. IInnssttaallllaazziioonnee:: L'installazione di Kerberos e descritta in dettaglio nelle 'Kerberos Installation Notes'. Assicuratevi che il file chiave del server (ssrrvvttaabb o kkeeyyttaabb) sia leggibile, in un modo o nell'altro, dall'account di Postgres. Postgres, ed i suoi client, possono essere compilati per usare o la Version 4, o la Version 5 dei protocolli Kerberos MIT; per farlo, si imposta la variabile KRBVERS, nel file ssrrcc//MMaakkeeffiillee..gglloobbaall, al valore corretto. Potete anche cambiare la collocazione in cui Postgres si aspetta di trovare le librerie associate, i file header e il file chiave del server. A compilazione completata, Postgres deve essere registrato come un servizio di Kerberos. Leggete le 'Kerberos Operations Notes', e le relative pagine di manuale, per avere maggiori dettagli sulla registrazione dei servizi. FFuunnzziioonnaammeennttoo:: Dopo le operazioni di installazione, Postgres dovrebbe operare in tutti i modi consueti per un normale servizio Kerberos. Per i dettagli sull'uso dell'autenticazione, leggete la _P_o_s_t_g_r_e_S_Q_L _U_s_e_r_'_s _G_u_i_d_e, e precisamente le sezioni relative a ppoossttmmaasstteerr e ppssqqll. Nella modalita di connessione della Version 5 di Kerberos, sono state adottate le seguenti convenzioni sulla nomenclatura degli utenti e dei servizi (vedere anche la tabella piu sotto): +o Si assume che, tra i nomi principali dell'utente (i cosiddetti 'aname'), sia compreso l'effettivo nome utente di Unix/Postgres come primo componente. +o Si assume che il servizio Postgres abbia due componenti: il nome del servizio ed un nome di host, rispettando un uso consolidato dalla Version 4 (cio significa che tutti i suffissi di dominio sono soppressi). ______________________________________________________________________ Tabella: Esempi di Parametri di Kerberos ------------------------------------------------------ Parametro Esempio ------------------------------------------------------ user frew@S2K.ORG user aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG host postgres_dbms/ucbvax@S2K.ORG ------------------------------------------------------ ______________________________________________________________________ 1122.. SSttrruummeennttii GGUUII ppeerr PPoossttggrreeSSQQLL ((iinntteerrffaaccccee--uutteennttee ggrraaffiicchhee)) Il browser Web sara l'interfaccia grafica piu utilizzata del futuro. E opportuno che convertiate tutte le vostre applicazioni, gia funzionanti in Windows 95/NT, in applicazioni basate su Web. Dovreste usare Server Web-Application come ``'' (basato su Java) o ``'' (basato su Python) o ``''. Il miglior linguaggio di web-scripting (anche compilabile) e il ``PHP+Compilatore Zend''. PPHHPP e estremamente potente, perche combina la potenza di Perl, Java, C++, e Javascript, in un unico linguaggio che gira su tutti i sistemi operativi: Unix-like e Windows NT/95. I migliori strumenti, in ordine di preferenza, sono: +o ``'', piu il Java di Borland, JBuilder per Linux +o ``'' +o ``'' +o PHP script e compilatore Zend presso ``PHP+Compilatore Zend'' +o X-Designer supporta C++, Java e MFC +o Qt per Windows95 e Unix presso e +o Code Crusader e sul cdrom di Linux; e freeware, ed e basato sul Code Warrior della MetroWorks +o Code Warrior della MetroWorks +o GNU Prof C++ IDE da (Redhat) Cygnus +o Borland C++ Builder per Linux +o Borland Java JBuilder per Linux Linguaggi scelti in ordine di preferenza sono: 1. Java, ma i suoi programmi sono molto lenti, e si paga la licenza. C++ e 55 vvoollttee ppiiuu vveellooccee di Java!! 2. Python (Potente liguaggio di scripting orientato agli oggetti). 3. Scripting PHP per server Web, HTML, DHTML, con scripting Javascript per client, e le Applet-Java. 4. Linguaggio di scripting Perl, utilizzando Perl-Qt o Perl-Tk ``'' 5. L'onnipresente ed onnipotente linguaggio C++ (GNU g++): +o Fast CGI(scritto in GNU C++) con Javascript/Java-Applet come frontend-GUI-Web. +o GNU C++ e QtEZ o QT +o GNU C++ con Lesstiff o Motif. Ci sono altri strumenti a disposizione: Nella distribuzione chiamata 'pgTcl', c'e una libreria Tcl/Tk di interfaccia a PostgreSQL. Esiste un IDE (integrated development environment) per Tcl/Tk, chiamato SpecTcl. +o Lesstiff Motif tool +o Vibe Java/C++, presso il sito +o JccWarrior +o Tcl/Tk +o Estensione di Tcl orientata agli oggetti, chiamata INCR, al sito +o sito di Visual TCL +o rpm RedHat di Visual TCL, presso +o +o +o +o Java FreeBuilder +o SpecTCL +o Java RAD Tool per PostgreSQL Kanchenjunga +o Applixware Tool +o XWPE X Windows Programming Environment o presso +o XWB X Windows Work Bench +o NEdit Potete anche utilizzare Borland C++ Builder, Delphi, Borland JBuilder, PowerBuilder per Windows95, connettendovi ad una macchina Unix con PostgreSQL, mediante i driver ODBC/JDBC. 1133.. DDrriivveerr ddii iinntteerrffaacccciiaa ppeerr PPoossttggrreeSSQQLL 1133..11.. DDrriivveerr OODDBBCC ppeerr PPoossttggrreeSSQQLL ODBC sta per 'Open DataBase Connectivity'; e uno standard diffuso, istituito da Microsoft, utilizzato per accedere alle informazioni contenute in vari database di diversi produttori. Le applicazioni scritte usando i driver ODBC, funzionano con vari database come PostgreSQL, Oracle, Sybase, Informix ecc.. +o PostODBC e gia incluso nella distribuzione. Visitate il sito web principale . E incluso nel CDROM di PostgreSQL. +o Il codice del progetto Open source ODBC, e al sito +o Open Link Software Corporation vende ODBC per PostgreSQL ed altri database. Open Link, inoltre, mette a disposizione ODBC gratuiti (in numero limitato); verificatelo. +o Insight ODBC per PostgreSQL . Questo e il sito ufficiale di PostODBC. +o Pacchetto FreeODBC . Questa e una versione gratuita di ODBC. +o ODBC 32 Explorer per PostgreSQL . 1133..22.. DDrriivveerr UUDDBBCC ppeerr PPoossttggrreeSSQQLL UDBC e una versione statica di ODBC, indipendente dai gestori dei driver e dal supporto DLL; e usata per incorporare il supporto della connessione ai database direttamente nelle applicazioni. +o Open Link Software Corporation vende UDBC per PostgreSQL ed altri database. Open Link, inoltre, mette a disposizione UDBC gratuiti (in numero limitato); verificatelo. 1133..33.. DDrriivveerr JJDDBBCC ppeerr PPoossttggrreeSSQQLL JDBC sta per 'Java DataBase Connectivity'. Java e un linguaggio indipendente dalla piattaforma, sviluppato da Sun Microsystems. I programmatori Java sono incoraggiati a scrivere applicazioni per database usando il JDBC, allo scopo di agevolare la portabilita tra i database come PostgreSQL, Oracle, informix, ecc. Se scrivete applicazioni Java, potete procurarvi i driver per PostgreSQL presso i seguenti siti: (il driver per JDBC e gia incluso nella distribuzione di PostgreSQL, e in postgresql-jdbc*.rpm) +o connettivita di PostgreSQL al Java di Sun +o +o Open Link Software Corporation vende JDBC per PostgreSQL ed altri database. Open Link, inoltre, mette a disposizione JDBC gratuiti (in numero limitato); verificatelo. +o sito UK sul JDBC +o sito con FAQ sul JDBC l'home page, la guida, e le FAQ di JDBC, si trovano presso: +o JDBC HOME +o JDBC guide +o JDBC FAQ Vedere la sezione: ``Provare l'interfaccia di Java a PostgreSQL'' 1133..44.. JJaavvaa ppeerr PPoossttggrreeSSQQLL I programmatori Java troveranno molto utili queste risorse per PostgreSQL. +o , e cercate postgresql- jdbc-*.rpm +o Vedere la sezione: ``Provare l'interfaccia di Java a PostgreSQL'' 1144.. DDrriivveerr dd''iinntteerrffaacccciiaa aaii ddaattaabbaassee ddii PPeerrll,, ppeerr PPoossttggrreeSSQQLL ((DDBBII)) 1144..11.. IInntteerrffaacccciiaa ddeell PPeerrll aa PPoossttggrreeSSQQLL PERL e l'acronimo di 'Practical Extraction and Report Language'. Perl e disponibile su tutti i sistemi operativi, e per tutte le piattaforme hardware del mondo. Potete usare Perl su: Windows95/NT, Apple Macintosh iMac, tutte le versioni di Unix (Solaris, HPUX, AIX, Linux, Irix, SCO ecc..), mainframe MVS, desktop OS/2, OS/400, Amdahl UTS, e molti altri. Perl gira AANNCCHHEE su molti sistemi operativi e hardware poco diffusi, o generalmente sconosciuti!! Dunque non sorprendetevi se vedete il Perl girare su sistemi operativi usati molto raramente. Potete immaginare quanto estesa sia la base di utenti e di sviluppatori del Perl. Il linguaggio Perl ha, come il linguaggio "C", una vita molto lunga, e sara usato per mmiigglliiaaiiaa ddii aannnnii nel futuro! Perl gira 1100 vvoollttee piu rapidamente di Java, e qualche volta e piu rapido anche del "C". Java e un sistema molto complesso; la sua macchina virtuale, e l'interprete, lo rendono estremamente lento, instabile ed inaffidabile. Perl e molto semplice, rapido, ed e orientato agli oggetti. L'interfaccia del Perl a PostgreSQL e inclusa nella distribuzione di PostgreSQL. Cercate nella directory src/pgsql_perl5. +o Per Pgsql_perl5, contattate l'Email: E.Mergl@bawue.de +o Home page del Perl: +o Tutorial sul Perl, cercate il link del Tutorial presso: +o FAQ sul Perl sono al sito: +o Anzitutto procuratevi la Madre di tutti i Moduli Perl, presso il sito ; digitate '/usr/bin/cpan', 'man CPAN', e troverete migliaia di moduli . +o Rpm della GUI (interfaccia grafica) Perl-Qt: , e cercate PerlQt-1.06-1.i386.rpm +o Perl-Qt, GUI (interfaccia grafica) Perl: +o Perl-XForms, GUI (interfaccia grafica) Perl: , e cercate Xforms4Perl-0.8.4-1.i386.rpm +o Perl-Tk GUI (interfaccia grafica) Perl: +o Kit per GUI col Perl: +o Interfacce del Perl ai Database: +o Traduttore da Perl a "C": , e cercate Compiler-a3.tar.gz +o Compilazione di Perl in un eseguibile. Perl2Exe e una utility a riga di comando per convertire script perl in file eseguibili +o Traduttore da Bourne shell a Perl: +o I traduttori da awk a Perl a2p, e da sed a Perl s2p, sono inclusi nella distribuzione del PERL. +o Cercate anche nei newsgroup comp.lang.perl.*, specifici sul PERL. 1144..22.. IInntteerrffaacccciiaa DDBBII ddeell PPeerrll aaii ddaattaabbaassee 1144..22..11.. CCOOSS''EE DDBBII ?? DBI, l'Interfaccia del Perl ai Database, e una API (Application Programming Interface) d'accesso ai database per il linguaggio Perl. Le specifiche delle API DBI del Perl, definiscono un insieme coerente di funzioni, variabili e convenzioni, che forniscono un'interfaccia ai database indipendente dal database utilizzato. L'iniziativa dei Driver Database (Perl DBI) ha standardizzato l'interfaccia di numerosi motori database commerciali; cosicche potete, ad esempio, passare da Oracle a PostgreSQL con poca fatica. 1144..22..22.. DDrriivveerr DDBBII ppeerr PPoossttggrreeSSQQLL Prima di installare DBD PostgreSQL (Driver), dovete installare DBI. Prelevate il driver DBI: +o Anzitutto procuratevi la Madre di tutti i Moduli Perl presso il sito: , e digitate '/usr/bin/cpan', 'man CPAN'; qui troverete migliaia di moduli . +o Moduli DBI . +o Moduli DBI +o FAQ su DBI +o Documentazione di riferimento per Perl DBI +o Mailing List su DBI +o Documentazione di riferimento per uso dei Database in Perl +o Prelievo di DBI in formato rpm (Attenzione: puo essere una vecchia versione) Prelevate DBD-Pg come segue +o Anzitutto procuratevi la Madre di tutti i Moduli Perl, presso il sito , e digitate '/usr/bin/cpan', 'man CPAN'; qui troverete migliaia di moduli . +o Moduli DBD . e cercate i file DBD-pg, oppure DBD . +o CPAN, l'esauriente Archivio di rete dedicato a Perl . Giunti su questo sito, selezionate 'Database' (sulla casella di ricerca superiore), e fate click sul tasto 'Go'. +o Il pacchetto pre-compilato per Windows NT/2000, e disponibile in . +o Prelievo di DBD in formato rpm (Attenzione: puo essere una vecchia versione) +o Moduli Perl (ce ne sono migliaia) . 1144..22..33.. SSuuppppoorrttoo tteeccnniiccoo ppeerr DDBBII +o Inviate commenti e segnalazioni di bug, includendo l'output di perl -v e perl -V, la versione di PostgreSQL, la versione di DBD-Pg, e la versione di DBI nelle vostre segnalazioni. E.Mergl@bawue.de 1144..22..44.. DDooccuummeennttii ssuullllaa DDBBII Ci sono alcune fonti di informazione sulla DBI. DDooccuummeennttaazziioonnee PPOODD:: I POD sono grandi raccolte di documentazione, solitamente incluse nei programmi perl; esse documentano il codice ``sul posto'', fornendo un'utile risorsa ai programmatori e agli utenti dei moduli. I POD, per DBI e driver, stanno diventando sempre piu una consuetudine, e la documentazione per questi moduli puo essere letta con i seguenti comandi: ______________________________________________________________________ I POD per le specifiche DBI possono essere letti con il comando $ perldoc DBI Gli utenti dello strato di emulazione Oraper, incluso nel DBD::Oracle, possono leggere come programmare con l'interfaccia Oraperl, digitando: $ perldoc Oraperl Gli utenti del modulo DBD::mSQL possono leggere le descrizione di alcune delle funzioni riservate, e delle particolarita del driver, digitando: $ perldoc DBD::mSQL Le FAQ (Frequently Asked Questions, o risposte alle domande ricorrenti) sono anche disponibili come documentazione POD. Leggetele digitando: $ perldoc DBI::FAQ POD in generale: le informazioni su come scrivere POD, e sulla filosofia dei POD in generale, possono essere lette digitando: $ perldoc perlpod ______________________________________________________________________ Gli utenti, con il modulo Tk installato, possono essere interessati a sapere che e disponibile un lettore di POD, chiamato tkpod, basato su Tk; esso formatta i documenti POD in un modo da renderli facilmente leggibili. Vedere anche: +o Informazioni dalla mailing list sulla DBI +o Sito web del DBI Perl Journal +o ``DBperl'', articolo pubblicato nella edizione di Novembre 1996 del ``Dr. Dobbs Journal''. +o ``The Perl5 Database Interface'', un libro scritto da Alligator Descartes e pubblicato da O'Reilly and Associates. Le mailing list, cui gli utenti possono partecipare, sono: +o Mailing list +o ddbbii--aannnnoouunnccee Email: dbi-announce-request@fugue.com , con 'subscribe' nel corpo del messaggio. +o ddbbii--ddeevv Per sviluppatori: Email: dbi-dev-request@fugue.com , con 'subscribe' nel corpo del messaggio +o ddbbii--uusseerrss discussioni generali Email: dbi-users-request@fugue.com , con 'subscribe' nel corpo del messaggio +o Archivi della Mailing List USA +o Archivi della Mailing List Europea 1144..22..55.. DDBBII ee ssuuppppoorrttaattaa ssoottttoo llee ppiiaattttaaffoorrmmee WWiinnddoowwss 9955 // NNTT ?? Le versioni per Win32 della DBI, e di DBD::Oracle, sono adesso una parte standard della DBI e quindi, scaricando una versione della DBI maggiore della 0.81, dovrebbero funzionare bene. Dalla DBI, attraverso ODBC, potete accedere ai database Microsoft Access e SQL- Server. Esiste uno 'strato di emulazione' per il modulo Win32::ODBC. E chiamato DBI::W32ODBC, ed e fornito con DBI-0.79 (o piu recente), Vi servira il modulo Win32::ODBC. +o Win32 DBI +o Win32 ODBC +o Interfaccia Perl a Microsoft SQL server 1144..22..66.. SSuuppppoorrttoo CCoommmmeerrcciiaallee ee AAddddeessttrraammeennttoo PPEERRLL CCLLIINNIICC:: Perl Clinic puo stringere accordi di supporto commerciale per Perl, DBI, DBD::Oracle e Oraperl. Il supporto e fornito dalla compagnia in cui lavora Tim Bunce, autore della DBI. Per maggiori informazioni sui loro servizi, vedere: +o Assistenza +o Assistenza +o Addestramento 1144..33.. PPrroovvaarree ll''iinntteerrffaacccciiaa aall PPeerrll Vedere la sezione: ``Provare l'interfaccia di Perl a PostgreSQL'' 1155.. SSttrruummeennttii ddii ggeessttiioonnee ddii PPoossttggrreeSSQQLL 1155..11.. PPGGAACCCCEESSSS -- UUnnoo ssttrruummeennttoo ggrraaffiiccoo ((GGUUII)) ppeerr llaa ggeessttiioonnee ddii PPoosstt-- ggrreeSSQQLL PgAccess e un'interfaccia in Tcl/Tk a PostgreSQL. E gia inclusa nella distribuzione di PostgreSQL. Potreste voler verificare la presenza di una nuova versione sul seguente sito: +o +o Se volete fare dei commenti, o suggerire dei miglioramenti, mandate un'e-mail a: teo@flex.ro Uso di pgaccess: ___________________________________________________________________ # man xhost # xhost + # su - postgres bash$ man pgaccess bash$ export DISPLAY=:0.0 bash$ pgaccess miodatabase ___________________________________________________________________ Caratteristiche di PgAccess Finestre di PgAccess: Finestra Principale, Crea nuova Tabella (Table Builder), Visualizzazione della Tabella (e della query), Costruttore visuale della query (Visual query designer). Tabelle +o apertura tabelle in visualizzazione, per un massimo di 200 record (limite modificabile tramite il menu Preferenze) +o ridimensionamento delle colonne, mediante il trascinamento della riga verticale della griglia (piu facile da effettuare direttamente nella tabella, piuttosto che nella sua intestazione) +o A-capo automatico nelle celle; memorizzazione del layout per ogni tabella +o importazione/esportazione da e verso file esterni (SDF,CSV) +o uso di condizioni di filtro (inserite filtri come (prezzo>3.14)) +o possibilita di ordinamenti (inserite manualmente i campi in base a cui ordinare) +o possibilita di inserimento/modifica direttamente nelle celle +o l'assistente generatore di tabella e stato perfezionato +o l'editing del campo e stato migliorato Interrogazioni +o definizione, modifica, e archiviazione di "interrogazioni definite dall'utente" +o archiviazione di interrogazioni come viste +o esecuzione di interrogazioni +o visualizzazione del risultato di interrogazioni di tipo select +o cancellazione e rinomina di query +o Funzionalita di drag & drop di Visual query builder. Per chiunque di voi abbia installato il plugin Tcl/Tk per Netscape Navigator, potete vederlo al lavoro facendo click qui Sequenze +o definizione, cancellazione e verifica di sequenze Funzioni +o definizione, verifica e cancellazione di funzioni in linguaggio SQL Le implementazioni future avranno +o progettazione di tabelle (aggiunta di nuovi campi, rinomina, ecc.) +o definizione di funzione +o generatore di report +o un elementare linguaggio di scripting INFORMAZIONI SU LIBGTCL Sara necessaria la libreria libgtcl, che funge da interfaccia del Tcl al PostgreSQL; questa libreria e uno dei moduli caricabili del Tcl/Tk. La libreria e il sorgente sono situati nella directory /src/interfaces/libpgtcl di PostgreSQL. In particolare, vi servira una libreria libpgtcl che sia caricabile da Tcl/Tk. Cio e tecnicamente diverso dal tipico file oggetto caricabile di PostgreSQL, perche libpgtcl e una collezione di file oggetto. Sotto Linux questa libreria si chiama libpgtcl.so. Potete prelevare, dal sito sopra indicato, una versione gia compilata per sistemi Linux su i386. E sufficiente copiare libpgtcl.so nella vostra directory delle librerie di sistema (/usr/lib). Una delle soluzioni possibili e quella di rimuovere, dal codice sorgente, la linea contenente "load libpgtcl.so", e caricare pgaccess.tcl non con wish, ma con pgwish (o wishpg), cioe quel wish che e stato linkato con la libreria libpgtcl. Se, durante la compilazione dei sorgenti di pgaccess, crypt non dovesse funzionare, usate l'opzione -lcrypt. 1155..22.. GGttkkSSQQLL,, SSttrruummeennttoo ggrraaffiiccoo ddii qquueerryy ppeerr PPoossttggrreeSSQQLL GtkSQL e uno strumento grafico per effettuare query (come il psql di PostgreSQL). E rilasciato sotto la licenza GNU GPL, ed e stato sviluppato utilizzando Gtk+ 1.2.3 e PostgreSQL 6.3. Il sito principale di GtkSQL e Le sue principali funzionalita sono: 1. buffer SQL multipli 2. parole chiave SQL, completamento automatico dei nomi di tabelle e di campi 3. visualizzazione confortevole della definizione delle tabelle 4. supporto per PostgreSQL e MySQL (e si puo aggiungere facilmente anche il supporto per altri database) La versione attuale e GtkSQL v. 0.3. Potete reperire il sorgente presso 1155..33.. SSttrruummeennttoo iinntteerraattttiivvoo ddii qquueerryy iinn WWiinnddoowwss ppeerr PPoossttggrreeSSQQLL ((WWIISSQQLL oo MMPPSSQQLL)) MPSQL fornisce gli utenti di un'interfaccia SQL grafica a PostgreSQL. MPSQL e simile a SQL Worksheet di Oracle, e allo strumento di interrogazione WISQL di Microsoft SQL Server. Ha una gradevole GUI, e lo storico dei comandi. E permesso anche il "copia e incolla", ed ha altre pregevoli funzionalita per migliorare la vostra produttivita. +o +o Email: keidav@whidbey.com +o nel file tcl_syb/wisql.html +o +o Email: de@ucolick.org 1155..44.. SSttrruummeennttoo IInntteerraattttiivvoo ddii qquueerryy ((IISSQQLL)) ppeerr PPoossttggrreeSSQQLL,, ddeennoommii-- nnaattoo PPSSQQLL ISQL funziona su terminali a riga di comando. E incluso nella distribuzione, ed e chiamato "psql". E molto simile a Sybase ISQL, Oracle SQLplus. Dando il comando 'psql', dal prompt di unix passerete al prompt psql> . bash# su - postgres bash$ man psql bash$ psql miodatabase Digitate \h per leggere l'help dei comandi. E molto facile da usare, ed e alla portata di qualsiasi utente. Si puo accedere a psql anche da script di shell. 1155..55.. MMPPMMGGRR -- UUnnoo ssttrruummeennttoo ddii ggeessttiioonnee ddii ddaattaabbaassee ppeerr PPoossttggrreeSSQQLL MPMGR fornira un'interfaccia grafica per la gestione di database per PostgreSQL. Potete trovarlo presso +o +o Email: keidav@mutinybaysoftware.com +o +o Email: keidav@whidbey.com +o nel file tcl_syb/wisql.html +o WISQL per PostgreSQL +o Email: de@ucolick.org 1155..66.. GGllii ssttrruummeennttii PPggAAddmmiinn,, PPhhppPPggAAddmmiinn +o Strumento PgAdmin per Windows 95/NT. Strumento di progettazione di database PostgreSQL per Windows 95/NT +o Strumento di amministrazione basato su Web: PhpPgAdmin per Postgresql, si trova presso 1155..77.. PPggBBaasshh -- ssttrruummeennttoo SSQQLL ppeerr llaa sshheellll PgBash ha funzionalita simili a psql. Inoltre PgBash fornisce le utili funzionalita di bash, l'ambiente operativo interattivo e flessibile, come gli alias, le funzioni, l'elaborazione dello storico della riga di comando, ecc. Il sito principale di PgBash e presso PgBash e una shell che ha incluso un "SQL diretto" o, in altri termini, ha l'interfaccia per PostgreSQL con "SQL incorporato"; e stata ottenuta mediante perfezionamento della shell bash (versione 2.03). PgBash puo essere usata come shell di log-in, come sub-shell (la shell generata all'interno di un'altra shell), e come shell per esecuzione di programmi. Le funzionalita di un "SQL Diretto" permettono di inviare immediatamente allo "standard output" i risultati delle query. Le funzionalita di "SQL Incorporato" permettono di memorizzare i valori, restituiti dalle query, in variabili di shell che possono essere gestite con il linguaggio di script della shell. Un'istruzione SQL (il cui carattere finale e un punto e virgola), viene gestita come un comando della shell; e possibile mandare in esecuzione le istruzioni SQL con filtri (pipeline), ridirezione e opzioni per l'esecuzione sullo sfondo dei job. Inoltre, usando il comando exec_sql, e possibile far eseguire istruzioni SQL con svariate opzioni. L'esempio pratico di SQL e mostrato di seguito. ______________________________________________________________________ prompt> /usr/local/bin/pgbash .....Avvio di pgbash pgbash> connect to db2@xxx.com user sakaida; .....connessione al database pgbash> select * from test limit 100; | more .....con uso di filtro (pipeline) pgbash> select * from test; > /tmp/sel.dat & .....con redirezione e job sullo sfondo pgbash> addr='Osaka' pgbash> insert into test values( > 111,'name', .....potete scrivere su una nuova riga > '$addr' .....uso di variabile di shell > ); pgbash> connect to db3@yyy.com user postgres; pgbash> set connection db2; .....impostate l'attuale DB a db2 pgbash> select * from test; .....select di test del db2 pgbash> exec_sql -d db3 "select * from test3".....cambiate la connessione a db3 pgbash> ls pgbash> begin; pgbash> declare cur cursor for select * from test; pgbash> fetch in cur into :AA,:BB; .....impostate i valori delle variabili di shell pgbash> echo "AA=$AA, BB=$BB" pgbash> end; pgbash> fc fetch .....utilizzate lo storico (history) dei comandi pgbash> !echo .....rieseguite echo pgbash> disconnect all .....interrompete tutte le connessioni pgbash> exit .....Uscita da pgbash ______________________________________________________________________ 1155..88.. LLoo ssttrruummeennttoo WWeebbmmiinn ppeerr PPoossttggrreeSSQQLL Lo strumento webmin permette di amministrare una macchina Unix attraverso una pagina web, opzionalmente resa sicura. Nella sua ultima release (vers. 0.82), webmin ha un modulo PostgreSQL. Con questo modulo potete aggiungere utenti, gruppi, database, tabelle, viste di tabelle. Potete trovare webmin presso 1166.. CCPPUU ppeerr PPoossttggrreeSSQQLL Per avere la lista delle CPU utilizzabili con PostgreSQL, vedere il documento ; inoltre questo documento fornisce dettagli sulla progettazione di CPU. Le seguenti CPU (a 64 bit e 32 bit) sono utilizzabili con PostgreSQL. Linux gira sotto tutte queste CPU. +o Il principale sito sulle CPU e: Google Search engine CPU "Computers>Hardware>Components>Microprocessors" Quella che segue e una lista di CPU open source GNU/GPL: +o Sito delle CPU Open-source: Google Search "Computers>Hardware>Open Source" +o OpenRISC 1000, e un processore free a 32 bit con core IP, ed e in competizione con i processori proprietari ARM e MIPS; si trova presso +o OpenRISC 2000, si trova presso +o Le CPU "LEON" Sparc ESA-32bit ed ESA-64bit, della European Space Agency +o GNU/GPL Freedom 64 bit F-CPU , o presso sito mirror . +o STM 32 bit, CPU RISC a 2-vie superscalare +o Microprocessore free e core DSP IP, scritti in Verilog o VHDL +o Core hardware free per velocizzare lo sviluppo +o Opencores org: core IP liberi/gratuiti, open source +o Linux open hardware, e sistemi EDA liberi +o ARM CPU +o Le CPU Cogent Segue una lista di CPU commerciali: +o CPU russa E2k a 64 bit (Una CPU molto veloce !!!) sito web: . Ora Elbrus e partner (alleato) della Sun Microsystems (USA) +o CPU Coreana a 64 bit della Samsung, originaria del DEC Alpha Il sito della CPU Alpha a 64 bit e Attualmente esiste una collaborazione tra Samsumg e Compaq (USA) per la CPU Alpha +o CPU crusoe Transmeta e, in un prossimo futuro, CPU Transmeta a 64 bit +o CPU Ultra-sparc a 64 bit della Sun , oppure +o Le CPU MIPS RISC CPU +o CPU con Architettura MIPS della Silicon Graphics +o Le CPU di Architettura IDT MIPS +o IBM Power PC (motorola) +o Processore RISC SuperH a 64 bit SH7750Hitachi , in vendita a 40 $ per cpu in quantita di 10'000 unita. +o Processore Fujitsu a 64 bit +o Processore HAL-Fujitsu (California) Super-Sparc a 64 bit , compatibile anche con l'architettura sparc di Sun +o CPU Seimens Pyramid CPU della Pyramid Technologies +o CPU Intel serie X86 a 32 bit come Pentium, Celeron ecc.. +o CPU AMD serie X86 a 32 bit come K-6, Athlon ecc.. +o CPU Cyrix serie X86 a 32 bit della National come Cyrix ecc.. +o Altre CPU prodotte in altri paesi (Taiwan, Corea, Giappone) ?? Fatemi sapere... Altri siti importanti dedicati alle CPU, si trovano presso: +o Notizie sulle CPU per 24-ore al giorno e da tutto il mondo +o Sito sull'architettura dei computer +o CPU ARM +o Great CPUs +o Risorse sul Microdesign 1177.. PPrreeddiissppoorrrree mmaacccchhiinnee mmuullttiippllee ccoonn PPoossttggrreeSSQQLL eedd uunn ssoolloo mmoonniittoorr Se volete spendere tutti i quattrini che potete in commutatori (noti anche come "switch hardware", n.d.t.), potete uussaarree llaa VVNNCC ((VViirrttuuaall NNeettwwoorrkk CCoommppuuttiinngg)) TTeecchhnnoollooggyy, offerta dal gigante delle telecomunicazioni AT&T. VNC e sotto licenza GPL, ed e software libero. Usando VNC potete far girare i programmi PostgreSQL su computer senza monitor, ed inviarne la visualizzazione a macchine remote munite di monitor!! Le macchine devono, pero, essere connesse in rete tramite schede ethernet. VNC e situato presso Potete anche impilare una serie di macchine con CPU, connetterle ad un solo monitor, e usare lo switch box KVM (Keyboard, Video, Monitor) per selezionare l'host. Cio permettera di risparmiare spazio e di evitare molto disordine, e permettera anche di ridurre il numero di monitor, tastiera e mouse (consentendo un risparmio valutabile da 100 a 500 dollari USA per unita, ovunque voi siate). Usando questo switch box, potete impilare molti server PostgreSQL (per gli ambienti di sviluppo, collaudo, produzione), server Web, server ftp, server intranet, server Mail, server News; potrete mettere questa torre su uno scaffale. Gli switch box possono essere usati per controllare altrettanto bene macchine con Windows 95/NT o OS/2. Visitate questi siti: +o DataComm Warehouse Inc al tel. 1-800-328-2261. Fornisce un'ampia gamma di hardware per computer . 4-port Manual KVM e uno switch manuale a 4 porte (PS/2), e costa circa 89.99 $ Part No. DDS1354 +o Network Technologies Inc (120 dollari/PC 8 porte), dove troverete una lista di Switch-Server e Switch-video. +o Scene Double Inc, Inghilterra +o Cybex corporation +o Raritan Inc +o RealStar Solutions Inc +o Belkin Inc +o Better Box Communications Ltd. +o Recatevi al negozio di hardware piu vicino, e chiedete "Server Switch", noti anche come "KVM Auto Switches". Usate il motore di ricerca yahoo per trovare altre compagnie con "Server Switches" o "KVM Switches". E fortemente consigliato riservare una macchina Unix per ognuno dei data-server PostgreSQL, al fine di ottenere le migliori prestazioni. Nessun altro programma/processo/applicazione dovrebbe girare su questa macchina. Consultate la sezione Affari del vostro giornale locale, per trovare un fornitore locale che venda soltanto macchine intel, e monitor monocromatici da 13" (monitor dal bassissimo costo). i rivenditori locali vendono soltanto hardware sseennzzaa Microsoft Windows/DOS. Non avete bisogno di monitor a colori per il server database, e comunque potete amministrarlo in remoto con il monitor a colori di un PC workstation. Presso i negozi online, potete comprare hardware puro e semplice. Potete ottenere buoni prezzi in "Aste Online" +o Negozio online e sala d'asta +o Negozio online +o Bidding store, negozio ad offerte Prelevate i cdrom di RedHat (o qualche altra distribuzione di) Linux dai siti sottoelencati: +o Sito web di Linux System Labs: (7 dollari USA) +o Sito web di Cheap Bytes Inc: (7 dollari USA) Assicuratevi che l'hardware da voi acquistato sia supportato da RedHat Linux. Consultate il sito ftp di RedHat per conoscere l'hardware raccomandato (schede SCSI, schede video..), prima dell'acquisto. Con appena 600$ otterrete una potente macchina intel con RedHat Linux, su cui far girare PostgreSQL. Usate odbc/jdbc/perl/tcl per connettervi a PostgreSQL da Windows95, OS/2, Unix Motif, o attraverso browser web (ad es. Redbaron, Opera, Netscape, e altri). (I browser Web stanno diventando rapidamente i client GUI standard). Usando gli switch KVM potete controllare molte cpu box, con solo un monitor ed una tastiera! 1188.. WWeebb--AApppplliiccaattiioonn--SSeerrvveerr ppeerr PPoossttggrreeSSQQLL Svariati Web-Application-Server (server di applicazioni orientate al web) funzionano con PostgreSQL, sia nelle versioni open source che in quelle commerciali. I Web-Application-Server open source piu diffusi, sono gli Application Server basati sul Perl come Mason, WIRM, Velocigen, Enhydra (Java) e Zope (Python); i Web-Application-Server commerciali sono IBM Websphere, BEA Weblogic. E consigliato l'uso di un web server sicuro come Apache + mod_ssl + OpenSSL. Vedere il server sicuro Redhat StrongHold, presso . I Web Application Server possono essere classificati in base al linguaggio di programmazione supportato. Scegliete un Web Application server in base al linguaggio di programmazione che vvii ppiiaaccee ddii ppiiuu. Una classificazione dei Web Application server e: +o Basati sul linguaggio PPEERRLL +o Basati sul linguaggio PPHHPP (che e simile al PERL, e un po' somigliante al Java) +o Basati sul linguaggio PPyytthhoonn (linguaggio di scripting orientato agli oggetti) +o Basati sul linguaggio JJaavvaa (Java della Sun Microsystems) +o Basati sul linguaggio TTccll (linguaggio di scripting Tcl/Tk, chiamato "Tickle") +o Basati sul linguaggio CC++++ (C++ e CORBA) +o Basati sul linguaggio PPiikkee (linguaggio di scripting simile al C++) 1188..11.. WWeebb AApppplliiccaattiioonn SSeerrvveerr iinn PPEERRLL Il linguaggio Perl, come il linguaggio "C", ha una storia molto lunga, e sara usato per mmiigglliiaaiiaa ddii aannnnii nel futuro! Perl gira 1100 vvoollttee piu rapidamente di Java, e qualche volta e piu rapido anche del "C". Java e un sistema molto complesso; la sua macchina virtuale e l'interprete lo rendono estremamente lento, instabile ed inaffidabile. Perl e molto semplice, rapido, ed e orientato agli oggetti. Inoltre, i programmi in Perl possono essere anche facilmente compilati per migliorarne le prestazioni. Usate Perl2Exe, una utility a riga di comando per convertire script perl in file eseguibili Per PERL sono disponibili i seguenti Web Application server: +o Mason e un potente motore per sviluppo e distribuzione di siti web, basato sul Perl. Con Mason potete incorporare il codice Perl nel vostro HTML, e potete costruire pagine a partire da componenti riusabili e condivisibili. +o BingoX e un Web Application Framework open source, orientato agli oggetti; e stato scritto in mod_perl, il che riduce drammaticamente il tempo richiesto per costruire siti web e applicazioni dinamiche, funzionanti con database estesi. +o SmartWorker e una collezione di classi Perl, che permette di costruire applicazioni web come se fossero vere applicazioni, e non solo modelli in HTML con codice incorporato in modo casuale. SmartWorker +o Progetti di integrazione Apache-Perl. Con mod_perl e possibile scrivere moduli Apache interamente in Perl. In aggiunta a cio, l'interprete, persistente ed incorporato nel server, si sottrae all'overhead dovuto all'avvio di un interprete esterno, e allo svantaggio dei tempi di avvio del Perl. Visitate , e date uno sguardo anche al progetto mmoodd__ppeerrll__ggaarrddeenn, presso +o Apache::ASP , fornisce una versione delle Active Server Page per il Server Web Apache, utilizzando il Perl come linguaggio di scripting ospitato. Apache::ASP consente ad uno sviluppatore di creare applicazioni web dinamiche, con gestione delle sessioni ed incorporazione di codice perl. Esistono anche potentissime estensioni che comprendono librerie di marcatori XML, XSLT rendering, e nuovi eventi non facenti parte delle API ASP originarie. +o WIRM (Web Interface Repository Manager) e un application server, basato su Perl, che fornisce un ambiente di programmazione d'alto livello per sviluppare sistemi informativi via web. WIRM consiste di un database relazionale ad oggetti, e di una suite di interfacce in Perl per la visualizzazione, l'integrazione e l'analisi di dati multimediali eterogenei. WIRM fornisce gli strumenti per creare punti di vista sensibili al contesto, a partire da un database multimediale; gli sviluppatori possono, quindi, costruire rapidamente siti web dinamici, che adattino il loro contenuto, e la presentazione, a classi multiple di utenti finali. Visitate +o EmbPerl . Embperl vi da la capacita di incorporare codice Perl nei vostri documenti HTML. Usare Perl significa essere capaci di usare un linguaggio di programmazione molto elaborato, largamente impiegato nell'ambito del WWW. Potete anche utilizzare le migliaia di moduli Perl che sono gia stati scritti - compreso DBI - per l'accesso ad un numero sempre maggiore di sistemi di database. +o ePerl , interpreta un file ASCII, riempito di istruzioni in Perl 5, passando al vaglio il codice Perl 5 durante la scansione dei dati in ASCII puro. Puo operare in varie maniere: come filtro Unix a se stante, come modulo Perl 5 integrato (per compiti di generazione di file di tutti i tipi), e come potente linguaggio di scripting da Webserver per programmazione di pagine HTML dinamiche. +o XPP sta per "XPP Parses Perl" (XPP analizzatore sintattico di Perl), o anche "XPML Page Parser" (analizzatore di pagine XPML), ed e un parser di HTML rapido ed efficiente; XPP processa il codice perl incorporato, ma anche marcatori come quelli HTML, a partire da pagine html dinamiche chiamate "pagine XPML". +o Gamla - un RAD e application server basato sul perl. Il progetto gamla aspira alla creazione di uno strumento per lo sviluppo rapido di applicazioni (RAD), e di un web application server basati sul Perl. Tutto il codice sorgente, prodotto in seno al progetto Gamla, sara di pubblico dominio. Gamla si trova presso +o AxKit e un Application Server XML per Apache (e mod_perl). Esso permette di convertire al volo lo XML in qualsiasi altro formato, come HTML, WAP o testo puro; per far questo, si impiegano tecniche standard W3C, oppure si usa codice flessibile realizzato allo scopo. AxKit utilizza anche un interprete Perl incorporato per fornire alcune tecniche, sorprendentemente potenti, per trasformazioni di XML. AxKit mette l'accento sulla separazione tra il contenuto e la sua presentazione. La tecnica di filtraggio, impiegata da AxKit, permette la conversione del contenuto in un formato presentabile a stadi; in questo modo si permette, a certe piattaforme, di vedere i dati in modo diverso da come vengono visti da altre. AxKit permette ai web designer di concentrarsi sulla progettazione del sito web, per lavorare sul solo contenuto di base; i webmaster, invece, potranno concentrarsi sulle loro competenze di fondo. Web Application Server commerciali per Perl: +o Zelerate AllCommerce e un sistema di gestione delle relazioni commerciali, dei volumi e dei clienti. Quest'applicazione per Internet, scalabile e dalle elevate prestazioni, e scritta in Perl, ed impiega un database di backend. +o VelociGen serve contenuto dinamico archiviato in XML, o su database, o a partire da dati liberi, e lo fa alla stessa velocita con cui vengono servite pagine HTML statiche: fino a 60 volte piu velocemente della CGI, e senza dover modificare le vostre applicazioni preesistenti. VelociGen, inoltre, rende piu facile sviluppare nuovi programmi con l'uso di marcatori XML dal lato server, fornisce protezione dai crash, ed equilibra il carico su macchine multiple. VelociGen si inserisce in maniera identica all'interno di qualsiasi Web server di qualsiasi piattaforma; con esso vengono incrementate le prestazioni del server, e velocizzati i tempi di risposta del sito web, funzionante con contenuto dinamico. VelociGen puo elaborare grandi volumi di richieste simultanee, fino a 10 volte piu rapidamente dei Servlet Java, e 4 volte piu rapidamente di Cold Fusion. Velocigen 1188..22.. WWeebb AApppplliiccaattiioonn SSeerrvveerr ppeerr PPHHPP Per PHP sono disponibili i seguenti Web Application server +o Midgard PHP Web Application server e basato sul linguaggio di scripting PHP, e PHP gira in modo estremamente rapido: piu rapidamente di Java. Il sito principale di Midgard si trova presso . Gli script PHP possono essere compilati con il compilatore ed ottimizzatore Zend . PHP gira molto velocemente, ed e da 5 a 10 volte piu veloce di Java. Vedere ``Installazione di Midgard'', e anche il PHP HOWTO presso +o Ariadne e un sistema per applicazioni web. Esso consiste di una infrastruttura completa, volta a facilitare sviluppo e gestione di applicazioni web, impiegando il PHP. Il sistema usa un approccio modulare, utilizzando allo scopo interfacce astratte per tutte le transazioni. Ne deriva la massima liberta di cambiare alcune parti dei sistemi, modificandole o aggiungendo nuove funzionalita, senza dover riprogrammare le altre parti. 1188..33.. LLuuttrriiss CCoorrpp ""EEnnhhyyddrraa EEnntteerrpprriissee"" ((JJaavvaa)) Enhydra supporta il database PostgreSQL. Enhydra e un Web- Application-Server per Java/XML enormemente diffuso, creato dalla 'Lutris Corporation'. E il miglior server per Applicazioni Web in Java/XML. Supporta EJB, Servlets, JSP, JNDI, JDBC, JTA, CORBA, XMLC/Rocks, DODS e l'internazionalizzazione. E usato da molte delle 500 maggiori compagnie ad elevata capitalizzazione di USA ed Europa; queste compagnie (come "France Telecom") stanno finanziando direttamente Enhydra. E stato scritto in Java puro al 100%, ed e prelevabile presso . Enhydra e un progetto realizzato con codice open source, ma e venduto e supportato commercialmente da Lutris Corp. Visitate il sito Leggete il tutorial sulla configurazione di PostgreSQL con Enhydra , e leggete anche come effettuare la Configurazione del database con Enhydra . Con Enhydra dovreste usare JBuilder della Borland Corp.. Jbuilder si trova presso Leggete anche l'Enterprise-Java-HOWTO presso 1188..44.. ZZooppee ((iinn lliinngguuaaggggiioo PPyytthhoonn)) Tra i linguaggi di scripting "puramente" orientati agli oggetti, Python sta diventando molto diffuso. Zope e un server Web- Application, e fornisce un'interfaccia a PostgreSQL. Zope e disponibile presso Python si trova presso 1188..55.. OOppeennAACCSS ((iinn lliinngguuaaggggiioo TTccll)) OpenACS (Open ArsDigita Community System) e un insieme di strumenti avanzati per costruire applicazioni web scalabili, orientate alle community. Funziona su AOLserver, un server per applicazioni web, e PostgreSQL, un RDBMS che rispetta le proprieta ACID. Questi due prodotti sono di alta qualita, e sono disponibili gratuitamente sotto licenze open source. ACS e stato creato da ArsDigita, , e questo loro ACS (ArsDigita Community System) mira ad essere indipendente dal database, per quanto possibile, benche sia basato su Oracle (ed e quindi chiaro che Open ACS deve prendersi tutto il tempo necessario per effettuare il porting). Vedere anche 1188..66.. WWeebb AApppplliiccaattiioonn SSeerrvveerr CCOORRBBAA iinn CC++++ +o il Web Application Server PortalSphere e realizzato in C++ , e gira sotto Unix (e Linux) per l'estrema velocita e stabilita. Aderendo strettamente allo standard CORBA, PortalSphere supporta sia HTTP (il protocollo di comunicazione standard in Internet) che il protocollo punto-a-punto IIOP, adatto a comunicazioni client-server ad elevatissima velocita. Queste caratteristiche di PortalSphere, associate ad un accesso diretto (nativo) a tutti i database piu diffusi, gli conferiscono prestazioni lampo, e l'eccezionale capacita intrinseca di gestire eventi in tempo reale su internet. PortalSphere e oltre 100 volte piu veloce di HTTP/CGI, e munito di accesso diretto (nativo) ai database piu diffusi, ed e calabile fino a piu di 10'000 sessioni-utente concorrenti. Visitate PortalSphere presso il sito . +o FlashPoint e un progetto di Web Application Server in C++, C, PERL; e in grado di supportare servizi con applicazioni web ad alta velocita in un ambiente multi-thread, puo supportare svariati linguaggi di sviluppo inclusi C e C++; inoltre supporta buone procedure di ingegneria del software, che in altri ambienti sarebbero terribilmente ardue da implementare. Flashpoint puo essere usato a fianco di Apache, e in qualche caso puo sostituirlo, a seconda delle vostre necessita. Visitate , e scaricate il pacchetto da FlashPoint Redhat RPM . +o "C Server Pages" e un Application Server, scritto in C/C++, efficiente e scalabile; permette di potenziare le pagine web server, ed i template scritti in C++, con elementi dinamici incorporati. Potete usare l'approccio che preferite. Potete costruirvi i vostri oggetti di lavoro usando il C++. Le vostre pagine possono essere i client CORBA per qualsiasi ORB sulla piazza. E presente connettivita a tutti i database SQL. 1188..77.. PPiikkee,, RRooxxeenn WWeebb AApppplliiccaattiioonn SSeerrvveerr Pike e un linguaggio di programmazione dinamico, con una sintassi simile al quella del C++. E semplice da apprendere, non richiede lunghi passi di compilazione, e ha potenti tipi di dati incorporati che ne permettono una gestione semplice e rapida. Pike e stato rilasciato sotto la licenza GNU/GPL, o general public license. Pike e un potentissimo linguaggio di scripting orientato agli oggetti; poiche ha una sintassi identica a quella del C++, se ne prevede una diffusione eesspplloossiivvaa, nei prossimi anni. Pike si trova presso il sito , e il web server Roxen e presso . Roxen e un web server modulare con un'interfaccia DB completa, ed include supporto a Postgres. Ha pieno supporto per SSL, ed e stato rilasciato sotto la GPL. Roxen e stato scritto utilizzando il linguaggio di scripting Pike. 1188..88.. WWeebb AApppplliiccaattiioonn SSeerrvveerrss DDiirreeccttoorryy Visitate Web Application Servers . Recatevi nella directory con le "Yellow Pages". 1199.. AApppplliiccaazziioonnii ee ssttrruummeennttii ppeerr PPoossttggrreeSSQQLL 1199..11.. 44GGLL ppeerr aapppplliiccaazziioonnii wweebb ddaattaabbaassee ccoonn PPoossttggrreeSSQQLL -- AAppppGGEENN DDeevveellooppmmeenntt SSyysstteemm AppGEN puo essere scaricato da +o +o . AppGEN e un linguaggio ad alto livello di quarta generazione, ed un generatore di applicazioni per produrre applicazioni basate sul World Wide Web (WWW). Queste applicazioni sono tipicamente usate in internet o nelle intranet aziendali. Le applicazioni AppGEN sono implementate come script C conformi al Common Gateway Interface (CGI), che e uno standard supportato dalla maggior parte dei Web Server. Per usare AppGEN vi servira quanto segue: PostgreSQL, sistema di gestione di database relazionali (RDMBS). Un Web server compatibile con CGI, come l'HTTPD di NCSA. Un compilatore ansi C come GCC. AppGEN consiste dei seguenti eseguibili Unix (Linux): +o defgen, che produce un modello di applicazione elementare a partire da una struttura logica di dati. Le applicazioni sono in grado di inserire, aggiornare, cancellare e ricercare record del database, e allo stesso tempo di mantenere automaticamente l'integrita referenziale. +o appgen, il compilatore di AppGEN che compila il codice sorgente appgen in linguaggio C ed eseguibile in CGI, e documenti formattati in HTML, pronti ad essere resi disponibili su un server web. +o dbf2sql, una utility per convertire i file .dbf (dBase III compatibili) in script eseguibili SQL. Questo permette ai dati, archiviati nella maggior parte dei pacchetti di gestori di database per DOS/Windows, di essere trasferiti ad un server SQL come PostgreSQL. +o in aggiunta, AppGEN include una collezione di documenti HTML, di file GIF e di applet Java, che vengono usati dal sistema in fase di esecuzione. E, naturalmente, come tutto il buon software, viene incluso anche l'intero codice sorgente. L'autore, Andrew Whaley, puo essere contattato all'indirizzo +o andrew@arthur.smuht.nwest.nhs.uk 1199..22.. IInntteerrffaacccciiaa WWeebb WWWWWW ppeerr PPoossttggrreeSSQQLL -- DDBBEENNGGIINNEE Dbengine, un'interfaccia Web plug 'n play per PostgreSQL, e stata creata da Ingo Ciechowski. La trovate al sito +o QQuuaallcchhee iinnffoorrmmaazziioonnee ssuu DDBBEENNGGIINNEE:: dbengine e un'interfaccia tra il Web e Postgres95, che fornisce un semplice accesso a qualsiasi database esistente in pochissimi minuti. PHP offre un linguaggio simile al Perl per i vostri documenti, ma non e un vero Perl; per contro AppGen e wdb-p95 richiedono la creazione di un qualche file di configurazione per ognuno dei vostri database; sembra quindi che, prima di poter iniziare a usare questi strumenti, si debba imparare una qualche specie di nuovo meta linguaggio. Diversamente da altri strumenti, per iniziare ad usare dbengine non dovete imparare qualche speciale linguaggio di programmazione o di scripting. Inoltre non si deve realizzare un file di configurazione per ogni database, cosi non dovete familiarizzare con questa nuova struttura. Comunque, nel caso vogliate accedere a tutte le funzionalita di dbengine, dovreste conoscere il linguaggio Perl. L'intero sistema puo essere configurato mediante la semplice manipolazione di un database aggiuntivo, che contiene informazioni riservate riguardanti il vostro accesso al database. Potete anche specificare Campi virtuali che vengono calcolati al volo poco prima di essere visualizzati sullo schermo. 1199..33.. UUnn mmoodduulloo ddeell WWeebbsseerrvveerr AAppaacchhee ppeerr PPoossttggrreeSSQQLL:: NNeeooWWeebbSSccrriipptt ddii NNeeooSSoofftt Apache e un notissimo Server Web. Un modulo, per interfacciare PostgreSQL ad Apache Webserver, e reperibile presso: +o NeoWebScript e un linguaggio di programmazione che permette a programmi semplici o complessi di essere incorporati in file HTML. Quando viene richiesta una pagina HTML con codice NeoWebScript incorporato, il server Web, abilitato all'esecuzione dei NeoWebScript, esegue il codice script incorporato, producendo una pagina web dal contenuto appositamente creato dal programma. NeoWebScript e un modo rapido, sicuro, facile da apprendere, per realizzare programmi interattivi nel codice HTML delle pagine web, ed ospitati su server. Con NeoWebScript i contatori, i form per email, i graffiti wall, i guest book ed il tracciamento dei visitatori, sono facilissimi, anche per un programmatore alle prime armi. Potrete verificare che NeoWebScript non teme rivali, come PERL e JavaScript. Se volete installare NeoWebScript sul vostro server web, il vostro Webmaster dovrebbe leggere, per cominciare, la nostra Sysop FAQ. In 'Theory of Operations' si rendera chiaro il funzionamento di NeoWebScript, mentre l'installazione procedera passo dopo passo. 'Management' tratta di questioni riguardanti la configurazione ed il funzionamento del server; i test vi permetteranno di verificare la correttezza delle operazioni di NeoWebScript, e 'troubleshooting' tratta dei problemi del server. Usare NeoWebScript-2.2 non comporta alcuna spesa per voi, per il vostro ISP, la vostra intranet o extranet. Potrete leggere la licenza durante la registrazione per il download; notate che esiste un costo di 99 $ se volete incorporarlo nei vostri prodotti, od usarli in un server commerciale (come SSL) NeoWebScript e un modulo per il server Web Apache che vi permette di includere il linguaggio di programmazione Tcl/Tk, nelle vostre pagine web, come strumento di scripting. E stato inventato da Karl Lehenbauer, Chief Technical Officer della NeoSoft, ed e documentato, migliorato ed esteso dai programmatori della NeoSoft e da redattori di documenti tecnici. Il server web Apache e il piu diffuso server web del mondo, ed il suo uso e stimato al 68% dei siti sondati. Tcl/Tk e il potente e gratuito linguaggio di scripting multipiattaforma sviluppato dal Dr. John Ousterhout. Utilizzando le sue stesse parole: "Tcl/Tk permette agli sviluppatori di software di far girare i programmi dieci volte piu rapidamente di quanto possano fare i toolkit basati su C o C++. Esso e anche un pregevole linguaggio di interconnessione, che permette di far funzionare insieme le applicazioni gia esistenti, e di dotarle di migliore grafica e di interconnessione ad Internet". Karl Lehenbauer, Fondatore e Chief Technical Officer di NeoSoft, e stato parte del team di sviluppo delle primissime versioni di Tcl/Tk. Insieme con Mark Diehkans, e l'autore di Extended Tcl, noto anche come TclX o NeoSoft Tcl, che e un potente insieme di estensioni al linguaggio. Molti degli attuali comandi Tcl sono stati creati in Extended Tcl, e sono stati inclusi del nucleo del linguaggio dal Dr. Ousterhout. NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA 1199..44.. HHEEIITTMMLL:: eesstteennssiioonnee llaattoo sseerrvveerr ddeellll''HHTTMMLL,, ee lliinngguuaaggggiioo 44GGLL ppeerr PPoossttggrreeSSQQLL Lo strumento heitml e un altro modo di interfacciare postgres con il world wide web. Per maggiori dettagli contattate Helmut Emmelmann H.E.I. Informationssyteme GmbH Wimpfenerstrasse 23 Tel. 49-621-795141 68259 Mannheim Germany Fax. 49-621-795161 +o E-mail di Mr.Helmut Emmelmann emmel@h-e-i.de +o Sito web principale di Heitml +o Sito web secondario di Heitml heitml e un'estensione dal lato server dell'HTML e, nello stesso tempo, e un linguaggio 4GL. Ci si puo scrivere applicazioni web utilizzando lo stile HTML, usando nuovi marcatori simili a quelli dell'HTML. heitml (pronunciato h-ai-TML) e un'estensione dell'HTML, ed e un linguaggio di quarta generazione ricco di funzionalita; esso permette alle applicazioni, basate su Web, di interagire con i dati archiviati nei database SQL, evitando di far ricorso a complessi script CGI. heitml estende HTML nel lato server, convertendo dinamicamente i file ".hei" nel formato HTML, e rimanendo cosi compatibile con qualsiasi browser web. Heitml accetta la comoda sintassi HTML e fornisce un vasto assortimento di marcatori pre-sviluppati e librerie, per gestire i compiti che in precedenza richiedevano il CGI. Come XML, heitml fornisce marcatori definiti dall'utente. Con heitml, i marcatori definiti dall'utente possono essere tradotti in HTML ed inviati ad un browser. heitml puo interessare sia i designer HTML che i programmatori professionali. I designer HTML possono usare i marcatori heitml per costruire pagine web dinamiche, per accedere a database SQL, o per creare applicazioni web complete. Contatori, database di registrazione, form di ricerca, form di e-mail, o menu gerarchici, possono tutti essere creati semplicemente usando marcatori pre- sviluppati, simili ai marcatori HTML, reperibili nelle moltissime librerie di componenti. I programmatori troveranno in heitml un linguaggio completo di quarta generazione incorporabile nel codice HTML (ad es. con i marcatori , , e ), inoltre heitml ammette una potente valutazione delle espressioni con i tipi di dati interi, reali, booleani, stringhe e n-uple. Le n-uple hanno riferimenti semantici come nei moderni linguaggi orientati agli oggetti e vengono memorizzate in un heap. Le variabili heitml, comprese tutte le strutture di dati complessi memorizzate nel heap, conservano i loro valori tra le pagine utilizzando la Modalita di Sessione (Session Mode). E possibile definire marcatori personalizzati o marcatori di ambiente, e persino ri-definire i marcatori HTML. heitml rende possibile - - - sviluppare siti Web in modo strutturato e modulare, riducendo drasticamente il superlavoro di manutenzione. - - - sviluppare siti Web intelligenti ed interattivi, con contenuto che si adatta dinamicamente alle necessita dell'utente. - - - mostrare il contenuto dei database SQL con il solo utilizzo della nostra libreria di marcatori "dba" predefiniti. - - - sviluppare database complessi ed applicazioni per Cataloghi di Vendita utilizzando Variabili di Sessione (Session Variables) heitml gira sotto Linux con qualsiasi server Web che utilizzi l'interfaccia CGI, ed e particolarmente veloce (evitando gli overhead del CGI) all'interno del Server Web APACHE, utilizzando le API apache. Attualmente MSQL (Versione 1 e 2), PostgreSQL (Versione 6), mysql, e gli altri database d'uso comune sono supportati). heitml, inoltre gira su Linux, BSDi, Solaris e SunOS, come anche su Windows NT con CGI, ISAPI, ODBC e Windows 95. heitml (su linux) e gratuito per studio, per uso privato e non- commerciale. I siti Web commerciali devono pagare la licenza. La versione pienamente operativa di heitml, utilizzabile liberamente per un periodo di prova, e liberamente scaricabile. (Notate, comunque, che ogni Pagina Web ".hei" da voi sviluppata, visualizzera un messaggio che identifica la vostra versione di heitml come quella per un uso non-commerciale). Dopo la registrazione, riceverete una chiave per disattivare il messaggio senza dover re-installare il programma.) heitml (si pronuncia "h-ai"-TML) estende e migliora significativamente la funzionalita del linguaggio HTML con la definibilita dei marcatori e con le sue reali qualita di linguaggio di programmazione. Cio rende possibile realizzare applicazioni con contenuto dinamico ed applicazioni con accesso ai database, semplicemente all'interno del mondo HTML, senza dover ricorrere al CGI e a linguaggi di programmazione o di scripting esterni. Cio significa che voi, in qualita di autori web, potete aggiungere applicazioni nelle vostre pagine, usando semplicemente alcuni marcatori nuovi senza ricorrere al CGI e senza programmare. Invece, in qualita di utente esperto o di programmatore, potete creare e programmare potenti librerie di marcatori. Questo approccio rende heitml adeguato sia ai principianti dell'HTML sia ai programmatori professionisti. heitml gira sul server web e genera codice HTML dinamicamente, cosi heitml e compatibile con gli standard di internet e con qualsiasi browser web. Inoltre heitml permette un accesso completo ai database e mette al riparo l'utente dalla complessita non necessaria del CGI. heitml e stato sviluppato secondo le piu recenti ricerche riguardo la realizzazione di compilatori e dei sistemi di transazione. Le pagine heitml vengono sviluppate proprio come le pagine HTML, con un editor di testi o con un editor HTML, e vengono posizionate su un server web come si fa solitamente. Tuttavia ora le pagine possono contenere marcatori heitml dinamici, e possono accedere a librerie di marcatori. Potete usare questi marcatori per accedere al database, per creare contenuto dinamico, per inviare email, ed anche per creare applicazioni potenti come database di registrazione e sistemi di commercio elettronico. I principianti dell'HTML ed i programmatori professionisti, saranno stupiti di come sia rapido e facile progettare applicazioni eccitanti, come un Guestbook Interattivo, senza dover ricorrere all'apprendimento di complessi e difficili script CGI; sara sufficiente usare gli strumenti forniti dalla vostra Libreria dba. heitml e fornito di un'ampia gamma di librerie di marcatori per creare guestbook, applicazioni per la manutenzione dei database, moduli per interrogazioni estendibili, potenti moduli per email, oppure per strutturare il vostro sito web utilizzando un menu gerarchico. Questi strumenti sono pronti all'uso, ed e sufficiente aggiungere i marcatori opportuni al vostro sito. Se siete esperti programmatori potete fare pieno uso dell'architettura basata sulle n-uple dinamiche e persistenti: heitml non e soltanto un linguaggio di scripting con gestione dinamica dei tipi di dati, con una potente valutazione di espressioni, con procedure ricorsive, e con la funzionalita del passaggio dei parametri; esso fornisce anche la persistenza dinamica delle n-uple per mantenere automaticamente i dati della sessione, di qualsiasi dimensione essi siano. 1199..55.. WWeebb SSeerrvveerr AAOOLL ddii AAmmeerriiccaa OOnn--lliinnee ppeerr PPoossttggrreeSSQQLL AOLserver, il webserver commerciale gratuito, supporta connessioni ai database di PostgreSQL. Per maggiori informazioni vedere +o home page di AOL Web Server +o Introduzione a AOLserver di Philip Greenspun AOLserver e un webserver veloce, dotato di multithread, ed in grado di usare il Tcl. Non solo: esso e una piattaforma completa per sviluppo di back-end per database. Con AOLserver potete gestire connessioni multiple a PostgreSQL (e ad altri RBDMS) che possono essere divise tra diversi thread. AOLserver ha una API Tcl e C che vi permette di sviluppare potenti siti web dinamici. Tutto cio avviene fin dal 1995. AOLserver e stato rilasciato sotto la licenza APL (AOLserver Public License) oppure sotto licenza GPL, e percio e software del tutto libero. L'API Tcl e quella maggiormente utile per i siti web. AOLserver ha un set di potenti chiamate Tcl, come ns_sendmail (per inviare e-mail), ns_httpget (per ottenere un URL), ns_schedule (una funzionalita simile a cron per pianificare procedure da far girare in momenti specifici), ecc. Potete anche estendere molto facilmente le capacita di AOLserver con le API Tcl. Ogni server virtuale AOLserver puo avere la sua propria "libreria" privata di script Tcl, i quali vengono sottoposti ad analisi (parsing) da AOLserver, e divengono accessibili da qualsiasi pagina interna a quel server virtuale. Potete sviluppare pagine per AOLserver in tre modi: - HTML semplice - pagine .tcl -- si tratta di programmi tcl che possono restituire codice HTML per mezzo della chiamata ns_write. - pagine .adp -- AOL Dynamic Pages. Potete sviluppare le vostre pagine in semplice HTML ma potete mandare in esecuzione codice Tcl usando <% %> o <%= %> alla maniera di PHP o di ASP. Se e gia un grande server web con una superba architettura, AOLserver e addirittura splendido quando e usato per connettivita a database. AOLserver ha un suo proprio strato (layer) di astrazione del database, che vi mette in grado di connettervi a diversi RDBMS senza dover modificare affatto il vostro codice. Le connessioni al RDBMS sono associate tra loro, sono persistenti, e sono divise tra diversi thread. Cio permette connessioni molto rapide ed un efficiente uso delle risorse. AOLserver e munito di driver per tutti i piu importanti RDBMS: PostgreSQL, Oracle, Sybase, Informix, Illustra, Solid, Interbase, MySQL. 1199..66.. PPrroobblleemm//PPrroojjeecctt TTrraacckkiinngg SSyysstteemm AApppplliiccaattiioonn TTooooll ppeerr PPoossttggrreeSSQQLL Si trova presso +o 1199..77.. CCoonnvveerrssiioonnee ddii ffiillee ddbbaassee ddbbff aa PPoossttggrreeSSQQLL Il programma dbf2msql funziona bene con mSQL e PostgreSQL. Potete trovarlo presso +o +o +o Pg2Xbase e un pacchetto migliore di dbf2pg Questo programma e stato scritto da Maarten Boekhold, della Facolta di Ingegneria Elettronica, sezione di Architettura dei Computer e Tecniche Digitali a Delft, in Olanda. +o M.Boekhold@et.tudelft.nl Potete anche usare un metodo di python per leggere i file dbf e caricarli (farne il load) in un database postgres. +o Vedere 1199..88.. CCoonnvveerrssiioonnee ddii ffiillee ddaattaabbaassee MMDDBB ddii MMiiccrroossoofftt AAcccceessss iinn PPoosstt-- ggrreeSSQQLL MDB Tools e un insieme di librerie e di programmi di servizio, progettati per facilitare l'esportazione di dati dai database MS Access (file mdb) nei database multiutente come Oracle, Sybase, DB2, Informix, MySQL, Postgresql, o simili. +o Prelevate il tool MDB dal sito +o Mailing list 1199..99.. CClliieenntt ZZeeooss "Zeos" e un programma prodotto per lo sviluppo e l'amministrazione delle applicazioni database, con uso di server SQL OpenSource: MySQL, PostgreSQL e InterBase 1199..1100.. RReeppoorrtt WWrriitteerr iinn JJaavvaa Generic Report Writer e un software, guidato da menu, per effettuare report. Non e un'interfaccia di tipo drag-and-drop. Funziona con PostgreSQL, MySQL, e Access. Probabilmente funzionera con qualsiasi altro database a patto che si abbia la versione 1 del driver JDBC Tipo 4. Si trova presso 2200.. SSttrruummeennttoo ddii pprrooggeettttaazziioonnee ddii ddaattaabbaassee -- SSttrruummeennttoo ppeerr rraapppprree-- sseennttaarree llee rreellaazziioonnii ttrraa eennttiittaa,, iinn ffoorrmmaa ddii ddiiaaggrraammmmaa "DeZign for databases" ( ) e uno strumento per lo sviluppo di database, che impiega un diagramma entita-relazioni. Esso aiuta, con metodi visuali, la schematizzazione di entita e relazioni, e genera automaticamente schemi SQL per i DBMS maggiormente usati. "DeZign for databases" fornisce i livelli-dati logico/fisico a partire da singole specifiche, realizzate mediante migrazione della chiave esterna automatica al momento della progettazione. Le opzioni di visualizzazione multipla comprendono: entita / chiave_primaria / attributi_delle_chiavi_esterne_inclusive / attributi_delle_chiavi_esterne_esclusive. "DeZign for databases" supporta anche i domini (tipi di dati definiti dall'utente). I report generati da DeZign possono essere usati per rendere piu semplice la gestione di progetti complessi, in tutti i livelli di gestione. Potete generare report, dizionari di dati e database, con un semplice clic. Sono supportati i seguenti database: Oracle, Interbase, IBM DB2, Sybase, MS Access (95/97/2000), MS SQL Server, Paradox, dBase, Informix, SQL-Anywhere, MySQL e PostgreSQL. "DeZign for databases", di Heraut, e collocato presso ( ) 2211.. EEAARRPP -- ssttrruummeennttoo ddii pprrooggeettttaazziioonnee//iimmpplleemmeennttaazziioonnee ddii ddaattaabbaassee wweebb +o +o nella directory 'pub/unix/earp'. 2211..11.. CCooss''ee EEAARRPP ?? Il programma "Easily Adjustable Response Program" (EARP) e stato creato da David Dougherty. EARP e uno strumento di progettazione/implementazione di database Web, costruito sopra un sistema di database PostgreSQL. Le sue funzionalita includono: +o Un sistema di progettazione visuale. +o Un'interfaccia a sendmail. (puo gestire posta elettronica in arrivo ed in partenza) +o Un perfezionato meccanismo di protezione. +o Un driver cgi. 2211..22.. IImmpplleemmeennttaazziioonnee La principale implementazione di EARP e un binario CGI che gira, sotto il demone http, per fornire accesso al server database. Tutti gli strumenti per la progettazione sono stati incorporati all'interno del driver, ed i progetti sono destinati esclusivamente al web. Gli strumenti stessi richiedono un browser grafico; la compatibilita degli oggetti, progettati con gli strumenti, e indipendente dall'implementazione, basata sulle preferenze individuali di progettazione. 2211..33.. CCoommee ffuunnzziioonnaa?? Una delle principali funzionalita di EARP consiste nella produzione di pagine html, con interfaccia al database, seguendo l'approccio orientato agli oggetti. La maggior parte delle pagine consisteranno in diversi oggetti. Ogni oggetto e prodotto da qualche tipo di strumento e, per un dato nome, gli oggetti sono tra loro collegati in una sequenza, richiamabile dalla pagina degli strumenti. Gli oggetti sono anche riutilizzabili attraverso pagine multiple. Esistono strumenti elementari per HTML, query, cattura di input dai form, formattazione estendibile degli oggetti Query e Input, e collegamento di oggetti all'interno di altri oggetti. Strumenti ancora piu avanzati includono lo strumento di gestione della posta elettronica e quello di Interrogazione in regime di multithread. Un'altra funzionalita di EARP e la gestione avanzata della sicurezza. L'accesso alle diverse aree del sistema EARP puo essere limitato in vari modi. Per realizzare la sua avanzata gestione della sicurezza, EARP effettua controlli su ogni connessione al sistema, determinando a quali id e gruppi appartiene l'agente connesso. L'accesso alle aree e definito a parte, e la combinazione (tra connessione ed area permessa, n.d.t.) decide se l'accesso ad un'area specifica di Earp sia permessa o no. Tutto quello che e richiesto, per implementare le funzionalita della sicurezza, e un server http che supporti l'autenticazione dell'utente, quantomeno in modo basilare. 2211..44.. DDoovvee ootttteenneerree EEAARRPP ?? EARP e disponibile tramite ftp anonimo da +o nella directory 'pub/unix/earp'. 2222.. PPHHPP HHyyppeerrtteexxtt PPrreepprroocceessssoorr -- LLiinngguuaaggggiioo ddii ssccrriippttiinngg llaattoo sseerrvveerr,, iinnccoorrppoorraabbiillee nneell ccooddiiccee hhttmmll,, ppeerr PPoossttggrreeSSQQLL Strumenti di interfaccia al WWW sono reperibili presso: +o +o Per PHP esiste anche un compilatore chiamato Zend, che ne migliora immensamente le prestazioni. Prima di tutto scriverete la vostra applicazione nel linguaggio di scripting PHP, passando attraverso le fasi di sviluppo, collaudo e correzione degli errori. Quando il progetto sara pronto per l'utilizzo, userete il compilatore Zend per compilare il codice PHP, cosi da creare eseguibili che gireranno molto rapidamente. Il vecchio nome di PHP e Professional Home Pages, mentre il nuovo nome e PHP Hypertext Pre-Processor +o Siti Mirror si trovano in molti paesi come www.CODICEPAESE.php.net +o +o +o +o L'indirizzo e-mail per eventuali domande e: rasmus@lerdorf.on.ca PHP e un linguaggio di scripting lato server, incorporato nel codice html. PHP permette, come Javascript, di scrivere semplici script nei file .HTML ma, al contrario di JavaScript, PHP non e dipendente dal browser. JavaScript e un linguaggio lato client, incorporabile nel codice html, mentre PHP e un linguaggio lato server. PHP e concettualmente simile al prodotto LiveWire Pro di Netscape. Se vi piace il software gratuito in rapida evoluzione e fornito del codice sorgente, probabilmente vi piacera anche PHP. +o Il codice del supporto di PostgreSQL e stato scritto da Adam Sussman asussman@vidya.com 2222..11.. LLee ffuunnzziioonnaalliittaa ppiiuu rriilleevvaannttii +o Supporto per gli standard CGI, FastCGI e come modulo di Apache - Come programma CGI standard, PHP puo essere installato su qualsiasi macchina Unix su cui giri qualsiasi web server per Unix. Con il supporto per il nuovo standard FastCGI, PHP puo trarre vantaggio dall'incremento di velocita ottenuto attraverso questo meccanismo. Come modulo di Apache, PHP diventa un'alternativa alla programmazione CGI estremamente potente, e dotata di una vveelloocciittaa ffuullmmiinnaannttee. +o Registrazione degli accessi - Con la proprieta di registrazione degli accessi di PHP, gli utenti possono conservare i propri conteggi degli accessi e delle registrazioni. Per questo risultato non sono utilizzati in alcun modo i file di registrazione d'accesso del sistema centrale, e viene fornito un controllo degli accessi in tempo reale. Lo script di visualizzazione del Log fornisce un veloce riassunto degli accessi ad un insieme di pagine, appartenenti ad un singolo utente. In aggiunta a cio, il pacchetto puo essere configurato per generare un titolo di coda per ogni pagina che mostri informazioni sugli accessi. (...) +o Controllo dell'accesso: Un meccanismo di filtraggio, basato sul web, gestisce la configurazione del controllo d'accesso. E possibile creare regole per tutte le pagine web che appartengano ad una certa persona, la quale voglia porre diverse restrizioni su chi possa vedere queste pagine, e su come esse saranno viste. Le pagine possono essere o protette da password, o completamente inaccessibili, oppure con registrazione disabilitata, o potranno avere altre forme di controllo ancora; dipende dal dominio del client, dal browser, dall'indirizzo e-mail, o anche dal documento di provenienza. +o Supporto a PostgreSQL - Postgres e un evoluto RDBMS, libero e gratuito. PHP supporta le "query SQL" di PostgreSQL, incorporandole direttamente nei file .html . +o RFC-1867 Supporto per il File Upload - Il File Upload (caricamento di file) e una nuova funzionalita di Netscape 2.0. Essa permette agli utenti di effettuare il trasferimento di file verso un server web. PHP fornisce la decodifica Mime per compiere quest'operazione, e fornisce anche una procedura di base per realizzare qualcosa di utile con i file, una volta che siano stati ricevuti. +o Controllo dell'autenticazione basata su HTTP - PHP puo essere usato per creare meccanismi di autenticazione personalizzati, basati su HTTP, per il server web Apache. +o Variabili, array, array associativi - PHP supporta diversi tipi di variabili, gli array, ed anche gli array associativi, simili a quelli del Perl. I valori assunti da tutti questi tipi di dati possono essere passati da una pagina web ad un'altra, usando form con i metodi GET o POST. +o Condizionali, cicli con While - PHP supporta un linguaggio di scripting simile al C, e pieno di funzionalita. Cio che della pagina web deve essere visualizzato, viene deciso con l'uso delle strutture condizionali if/then/elseif/else/endif, dei cicli con while, e dell'istruzione switch/case. +o Espressioni regolari estese - Le espressioni regolari vengono utilizzate estensivamente nel pattern matching (comparazione con modelli di stringa, n.d.t.), nella sostituzione di modelli (di stringa, n.d.t.), e nella manipolazione di stringhe in generale. PHP supporta tutte le piu comuni operazioni realizzate con le espressioni regolari. +o Controllo degli header raw HTTP - La capacita delle pagine web di poter inviare header raw HTTP, in base a qualche condizione, e essenziale per la progettazione ad alto livello dei siti web. E di uso frequente l'invio di una Location: l'header URL redirige il client chiamante verso qualche altro URL. Puo essere anche impiegato per disabilitare il caching, oppure per manipolare l'ultimo aggiornamento dell'intestazione delle pagine. +o Creazione di immagini GIF in tempo reale - PHP supporta la libreria di immagini GD di Thomas Boutell, che rende possibile generare "al volo" immagini GIF. +o Supporto al "Safe Mode" ISP - PHP supporta una singolare modalita di protezione, "Safe Mode", che rende sicura l'esecuzione degli script PHP da parte di molti utenti presenti sullo stesso server. +o Molte altre funzionalita vengono aggiunte in ogni nuova versione di PHP. Visitate il sito web principale presso +o E libero e gratuito! - Questa e una qualita fondamentale e decisiva. Il pacchetto e completamente libero. E posto sotto la licenza GNU/GPL, che consente di usare il software per qualsiasi proposito, che sia commerciale o no. 2222..22.. PPHHPP -- BBrreevvee ssttoorriiaa Il PHP ha preso vita come un piccolo e semplice wrapper (incapsulatore) CGI scritto in Perl. Il nome di questo primo pacchetto era Personal Home Page Tools, che piu tardi si trasformo in Personal Home Page Construction Kit. Per includere facilmente le query SQL nelle pagine web, fu scritto un tool apposito. Quest'ultimo era, fondamentalmente, un altro wrapper CGI che analizzava sintatticamente le query SQL, e che ha reso facile la creazione di form e tabelle basate su queste query. Questo strumento e stato denominato FI (Form Interpreter). La versione 2.0 di PHP/FI e una riscrittura completa di questi due pacchetti combinati in un singolo programma. PHP e evoluto verso un semplice linguaggio di programmazione, inglobato nei file HTML. PHP elimina la necessita dei tanti piccoli programmi CGI Perl, permettendovi di posizionare semplici script direttamente nei vostri file HTML. Cio accelerera le prestazioni complessive delle vostre pagine web, poiche viene eliminato il sovraccarico di lavoro dovuto alle numerose biforcazioni (forking) del Perl. PHP rende anche piu facile gestire siti web estesi, posizionando tutti i componenti di una pagina web in un singolo file html. Includendo il supporto per vari database, viene anche reso banale lo sviluppo di pagine web con accesso ai database. Molte persone trovano che l'incorporazione di codice sia molto piu facile da gestire, rispetto alla creazione di file HTML e CGI separati. Oggi PHP/FI e stato rinominato PHP. 2222..33.. EEbbbbeennee,, ccoossaa ppoossssoo ffaarree ccoonn PPHHPP ?? La prima cosa su cui porre attenzione, se volete eseguire una pagina con PHP, e che viene aggiunto un titolo, a pie di pagina, con informazioni riguardanti il numero di volte in cui la vostra pagina e stata visitata (purche nel binario sia stata compilata la gestione della registrazione degli accessi). Questa e solo una piccolissima parte di cio che PHP puo fare per voi. Infatti gioca un altro importantissimo ruolo come interprete di form CGI, che rende conto della parte FI del vecchio nome. Per esempio, se create un form su una delle vostre pagine web, avrete bisogno di qualcosa per elaborare l'informazione raccolta da quel form. Anche se volete soltanto passare l'informazione ad un'altra pagina web, dovrete avere un programma CGI che lo faccia per voi. PHP rende estremamente facile ricevere i dati del form, e lavorare con essi. 2222..44.. UUnn sseemmpplliiccee eesseemmppiioo Supponete di avere un form:
Il vostro file display.html potrebbe allora contenere qualcosa come: " > E questa la semplicita! PHP crea automaticamente una variabile per ogni campo di input del form. Potete cosi usare queste variabili nel file dell'URL, che compare come argomento di ACTION. Il passo successivo, una volta che avete compreso come usare le variabili, e iniziare a inserire qualche marcatore per la gestione del flusso logico, nelle vostre pagine. Per esempio, se volete visualizzare diversi messaggi al variare dell'input dell'utente, dovreste usare le istruzioni logiche if/else. Sulla scorta dell'esempio sopra riportato, possiamo visualizzare diverse cose, a seconda dell'eta che l'utente inserisce. Cambiamo il nostro display.html come segue: 50); echo "Ciao $name, sei anziano!

"; elseif($age>30); echo "Ciao $name, sei molto vecchio!

"; else; echo "Ciao $name."; endif; > PHP fornisce un linguaggio di scripting molto potente, che realizzera molto piu di quanto il precedente esempio dimostri. Vedere la sezione relativa al Linguaggio Script PHP per altre informazioni. Potete usare PHP anche per configurare i permessi d'accesso alle vostre pagine. Cio puo essere fatto usando un meccanismo incorporato di filtraggio (nella struttura del PHP n.d.t). Con esso potreste, per esempio, specificare che solo persone di certi domini abbiano accesso alla visualizzazione delle vostre pagine; oppure potreste creare una regola che protegga con password certe pagine. Vedere la sezione relativa al Controllo d'accesso per altri dettagli. PHP e anche in grado di ricevere file da qualsiasi browser web, aderente alle specifiche RFC-1867. Questa caratteristica permette che si possa fare il caricamento sia di testi, sia di binari. Col controllo d'accesso del PHP e le sue funzioni logiche, avete pieno controllo su chi abbia il permesso di caricare un file sul server, e su cosa possa essere fatto con il file una volta che sia stato ricevuto. Leggere la sezione File Upload per altri dettagli. PHP ha il supporto per il pacchetto del database PostgreSQL. PHP supporta query SQL inserite nei vostri file .HTML . PHP fornisce anche supporto per il pacchetto di database mysql. PHP supporta le query SQL inserite nei vostri file .HTML . 2222..55.. RRiiddiirreezziioonnee CCGGII 2222..55..11.. NNoottee ssuu AAppaacchhee 11..00..xx Impiegare un modulo di ridirezione cgi, con il server Apache, e un buon modo di eseguire PHP. Notate che non dovete preoccuparvi dei moduli di ridirezione, se state usando PHP nella forma di modulo di Apache. Sono disponibili due di questi moduli di ridirezione. Uno di questi e stato sviluppato da Dave Andersen +o angio@aros.net ed e reperibile presso +o L'altro e distribuito con Apache, ed e chiamato mod_actions.c. I due moduli sono molto simili. Differiscono leggermente nell'uso. Sono stati testati entrambi, ed entrambi funzionano con PHP. Cercate, nella documentazione di Apache, le informazioni su come aggiungere un modulo. Generalmente si aggiunge il nome del modulo in un file chiamato Configuration. Se volete usare il modulo mod_actions, la riga da aggiungere e: Module action_module mod_actions.o Se state usando il modulo mod_cgi_redirect.c , aggiungete questa riga: Module cgi_redirect_module mod_cgi_redirect.o Poi compilate il vostro httpd, ed installatelo. Per configurare la ridirezione CGI dovrete o creare un nuovo tipo MIME nel vostro file mime.types, oppure potete usare il comando AddType nel vostro file srm.conf, per aggiungere il tipo MIME. Il tipo MIME da aggiungere dovrebbe essere qualcosa come questo: application/x-httpd-php phtml Se state usando il modulo mod_actions.c, dovrete aggiungere la seguente riga al vostro file srm.conf : Action application/x-httpd-php /cgi-bin/php.cgi Se state usando mod_cgi_redirect.c, dovreste aggiungere questa riga a srm.conf: CgiRedirect application/x-httpd-php /cgi-bin/php.cgi Non provate ad usare, nello stesso tempo, mod_actions.c e mod_cgi_redirect.c. Una volta che uno di questi moduli di ridirezione cgi siano stati installati e configurati correttamente, sarete in grado di far eseguire l'analisi sintattica del PHP sui file di estensione .phtml. Per di piu, se aggiungete index.phtml alla riga di configurazione chiamata DirectoryIndex del vostro file srm.conf, e se il vostro file index si chiama index.phtml, allora la pagina di massimo livello in una directory sara automaticamente processata da php. 2222..55..22.. HHTTTTPPDD ddii NNeettssccaappee Potete automaticamente ridirigere le richieste di file con una data estensione, e farle gestire da PHP, usando il modulo Redirection CGI del Server Netscape. Questo modulo puo essere trovato negli archivi di file dell'home page di PHP. Il file README nel pacchetto, spiega esplicitamente come configurarlo per usarlo con PHP. 2222..55..33.. HHTTTTPPDD ddii NNCCSSAA Attualmente NCSA non supporta i moduli; cosi, volendo effettuare ridirezioni cgi con questo server, dovrete modificare il codice sorgente del server. Negli archivi di file di PHP esiste una patch, adatta allo scopo, per NCSA 1.5 2222..66.. EEsseegguuiirree PPHHPP ddaallllaa rriiggaa ddii ccoommaannddoo Se avete compilato la versione CGI di PHP, potete usarla dalla riga di comando semplicemente digitando: php.cgi nome_file, dove nome_file e il file che volete processare. Potete anche creare script PHP autonomi inserendo, sulla prima riga del vostro script, quanto segue: #!/usr/local/bin/php.cgi -q La "-q" sopprime la stampa degli header HTTP. Potete anche non mettere quest'opzione, se volete. 2222..77.. PPaacccchheettttoo PPHHPPGGeemm PHPGem e uno script PHP che accelera la creazione di script PHP specifici per lavorare con le tabelle. Funziona con diversi server SQL come PostgreSQL, MySQL, mSQL, ODBC, e Adabas. Voi inserite una descrizione e i parametri per i campi delle vostre tabelle (nome del campo, possibilita o no di ricerca nel campo, ecc.), e PHPGem fornisce in output un altro script PHP, che lavorera con le tabelle (per visualizzazione / inserimento / modifica / cancellazione / duplicazione e per ricerche). PHPGem funziona con tabelle annidate in livelli multipli. Inoltre e consentito indicare un livello d'accesso per ogni tabella, per ogni campo, e per ogni utente. PHPGem supporta anche le immagini. PHPGem si trova presso 2233.. IInntteerrffaacccciiaa ddii PPyytthhoonn aa PPoossttggrreeSSQQLL Python e un linguaggio di scripting interpretato, orientato agli oggetti. E di semplice uso (la sintassi e leggera, semplice, e le istruzioni sono semplici e lineari), ed ha molte estensioni per costruire GUI, interfacce al WWW, ecc. Un browser web intelligente (simile a HotJava) e attualmente in sviluppo (da novembre 1995), e cio dovrebbe aprire molte porte ai programmatori. Python e sotto copyright dello Stichting S Mathematisch Centrum di Amsterdam, nei Paesi Bassi, ed e liberamente distribuibile. Esso contiene il supporto per il caricamento dinamico di oggetti, classi, moduli, ed eccezioni. Aggiungere interfacce alle nuove librerie di sistema, per mezzo del codice C, e semplice ed immediato, e rende Python facile da usare per realizzazioni su misura. Python e un linguaggio di scripting ad altissimo livello con interfaccia a X. Il pacchetto di Python e distribuito con i cdrom di Linux; nel pacchetto e compresa la maggior parte dei moduli standard di Python, tra cui i moduli di interfaccia a Tix, un insieme di widget per TK. PyGreSQL e un modulo python che si interfaccia ad un database PostgreSQL. In esso e acclusa la libreria di query per PostgreSQL; questa permette un facile utilizzo delle potenti caratteristiche di PostgreSQL, dall'interno di uno script Python. PyGreSQL e stato scritto da D'Arcy J.M. Cain e Pascal Andre. +o Nuovo sito di PyGreSQL +o Curato da D'Arcy presso +o Il sito non aggiornato e presso +o D'Arcy J.M. Cain darcy@druid.net +o Pascal Andre andre@chimay.via.ecp.fr +o Pascal Andre andre@via.ecp.fr 2233..11.. DDoovvee ootttteenneerree PPyyGGrreess ?? I siti base dei vari pacchetti sono: +o Python +o PyGreSQL +o Sito obsoleto Dovreste comunque ricercare qualche altro sito mirror piu vicino a voi. Riferitevi alle vostre fonti di informazione, per trovare questi siti. PyGreSQL dovrebbe risiedere nelle directory contrib dei siti di Python e PostgreSQL. 2233..22.. IInnffoorrmmaazziioonnii ee ssuuppppoorrttoo Se vi servono informazioni riguardanti questi pacchetti, visitate i loro siti web: +o Python : +o PostgreSQL : +o PyGreSQL +o Sito di PyGreSQL non aggiornato : Per il supporto: +o Mailing list di PyGreSQL. Potete iscrivervi inviando un'email a majordomo@vex.net con la riga "subscribe pygresql nome@dominio" nel corpo, mettendo il vostro indirizzo di posta elettronica al posto di "nome@dominio". +o Newsgroup sul Python : newsgroup comp.lang.python +o PyGreSQL : prendete contatto con Andre, all'indirizzo andre@via.ecp.fr , per segnalazioni di bug, idee, annotazioni 2233..33.. PPrroovvaarree ll''iinntteerrffaacccciiaa ddii PPyytthhoonn Vedere la sezione: ``Provare l'interfaccia di Python a PostgreSQL'' 2244.. WWDDBB--PP9955 -- IInntteerrffaacccciiaa ddii ccoolllleeggaammeennttoo ttrraa PPoossttggrreeSSQQLL ee iill WWWWWW 2244..11.. IInnffoorrmmaazziioonnii ssuu wwddbb--pp9955 WDB-P95 - Un'interfaccia Web ai Database PostgreSQL, e stata creata da J. Douglas Dunlop. Si trova presso +o Il nuovo WDB di J Rowe e in +o Le nuove versioni di WWW-WDB sono presso +o Per domande, o per iscriversi alle Mailing list, contattate dunlop@eol.ists.ca Questa e una versione modificata di wdb-1.3a2, che fornisce a PostgreSQL un'interfaccia al WWW. Questa versione richiede anche un Browser in grado di gestire le tabelle HTML, per ottenere un output tabellare. Questo requisito non vale per il wdb originale, ed e abbastanza facile ripristinare le impostazioni originali. Potete provare CASI Tape e Image Query. Date una sbirciata al File di Definizione dei Form (Form Definition File, FDF), usato per creare il CASI Tape ed anche Image Query, che include una JOIN di 2 tabelle. Questa versione contiene tutti i file necessari per installare ed eseguire WDB-P95, come interfaccia ai vostri database PostgreSQL. Creare una versione di questo sistema su un altro database, dovrebbe essere relativamente facile - A patto che supporti lo standard SQL e abbia un'interfaccia Perl. 2244..22.. IIll sseerrvveerr PPoossttggrreeSSQQLL,, ppggppeerrll,, ee hhttttppdd,, ddeevvoonnoo eesssseerree ssuulllloo sstteessssoo hhoosstt?? No, il server PostgreSQL non deve essere sullo stesso host: se WDB-P95 e richiamato dal demone http, allora devono trovarsi sullo stesso host - E se WDB-P95 e stato scritto per usare Pg.pm, anche pgperl deve essere sullo stesso host. Pgperl e stato scritto usando la libreria libpq, e cosi sara in grado di accedere a qualsiasi server PostgreSQL posto ovunque nella rete, proprio come qualsiasi altro client di PostgreSQL. Quanto segue illustrera il concetto: (WWW Client (Netscape)) => (HTTP Server (NCSA's http) + WDB-P95 + pgperl + libpq)=> (PostgreSQL server) Le parentesi tonde () rappresentano le macchine. Ogni macchina puo essere di diverso tipo: NT, SUN, HP, ... ma vi occorre la libreria di interfaccia libpq per il tipo di macchina che ospitera WDB-P95, quindi dovrete compilare pgperl (il sistema e stato progettato per usare le tabelle HTML, percio si dovra utilizzare un client WWW recente). 2255.. IInntteerrffaacccciiaa ddeeii lliinngguuaaggggii ""CC"",, ""CC++++"",, EESSQQLL//CC,, aa PPoossttggrreeSSQQLL,, eedd ooppeerraattoorrii oorriieennttaattii aaii bbiitt 2255..11.. IInntteerrffaacccciiaa ""CC"" E inclusa nella distribuzione, ed e chiamata 'libpq'. E simile alle librerie Oracle OCI, Sybase DB-lib, Informix CLI. 2255..22.. IInntteerrffaacccciiaa ""CC++++"" E inclusa nella distribuzione, ed e chiamata 'libpq++'. Vedere la sezione: ``Provare l'interfaccia di C e C++ a PostgreSQL'' 2255..33.. EESSQQLL//CC ESQL/C significa 'Embedded C Pre-compiler' (Pre-compilatore C incorporato). ESQL/C, e l'analogo di Oracle Pro*C, Informix ESQL/C. PostgreSQL ESQL/C e un'application-programming interface (API) SQL, che consente al programmatore C di creare applicazioni specifiche con gestione dei database. PostgreSQL ESQL/C vi permette di usare un linguaggio di terza generazione a voi familiare, e di continuare a trarre vantaggio dallo Structured Query Language (SQL). ESQL/C consiste dei seguenti software: +o Le ESQL/C sono librerie di funzioni C, e forniscono accesso al server database. +o I file header di ESQL/C forniscono le definizioni per le strutture dei dati e per le constanti, e le macro utili al programma ESQL/C. +o Il preprocessore ESQL/C e un preprocessore di codice sorgente, che converte un file C con istruzioni SQL, in un file eseguibile. Dove trovarlo: +o ESQL/C per PostgreSQL e gia incluso nella distribuzione. +o Sito principale +o Email : linus@epact.se Vedere la sezione:``Provare l'interfaccia di Embedded SQL/C a PostgreSQL'' Per elaborare i file 'ecpg' (*.pgc), utilizzando l'evidenziazione a colori dell'editor Vim, dovete fare quanto segue: ______________________________________________________________________ bash$ su - postgres bash$ mkdir $HOME/vim Ora create un file '$HOME/vim/myfilestypes.vim' con le seguenti righe " myfiletypefile au! BufRead,BufNewFile *.pgc set filetype=esqlc ______________________________________________________________________ Dovreste avere il vostro file $HOME/.gvimrc . Altrimenti createne uno; riferitevi al documento "Vim-howto", reperibile presso . Inserite le seguenti righe nel file $HOME/.gvimrc ______________________________________________________________________ let myfiletypefile = "~/vim/myfiletypes.vim" ______________________________________________________________________ Ora aprite una sessione di vim con il comando ______________________________________________________________________ bash$ gvim sample.pgc ______________________________________________________________________ e otterrete la sintassi evidenziata tramite i colori. 2255..44.. OOppeerraattoorrii oorriieennttaattii aaii bbiitt ppeerr PPoossttggrreeSSQQLL Gli operatori orientati ai bit sono stati scritti da Nicolas Moldavsky +o nico@overnet.com.ar Sono funzioni "C", che implementano gli operatori orientati ai bit (AND, OR, XOR, operatore complemento) su pgsql. Prelevatele via FTP anonimo dal sito +o E incluso un Makefile per Linux. 2266.. CCooddiiccee ggiiaappppoonneessee KKaannjjii ppeerr PPoossttggrreeSSQQLL Si trova presso il seguente sito +o 2277.. VVeerrssiioonnee ddii PPoossttggrreeSSQQLL ppeerr WWiinnddoowwss 9955//WWiinnddoowwss NNTT I binari di PostgreSQL per Windows NT, sono disponibili presso: +o Binari di PostgreSQL per Windows NT +o Scaricate i binari, decomprimeteli, e seguite le istruzioni descritte in ``Installazione di PostgreSQL'' partendo dal passo 13. Se volete ri-compilare l'albero dei sorgenti, seguite le istruzioni date piu avanti. La versione per NT e stata realizzata con il pacchetto cygwin32 di Cygnus, che contiene gcc e gmake, per Win NT/95. +o Il pacchetto Cygwin 32 si trova presso Presso questo sito potete anche ottenere il file cdk.exe (il file auto estraente di gnu-win32) 2277..11.. AAuuttoorrii ddeellllaa vveerrssiioonnee ppeerr NNTT Gli autori della versione di PostgreSQL per Windows NT, sono: +o Daniel Horak horak@mmp.plzen-city.cz +o Joost Kraaijeveld JKraaijeveld@askesis.nl +o Kevin Lo kevlo@FreeBSD.org +o Home page della versione per NT 2277..22.. IInnssttaallllaazziioonnee ddeell ppaacccchheettttoo CCyyggwwiinn 1. Scaricate 2. Eseguite full.exe ed installate nella directory c:\Unix\Root . 3. Eseguite Cygwin. Digitate 'mount --help' per leggere la documentazione. Potete usare l'opzione -f per forzare il montaggio. Poi eseguite "umount / " e "mount c:\Unix\Root /" 2277..33.. MMeessssaa aa ppuunnttoo ddeellllaa ffiinneessttrraa ddii BBaasshh Dopo l'installazione del pacchetto Cygwin, fate quanto segue per impostare l'ambiente di lavoro: 1. Installate l'editor 'Vim', evoluzione di Vi. Vedere 2. La finestra predefinita della bash di cygwin, e una finestra di 24 righe con sfondo nero. Per impostare il colore di sfondo e le dimensioni della finestra di bash, fate click su NT-Start->Control- panel->MS DOS; cambiate il colore di sfondo nel colore grigio, e portate la lunghezza della finestra a 70 righe. (OPPURE) fate click col tasto destro sulla barra del titolo della finestra, e cambiate le proprieta. 3. Aprite in edit cygnus.bat , situato nella directory c:\cygnus\cywinb20 , ed impostate quanto segue: ______________________________________________________________________ set HOME=c:\cygnus\cygwinb20 bash --login ______________________________________________________________________ Modificate anche /.bash_profile , e aggiungete queste righe ______________________________________________________________________ set -o vi PATH=$PATH:/usr/local/bin:/usr/bin export PATH ______________________________________________________________________ 4. Per abilitare l'elaborazione dello storico della riga di comando, impartite il comando: bash$ set -o vi Usando i tasti l,k,j,h potete usare i comandi di vi per elaborare lo storico della riga di comando. Potete cosi ripetere o modificare i comandi precedentemente digitati, risparmiando tempo nella digitazione. 5. Potete effettuare il montaggio di dispositivi/directory usando questo comando: ______________________________________________________________________ bash$ umount / bash$ mount "c:\cygnus" / bash$ mount "c:\cygnus\cygwin-b20\postgres" /usr/local/pgsql ______________________________________________________________________ 6. Leggete l'help in linea con: ______________________________________________________________________ bash$ mount --help bash$ ls --help ______________________________________________________________________ 2277..44.. IInnssttaallllaazziioonnee ddeeggllii ssttrruummeennttii ddii AAnnddyy PPiippeerr 1. Recatevi presso e scaricate cygwin-b20-local.tar.bz2 nella directory c:/Unix/Root . 2. cd c:/Unix/Root; bunzip2 cygwin-b20-local.tar.bz2 3. tar -xvf cygwin-b20-local.tar 4. cd /local/bin; sh check_cygwin_setup.sh 5. Dopo aver superato il passo 4, vedrete il seguente messaggio: ___________________________________________________________________ You don't have /bin would you like to mount cygwin as /bin?" [ y/n ] Selezionate 'n', e alle altre opzioni va selezionato 'y' ___________________________________________________________________ 6. mount c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/bin /bin 7. cd c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32; mkdir libexec share man etc sbin info 8. cp -R /local/{ bin,libexec,share,man,etc,sbin,info,include } 2277..55.. IInnssttaallllaazziioonnee ddeell ppaacccchheettttoo CCyyggwwiinn3322 IIPPCC ddii LLuuddoovviicc LLaannggee 1. Recatevi presso e scaricate cygwin32_ipc-1.03.tgz nella directory c:/Unix/Root . 2. tar -zxvf cygwin32_ipc-1.03.tgz 3. cd cygwin32_ipc-1.03/src ed eseguite 'make' 4. mkdir -p c:/usr/local/{bin,include,lib,include/sys} ___________________________________________________________________ cp /cygwin32_ipc-1.03/bin/* c:/usr/local/bin cp /cygwin32_ipc-1.03/include/sys/* c:/usr/local/include/sys cp /cygwin32_ipc-1.03/lib/* c:/usr/local/lib cp c:/usr/local/bin/* /bin cp c:/Unix/Root/cygwin-b20/H-i586-cygwin32/bin/* /bin ___________________________________________________________________ 5. mount c:/usr/local/bin /usr/local/bin ___________________________________________________________________ mount c:/usr/local/include /usr/local/include mount c:/usr/local/lib /usr/local/lib cp /local/lib/* /usr/local/lib ___________________________________________________________________ 2277..66.. IInnssttaallllaazziioonnee ddii PPoossttggrreeSSQQLL 1. Scaricate l'ultima versione del codice sorgente di PostgreSQL 2. Postgres tratta tutti i file come binari, ed appaiono quindi i caratteri lf/cr, percio eseguiamo le azioni 2, 3, 4, e 5: ___________________________________________________________________ mkdir -p c:/Postgres/{Source,Binary} mkdir c:/Postgres/Binary/pgsql mkdir -p /usr/src/pgsql mkdir -p /usr/local/pgsql ___________________________________________________________________ 3. Copiate il codice sorgente di Postgres nella directory c:/Postgres/Source , poi ___________________________________________________________________ tar -zxvf postgresql-6.5.3.tar.gz ___________________________________________________________________ 4. mv postgresql-6.5.3 pgsql 5. Ora montate le directory: ___________________________________________________________________ mount c:/Postgres/Source/pgsql /usr/src/pgsql mount c:/Unix/Root/cygwin-b20/share /sw/cygwin-b20/share ___________________________________________________________________ 6. mkdir -p /usr/local/pgsql/{bin,include,lib,data} 7. cd /usr/src/pgsql/src/win32 8. Copiate i file header: ___________________________________________________________________ cp un.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include/sys cp endian.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include cp tcp.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include/netinet ___________________________________________________________________ 9. ln -s /usr/local/lib /usr/src/pgsql/src/backend/libpostgres.a 10. cd /usr/src/pgsql/src, poi eseguite './configure' 11. make > make.txt 2>&1 12. make install > make.install.txt 2>&1 13. cp /usr/local/pgsql/lib/pq.dll /usr/local/pgsql/bin 14. Dopo il make install dovrete cambiare tutti i file di testo nella directory bin e lib, in modo che essi non contengano cose come cr/lf ed eof. 15. Utilizzare un qualsiasi editor per creare .bashrc nella directory /, come segue: ___________________________________________________________________ PATH=$PATH:/usr/local/pgsql/bin:/usr/local/bin PGDATA=/usr/local/pgsql/data PGLIB=/usr/local/pgsql/lib LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib export LD_LIBRARY_PATH PATH PGDATA PGLIB ___________________________________________________________________ 16. source /.bashrc, poi eseguite 'initdb --username=xxxx' Notate che il proprietario del sistema DB deve essere diverso dal root/amministratore 17. Modificate il file /usr/local/pgsql/data/pg_hba.conf, come segue: ___________________________________________________________________ host all 163.17.11.109 255.255.255.0 trust ___________________________________________________________________ 18. ipc-daemon.exe& 19. postmaster -i& 20. Eseguite ' psql -h nome_host template1' 2288.. MMaaiilliinngg lliisstt 2288..11.. AAccccoouunntt ddii ee--mmaaiill ppeerr PPoossttggrreeSSQQLL Ottenete un account gratuito per le e-mail da +o Yahoo fate click su e-mail +o Lycos fate click su new e-mail accounts +o hotmail fate click su new e-mail accounts Iscrivendosi (con subscribe) alla mailing list di PostgreSQL con Yahoo, noterete che Yahoo ha funzionalita aggiuntive, come la creazione di cartelle separate da riservare alle e-mail su PostgreSQL, per non mescolarle con le vostre e-mail personali. Selezionate il menu Email -> Options -> Filters e scegliete "seperate folder" per le email. Con questo account di e-mail, potete accedere alla posta (elettronica, ndt) da qualsiasi luogo del mondo, purche abbiate accesso ad una pagina web. Se avete una qualsiasi altra e-mail, potete usare "Mail Filters" per ricevere automaticamente le mail di PostgreSQL in una cartella separata. Cio vi permettera di gestire la posta in maniera ordinata. 2288..22.. MMaaiilliinngg lliisstt iinn lliinngguuaa IInngglleessee Vedere l'argomento Mailing Lists sulla pagina web principale situata presso: +o +o Inviate domande a: pgsql-questions@postgresql.org +o Per sviluppatori: pgsql-hackers@postgresql.org +o Domande su versioni specifiche per le altre piattaforme: pgsql- ports@postgresql.org +o Domande relative alla documentazione: pgsql-docs@postgresql.org Otterrete le risposte/repliche via e-mail in meno di un giorno. Potete anche iscrivervi alle mailing list. Per iscriversi o sganciarvi dalla lista, inviate una mail a: +o pgsql-questions-request@postgresql.org +o pgsql-hackers-request@postgresql.org +o pgsql-ports-request@postgresql.org +o pgsql-docs-request@postgresql.org Il corpo del messaggio deve contenere la singola riga subscribe (oppure) unsubscribe 2288..33.. AArrcchhiivviioo ddii mmaaiilliinngg lliisstt Le mailing list sono anche archiviate, in formato html, nella seguente locazione: +o Date-wise listing, disponibile per mezzo di MHonarc, via WWW, presso +o e la directory e /pub/majordomo Esiste anche un motore di ricerca specifico per domande su pgsql, ed e a disposizione sul sito web principale di PostgreSQL. 2288..44.. MMaaiilliinngg lliisstt ssppaaggnnoollaa Ora esiste una mailing list "non ufficiale" su postgreSQL in lingua spagnola. Per iscriversi, l'utente deve inviare un messaggio a: +o majordomo@tlali.iztacala.unam.mx Il corpo del messaggio deve contenere la seguente riga: inscripcion pgsql-ayuda 2299.. DDooccuummeennttaazziioonnee ee lliibbrrii ddii rriiffeerriimmeennttoo 2299..11.. MMaannuuaallii ee gguuiiddee ppeerr ll''uutteennttee La documentazione che segue e inclusa nella distribuzione di PostgreSQL, nei formati postscript, HTML, e "pagine man" di unix. E collocata nella directory /usr/doc/postgresql* . Se avete accesso ad internet, potete trovare questi documenti presso e presso . +o "Installation Guide" +o "User Guide" per PostgreSQL +o "Implementation Guide", che illustra PostgreSQL dettagliatamente ed in profondita. +o Manuali in linea. +o Manuali in linea (formato HTML). +o Esistono anche manuali in formato Postscript per ottenere copie cartacee. 2299..22.. DDooccuummeennttaazziioonnee ddiissppoonniibbiillee iinn lliinneeaa +o Elenco e descrizione dei tipi di dati e degli operatori predefiniti E parte del comando PSQL +o Elenco delle parole chiave SQL supportate C'e uno script nella directory /tools dell'albero del codice sorgente. +o Elenchi delle istruzioni supportate: Usate il comando psql \h +o Concetti elementari sui database relazionali sotto PostgreSQL (implementazione), e svariati esempi (di interrogazioni) disponibili in linea (potete vedere anche ``''): Date un'occhiata ai test di regressione in src/test. Vi trovate le directory regress/sql e suite/*.sql +o Tutorial su PostgreSQL. script tutorial su SQL si trovano nella directory src/tutorial Vedere anche "Tutorial SQL per principianti", nell'``'' di questo doc- umento. 2299..33.. LLiibbrrii ddii rriiffeerriimmeennttoo uuttiillii +o "Understanding the New SQL: A Complete Guide" - di Jim Melton e Alan R.Simon Edito da Morgan Kaufman, e uno dei migliori libri su SQL. Tratta di SQL92. +o "A Guide to THE SQL STANDARD" - di C.J.Date della Addison-Wesley Publishing, e un altro buon libro. E un testo su SQL molto diffuso. +o SQL - The Standard Handbook, Novembre 1992 di Stephen Cannan e Gerard Otten McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England +o SQL Instant Reference, 1993 di Martin Gruber, Redattore Tecnico: Joe Celko SYBEX Inc. 2021 Challenger Drive Alameda, CA 94501 +o C.J.Date, "An introduction to Database Systems" (sesta edizione), Addison-Wesley, 1995, ISBN 0-201-82458-2 Questo libro e la Bibbia dei Sistemi di Gestione dei Database. Il libro illustra dettagliatamente normalizzazione, SQL, ripristino, con- correnza, sicurezza, integrita, ed estensioni al modello relazionale ori- ginale; inoltre tratta le attuali questioni riguardanti i sistemi client/server, ed i modelli orientati agli oggetti. Per approfondire la lettura, sono stati inclusi molti riferimenti. Lo raccomando alla maggior parte degli utenti. +o Stefan Stanczyk, "Theory and Practice of Relational Databases", UCL Press Ltd, 1990, ISBN 1-857-28232-9 Il libro tratta in dettaglio la teoria dei database relazionali, l'algebra relazionale, il calcolo relazionale e la normalizzazione. Ma non tratta di casi del mondo reale, e gli esempi non vanno oltre quelli semplici. E consigliato per la maggior parte degli utenti. +o "The Practical SQL Handbook" Terza Edizione, Addison Wesley Developers Press ISBN 0-201-44787-8 Lo consiglio alla maggior parte degli utenti. +o Michael Stonebraker, "Readings in Database Systems", Morgan Kaufmann, 1988, ISBN 0-934613-65-6 Questo libro e una raccolta di articoli, pubblicati negli anni passati, dedicati ai database. Non e un libro per lettori occasionali: si tratta di di un testo di consultazione per studenti avanzati (laureati), o per svi- luppatori di sistemi di database. +o C.J.Date, "Relational Database - Selected Readings", Addison- Wesley, 1986, ISBN 0-201-14196-5 Il libro e una raccolta di articoli, pubblicati negli anni passati, dedi- cati ai database. Non e materia per semplici utenti: si tratta di un testo di consultazione per studenti avanzati (laureati), o per sviluppatori di sistemi di database. +o Nick Ryan e Dan Smith, "Database Systems Engineering", International Thomson Computer Press, 1995, ISBN 1-85032-115-9 Questo libro spiega dettagliatamente i metodi d'accesso, e le tecniche di archiviazione. +o Bipin C. Desai, "An introduction to Database Systems", West Publishing Co., 1990, ISBN 0-314-66771-7 Non e materia per semplici utenti, ma e per studenti avanzati (laureati) o per sviluppatori di sistemi di database. +o Joe Celko "INSTANT SQL Programming" Wrox Press Ltd. Unit 16, 20 James Road, Tyseley Birmingham, B11 2BA, England 1995 +o Michael Gorman "Database Management Systems: Understanding and Applying Database" Technology QED and John Wiley 1991 +o Michael Gorman "Enterprise Database for a Client/Server Environment" QED and John Wiley Presenta i requisiti per la creazione di applicazioni database client / server per mezzo di metamodelli da repository, e l'uso di ANSI SQL stan- dard 1993 Sono disponibili centinaia di altri titoli su SQL! Cercateli in una libreria. 2299..44.. DDooccuummeennttii ddeellllee ssppeecciiffiicchhee SSQQLL AANNSSII//IISSOO -- SSQQLL 11999922,, SSQQLL 11999988 I documenti delle specifiche ISO ANSI/ISO possono essere trovati presso i seguenti siti: +o +o fate clic sul file cat_c.html e cercate "Database SQL" +o SQL92 standard e fate clic sul file sql_stnd.html +o Specifiche ANSI/ISO SQL . Qui troverete il Reference di SQL. 2299..55.. SSiinnttaassssii ddii 11999922 AANNSSII//IISSOO SSQQLL Vedere l'``'' di questo documento. 2299..66.. SSiinnttaassssii ddii 11999988 AANNSSII//IISSOO SSQQLL Le specifiche SQL 1998 (SQL 3) sono ancora in sviluppo. Vedere "Accesso attraverso mezzi Elettronici alla SQL3 Working Draft" in questo documento: ``'' 2299..77.. TTuuttoorriiaall ssuu SSQQLL ppeerr pprriinncciippiiaannttii Vedere l'``'' di questo documento. 2299..88.. EEsstteennssiioonnii tteemmppoorraallii aa SSQQLL9922 +o Documento sulle estensioni temporali a SQL-92 +o Specifiche temporali SQL-3 Questa directory contiene le specifiche per una estensione temporale del linguaggio SQL-92 standard. Questo nuovo linguaggio e denominato TSQL2. Le specifiche del linguaggio qui citato costituiscono la versione finale del linguaggio. La corrispondenza puo essere diretta al Presidente del TSQL2 Language Design Committee, Richard T.Snodgrass, Department of Computer Science, University of Arizona, Tucson, AZ 85721, +o rts@cs.arizona.edu Le affiliazioni, e gli indirizzi e-mail dei membri del TSQL2 Language Design Committee, possono essere trovati in una sezione separata, situata in coda alle specifiche del linguaggio. Il contenuto di questa directory e il seguente. spec.dvi,.ps - Specifiche del Linguaggio TSQL2, pubblicate nel settembre 1994 bookspec.ps - Specifiche del Linguaggio TSQL2, come nel libro del TSQL2, pubblicate nel Settembre 1995 (Vedere piu sotto). sql3 - proposte di modifiche sottoposte ai comitati ANSI e ISO SQL3. Esiste, inoltre, una raccolta di commenti, abbinati alle specifiche del linguaggio, che dibattono le decisioni relative al progetto, forniscono esempi, e considerano come il linguaggio possa essere implementato. Questi commenti sono stati proposti originariamente al TSQL2 Language Design Committee. Adesso hanno un altro uso: fornire esempi dei costrutti, motivare le tante decisioni prese durante la progettazione del linguaggio, e confrontare TSQL2 con i molti altri linguaggi proposti negli ultimi quindici anni. Si dovrebbe sottolineare che questi commenti non sono parte delle specifiche del linguaggio TSQL2, ma sono piuttosto un supplemento e un approfondimento delle stesse. Le specifiche del linguaggio sono le sole parole definitive su TSQL2. I commenti, insieme alle specifiche del linguaggio, a svariati indici, ed altro materiale di supporto, sono stati pubblicati in un libro: Snodgrass, R.T. redattore, The TSQL2 Temporal Query Language, Kluwer Academic Publishers, 1995, 674+xxiv pagine. I commenti di valutazione, che sono presenti nel libro, sono in forma abbreviata; la forma integrale e contenuta nel file eval.ps, ospitato in questa directory. Il file tl2tsql2.pl e un programma in linguaggio prolog; esso traduce dichiarazioni logiche, consentite dal TSQL2, in costrutti validi per lo stesso TSQL2. Questo programma e stato scritto da Michael Boehlen +o boehlen@iesd.auc.dk Puo essere contattato per ottenere un testo descrittivo di questa traduzione. Quella trattata e pero una versione alquanto datata di quel programma. Versioni piu recenti sono disponibili presso +o (i sistemi TimeDB e Tiger). 2299..99.. PPaarrttee 00 -- PPrrooccuurraarrssii ddooccuummeennttii ssuu SSQQLL IISSOO//AANNSSII Questo documento illustra come procurarsi (legalmente) una copia dello standard SQL-92, e come procurarsi una copia dell'ultima bozza di SQL3. Lo standard e protetto da copyright: lo standard ANSI e detenuto da ANSI, mentre lo standard ISO e detenuto da ISO. In realta esistono due (2) standard SQL: una pubblicazione ANSI e una pubblicazione ISO. I due standard sono identici parola per parola, tranne che per alcune questioni banali come il titolo del documento, le intestazioni delle pagine, la frase "International Standard" contrapposta a "American Standard", e cosi via. Acquistare lo standard SQL-92 Lo standard ISO, ISO/IEC 9075:1992, Information Technology - Database Languages - SQL, e attualmente (Marzo, 1993) disponibile alla vendita presso ANSI: American National Standards Institute 1430 Broadway New York, NY 10018 (USA) Phone (sales): +1.212.642.4900 al costo di 230.00 $ USA. La versione ANSI, ANSI X3.135-1992, American National Standard for Information Systems - Database Language SQL, al momento della scrittura di questo documento, non era disponibile alla vendita, La disponibilita era attesa per il periodo tra la fine di marzo e l'inizio di maggio del 1993). Il costo previsto era di 225.00 $ USA. Se acquistate entrambi i documenti da ANSI, avrete una maggiorazione del 7% (circa 9.10 $ USA). Le spedizioni all'estero costeranno sicuramente di piu. ANSI richiede una copia stampata dell'ordine di acquisto; in alternativa, potete inviare un assegno bancario (in dollari USA ad una banca americana) che sara sottoposto a controlli di validita e convertito in contanti prima di sbrigare l'ordine (esiste un'eccezione: se la vostra organizzazione e un'azienda membro dell'ANSI, ANSI stessa vi spedira la documentazione ed inviera il conto alla vostra societa). Lo standard ISO e disponibile anche al di fuori degli USA presso le locali associazioni nazionali che sono membri sia di ISO (International Organization for Standardization), sia di IEC (International Electrotechnical Commission). Copie della lista di consociate nazionali, e dei loro indirizzi, sono disponibili presso ANSI o presso altre consociate nazionali. Sono disponibili anche presso ISO: International Organization for Standardization Central Secretariat 1, rue de Varembi CH-1211 Genhve 20 Switzerland Se preferite ordinare lo standard in un modo piu comodo e rapido, dovrete pagare per avere questo privilegio. Potete ordinare ISO/IEC 9075:1992, Information Technology - Database Languages - SQL, presso: Global Engineering Documents 2805 McGaw Ave Irvine, CA 92714 (USA) USA Telefono (valido ovunque): +1.714.261.1455 Telefono (valido solo negli USA): (800)854-7179 per un costo di 308.00 $ USA. Non so se siano incluse le spese postali, ma posso immaginare che la spedizione internazionale costi di piu (come minimo). In questo modo vi invieranno tempestivamente un documento, ed accetteranno anche pagamenti con le piu note carte di credito. La Global non ha ancora la versione ANSI, e non da ne l'indi- cazione di un prezzo, ne una data per la disponibilita (anche se mi aspetto che sia disponibile entro poche settimane dopo la pubbli- cazione di ANSI, e ad un prezzo vicino a 300.00 $ USA). Acquistare una copia di SQL3 Working Draft (la bozza di lavoro) Potete acquistare una copia stampata della bozza di lavoro di SQL3, presso il Segretariato ANSI X3, CBEMA (Computer and Business Equipment Manufacturers Association). Il loro proposito, e quello di conservare la "piu recente" versione della bozza di lavoro di SQL3, e di venderla ad un prezzo tra i 60.00 ed i 65.00 $ USA. Potete contattare CBEMA all'indirizzo: CBEMA, X3 Secretariat Attn: Lynn Barra 1250 Eye St. Suite 200 Washington, DC 20005 (USA) Lynn Barra puo essere raggiunta anche al numero di telefono +1.202.626.5738 per richiedere una copia, ma probabilmente il contatto via lettera e piu gradito. Accesso attraverso mezzi Elettronici alla SQL3 Working Draft La versione piu recente (al momento della redazione di questo documento) della bozza di lavoro (e tutte le sue Parti) di SQL3 (ANSI e ISO), e disponibile presso gatekeeper.dec.com nella directory /pub/standards/sql/ In questa directory ci sono numerosi file. Ci sono file in formato PostScript. ed in formato "testo puro" (non gradevolmente formattato, ma leggibile a video senza software particolare). In generale, potete trovare file con nomi come: sql-bindings-mar94.ps sql-bindings-mar94.txt sql-cli-mar94.ps sql-cli-mar94.txt sql-foundation-mar94.ps sql-foundation-mar94.txt sql-framework-mar94.ps sql-framework-mar94.txt sql-psm-mar94.ps sql-psm-mar94.txt Quando verra prodotta una nuova versione dei documenti, la stringa "mar94" cambiera per indicare la nuova data di pubblicazione (ad es., "aug94" e la data di nuova pubblicazione dopo "mar94"). In piu, per quei lettori che non potessero ottenere un listato della directory a mezzo FTP, abbiamo posizionato un file di nome: ls nella stessa directory. Questo file (che sorpresa!) contiene un lis- tato del contenuto della directory. Reperire file usando FTP diretto Questo e un esempio di come usare FTP. In particolare, viene mostrato come connettersi a gatekeeper.dec.com, come spostarsi nella directory in cui e ospitato il documento base, e come trasferire il documento al vostro nodo. Notate che il vostro nodo deve avere accesso ad Internet per fare quanto sara detto. Il nome di login e 'ftp', e la password e il vostro indirizzo email (a questa modalita ci si riferisce spesso come quella di "anonymous ftp" o "ftp anonimo"). Il comando 'type binary' e usato per assicurarci che nessun bit venga rimosso dai file ricevuti. Il comando 'get' trasferisce un file alla volta. Nello script che segue, i commenti sono racchiusi nei simboli < e > . % ftp gatekeeper.dec.com Connected to gatekeeper.dec.com. 220- *** /etc/motd.ftp *** Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research. <... ora si potrebbe dover attendere...> 220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready. Name (gatekeeper.dec.com:): ftp 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/standards/sql 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 9529 -r--r--r-- 1 root system 357782 Feb 25 10:18 x3h2-93-081.ps -r--r--r-- 1 root system 158782 Feb 25 10:19 x3h2-93-081.txt -r--r--r-- 1 root system 195202 Feb 25 10:20 x3h2-93-082.ps -r--r--r-- 1 root system 90900 Feb 25 10:20 x3h2-93-082.txt -r--r--r-- 1 root system 5856284 Feb 25 09:55 x3h2-93-091.ps -r--r--r-- 1 root system 3043687 Feb 25 09:57 x3h2-93-091.txt 226 Transfer complete. ftp> type binary 200 Type set to I. ftp> get x3h2-93-082.txt 200 PORT command successful. 150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes). 226 Transfer complete. 90900 bytes received in 0.53 seconds (166.11 Kbytes/s) ftp> quit % Scaricare file senza supporto FTP diretto Digital Equipment Corporation, al pari di molte altre compagnie, fornisce il servizio di ftp via email. La risposta puo giungere dopo diversi giorni, ma il servizio fornito e equivalente al ftp, ed e per coloro che non hanno accesso diretto a ftp. L'indirizzo del server e: ftpmail@decwrl.dec.com Il seguente script permettera di ottenere il file, in formato PostScript, relativo all'ultima versione del documento su SQL3: reply joe.programmatore@azienda-immaginaria.com connect gatekeeper.dec.com anonymous binary compress uuencode chdir /pub/standards/sql get x3h2-93-091.ps quit La prima riga dello script istruisce il server ad inviarci i file richiesti; dovreste sostituire "joe.programmatore@azienda-immagi- naria.com" col vostro indirizzo Internet. Il file di questo esempio, x3h2-93-091.ps, viene inviato in formato compresso (con "compress"), codificato (con "uuencode"), e suddiviso in 34 messaggi email sepa- rati. Se il vostro ambiente non fornisce strumenti per ricostruire file di questo tipo, potreste farvi inviare il file in forma di testo puro, con il seguente script: reply joe.programmatore@azienda-immaginaria.com connect gatekeeper.dec.com anonymous chdir /pub/standards/sql get x3h2-93-091.ps quit Ma fate attenzione: il file .ps arrivera a voi suddiviso in piu di 70 parti! Per recuperare un file particolare qualsiasi, che non sia x3h2-93-091.ps, sostituite semplicemente "x3h2-93-091.ps" con il nome del file desiderato. Per ottenere una lista di tutti i file disponibili, sostituite " get x3h2-93-091.ps" con "dir". 2299..1100.. PPaarrttee 11 -- SSttaattoo aattttuuaallee ddii SSQQLL IISSOO//AANNSSII Questo capitolo e una fonte di informazioni riguardanti il processo di standardizzazione di SQL, e del suo stato attuale. Stato attuale: Progetti di sviluppo sono attualmente in corso per migliorare SQL, rendendolo un linguaggio completo dal punto di vista computazionale, e per la definizione e la gestione di oggetti persistenti e complessi. Cio comporta: la generalizzazione e la specializzazione delle gerarchie, l'eredita multipla, i tipi di dati definiti dall'utente, i trigger e le assertion, il supporto per i "knowledge based system", espressioni con interrogazioni ricorsive, e strumenti addizionali per l'amministrazione dei dati. Vanno considerati anche le specifiche dei tipi di dati astratti (ADT), degli identificatori di oggetti, dei metodi, dell'ereditarieta, del polimorfismo, dell'incapsulamento, e di tutte le altre caratteristiche normalmente associate alla gestione dei dati ad oggetti. Nell'autunno 1996, diverse parti di SQL3 sono state votate dal CD ISO. Queste parti erano: SQL/Framework, SQL/Foundation, e SQL/Bindings. Queste votazioni fallirono (come ci si aspettava) con circa 900 commenti di critica. Alla fine di gennaio, si svolse un incontro di elaborazione ISO DBL, che produsse un vasto numero di soluzioni ai problemi che erano stati acclusi come commenti ai voti, o sottoposti come testi separati. Poiche l'incontro di elaborazione DBL non fu in grado di trattare tutti gli argomenti discussi nei commenti, l'incontro stesso venne esteso. Il completamento dell'incontro di elaborazione, e fissato per la fine di luglio del 1997, a Londra. Esaminando l'incontro di elaborazione di luglio, ci si puo aspettare che sara richiesta una votazione finale del CD per le parti di SQL precedentemente accennate. Il processo del CD Finale impieghera circa 6 mesi, e richiedera un incontro elaborativo DBL; dopodiche ci sara una votazione DIS ed una rapidissima votazione IS. Le procedure ISO sono cambiate rispetto a quelle che hanno determinato SQL/92; per questo i comitati SQL sono ancora impegnati nello studio dei dettagli della procedura stessa. Se tutto andra bene, queste parti di SQL3 diverranno ufficialmente standard ISO/IEC alla fine del 1998, ma i tempi sono molto stretti. Nel 1993, i comitati di sviluppo ANSI e ISO decisero di scindere lo sviluppo del futuro SQL in uno standard, composto di molte parti. Esse sono: +o Parte 1: Framework - Una descrizione non-tecnica della struttura del documento; +o Parte 2: Foundation - Le specifiche del nucleo, che includono tutte le nuove funzionalita ADT; +o Parte 3: SQL/CLI - Interfaccia al livello di chiamata; +o Parte 4: SQL/PSM - Le specifiche per le stored procedure, che includono la completezza computazionale; +o Parte 5: SQL/Bindings - SQL dinamico e binding di SQL embedded, derivati da SQL-92; +o Parte 6: SQL/XA - Una specifica SQL della diffusa interfaccia XA sviluppata da X/Open; +o Parte 7:SQL/Temporal - Aggiunge a SQL standard delle proprieta correlate con il tempo; Negli USA, la totalita di SQL3 viene trattata sia come progetto ANSI Domestico ("D"), sia come progetto ISO. Allo stato attuale, il completamento di SQL3 e atteso per il 1999. Le Parti SQL/CLI e SQL/PSM sono in corso di elaborazione, come aggiuntive a SQL-92. Negli USA, queste caratteristiche vengono trattate solo come progetti Internazionali ("I"). SQL/CLI e stata completata nel 1995. SQL/PSM dovrebbe essere completata intorno alla fine del 1996. Oltre al lavoro su SQL3, numerosi altri progetti sono in corso: +o SQL/MM - Un crescente sforzo per definire pacchetti multi-media usando le funzionalita ADT di SQL3. +o Accesso Remoto ai Dati (RDA) Comitato degli Standard e Procedimento In tutto il mondo, i comitati per gli standard SQL sono sorprendentemente numerosi. Esiste un gruppo per gli standard internazionali SQL, ed e parte di ISO. Moltissimi paesi hanno comitati che si occupano specificatamente di SQL. Questi paesi (solitamente) inviano le loro rappresentative ai convegni ISO/IEC JTC1/SC 21/WG3 DBL. I paesi che partecipano attivamente alle procedure, per definire gli standard SQL ISO, sono: +o Australia +o Brasile +o Canada +o Francia +o Germania +o Giappone +o Corea +o Paesi Bassi +o Regno Unito +o Stati Uniti d'America Convalida NIST Le implementazioni di SQL sono convalidate (negli USA) dal National Institute of Standards and Training (NIST). Attualmente il NIST si serve di una suite di prova per nuovi prodotti SQL-92. I dettagli esatti dei requisiti, per la convalida del NIST, vengono definiti nel Federal Information Processing Standard (FIPS). I requisiti attuali per SQL sono definiti nel FIPS 127-2. Le versioni nei formati Postscript e testo di questo documento, possono essere reperite presso il NIST. L'attuale Lista di Prodotti SQL Convalidati puo essere ottenuta dal NIST. Pubblicazioni di SQL Standard e articoli Esistono due versioni dello standard SQL. Entrambe sono disponibili presso ANSI: +o ISO/IEC 9075:1992, "Information Technology --- Database Languages --- SQL" +o ANSI X3.135-1992, "Database Language SQL" Le due versioni dello standard SQL sono identiche, tranne che per le intestazioni ed i riferimenti ad altri standard. Entrambe sono reperibili presso: American National Standards Institute 1430 Broadway New York, NY 10018 USA Phone (sales): +1.212.642.4900 Oltre allo standard SQL-92, ora c'e un Technical Corrigendum (cor- rezione dei bug): * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992 TC 1 dovrebbe essere reso disponibile da ANSI. C'e solo una versione ISO di TC 1 -- Si applica sia alla versione ANSI che a quella ISO di SQL-92. Oltre ai testi base, svariati libri sono stati scritti sullo standard SQL 1992. Questi libri forniscono una descrizione dello standard assai piu comprensibile dei testi ufficiali veri e propri. Standard Correlati Numerosi altri standard sono oggetto di interesse per la comunita SQL. Questa sezione contiene alcuni puntatori alle informazioni su queste realizzazioni. Questi puntatori aumenteranno di numero, man mano che le informazioni aggiuntive diventeranno disponibili sul web. +o SQL Environments (FIPS 193) +o Next Generation Repository Systems (X3H4) - a News Release calling for partecipation in "Developing Standards for the Next Generation Repository Systems." 2299..1111.. PPaarrttee 22 -- FFoouunnddaattiioonn -- FFoonnddaammeennttii ddii SSQQLL IISSOO//AANNSSII Una quota significativa, nella realizzazione di SQL3, e quella del Documento dei Fondamenti di SQL: +o Proprieta basilari SQL/PSM (ereditate da SQL/PSM-92) +o Nuovi tipi di dati +o Trigger +o Sottotabelle +o Tipi di dati astratti (Abstract Data Types:ADT) +o Funzionalita orientate agli oggetti Ci sono diversi prerequisiti per le funzionalita orientate agli oggetti: +o Possibilita di definizione di operazioni complesse +o Operazioni complesse di archiviazione dei dati nel database +o Chiamate di procedure esterne Qualche operazione puo non essere presente in SQL, o puo richiedere interazioni con l'ambiente esterno Queste funzionalita sono definite come parti di SQL/PSM Gran parte del lavoro, viene attualmente svolta per affinare il modello a oggetti di SQL-3, e per allinearlo con il modello ad oggetti proposto da ODMG. Questo lavoro e descritto nel documento X3H2 e ISO DBL: "Accomodating SQL3 and ODMG". Esiste anche un recente aggiornamento sull'operazione di Merge (fusione) SQL3/OQL. Tempi di lavoro di SQL3 Lo sviluppo di SQL3 e sulla buona strada, ma gli standard finali saranno pronti fra anni. +o Votazione internazionale per far evolvere i Fondamenti SQL3 dalla bozza di lavoro alla bozza del Comitato (Committee Draft - CD), autunno 1996. +o In seguito alla votazione si attendono numerosi commenti di critica +o Verosimilmente sara necessaria una seconda votazione +o La votazione della bozza Standard internazionale (Draft International Standard) avra luogo probabilmente a meta del 1998 +o Lo Standard internazionale dovrebbe essere completato a meta del 1999. La versione ANSI dello standard avra scadenze simili. 2299..1122.. PPaarrttee 33 -- IInntteerrffaacccciiaa IISSOO//AANNSSII SSQQLL aa lliivveelllloo ddii cchhiiaammaattaa ((CCaallll LLeevveell IInntteerrffaaccee)) SQL/CLI e un'interfaccia a livello di chiamata ai database SQL. E progettata per agevolare l'accesso al database da parte di applicazioni "shrink-wrapped". La CLI e stata originariamente creata da un sottocomitato di SQL Access Group (SAG). Le specifiche SAG/CLI sono state pubblicate come le specifiche di Microsoft Open DataBase Connectivity (ODBC) del 1992. Nel 1993, il SAG sottomise la CLI ai comitati SQL ANSI e ISO SQL (ora SQL Access Group si e fuso con il consorzio X/Open). SQL/CLI fornisce uno standard internazionale per: +o CLI indipendenti dalla implementazione per accedere a database SQL +o Strumenti client-server che possono facilmente accedere ai database, attraverso collegamenti dinamici alle Librerie +o Supporto ed incoraggiamento di un vasto numero di strumenti client- server Tempi di lavoro di SQL/CLI Per essere un procedimento di standardizzazione, quello di SQL/CLI e stato realizzato in tempi rapidissimi. +o SQL/CLI e un'appendice allo standard SQL 1992 (SQL-92) +o E stato completato come standard ISO nel 1995 +o ISO/IEC 9075-3:1995 Information technology -- Database languages -- SQL -- Part 3: Call-Level Interface (SQL/CLI) +o Attualmente il lavoro su SQL/CLI e focalizzato sul supporto per le funzionalita di SQL3 2299..1133.. PPaarrttee 44 -- PPeerrssiisstteenntt ssttoorreedd mmoodduulleess ((mmoodduullii mmeemmoorriizzzzaattii ppeerr-- ssiisstteennttii)) SSQQLL IISSOO//AANNSSII SQL/PSM estende SQL aggiungendo: +o Estensioni di linguaggio procedurale +o Istruzioni multiple e stored procedure +o Funzioni esterne e chiamate di procedura Oltre ad essere un valido strumento di sviluppo di applicazioni, SQL/PSM fornisce il supporto fondamentale per le funzionalita orientate agli oggetti in SQL3. Istruzioni multiple e stored procedure Le istruzioni multiple e le stored procedure, offrono una varieta di vantaggi in ambiente client/server: +o Prestazioni - Poiche una stored procedure puo eseguire istruzioni SQL multiple, l'interazione via rete col client e ridotta. +o Sicurezza - Ad un utente puo essere conferito il diritto di richiamare una stored procedure che aggiorni una tabella od un insieme di tabelle, ma gli si puo proibire l'aggiornamento diretto delle tabelle +o Codice condiviso - Il codice in una stored procedure non deve essere riscritto e ritestato, per ogni strumento client che accede al database. +o Controllo - Fornisce un singolo punto di definizione e controllo per la logica dell'applicazione. Estensioni di linguaggio procedurale Il linguaggio procedurale aggiunge a SQL la potenza di un tradizionale linguaggio di programmazione, attraverso istruzioni per il controllo del flusso, ed una varieta di altri costrutti di programmazione. Istruzioni per il controllo di Flusso +o If-then-else +o Costrutti per esecuzione di cicli +o Gestione delle eccezioni +o Istruzione Case +o Blocchi begin-end Le estensioni di linguaggio procedurale comprendono anche altri costrutti: +o Dichiarazioni di variabile +o Istruzioni SET per assegnazione di valore +o GET DIAGNOSTICS per ottenere informazioni sul processo e sullo stato Inoltre, tutte le tradizionali istruzioni SQL possono essere incluse nelle procedure con istruzioni multiple. Procedure esterne e chiamate di funzione Esiste una funzionalita spesso citata tra quelle desiderate per molti database, ed implementate in qualcuno. Essa e la capacita di poter aggiungere, alle funzionalita interne, altre funzionalita, mediante chiamate a procedure scritte dall'utente, esterne al software del database stesso. +o E possibile aggiungere, a siti o ad applicazioni, specifiche funzioni al database con cui interagiscono +o Possono essere usate con qualsiasi applicazione che acceda al database Il beneficio di queste capacita, e che permettono ad un database (e quindi anche alle applicazioni database) di poter usare un grande insieme di procedure e funzioni, troppo numerose per essere definite da un comitato per gli standard. Tempi di sviluppo di SQL/PSM SQL/PSM sta procedendo rapidamente: +o SQL/PSM e un'appendice a SQL-92 +o Le votazioni internazionali, per far avanzare SQL/PSM a partire dalla prima bozza internazionale (Draft International Standard) verso uno Standard internazionale, sono terminate nel gennaio 1996. +o L'incontro elaborativo di maggio 1996 non ha risolto tutte le questioni aperte. +o La continuazione dell'incontro elaborativo PSM, e stabilita per il periodo dal 30 settembre al 4 ottobre del 1996. +o I tempi sono ristretti, ma c'e la possibilita che PSM possa essere pubblicato entro il 1996. +o Il titolo ufficiale sara: ISO/IEC DIS 9075-4:199? Information technology -- Database languages -- SQL -- Part 4: SQL Persistent Stored Modules (SQL/PSM) +o Il lavoro di supporto SQL/PSM, alle funzionalita di SQL3, viaggia ben spedito. 2299..1144.. PPaarrttee 55 -- IISSOO//AANNSSII SSQQLL//BBiinnddiinngg Per facilita di consultazione i binding con i linguaggi di programmazione, sono stati stralciati in un documento a parte. L'attuale versione e semplicemente un estratto dei binding incorporati e dinamici, tratti da SQL-92. Svariate questioni, riguardanti i binding con i linguaggi di programmazione, rimangono irrisolte. Per linguaggi di programmazione tradizionali, esiste la mappatura dei tipi di dati per SQL-92. Comunque, deve essere definita una mappatura tra gli oggetti SQL e le variabili del linguaggio di programmazione. Nel caso dei linguaggi orientati agli oggetti, deve essere definita una mappatura per i tipi di dati SQL attuali, e tra il modello ad oggetti SQL ed il modello ad oggetti del linguaggio orientato agli oggetti. Il modello ad oggetti deve essere reso stabile prima di essere utilizzato. I binding coi linguaggi saranno completati come parte di SQL3. 2299..1155.. PPaarrttee 66 -- IISSOO//AANNSSII SSQQLL XXAA IInntteerrffaaccee SSppeecciiaalliizzaattiioonn ((SSQQLL//XXAA)) Queste specifiche vorrebbero standardizzare un'interfaccia ai programmi applicativi (API), tra un Gestore di Transazione globale ed un Gestore di Risorse SQL. Sono volte a standardizzare le chiamate di funzione, basate sulle semantiche di ISO/IEC 10026, "Distributed Transaction Processing", che un Gestore di Risorse SQL dovrebbe poter supportare per commit in due fasi. Il documento base e derivato da una pubblicazione X/Open, con il permesso di X/Open, che specifica esplicitamente i parametri e le semantiche di input ed output, in termini dei tipi di dati SQL, per le seguenti funzioni: xa_close, xa_commit, xa_complete, xa_end, xa_forget, xa_open, xa_prepare, xa_recover, xa_rollback, e xa_start. Attualmente ISO sta tentando di effettuare il fast-track delle specifiche X/Open XA. Il processo di fast-track porta ad adottare specifiche industriali attualmente in uso senza apporre cambiamenti. Le votazioni relative al fast-track di XA al ISO SC21, livello JTC 1, sono iniziate il 27 aprile, 1995, e termineranno il 27 ottobre 1995. Se le specifiche XA verranno approvate dal 75% dei votanti, e dai 2/3 dei membri di JTC 1, diverranno uno Standard Internazionale. Se la votazione sul fast-track sara approvata, SQL/XA potrebbe diventare uno standard nel 1996. 2299..1166.. PPaarrttee 77 -- IISSOO//AANNSSII SSQQLL TTeemmppoorraall SQL Temporal riguarda i dati correlati con il tempo. Il concetto alla base, e l'utilita di effettuare interrogazioni dei dati per conoscere come erano in un momento particolare. SQL Temporal e raccolto in un testo di Rick Snodgrass, datato dicembre 1994, in cui sono descritti i concetti. X3 Dichiara l'Approvazione di un Nuovo Progetto, ISO/IEC 9075 Parte 7: SQL/Temporal e un comunicato-stampa relativo a SQL/Temporal. ---------------------------------------------------------------------------- Temporal SQL ************ Rick Snodgrass (presidente del comitato TSQL2) 31-Dic-1994 Diverse persone hanno contestato la necessita del supporto addizionale per il tempo in SQL3 (come proposto da DBL RIO-75, che ha richiesto una nuova parte di SQL per supportare i database temporali). Si sostiene che i tipi di dati astratti (ADT) siano sufficienti per il supporto temporale. In questo articolo informativo sostengo, usando esempi concreti, che usare colonne definite con tipi di dati astratti, per interrogazioni temporali, e una soluzione inadeguata. In particolare, molte ordinarie interrogazioni temporali sono difficili da simulare in SQL, oppure richiedono l'incorporazione di SQL in un linguaggio procedurale. In TSQL2, un'estensione temporale di SQL-92, sono state proposte delle alternative. 2299..1166..11.. IINNTTRROODDUUZZIIOONNEE Il supporto del tempo di validita surclassa quello di un ADT temporale. Secondo quest'ultimo, una colonna e specificata come parte di un dominio temporale, come DATE o INTERVAL (piu avanti verranno forniti brevi esempi). Con la gestione del tempo di validita, le righe di una tabella variano nel tempo, al variare della realta. Il timestamp associato ad una riga di una tabella con tempo di validita, e interpretato, dal linguaggio di interrogazione, come quel momento in cui la combinazione dei valori delle colonne nella riga era valida. Questo timestamp implicito permette di esprimere le interrogazioni in modo succinto ed intuitivo. 2299..1166..22.. UUNN CCAASSOO DDII SSTTUUDDIIOO -- AARRCCHHIIVVIIAARREE LLEE IINNFFOORRMMAAZZIIOONNII CCOORRRREENNTTII L'Ufficio Personale (UP) dell'Universita dell'Arizona ha archiviato alcune informazioni in un database, tra cui il nome di ogni impiegato, il suo attuale salario, ed il suo attuale titolo. Cio puo essere rappresentato per mezzo di una semplice tabella. Impiegato(Nome, Salario, Titolo) Data questa tabella, trovare il salario di un impiegato e facile. SELECT Salario FROM Impiegato WHERE Nome = 'Bob' Adesso l'UP desidera registrare la data di nascita. Per fare cio, viene aggiunta una colonna alla tabella, producendo il seguente schema. Impiegato(Nome, Salario, Titolo, DatadiNascita DATE) Trovare la data di nascita dell'impiegato e analogo al determinarne il salario. SELECT DatadiNascita FROM Impiegato WHERE Nome = 'Bob' 2299..1166..33.. UUNN CCAASSOO DDII SSTTUUDDIIOO -- AARRCCHHIIVVIIAARREE IINNFFOORRMMAAZZIIOONNII SSTTOORRIICCHHEE L'UP desidera gestire, via computer, l'archivio storico dei dipendenti dell'ufficio. Per farlo vengono aggiunte due colonne: la prima indica quando l'informazione della riga diventa valida, mentre l'altra indica quando l'informazione non e piu valida. Impiegato (Nome, Salario, Titolo, DatadiNascita, Inizio DATE, Fine DATE) Secondo il modello dei dati, queste nuove colonne sono identiche a DatadiNascita. Tuttavia, la loro presenza ha conseguenze a largo raggio. 2299..1166..44.. UUNN CCAASSOO DDII SSTTUUDDIIOO -- PPRROOIIEEZZIIOONNEE Per trovare il salario attuale di un impiegato, le cose si fanno piu difficili. SELECT Salario FROM Impiegato WHERE Nome = 'Bob' AND Inizio <= CURRENT_DATE AND CURRENT_DATE <= Fine Questa query e piu complicata della precedente. Le indiziate sono, ovviamente, le due nuove colonne. L'UP vuole fornire, ad ogni impie- gato, la cronistoria del proprio salario. In particolare, devono essere determinati gli intervalli massimali per ogni salario. Sfortu- natamente, questo non e possibile in SQL. Un impiegato potrebbe avere mutato il proprio titolo, pur mantenendo fisso il valore del salario. Nome Salario Titolo DatadiNascita Inizio Fine ---- ------- ------ ------------- ------ ---- Bob 60000 Assistente Rettore 1945-04-09 1993-01-01 1993-05-30 Bob 70000 Assistente Rettore 1945-04-09 1993-06-01 1993-09-30 Bob 70000 Rettore 1945-04-09 1993-10-01 1994-01-31 Bob 70000 Professore 1945-04-09 1994-02-01 1994-12-31 Figura 1 Notate che ci sono tre righe in cui il salario di Bob e rimasto costante a 70'000 $. Ne segue che il risultato dovrebbe essere di due righe per Bob. Nome Salario Inizio Fine ---- ------- ------ ---- Bob 60000 1993-01-01 1993-05-30 Bob 70000 1993-06-01 1994-12-31 Un'alternativa e quella di fornire all'utente un estratto delle infor- mazioni Salario e Titolo, cosi che egli possa determinare da se quando il suo salario sia cambiato. Questa alternativa non e molto attraente, e neanche pratica. Una seconda alternativa e quella di usare SQL fin quando possibile. CREATE TABLE Temp(Salario, Inizio, Fine) AS SELECT Salario, Inizio, Fine FROM Impiegato; ripetete UPDATE Temp T1 SET (T1.Fine) = (SELECT MAX(T2.Fine) FROM Temp AS T2 WHERE T1.Salario = T2.Salario AND T1.Inizio < T2.Inizio AND T1.Fine >= T2.Inizio AND T1.Fine < T2.Fine) WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salario = T2.Salario AND T1.Inizio < T2.Inizio AND T1.Fine >= T2.Inizio AND T1.Fine < T2.Fine) finche piu nessuna riga viene aggiornata; DELETE FROM Temp T1 WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salario = T2.Salario AND ((T1.Inizio > T2.Inizio AND T1.Fine <= T2.Fine) OR (T1.Inizio >= T2.Inizio AND T1.Fine < T2.Fine)) Il ciclo trova quegli intervalli che si sovrappongono o sono adia- centi, e che quindi dovrebbero essere fusi. Nella peggiore delle ipotesi, il ciclo viene eseguito log N volte, dove N e il numero di righe comprese in una serie di sovrapposizioni o di adiacenze. Il lettore puo simulare l'interrogazione sulla tabella d'esempio, per convincersi della sua correttezza. Una terza alternativa e quella di usare SQL solo per aprire un cursore sulla tabella. Viene mantenuta una lista collegata di periodi, ognuno di essi associato ad un salario. Questa lista collegata dovrebbe essere inizializzata come lista vuota. DECLARE emp_cursor CURSOR FOR SELECT Salario, Titolo, Inizio, Fine FROM Impiegato; OPEN emp_cursor; ciclo: FETCH emp_cursor INTO :salario, :inizio, :fine; se nessun-dato restituito goto finito; trova posizione in lista collegata per inserire quest'informazione; goto ciclo; finito: CLOSE emp_cursor; itera attraverso la lista collegata, stampando date e salari In questo caso, la lista collegata potrebbe non essere necessaria, se il cursore e realizzato con ORDER BY Inizio. In ogni caso l'interrogazione, anche la piu semplice, e piuttosto difficile da esprimere usando le funzionalita presenti in SQL-92. L'interrogazione e banale in TSQL2. SELECT Salario FROM Impiegato 2299..1166..55.. UUNN CCAASSOO DDII SSTTUUDDIIOO -- JJOOIINN Un approccio piu drastico e quello di evitare il problema dell'estrazione della cronistoria del salario, riorganizzando lo schema per separare le informazioni di salario, titolo, e data di nascita (in seguito ignoreremo la data di nascita, per semplicita). Impiegato1 (Nome, Salario, DATA Inizio, DATA Fine) Impiegato2 (Nome, Titolo, DATA Inizio, DATA Fine) La tabella dell'Impiegato1 e la seguente. Nome Salario Inizio Fine ---- ------- ------ ---- Bob 60000 1993-01-01 1993-05-30 Bob 70000 1993-06-01 1993-12-31 Segue la tabella d'esempio Impiegato2. Nome Titolo Inizio Fine ---- ------ ------ ---- Bob Assistente Rettore 1993-01-01 1993-09-30 Bob Rettore 1993-10-01 1994-01-31 Bob Professore 1994-02-01 1994-12-31 Ora, con questa variazione, e facile ottenere l'informazione del salario di un impiegato. SELECT Salario, Inizio, Fine FROM Impiegato1 WHERE Nome = 'Bob' Ma che fare se l'Ufficio Personale volesse una tabella che contenga intervalli di salario e titoli ? (cioe, supponete che l'UP voglia una tabella simile a quella in Figura 1) Una possibilita e quella di stam- pare due tabelle, lasciando all'utente l'onere di immaginare le giuste combinazioni. Una seconda alternativa e quella di usare esclusivamente SQL. Sfortunatamente, quest'interrogazione deve riguardare un caso d'analisi relativamente a come ogni riga di Impiegato1 si sovrappone ad ogni riga di Impiegato2; sono possibili quattro casi. SELECT Impiegato1.Nome, Salario, Dipartimento, Impiegato1.Inizio, Impiegato1.Fine FROM Impiegato1, Impiegato2 WHERE Impiegato1.Nome = Impiegato2.Nome AND Impiegato2.Inizio <= Impiegato1.Inizio AND Impiegato1.Fine < Impiegato2.Fine UNION SELECT Impiegato1.Nome, Salario, Dipartimento, Impiegato1.Inizio, Impiegato2.Fine FROM Impiegato1, Impiegato2 WHERE Impiegato1.Nome = Impiegato2.Nome AND Impiegato1.Inizio >= Impiegato2.Inizio AND Impiegato2.Fine < Impiegato1.Fine AND Impiegato1.Inizio < Impiegato2.Fine UNION SELECT Impiegato1.Nome, Salario, Dipartimento, Impiegato2.Inizio, Impiegato1.Fine FROM Impiegato1, Impiegato2 WHERE Impiegato1.Nome = Impiegato2.Nome AND Impiegato2.Inizio > Impiegato1.Inizio AND Impiegato1.Fine < Impiegato2.Fine AND Impiegato2.Inizio < Impiegato1.Fine UNION SELECT Impiegato1.Nome, Salario, Dipartimento, Impiegato2.Inizio, Impiegato2.Fine FROM Impiegato1, Impiegato2 WHERE Impiegato1.Nome = Impiegato2.Nome AND Impiegato2.Inizio > Impiegato1.Inizio AND Impiegato2.Fine < Impiegato1.Fine Ottenere tutti i casi giusti e un compito arduo. In TSQL2, effettuando una join temporale, si ottiene proprio quanto ci si attende. SELECT Impiegato1.Nome, Salario, Dipartimento FROM Impiegato1, Impiegato2 WHERE Impiegato1.Nome = Impiegato2.Nome 2299..1166..66.. UUNN CCAASSOO DDII SSTTUUDDIIOO -- FFUUNNZZIIOONNII AAGGGGRREEGGAATTEE La prossima richiesta dell'Ufficio Personale e: qual e il salario massimo? Prima di aggiungere il tempo, cio era facile. SELECT MAX(Salario) FROM Impiegato Ora, dal momento che e stata archiviata la cronistoria del salario, vorremmo una cronistoria del massimo salario. Il problema, natural- mente, e che SQL non fornisce funzioni aggregate temporali. Il modo facile per farlo e quello di stampare l'informazione, e scorrerla man- ualmente alla ricerca dei massimi. Un'alternativa piu scaltra e quella di convertire l'interrogazione istantanea aggregata in una non-aggre- gata, e poi convertire quest'ultima in un'interrogazione temporale. L'interrogazione non-aggregata trova quei salari per i quali non esiste un salario maggiore degli altri. SELECT Salario FROM Impiegato AS I1 WHERE NOT EXISTS (SELECT * FROM Impiegato AS I2 WHERE I2.Salario > I1.Salario) Convertire questa query in un'interrogazione temporale non e affatto banale. Quella che segue e una delle strade possibili. CREATE TABLE Temp (Salario, Inizio, Fine ) AS SELECT Salario, Inizio, Fine FROM Impiegato; INSERT INTO Temp SELECT T.Salario, T.Inizio, I.Inizio FROM Temp AS T, Impiegato AS I WHERE I.Inizio >= T.Inizio AND I.Inizio < T.Fine AND I.Salario > T.Salario; INSERT INTO Temp SELECT T.Salario, T.Fine , I.Fine FROM Temp AS T, Impiegato AS I WHERE I.Fine > T.Inizio AND I.Fine <= T.Fine AND I.Salario > T.Salario; DELETE FROM Temp T WHERE EXISTS (SELECT * FROM Impiegato AS I WHERE ((T.Inizio => I.Inizio AND T.Inizio < I.Fine ) OR (I.Inizio >= T.Inizio AND I.Inizio < T.Fine )) AND I.Salario > T.Salario; Seguendo questa strada creiamo una tabella ausiliaria. Aggiungiamo a questa tabella il minor periodo di una sottrazione di periodi, ed il maggior periodo di una sottrazione di periodi. Poi cancelliamo tutti i periodi che si sovrappongono a qualche riga definita dalla subquery, e in seguito utilizziamo la precedente interrogazione con l'espres- sione NOT EXISTS. Infine generiamo il periodo massimo a partire dalla tabella ausiliaria, e lo facciamo nello stesso modo in cui e stato calcolato in precedenza. Come si puo immaginare, questo codice SQL e estremamente inefficiente da eseguire, viste le complesse inter- rogazioni nidificate con predicati irregolari. Una terza possibilita e quella di impiegare il meno possibile SQL, e calcolare invece il desiderato valore massimo della cronistoria, servendosi dei cursori in un linguaggio ospite. La query in TSQL2 e ancora una volta lineare ed intuitiva. SELECT MAX(Salario) FROM Impiegato 2299..1166..77.. RRIIAASSSSUUNNTTOO I dati variabili nel tempo sono gestiti dalla maggior parte delle applicazioni database. Il supporto del tempo di validita e assente in SQL. Molte ordinarie interrogazioni temporali sono difficilmente simulabili in SQL, oppure richiedono l'incorporazione di SQL in un linguaggio procedurale, a causa della mancanza di supporto alle tabelle con tempo di validita nel modello di dati di SQL, e nei suoi costrutti interrogativi. D'altra parte, abbiamo dimostrato come l'aggiunta del supporto del tempo di validita richieda poche variazioni all'implementazione del DBMS, e come possa semplificare in modo drammatico alcune interrogazioni e consentirne altre; abbiamo visto, inoltre, come cio possa consentire ottimizzazioni delle strutture di archiviazione, dei metodi di indicizzazione, e delle strategie di ottimizzazione che possono produrre significativi miglioramenti delle prestazioni. Con una nuova parte di SQL3, che gestisce la variazione nel tempo dell'informazione, possiamo iniziare a realizzare applicazioni mirate, consentendo a SQL3 di gestire i dati temporali in modo piu accorto. ---------------------------------------------------------------------------- Accredited Standards Committee* X3, Information Technology NEWS RELEASE Doc. No.: PR/96-0002 Reply to: Barbara Bennett presso bbennett@itic.nw.dc.us X3 Annuncia l'approvazione di un Nuovo Progetto, ISO/IEC 9075 Parte 7: SQL/Temporal Washington D.C., gennaio 1996 ---------------------------------------------------------------------------- -- Accredited Standards Committee X3, Information Technology, annuncia l'approvazione di un nuovo progetto di Supporto a SQL/Temporal, ISO/IEC 9075 Parte 7, con il lavoro realizzato dal Technical Committee X3H2, Database. L'intenzione, di questa proposta di standard, e quella di stabilire una nuova Parte dello standard SQL3 in costruzione, e cioe la Parte 7, SQL Temporale, che vuole estendere il linguaggio SQL per fornire supporto all'archiviazione, estrazione, e manipolazione dei dati temporali in un ambiente di database SQL. Il prossimo meeting X3H2 e fissato per 11-14 marzo 1996 in Kansas. Le richieste di informazioni, riguardo a questo progetto, dovrebbero essere inviate al Presidente di X3H2, Dr. Donald R. Deutsch, Sybase, Inc., Suite 800, 6550 Rock Spring Drive, Bethesda, MD 20817. Email: deutsch@sybase.com. Una primo giro di consultazioni, su possibili licenze e su altre ques- tioni pertinenti (copyright, marchi), e in corso. Si prega di fornire le informazioni del caso al Segretariato X3 presso 1250 Eye Street NW, Suite 200, Washington DC 20005. Email: x3sec@itic.nw.dc.us FAX: (202)638-4922. 2299..1177.. PPaarrttee 88 -- IISSOO//AANNSSII SSQQLL MMUULLTTIIMMEEDDIIAA ((SSQQLL//MMMM)) Un nuovo progetto di standardizzazione internazionale ISO/IEC, volto allo sviluppo di una libreria di classi SQL per applicazioni multimediali, e stato approvato agli inizi del 1993. Questa nuova attivita di standardizzazione, denominata SQL Multimedia (SQL/MM), mira a stabilire l'insieme delle definizioni dei tipi di dati astratti (ADT) di SQL, usando gli strumenti per la specifica e l'invocazione degli ADT, i quali sono forniti dalle specifiche del costruendo SQL3. SQL/MM si propone di standardizzare librerie di classi ad uso di ambienti scientifici ed ingegneristici, e per elaborazione di documenti e di metodi per la gestione di oggetti multimediali come immagini, suoni, animazione, musica, e video. Verosimilmente SQL/MM fornira, al linguaggio SQL, un collegamento agli oggetti multimediali definiti da altri organismi di standardizzazione JTC1 (ad es. SC18 per i documenti, SC24 per le immagini, e SC29 per fotografie e filmati). Il Piano del Progetto di SQL/MM, indica che sara uno standard composito, consistente di un certo numero di parti sviluppate indipendentemente. La Parte 1 sara una struttura di base, che specifica come le altre parti devono essere realizzate. Ognuna delle altre parti sara dedicata ad uno specifico pacchetto applicativo SQL. La seguente struttura delle Parti SQL/MM esiste dall'agosto 1994: +o Parte 1: Framework (Struttura), Una descrizione non tecnica di come il documento e strutturato. +o Parte 2: Metodi Full Text e ADT per elaborazione di dati in forma di testo. Circa 45 pagine. +o Parte 3: Metodi spaziali e ADT per gestione di dati spaziali. Sono circa 200 pagine, realizzate con la collaborazione attiva di esperti in elaborazione dei Dati Spaziali, provenienti da 3 organismi nazionali. +o Parte 4: Metodi di impiego generale e ADT per numeri complessi; Le funzionalita descritte comprendono funzioni trigonometriche ed esponenziali, vettori, insiemi, ecc. Attualmente consta di circa 90 pagine. Esiste un certo numero di tentativi di standardizzazione nell'area delle Informazioni Spaziali e Geografiche: +o ANSI X3L1 - Sistemi di informazione geografica. Mark Ashworth, di Unisys, e il raccordo tra X3L1 e ANSI X3H2. E anche curatore delle parti 1, 3, e 4 della bozza di SQL/MM. +o ISO TC 211 - Informazione geografica/geomatica 3300.. SSuuppppoorrttoo tteeccnniiccoo ppeerr PPoossttggrreeSSQQLL Questo e l'ordine da seguire per la risoluzione di problemi: +o Alle vostre domande potete trovare risposta presso gli online manuals +o Inserite una parola chiave nel search box +o Pubblicate le vostre domande nella mailing list Se dovete porre domande di natura tecnica, o incontrate qualsiasi problema, potete inviare un'e-mail a: +o pgsql-questions@postgresql.org +o Newsgroup +o Newsgroup +o Newsgroup +o Newsgroup +o Newsgroup +o Altre Mailing list Otterrete risposte via e-mail entro un giorno. La base di utenti dei prodotti internet e molto vasta, inoltre gli utenti assistono altri utenti, percio internet sara in grado di fornire facilmente assistenza tecnica a miliardi di utenti. L'assistenza via Email e molto piu pratica di quella telefonica, poiche potete fare il "copia e incolla" dei messaggi di errore, dell'output del programma ecc.. e potete facilmente comunicare con mailing list/newsgroup. 3300..11.. SSuuppppoorrttoo ccoommmmeerrcciiaallee L'organizzazione di PostgreSQL fornisce, dietro pagamento, assistenza tecnica alle aziende; le entrate saranno usate per il mantenimento di vari siti mirror (web e ftp) intorno al mondo. Inoltre i proventi saranno anche impiegati per la produzione di documentazione stampata, guide, manuali, che aiuteranno gli utenti. Il sito dell'organizzazione e Un'altra azienda, chiamata 'Great Bridge Corporation', effettua sviluppo, vendita e assistenza di PostgreSQL. Il loro sito e . E una societa per azioni fondata della 'Landmark Communications corp' ed altre imprese di capitale, volta esclusivamente alla vendita di PostgreSQL ed alla fronitura di assistenza a grandi imprese ed aziende intorno al mondo. Potete ottenere assistenza da aziende di consulenza professionale come RedHat, Anderson, WGS (Work Group Solutions). Contattateli per richiedere assistenza, poiche hanno una buonissima esperienza in "C", "C++" (PostgreSQL e scritto in "C") - +o Redhat Corp - Database consulting division +o Work Group Solutions +o Anderson Consulting 3311.. AAssppeettttii iimmpprreennddiittoorriiaallii eedd eeccoonnoommiiccii I produttori di database commerciali pagano molti tributi come la tassa federale, quella di stato, di vendita, di impiego, di sicurezza sociale, di assistenza medica agli impiegati, oltre ai benefici per gli impiegati, e i costi di marketing e pubblicitari. Tutti questi costi non sono diretti allo sviluppo del database, e non incrementano la qualita o la tecnologia del database. Quanto acquistate un database commerciale, buona parte delle entrate e destinata a spese extra come le tasse, e le spese di bilancio per i costi R&S del database (Ricerca e Sviluppo, n.d.t.). Le aziende dei database commerciali devono pagare anche per i loro edifici/beni immobiliari, e per l'acquisto di macchine Unix, per la loro installazione e manutenzione. Tutti questi costi vengono scaricati sui clienti. PostgreSQL e superiore ai database commerciali perche non c'e alcuna tassa per un prodotto realizzato in internet. Un vastissimo gruppo di persone contribuisce allo sviluppo di PostgreSQL. Facciamo il caso ipotetico, ad esempio, che negli U.S.A. esista un milione di aziende, e che ogni azienda versi circa 10 $ (contribuendo cosi allo sviluppo di PostgreSQL); cosi facendo ogni compagnia ricaverebbe dieci milioni di dollari!! Questa e la GGRRAANNDDEE MMAAGGIIAA dello sviluppo di software su internet. Attualmente il codice sorgente di PostgreSQL e di circa 250'000 righe di codice in "C", "C++". Se il costo di ogni riga di codice "C" e di 2 $, il valore di PostgreSQL e di circa 500'000 $ (mezzo milione di dollari!). Molte aziende hanno gia sviluppato per proprio conto grandi quantita di codice "C", "C++". Se incorporassero questo codice nel sorgente di PostgreSQL, e collaborassero con altre aziende su internet, si otterrebbe un grande beneficio per tutti, e cio permetterebbe di risparmiare tempo e fatica. 3322.. LLiissttaa ddii aallttrrii ddaattaabbaassee Segue un elenco di altri database SQL per Unix, Linux. +o Fate clic e andate alle Applicazioni->database. +o Fate clic e andate alle Applicazioni->database. +o Risorse sui database . Sono state scritte da Linas Vepstas: linas@fc.net +o Lista di database liberi/gratuiti +o Lista di RDBMS di Browne scritta da Christopher B. Browne cbbrowne@hex.net +o Lista SAL di DBMS relazionali +o Lista SAL di DBMS orientati agli oggetti +o Lista SAL di utilita e altri database +o ACM SIGMOD indice di software database disponibile pubblicamente 3333.. SSuuggggeerriimmeennttii ppeerr llaa rriicceerrccaa nneell WWoorrlldd WWiiddee WWeebb ddii IInntteerrnneett Internet e vastissima, contiene una grande quantita di software, ed un oceano di informazioni sommerse. Sta crescendo col tasso del 300% annuale in tutto il mondo. Si stima che esistano circa 10 milioni di siti Web in tutto il mondo! Per ricercare un'informazione dovreste utilizzare i motori di ricerca come "Yahoo", "Netscape", "Lycos" ecc. Recatevi su Yahoo, e fate click su search. Usate opzioni filtranti per restringere i vostri criteri di ricerca. L'azione di ricerca predefinita e "Intelligent search", che e la piu generale e lista tutte le possibilita. Fate click su "Options" per scegliere ricerche per frase esatta "EXACT phrase", ricerche con "AND", "OR", ecc.. In questo modo dovreste trovare molto piu rapidamente l'informazione di cui avete bisogno. Inoltre, nel menu search, ci sono pulsanti opzionali per le ricerche in Usenet, sui siti Web ed i siti Yahoo. 3344.. CCoonncclluussiioonnee Dopo aver ricercato tra tutti i database ggrraattuuiittii disponibili, ed il cui codice sorgente sia libero, SOLO PostgreSQL e risultato il PIU maturo, il piu largamente usato e robusto database RDBMS SQL (orientato agli oggetti) libero/gratuito del mondo. PostgreSQL esercita una forte attrazione, poiche una gran mole di lavoro e gia stata fatta. Esso dispone di ODBC e JDBC, usando i quali e possibile scrivere applicazioni indipendenti dai database. Le applicazioni scritte in PostgreSQL, usando i driver ODBC e JDBC, sono facilmente portabili ad altri database come Oracle, Sybase e Informix, e viceversa. Potreste domandarvi "Ma perche PostgreSQL ?" La risposta e che, poiche sviluppare un sistema di database da zero richiede molto tempo, e piu sensato scegliere un sistema di database che soddisfi le seguenti condizioni: Un sistema di database +o Il cui codice sorgente sia disponibile: deve essere un sistema con 'codice open source' +o Che non abbia licenza vincolante, con nessun vincolo di proprieta connesso +o Che possa essere distribuito su internet +o Che sia stato sviluppato per svariati anni. +o Che soddisfi standard come SQL 92 (e SQL 89) ISO/ANSI +o Che possa soddisfare necessita future come SQL 3 (SQL 98) +o Che abbia funzionalita avanzate "PostgreSQL" soddisfa proprio tutte queste condizioni, ed e un software adatto per questa situazione. Potreste dire che 'PostgreSQL' e un nome davvero insolito (Si pronuncia Post-gres- chiu-el, e non Postgre-es-chiu-el. E un nome davvero poco usuale, ed e molto difficile da pronunciare). Ma la mia risposta e: perche cambiare il nome? Questo mondo sara per sempre innamorato di "PostgreSQL" !! e tutta la gente del mondo ama questo nome!! 3355.. FFAAQQ -- DDoommaannddee ssuu PPoossttggrreeSSQQLL Riferitevi all'ultima versione delle FAQ su argomenti generali, su Linux e Irix presso +o 3366.. AAllttrrii ffoorrmmaattii ddii qquueessttoo ddooccuummeennttoo Questo documento e diffuso in 11 diversi formati, e precisamente: DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF (Rich Text Format), testo puro, pagine di manuale Unix e SGML. +o Potete scaricare questo documento HOWTO come semplice file tar nei formati HTML, DVI, Postscript o SGML, da: e +o Il formato di solo testo e presso: e +o Tutto il documento, in formato HTML, si trova in: +o Traduzioni in altri linguaggi come Francese, Tedesco, Spagnolo, Cinese, Giapponese, sono in e Qualsiasi vostro contributo, per la traduzione in altri linguaggi, e benvenuto. Il documento e stato scritto usando uno strumento chiamato "SGML- Tools", che puo essere trovato presso: . Compilando il sorgente potrete dare comandi come i seguenti +o sgml2html databasehowto.sgml (per generare file html) +o sgml2rtf databasehowto.sgml (per generare file RTF) +o sgml2latex databasehowto.sgml (per generare file latex) I documenti LaTeX possono essere convertiti in file PDF semplicemente; dapprima si produce un output Postscript, usando ssggmmll22llaatteexx (e dvips), poi si ridirige l'output attraverso il comando ddiissttiillll di Acrobat ( ), come segue: ______________________________________________________________________ bash$ man sgml2latex bash$ sgml2latex nomefile.sgml bash$ man dvips bash$ dvips -o nomefile.ps nomefile.dvi bash$ distill nomefile.ps bash$ man ghostscript bash$ man ps2pdf bash$ ps2pdf input.ps output.pdf bash$ acroread output.pdf & ______________________________________________________________________ Oppure potete usare il comando Ghostscript ppss22ppddff. ps2pdf e un prodotto con quasi tutte le funzionalita di Adobe Acrobat Distiller: converte file PostScript in file Portable Document Format (PDF). ppss22ppddff e implementato come un piccolissimo comando script (un file batch) che aziona Ghostscript, selezionando un "dispositivo di output" speciale chiamato ppddffwwrriittee. Per poter usare ps2pdf, il dispositivo pdfwrite deve essere stato incluso nel makefile quando Ghostscript e stato compilato; leggete la documentazione sulla compilazione di Ghostscript per conoscere i dettagli. Questo documento howto e situato presso: +o Potete trovare questo documento anche presso i seguenti siti mirror: +o +o +o +o +o Altri siti mirror a voi vicini (secondo il vostro indirizzo di rete) possono essere trovati presso scegliete un sito e recatevi direttamente nella directory /LDP/HOWTO/PostgreSQL- HOWTO.html Per visualizzare il documento in formato dvi, usate il programma xdvi. Il programma xdvi e posizionato nel pacchetto tetex-xdvi*.rpm di Redhat Linux, che si trova seguendo il percorso dei pulsanti di menu ControlPanel | Applications | Publishing | TeX . Per leggere il documento dvi date il comando: xdvi -geometry 80x90 howto.dvi man xdvi E ridimensionate la finestra con il mouse. Per navigare nel documento usate i tasti freccia, i tasti Page Up, Page Down, e potete usare anche i tasti delle lettere 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' per muovervi su, giu, al centro, nella pagina successiva, nella prece- dente, ecc. Per disattivare il menu degli utenti esperti premete 'x'. Potete leggere i file postscript usando il programma 'gv' (ghostview), oppure potete usare 'ghostscript'. Il programma ghostscript e nel pacchetto ghostscript*.rpm; il programma gv e nel pacchetto gv*.rpm di Redhat Linux; Possono essere trovati seguendo il percorso dei pulsanti di menu ControlPanel | Applications | Graphics . Il programma gv e di uso molto piu immediato di ghostscript. Inoltre ghostscript e gv sono disponibili su altre piattaforme come OS/2, Windows 95 e NT, e potete quindi visualizzare questi documenti anche su queste piattaforme. +o Prelevate ghostscript per Windows 95, OS/2, e per tutti i sistemi operativi da Per leggere i documenti postscript date il comando: gv howto.ps ghostscript howto.ps AATTTTEENNZZIIOONNEE:: Questo documento e voluminoso e, se stampato, risultera di circa 113 pagine (postscript). Potete leggere il documento in formato HTML usando Netscape Navigator, Microsoft Internet explorer, il Web browser Redhat Baron, o uno qualsiasi degli altri 10 browser web. Potete leggere l'output latex e LyX usando LyX, un'interfaccia per X- Window al latex. 3377.. DDiirriittttoo dd''aauuttoorree ee lliicceennzzaa 3377..11.. CCooppyyrriigghhtt aanndd LLiicceennssee ((iinn iinngglleessee)) Copyright Al Dev (Alavoor Vasudevan) 1997-2000. License policy is GNU/GPL as per LDP (Linux Documentation project). LDP is a GNU/GPL project. Additional restrictions are - you must retain the author's name, email address and this copyright notice on all the copies. If you make any changes or additions to this document then you should intimate all the authors of this document. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall the author/authors of this document be liable for any damages whatsoever (including without limitation, special, incidental, consequential, or direct/indirect damages for personal injury, loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of this document. Author/authors offers no warranties or guarantees on fitness, usability, merchantability of this document. Brands, companies and product names mentioned in this document are trademarks or registered trademarks of their respective holders. Please refer to individual copyright notices of brands, companies and products mentioned in this document. It is your responsibility to read and understand the copyright notices of the organisations/companies/products/authors mentioned in this document before using their respective information. 3377..22.. CCooppyyrriigghhtt aanndd LLiicceennssee ((iinn iittaalliiaannoo)) _n_._d_._t_. _- _L_'_u_n_i_c_a _l_i_c_e_n_z_a _v_a_l_i_d_a _e _q_u_e_l_l_a _o_r_i_g_i_n_a_l_e _i_n _l_i_n_g_u_a _i_n_g_l_e_s_e_. _L_a _t_r_a_d_u_z_i_o_n_e _c_h_e _s_e_g_u_e _n_o_n _h_a_, _q_u_i_n_d_i_, _u_n _r_e_a_l_e _v_a_l_o_r_e _l_e_g_a_l_e_. Copyright Al Dev (Alavoor Vasudevan) 1997-2000. La licenza scelta e la GNU/GPL, come per LDP (Linux Documentation project). LDP e un progetto GNU/GPL. Restrizioni aggiuntive: dovete mantenere il nome dell'autore, il suo indirizzo email e questa nota sul copyright, su tutte le copie. Se cambiate o aggiungete qualcosa a questo documento, dovete dichiarare tutti gli autori di questo documento. NESSUNA RESPONSABILITA PER DANNI INDIRETTI. In nessun caso l'autore/gli autori (e il traduttore - n.d.t.) di questo documento saranno responsabili per qualsiasi danno sorga in seguito all'uso di questo documento (includendo, senza alcuna limitazione, danni speciali, accidentali, derivanti o diretti/indiretti per lesioni personali, perdite di profitti in attivita economica, interruzione dell'attivita economica, perdita di informazioni relative alla propria attivita economica, o qualsiasi altra perdita pecuniaria). L'autore/gli autori (e il traduttore - n.d.t.) non offrono alcuna garanzia o impegno circa l'idoneita, l'utilizzabilita, la commerciabilita di questo documento. Marchi, compagnie e nomi dei prodotti citati in questo documento, sono marchi registrati dei rispettivi proprietari. Ci si riferisca alle notifiche di copyright individuali dei marchi, delle compagnie e dei prodotti citati in questo documento. E vostra responsabilita la lettura e la comprensione delle notifiche di copyright di organizzazioni/compagnie/prodotti/autori citati in questo documento, prima di utilizzare le informazioni che li riguardano. AA.. AAppppeennddiiccee AA -- SSiinnttaassssii ddii AANNSSII//IISSOO SSQQLL 11999922 Questo file contiene una rappresentazione, trasversale ed alquanto profonda, degli alberi sintattici del BNF per il linguaggio realizzato intorno al 27-AUG-1992 11:03:41.64. La versione specifica del BNF qui acclusa e: solo ANSI, solo SQL2. ::= | ::= | | ::= | ::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= | | | | | | | | | | | | | | | | | | | | ::= !! (space character in character set in use) ::= " ::= % ::= & ::= ' ::= ( ::= ) ::= * ::= + ::= , ::= - ::= . ::= / ::= : ::= ; ::= < ::= = ::= > ::= ? ::= _ ::= | ::= | ::= [ ::= ] ::= | ::= | | | | | ::= ::= [ ( | )... ] ::= (!! See the Syntax Rules) ::= | ::= | ::= ABSOLUTE | ACTION | ADD | ALL | ALLOCATE | ALTER | AND | ANY | ARE | AS | ASC | ASSERTION | AT | AUTHORIZATION | AVG | BEGIN | BETWEEN | BIT | BIT_LENGTH | BOTH | BY | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER | CHAR_LENGTH | CHARACTER_LENGTH | CHECK | CLOSE | COALESCE | COLLATE | COLLATION | COLUMN | COMMIT | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS | CONTINUE | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS | CURRENT | CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DEFERRABLE | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR | DIAGNOSTICS | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP | ELSE | END | END-EXEC | ESCAPE | EXCEPT | EXCEPTION | EXEC | EXECUTE | EXISTS | EXTERNAL | EXTRACT | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FULL | GET | GLOBAL | GO | GOTO | GRANT | GROUP | HAVING | HOUR | IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INPUT | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT | INTERVAL | INTO | IS | ISOLATION | JOIN | KEY | LANGUAGE | LAST | LEADING | LEFT | LEVEL | LIKE | LOCAL | LOWER | MATCH | MAX | MIN | MINUTE | MODULE | MONTH | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO | NOT | NULL | NULLIF | NUMERIC | OCTET_LENGTH | OF | ON | ONLY | OPEN | OPTION | OR | ORDER | OUTER | OUTPUT | OVERLAPS | PAD | PARTIAL | POSITION | PRECISION | PREPARE | PRESERVE | PRIMARY | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC | READ | REAL | REFERENCES | RELATIVE | RESTRICT | REVOKE | RIGHT | ROLLBACK | ROWS | SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION | SESSION_USER | SET | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE | SQLERROR | SQLSTATE | SUBSTRING | SUM | SYSTEM_USER | TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIM | TRUE | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER | USING | VALUE | VALUES | VARCHAR | VARYING | VIEW | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE | YEAR | ZONE ::= ADA | C | CATALOG_NAME | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME | CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION | COMMITTED | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME | CONSTRAINT_SCHEMA | CURSOR_NAME | DATA | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION | FORTRAN | LENGTH | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS | NAME | NULLABLE | NUMBER | PASCAL | PLI | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | ROW_COUNT | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN | TABLE_NAME | TYPE | UNCOMMITTED | UNNAMED ::= | ::= [ [ ] ] | ::= ... ::= E ::= ::= ::= [ ] ::= | ::= N [ ... ] [ ( ... [ ... ] )... ] ::= | ::= !! (See the Syntax Rules.) ::= ::= ( | | )... ::= [ ... ] ::= [...] ::= | ::= !! (implementation-defined end-of-line indicator) ::= B [ ... ] [ ( ... [ ... ] )... ] ::= 0 | 1 ::= X [ ... ] [ ( ... [ ... ] )... ] ::= | A | B | C | D | E | F | a | b | c | d | e | f ::= | |