<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Pianeta PostgreSQL</title>
	<link rel="self" href="http://www.planetpostgresql.it/atom.xml"/>
	<link href="http://www.planetpostgresql.it/"/>
	<id>http://www.planetpostgresql.it/atom.xml</id>
	<updated>2012-02-09T08:00:04+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">Quando l'elefante si fa uno spuntino...</title>
		<link href="http://fluca1978.blogspot.com/2012/01/quando-lelefante-si-fa-uno-spuntino.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-2730053136729119815</id>
		<updated>2012-01-28T10:41:11+00:00</updated>
		<content type="html">Una immagine veramente significativa che ho trovato per caso e che è attribuita a Command Prompt.</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PGDay 2011 @ BSD Magazine</title>
		<link href="http://fluca1978.blogspot.com/2012/01/pgday-2011-bsd-magazine.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-1138821339602533987</id>
		<updated>2012-01-21T13:05:48+00:00</updated>
		<content type="html">Nel numero di Gennaio 2012 della rivista BSD Magazine (dedicata ovviamente al mondo BSD) è stato pubblicato un mio breve resoconto del PGDay 2011. Spero che questo contribuisca a fare crescere ancora di piu' il PGDay Italiano e ITPUG.</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PGDay 2011: un evento fantastico!</title>
		<link href="http://fluca1978.blogspot.com/2011/11/pgday-2011-un-evento-fantastico.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-8242662133415848869</id>
		<updated>2011-11-26T18:04:41+00:00</updated>
		<content type="html">Il PGDay 2011 è stato un indiscusso successo. La conferenza, tornata a Prato (sede di origine dei PGDay) dopo 2 anni di assenza in cui ci si era spostati rispettivamente a Pisa e Roma, si è svolta nel sempre bello e accogliente palazzo della Monash University, che con la sua eleganza e l'ottima organizzazione interna ha fatto sentire ogni partecipante subito a casa. Il numero di partecipanti è</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="it">
		<title type="html">Share</title>
		<link href="http://diegocinelli.wordpress.com/2011/11/09/programma-pgday-2011/"/>
		<id>http://diegocinelli.wordpress.com/?p=276</id>
		<updated>2011-11-09T16:28:32+00:00</updated>
		<content type="html">&lt;p&gt;È stato finalmente pubblicato e reso noto il programma del PGDay, che prevede due percorsi paralleli, uno di carattere generale e per &lt;acronym title=&quot;Database administrator&quot;&gt;DBA&lt;/acronym&gt;, l&amp;#8217;altro per sviluppatori.&lt;/p&gt;
&lt;p&gt;Per maggiori informazioni: &lt;a href=&quot;http://2011.pgday.it/programma-talks&quot;&gt;http://2011.pgday.it/programma-talks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ospite d&amp;#8217;eccezione sarà Magnus Hagander, membro del Core Team di Postgres e presidente dell&amp;#8217;associazione PostgreSQL Europe, che terrà il &amp;#8220;Keynote speech&amp;#8221; sulle novità di PostgreSQL 9.1.&lt;/p&gt;
&lt;p&gt;Altri ospiti della comunità internazionale e del team di sviluppo saranno Simon Riggs, che presenterà due talk (uno sulle differenze fra PostgreSQL ed database NoSQL, l&amp;#8217;altro sul futuro di PostgreSQL) e Andreas Scherbaum, che parlerà di Data warehousing con Postgres.&lt;/p&gt;
&lt;p&gt;Un&amp;#8217;esperienza importante sull&amp;#8217;adozione del software open-source che verrà discussa nella track generale è quella di una pubblica amministrazione italiana importante come CSI Piemonte. Altri argomenti interessanti per database administrator saranno disaster recovery, alta disponibilità (HA), Serializable Snapshot Isolation Level (introdotto in 9.1) e infine l&amp;#8217;utilizzo di PostgreSQL nel cloud di Amazon EC2.&lt;/p&gt;
&lt;p&gt;La track per sviluppatori si presenta interventi sia su importanti novità introdotte in Postgres 9.1 (come tabelle esterne, estensioni, CTE scrivibili), che su argomenti di Business Intelligence (ETL con Kettle), sicurezza e protezione delle password, memorizzazione di contenuti binari nel database. Non mancherà un approfondimento sull&amp;#8217;utilizzo di Perl e Node.js per l&amp;#8217;interrogazione dei database.&lt;/p&gt;
&lt;p&gt;Infine, è stata riservata una sessione speciale per i &amp;#8220;lightning talk&amp;#8221;, che danno la possibilità a tutti i partecipanti di diventare protagonisti per 5 minuti (tassativi), salendo sul palco e condividendo le proprie esperienze e i propri progetti con Postgres.&lt;/p&gt;
&lt;p&gt;A margine della manifestazione (con data e orario da decidersi), si terrà l&amp;#8217;assemblea dei soci di ITPUG e l&amp;#8217;elezione del consiglio direttivo.&lt;/p&gt;
&lt;p&gt;Si invitano i soci che intendono partecipare a giungere a Prato nella giornata di Giovedì e a trattenersi fino al sabato mattina, per partecipare agli eventi sociali che verranno organizzati.&lt;/p&gt;
&lt;p&gt;&lt;!-- AddToAny BEGIN --&gt;&lt;br /&gt;
&lt;a class=&quot;a2a_dd&quot; href=&quot;http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdiegocinelli.wordpress.com%2F2011%2F11%2F09%2Fprogramma-pgday-italiano%2F&amp;linkname=Programma%20PgDay%202011&quot;&gt;&lt;img src=&quot;http://static.addtoany.com/buttons/share_save_171_16.png&quot; width=&quot;171&quot; height=&quot;16&quot; border=&quot;0&quot; alt=&quot;Share&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;!-- AddToAny END --&gt;&lt;/p&gt;
&lt;br /&gt;Filed under: &lt;a href=&quot;http://diegocinelli.wordpress.com/category/informatica/&quot;&gt;Informatica&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/category/open-source/&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/category/postgresql/&quot;&gt;PostgreSQL&lt;/a&gt; Tagged: &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/database/&quot;&gt;database&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/itpug/&quot;&gt;ITPUG&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/magnus-hagander/&quot;&gt;Magnus Hagander&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/pgday/&quot;&gt;pgday&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/pgday-2011/&quot;&gt;pgday 2011&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgres/&quot;&gt;postgres&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgresql/&quot;&gt;PostgreSQL&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgresql-day/&quot;&gt;PostgreSQL Day&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/simon-riggs/&quot;&gt;Simon Riggs&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/diegocinelli.wordpress.com/276/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/diegocinelli.wordpress.com/276/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=diegocinelli.wordpress.com&amp;blog=8228143&amp;post=276&amp;subd=diegocinelli&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Cinelli Diego</name>
			<uri>http://diegocinelli.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Blog di Diego Cinelli » PostgreSQL</title>
			<subtitle type="html">Vari articoli che parlano di me e del mio mondo :)</subtitle>
			<link rel="self" href="http://diegocinelli.wordpress.com/category/postgresql/feed/"/>
			<id>http://diegocinelli.wordpress.com/category/postgresql/feed/</id>
			<updated>2011-11-09T16:40:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PGday 2011: programma on-line</title>
		<link href="http://fluca1978.blogspot.com/2011/11/pgday-2011-programma-on-line.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-9208867020900234629</id>
		<updated>2011-11-08T14:30:02+00:00</updated>
		<content type="html">E' finalmente disponibile il programma del PGDay 2011!Anche quest'anno ci saranno ospiti della comunità internazionale (Magnus Hagander, Simon Riggs, Andreas Scherbaum) e della comunità nazionale, oltre ovviamente a tutto lo staff di ITPug.</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PGDay 2011: pubblicato il programma</title>
		<link href="http://www.psql.it/?q=node/957"/>
		<id>http://www.psql.it/957 at http://www.psql.it</id>
		<updated>2011-11-08T10:25:48+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;&amp;Egrave; stato finalmente pubblicato e reso noto il programma del PGDay, che prevede due percorsi paralleli, uno di carattere generale e per DBA, l'altro per sviluppatori.&lt;br /&gt;&lt;br /&gt;Per maggiori informazioni:&amp;nbsp;&lt;a target=&quot;_blank&quot;&gt;&lt;p&gt;&lt;a href=&quot;&gt;&lt;p&gt;&lt;a href=&quot;&gt;&lt;p&gt;&lt;a href=&quot;&gt;&lt;p&gt;&lt;a href=&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://www.psql.it/?q=node/957&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>psql.it</name>
			<uri>http://www.psql.it</uri>
		</author>
		<source>
			<title type="html">PSQL.it - Comunita' Italiana utenti e sviluppatori PostgreSQL</title>
			<subtitle type="html">Comunita' Italiana utenti e sviluppatori PostgreSQL</subtitle>
			<link rel="self" href="http://www.psql.it/?q=rss.xml"/>
			<id>http://www.psql.it/?q=rss.xml</id>
			<updated>2012-01-23T09:55:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PGDay 2011: pubblicato il programma</title>
		<link href="http://blog.2ndquadrant.it/it/2011/11/pgday-italiano-2011-pubblicato-il-programma.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.182</id>
		<updated>2011-11-08T08:48:34+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;&lt;em&gt;Reso noto il programma del PostgreSQL Day Italiano 2011, la conferenza nazionale sul database open-source PostgreSQL, giunta alla quinta edizione, che si svolgerà a Prato il 25 novembre prossimo.
Previste due track parallele e la partecipazione di importanti membri della comunità internazionale.&lt;/em&gt;&lt;/p&gt;

        &lt;p&gt;È stato finalmente pubblicato e reso noto il &lt;a href=&quot;http://2011.pgday.it/programma-talks&quot;&gt;programma del PGDay&lt;/a&gt;, che prevede due percorsi paralleli, uno di carattere generale e per DBA, l'altro per sviluppatori.&lt;/p&gt;

&lt;p&gt;Ospite d'eccezione sarà &lt;strong&gt;Magnus Hagander&lt;/strong&gt;, membro del Core Team di Postgres e presidente dell'associazione PostgreSQL Europe, che terrà il &quot;Keynote speech&quot; sulle novità di PostgreSQL 9.1.&lt;/p&gt;

&lt;p&gt;Altri ospiti della comunità internazionale e del team di sviluppo saranno &lt;strong&gt;Simon Riggs&lt;/strong&gt;, che presenterà due talk (uno sulle differenze fra PostgreSQL ed database NoSQL, l'altro sul futuro di PostgreSQL) e Andreas Scherbaum, che parlerà di Data warehousing con Postgres.&lt;/p&gt;

&lt;p&gt;Un'esperienza importante sull'adozione del software open-source che verrà discussa nella track generale è quella di una pubblica amministrazione italiana importante come &lt;strong&gt;CSI Piemonte&lt;/strong&gt;. Altri argomenti interessanti per database administrator saranno &lt;strong&gt;disaster recovery&lt;/strong&gt;, &lt;strong&gt;alta disponibilità&lt;/strong&gt; (HA), &lt;strong&gt;Serializable Snapshot Isolation Level&lt;/strong&gt; (introdotto in 9.1) e infine l'utilizzo di PostgreSQL nel &lt;strong&gt;cloud di Amazon EC2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La track per sviluppatori presenta interventi sia su importanti &lt;strong&gt;novità introdotte in Postgres 9.1&lt;/strong&gt; (come tabelle esterne, estensioni, CTE scrivibili), che su argomenti di &lt;strong&gt;Business Intelligence&lt;/strong&gt; (ETL con Kettle), &lt;strong&gt;sicurezza e protezione delle password&lt;/strong&gt;, &lt;strong&gt;memorizzazione di contenuti binari&lt;/strong&gt; nel database. Non mancherà un approfondimento sull'utilizzo di Perl e Node.js per l'interrogazione dei database.&lt;/p&gt;

&lt;p&gt;Infine, è stata riservata una sessione speciale per i &quot;&lt;strong&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Lightning_Talk&quot;&gt;lightning talk&lt;/a&gt;&lt;/strong&gt;&quot;, che danno la possibilità a tutti i partecipanti di diventare protagonisti per 5 minuti (tassativi), salendo sul palco e condividendo le proprie esperienze e i propri progetti con Postgres.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Il PGDay 2011 si propone di promuovere e divulgare l'utilizzo di PostgreSQL come strumento libero e completo per la gestione di basi di dati&lt;/strong&gt;, una valida alternativa a soluzioni proprietarie per la rimozione del &lt;strong&gt;vendor lock-in&lt;/strong&gt; e capace di &lt;strong&gt;ridurre il costo di proprietà totale&lt;/strong&gt; (TCO).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://2011.pgday.it/registrazione&quot;&gt;Per partecipare all'evento è necessario registrarsi online&lt;/a&gt; direttamente dal sito.&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PgTAP, l'importanza dei test in PostgreSQL</title>
		<link href="http://blog.2ndquadrant.it/it/2011/10/pgtap-limportanza-dei-test-in.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.176</id>
		<updated>2011-10-28T14:27:23+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;TAP (Test Anything Protocol) è una semplice interfaccia per i test basata su file di testo.
TAP nasce col Perl, ma ad oggi ha implementazioni per i più famosi linguaggi di programmazione.
PgTAP è l'implementazione di TAP in PostgreSQL.&lt;/p&gt;

        &lt;p&gt;Non mi dilungherò a descrivere il motivo per cui i test sono importanti, specialmente nell'ottica dello &lt;em&gt;sviluppo agile&lt;/em&gt;, che 2ndQuadrant adotta con successo.&lt;/p&gt;

&lt;p&gt;PgTAP, sfruttando una sintassi &lt;em&gt;estremamente semplice&lt;/em&gt;, permette di testare a fondo il proprio database.&lt;/p&gt;

&lt;p&gt;Presupponendo che PgTAP sia stato installato correttamente in un database chiamato &lt;code&gt;pgtap_db&lt;/code&gt;, procediamo con la creazione di alcuni oggetti sui quali eseguiremo dei test.&lt;/p&gt;

&lt;p&gt;Per informazioni circa l'installazione di PgTAP in un determinato database, rimando alla &lt;a href=&quot;http://pgtap.org/documentation.html#Installation&quot;&gt;documentazione ufficiale&lt;/a&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ psql -c &quot;CREATE TABLE foo AS SELECT generate_series(1,5) AS x&quot; pgtap_db
SELECT 1
$ psql -c &quot;CREATE SCHEMA nuovo_schema&quot; pgtap_db
CREATE SCHEMA
$ psql -c &quot;CREATE FUNCTION say_hello() RETURNS TEXT LANGUAGE SQL AS $$SELECT 'Hello World'::TEXT$$;&quot; pgtap_db
CREATE FUNCTION
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h2&gt;Tipi di utilizzo&lt;/h2&gt;

&lt;p&gt;PgTAP può essere utilizzato per testare qualsiasi aspetto del database.
In particolare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Presenza di oggetti nel database&lt;/li&gt;
&lt;li&gt;Controllo dell'esecuzione di query&lt;/li&gt;
&lt;li&gt;Controllo dei risultati di una query&lt;/li&gt;
&lt;li&gt;Altro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Descriverò in ordine questi aspetti e poi vedremo un esempio pratico.&lt;/p&gt;

&lt;h3&gt;Presenza di oggetti nel database&lt;/h3&gt;

&lt;p&gt;Si può controllare l'esistenza di qualsiasi tipo di oggetto nel database.
Questo tipo di funzioni ha più o meno la stessa firma, in particolare:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;*tipo_di_oggetto*_are( [schema,]  [,description] )
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Dove:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;&lt;em&gt;tipo_di_oggetto&lt;/em&gt;&lt;/code&gt; è la categoria di oggetti di cui vogliamo testare la presenza,
ad esempio tabelle (&lt;strong&gt;tables&lt;/strong&gt;), funzioni (&lt;strong&gt;functions&lt;/strong&gt;), schemi (&lt;strong&gt;schemas&lt;/strong&gt;) ecc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;schema&lt;/code&gt; definisce lo schema in cui gli oggetti &lt;em&gt;devono&lt;/em&gt; trovarsi, questo parametro ha senso solo se non si
sta testando la presenza dello schema stesso.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;&lt;em&gt;array_di_nomi&lt;/em&gt;&lt;/code&gt; è un array contenente i nomi degli oggetti che devono essere presenti perchè il test abbia successo&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Importante:
Per avere successo, &lt;em&gt;tutti&lt;/em&gt; gli elementi specificati nell'array devono essere presenti. In caso di assenza di almeno uno degli elementi, il test fallirà. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt; è una descrizione del test&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nota:
Ovviamente, nel caso di &lt;code&gt;schemas_are&lt;/code&gt;, il primo parametro, &lt;code&gt;schema&lt;/code&gt;, viene omesso.&lt;/p&gt;

&lt;h3&gt;Controllo dell'esecuzione di query&lt;/h3&gt;

&lt;p&gt;È possibile testare in modo semplice che una query venga eseguita &lt;em&gt;senza&lt;/em&gt; o &lt;em&gt;con&lt;/em&gt; errori.
Per farlo sono disponibili le funzioni:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;throws_ok( query [, errcode] [, errmsg] [, description] )
lives_ok( query [, description] )
performs_ok( query, milliseconds [, description])
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Queste tre funzioni controllano rispettivamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Che la query generi un'eccezione. È possibile specificare l'errore voluto tramite il parametro &lt;code&gt;errcode&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Che la query non generi un'eccezione&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Che la query termini entro &lt;code&gt;milliseconds&lt;/code&gt; millisecondi&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Controllo dei risultati di una query&lt;/h3&gt;

&lt;p&gt;Spesso si ha bisgno di controllare che una query restituisca &lt;em&gt;esattamente&lt;/em&gt; un certo insieme di risultati.
PgTAP ha diverse funzioni per questo scopo, la principale è:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;results_eq( sql, array [, description] )
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Molto intuitivamente, questo test passerà se l'insieme di risultati della query sarà &lt;em&gt;esattamente&lt;/em&gt; uguale ai valori presenti in &lt;code&gt;array&lt;/code&gt;.
Nell'esempio completo presente più in basso, vedremo come sfruttare questa funzione.&lt;/p&gt;

&lt;h3&gt;Altro&lt;/h3&gt;

&lt;p&gt;Vi sono poi altri tipi di test, ma citiamo qui solo i più importanti. Per una lista completa invitiamo a consultare la &lt;a href=&quot;http://pgtap.org/documentation.html&quot;&gt;documentazione ufficiale&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per controllare qualsiasi elemento usando un'espressione regolare:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;matches( anyelement, regex [, description] )
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Per controllare che un utente sia un superutente:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;is_superuser( user [, description] )
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Per controllare che una funzione sia scritta in un determinato linguaggio:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;function_lang_is( [schema,] function [, args[]] , language [, description])
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Per stampare messaggi di diagnostica che non interferiscano con i test:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;diag( text )
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nel &lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/10/pgtap-limportanza-dei-test-in-1.html&quot;&gt;prossimo articolo&lt;/a&gt; vedremo un esempio pratico, dove eseguiremo dei test su un set di oggetti creati per l'occasione.&lt;/p&gt;

&lt;p&gt;A presto!&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PgTAP, l'importanza dei test in PostgreSQL - Parte 2</title>
		<link href="http://blog.2ndquadrant.it/it/2011/10/pgtap-limportanza-dei-test-in-1.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.178</id>
		<updated>2011-10-28T14:15:16+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;In questo articolo vedremo un esempio completo di test eseguiti su un semplice set di dati.&lt;/p&gt;

        &lt;p&gt;Ci sono diversi modi di eseguire i test con PgTAP.
È possibile usare &lt;code&gt;pg_prove&lt;/code&gt;, uno script installabile attraverso il &lt;code&gt;CPAN&lt;/code&gt;, oppure si può scrivere una funzione &lt;code&gt;plpgsql&lt;/code&gt;
che esegua i test.&lt;/p&gt;

&lt;p&gt;In questo esempio, useremo una funzione.&lt;/p&gt;

&lt;p&gt;Creiamo un file che contenga i test, chiamamolo &lt;code&gt;risultati_test.sql&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Scriviamo la funzione che lancia i test direttamente nel file, con il nostro editr preferito.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION risultati_test()
    RETURNS SETOF TEXT
AS $$
BEGIN

    -- Controlliamo la presenza degli oggetti:
    -- Tabella foo
    RETURN NEXT tables_are(
        'public',
        ARRAY[ 'foo' ]
    );

    -- Schema nuovo_schema
    RETURN NEXT schemas_are(
        ARRAY['public','nuovo_schema']
    );

    -- Controlla che sia presente la funzione say_hello
    RETURN NEXT can(
        ARRAY['say_hello']
    );

    -- Controlla che la funzione say_hello sia scritta in SQL
    RETURN NEXT function_lang_is(
        'say_hello',
        'sql'
    );

    -- Controlla che la funzione say_hello non generi errori
    RETURN NEXT lives_ok(
        'SELECT say_hello()'
    );

    -- Controlla che la tabella foo contenga esattamente certi valori
    -- provate a cambiare uno dei valori ed osservare come si comporta il test
    RETURN NEXT results_eq(
        'SELECT * FROM foo',
        'VALUES (1),(2),(3),(4),(5)'
    );

END;
$$ LANGUAGE plpgsql;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Adesso creiamo il file che esegue questa funzione, chiamiamolo &lt;code&gt;test.sql&lt;/code&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;BEGIN;
\i risultati_test.sql
SELECT PLAN(6); -- Necessario!
SELECT risultati_test();
ROLLBACK;
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;La prima riga dà inizio ad una transazione. È consigliato inserire i test in una transazione che esegua un &lt;em&gt;rollback&lt;/em&gt; prima di terminare, così da essere sicuri che lo stato del databse venga mantenuto intatto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Successivamente, tramite il comando di psql &lt;code&gt;\i&lt;/code&gt;, importiamo il file &lt;code&gt;risultati_test.sql&lt;/code&gt;, che crea la funzione che lancia i test.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La riga successiva, &lt;code&gt;SELECT PLAN(6);&lt;/code&gt;, serve a specificare il numero di test che intendiamo eseguire (6 in questo caso). È necessaria e controlla che l'esecuzione di un numero di test diverso rispetto a quello specificato, restituisca un fallimento.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La riga &lt;code&gt;SELECT risultati_test();&lt;/code&gt; lancia la funzione che esegue i test.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Abbiamo finito di scrivere i nostri test, possiamo eseguirli con:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;psql -f test.sql pgtap_db&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Il risultato dovrebbe essere:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;BEGIN
CREATE FUNCTION
 plan
------
 1..6
(1 row)

                     testfunction
------------------------------------------------------
 ok 1 - Schema public should have the correct tables
 ok 2 - There should be the correct schemas
 ok 3 - Schema pg_temp_2 or pg_catalog or public can
 ok 4 - Function say_hello() should be written in sql
 ok 5
 ok 6
(6 rows)

ROLLBACK
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Si spiega da solo, no? :)&lt;/p&gt;

&lt;p&gt;In effetti, lo scopo del protocollo TAP è di essere il più comprensibile possibile.
Una serie di &lt;code&gt;ok&lt;/code&gt; (in caso di successo) e di &lt;code&gt;not ok&lt;/code&gt; (in caso di fallimento) rendono estremamente
facile l'interpretazione dei test.&lt;/p&gt;

&lt;p&gt;2ndQuadrant Italia utilizza estensivamente &lt;code&gt;PgTAP&lt;/code&gt;, il tempo speso a scrivere i test risulta di vitale importanza per la manutenzione dei nostri progetti.&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Scansioni &quot;Index-Only&quot; in PostgreSQL 9.2</title>
		<link href="http://blog.2ndquadrant.it/it/2011/10/scansioni-indexonly-in-postgre.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.175</id>
		<updated>2011-10-25T10:10:05+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;PostgreSQL 9.2 avrà una novità interessante (tra le altre): il supporto per le scansioni di tipo &quot;Index-only&quot;.
Vedremo in breve cosa sono e perchè sono considerate così importanti dagli addetti ai lavori.&lt;/p&gt;

&lt;p&gt;Link al commit di riferimento: &lt;a href=&quot;http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a2822fb9337a21f98ac4ce850bb4145acf47ca27&quot;&gt;http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=a2822fb9337a21f98ac4ce850bb4145acf47ca27&lt;/a&gt;&lt;/p&gt;

        &lt;h2&gt;Cosa sono&lt;/h2&gt;

&lt;p&gt;Le scansioni &lt;em&gt;Index-only&lt;/em&gt; sono una novità pensata per migliorare le prestazioni di Postgres.
Storicamente ogni miglioramento delle prestazioni viene accolto con entusiasmo dalla comunità (e anche da noi di 2ndQuadrant).&lt;/p&gt;

&lt;p&gt;Tramite le scansioni Index-only, una query può essere eseguita sfruttando solo gli Indici, senza andare a interrogare le pagine di memoria su disco dove effettivanente risiede la tabella.&lt;/p&gt;

&lt;p&gt;Questo, in determinate circostanze, aumenta notevolmente le prestazioni - dato che vengono risparmiati accessi al disco.&lt;/p&gt;

&lt;h3&gt;Ma le scansioni &quot;Index&quot; già presenti in Postgres non usano solo gli indici?&lt;/h3&gt;

&lt;p&gt;Effettivamente no, PostgreSQL esegue le Index scan accedendo sia all'indice che alla tabella sulla quale l'indice è definito.&lt;/p&gt;

&lt;p&gt;Questo succede a causa dell'MVCC.
Al momento che una tupla viene trovata (tramite ad es. una &lt;em&gt;SELECT&lt;/em&gt;) con un Index scan, non è possibile stabilire se quella tupla sia realmente &quot;visibile&quot; a tutte le transazioni attive in quell'istante.&lt;/p&gt;

&lt;p&gt;Ad esempio, una trasazione potrebbe aver eseguito un &lt;em&gt;COMMIT&lt;/em&gt; che cancellava quella tupla &lt;em&gt;dopo&lt;/em&gt; l'inizio della nostra &lt;em&gt;SELECT&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;La &quot;visibility map&quot;&lt;/h2&gt;

&lt;p&gt;L'innovazione che ha portato allo sviluppo delle scansioni &quot;Index-only&quot; si chiama &lt;em&gt;visibility map&lt;/em&gt;, ed è presente da PostgreSQL 8.4.&lt;/p&gt;

&lt;p&gt;La &lt;em&gt;visibility map&lt;/em&gt; è una struttura che contiene un bit per ogni pagina di una tabella. Risulta quindi più piccola della pagina stessa, e risiede facilmente in cache.&lt;/p&gt;

&lt;p&gt;Ognuno di questi bit indica se tutte le tuple di quella pagina sono visibili a tutte le transazioni correnti e future.&lt;/p&gt;

&lt;p&gt;Sfruttando questa informazione, Postgres è in grado di discriminare se è necessario andare a prelevare dati dalla tabella su disco o meno.&lt;/p&gt;

&lt;h2&gt;Un esempio pratico&lt;/h2&gt;

&lt;p&gt;Creiamo, con &lt;em&gt;psql&lt;/em&gt;, una tabella con 3000 record composti da un valore intero e da una stringa:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ CREATE TABLE indexonlytest AS
SELECT
    x AS intvalue,
    'stringa' || x AS stringvalue,
        repeat( md5('2ndQuadrant'),100 ) AS longstring
FROM generate_series(1,3000) x;
SELECT 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Creiamo un indice sulla tabella che contenga &lt;em&gt;tutti&lt;/em&gt; i campi.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ CREATE INDEX indextest ON indexonlytest ( intvalue,stringvalue );
CREATE INDEX
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Se provo ad eseguire una &lt;em&gt;SELECT&lt;/em&gt; sulla tabella, ottengo un &lt;strong&gt;Index Only Scan&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ EXPLAIN ANALYZE SELECT intvalue,stringvalue FROM indexonlytest ORDER BY intvalue LIMIT 20;
                                                QUERY PLAN
 Limit  (cost=0.00..2.01 rows=20 width=36) (actual time=0.039..0.064 rows=20 loops=1)
   -&gt;  Index Only Scan using indextest on indexonlytest  (cost=0.00..301.25 rows=3000 width=36) (actual tim
e=0.039..0.062 rows=20 loops=1)
 Total runtime: 0.078 ms
(3 rows)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Adesso proviamo la stessa cosa senza includere, nell'indice, tutti i campi della tabella.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ DROP INDEX indextest
DROP INDEX
$ CREATE INDEX indextest ON indexonlytest ( intvalue );
CREATE INDEX
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Eseguiamo la stessa &lt;em&gt;SELECT&lt;/em&gt; di prima, osservando come si comporta il &quot;planner&quot;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ EXPLAIN ANALYZE SELECT intvalue,stringvalue FROM indexonlytest ORDER BY intvalue LIMIT 20;
                                                QUERY PLAN
 Limit  (cost=0.00..0.95 rows=20 width=15) (actual time=0.027..0.033 rows=20 loops=1)
   -&gt;  Index Scan using indextest on indexonlytest  (cost=0.00..142.25 rows=3000 width=15) (actual time=0.0
26..0.029 rows=20 loops=1)
 Total runtime: 0.665 ms
(3 rows)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Come si nota, in questo caso il &lt;em&gt;planner&lt;/em&gt; ha scelto di utilizzare un normale Index Scan.&lt;/p&gt;

&lt;h2&gt;Conclusioni&lt;/h2&gt;

&lt;p&gt;Ovviamente, le informazioni contenute nell'indice devono essere sufficienti a soddisfare le richieste della query.
In altre parole, l'indice &lt;em&gt;deve&lt;/em&gt; contenere tutti i campi presenti nelle clausole &lt;em&gt;SELECT&lt;/em&gt;, &lt;em&gt;WHERE&lt;/em&gt; e/o &lt;em&gt;ORDER BY&lt;/em&gt; della query.&lt;/p&gt;

&lt;p&gt;Ciò non significa che si debba sfruttare sempre questa funzionalità, piuttosto cercare un compromesso:
includere tutti i campi di una &lt;em&gt;SELECT&lt;/em&gt; in un indice, aumenterà le dimensioni dello stesso, ma permetterà in alcuni casi di utilizzare le scansioni &quot;Index Only&quot;.&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="it">
		<title type="html">Ap Camp 2011</title>
		<link href="http://www.enricopirozzi.info/index.php?/archives/129-Ap-Camp-2011.html"/>
		<id>http://www.enricopirozzi.info/index.php?/archives/129-guid.html</id>
		<updated>2011-10-18T17:11:07+00:00</updated>
		<content type="html">&lt;div id=&quot;__ss_9691793&quot;&gt; &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/sscotty71/ap-camp-2011-9691793&quot; title=&quot;Ap Camp 2011&quot; target=&quot;_blank&quot;&gt;Ap Camp 2011&lt;/a&gt;&lt;/strong&gt;  &lt;div&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/sscotty71&quot; target=&quot;_blank&quot;&gt;Enrico Pirozzi&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;</content>
		<author>
			<name>scotty</name>
			<email>nospam@example.com</email>
			<uri>http://www.enricopirozzi.info/</uri>
		</author>
		<source>
			<title type="html">Il blog di Enrico Pirozzi - Postgresql</title>
			<subtitle type="html">Le pagine personali di Enrico Pirozzi</subtitle>
			<link rel="self" href="http://www.enricopirozzi.info/?feeds/categories/18-Postgresql.rss"/>
			<id>http://www.enricopirozzi.info/?feeds/categories/18-Postgresql.rss</id>
			<updated>2011-10-18T17:15:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="it">
		<title type="html">SpagoBI e PostgreSQL</title>
		<link href="http://www.enricopirozzi.info/index.php?/archives/128-SpagoBI-e-PostgreSQL.html"/>
		<id>http://www.enricopirozzi.info/index.php?/archives/128-guid.html</id>
		<updated>2011-10-18T17:06:08+00:00</updated>
		<content type="html">..Dopo due giorni e un quasi esaurimento nervoso sono riuscito a capire l'arcano...&lt;br /&gt;
&lt;br /&gt;
gli script per l'installazione di SpagoBI versione 3.1 su postgresql  9.0.x non sono corretti, per poter far funzionare il tutto&lt;br /&gt;
le modifiche da apportare al db sono le seguenti:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
alter table sbi_user alter dt_pwd_begin DROP NOT NULL ;&lt;br /&gt;
alter table sbi_user alter dt_pwd_end  DROP NOT NULL ;&lt;br /&gt;
alter table sbi_user alter dt_last_access  DROP NOT NULL ;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Dopodi chè lanciare Spago con lo script di startup.sh&lt;br /&gt;
&lt;br /&gt;
Enjoy &lt;img src=&quot;http://www.enricopirozzi.info/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;</content>
		<author>
			<name>scotty</name>
			<email>nospam@example.com</email>
			<uri>http://www.enricopirozzi.info/</uri>
		</author>
		<source>
			<title type="html">Il blog di Enrico Pirozzi - Postgresql</title>
			<subtitle type="html">Le pagine personali di Enrico Pirozzi</subtitle>
			<link rel="self" href="http://www.enricopirozzi.info/?feeds/categories/18-Postgresql.rss"/>
			<id>http://www.enricopirozzi.info/?feeds/categories/18-Postgresql.rss</id>
			<updated>2011-10-18T17:15:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Prorogata la Call for paper per il PGDay 2011</title>
		<link href="http://blog.2ndquadrant.it/it/2011/10/prorogata-call-for-paper-pgday-2011.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.172</id>
		<updated>2011-10-15T14:33:36+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Il comitato organizzatore del PostgreSQL Day italiano 2011 ha deciso di prorogare di un'altra settimana la Call for Paper. La nuova scadenza è domenica 23 ottobre.&lt;/p&gt;

        &lt;p&gt;Il PostgreSQL Day 2011 si svolgerà a Prato il giorno 25 novembre prossimo, presso il Monash University Prato Centre, sede delle prime edizioni (2007 e 2008).&lt;/p&gt;

&lt;p&gt;Abbiamo già diversi talk interessanti inviati da personaggi di calibro internazionale, che ci parleranno delle novità di PostgreSQL 9.1 e del suo futuro.&lt;/p&gt;

&lt;p&gt;Tuttavia, si ricorda che sono ben accetti anche casi d'uso su PostgreSQL. Per cui, se avete una vostra esperienza di eccellenza con PostgreSQL, siete pregati di &lt;a href=&quot;http://2011.pgday.it/call-papers-cfp&quot;&gt;inviare un abstract seguendo le istruzioni presenti sul sito&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Si segnala infine che è ancora aperta la registrazione &lt;em&gt;early bird&lt;/em&gt; che vi permetterà di partecipare al PGDay alla cifra di 41 euro + IVA (necessaria per coprire le spese dei coffee break e del pranzo). Al momento in cui verrà pubblicato il programma della manifestazione, la registrazione salirà a 82 euro + IVA.&lt;/p&gt;

&lt;p&gt;Ci stiamo infine adoperando per organizzare attività sociali sia il giovedì sera che il venerdì sera, con l'obiettivo di estendere la partecipazione ai visitatori di questa bella area della Toscana fino a tutto il weekend. Vi terremo aggiornati!&lt;/p&gt;

&lt;p&gt;Per maggiori informazioni: &lt;a href=&quot;http://2011.pgday.it/&quot;&gt;www.pgday.it&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PgDay 2011: sempre piu' vicino!</title>
		<link href="http://fluca1978.blogspot.com/2011/10/pgday-2011-sempre-piu-vicino.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-6576693066512826894</id>
		<updated>2011-10-07T17:19:27+00:00</updated>
		<content type="html">Manca ormai poco piu' di un mese al nuovo PgDay, il quinto, che torna dopo due anni nella sua sede storica di Prato. Sono disponibili i banner per i blog, quindi se si vuole pubblicizzare l'evento non si ha che da incollare uno dei banner disponibili sul proprio sito.</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Importare dati in Greenplum da più file csv con Talend</title>
		<link href="http://blog.2ndquadrant.it/it/2011/09/etl-con-talend-su-greenplum.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.164</id>
		<updated>2011-09-16T08:45:30+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Lavorando con i database, capita spesso di dover importare i dati direttamente da uno o più file CSV. Esistono molteplici strumenti per farlo e spaziano dal copy di psql, via linea di comando, ai più complessi sistemi di ETL come Talend o Kettle.
In questo articolo analizzeremo la capacità di Talend di interfacciarsi con un database Greenplum per importare i dati contenuti in 2 file di testo.&lt;/p&gt;

        &lt;p&gt;Dopo aver scaricato Talend Open Studio (&lt;a href=&quot;http://www.talend.com/download_form.php?cont=gen&amp;lang=it&amp;src=ResourcePage&quot;&gt;reperibile dal sito di Talend&lt;/a&gt;) e dopo averlo installato, possiamo procedere creando un nuovo progetto, e all'interno di questo un nuovo job.&lt;/p&gt;

&lt;p&gt;Creiamo quindi le connessioni alle risorse che ci serviranno durante l'importazione, ovvero la connessione al database remoto e i due file csv.&lt;/p&gt;

&lt;p&gt;Nella sezione Metadata dell'interfaccia di Talend, aggiungiamo la connessione a Greenplum, dopo aver inserito il nome e i parametri di connessione, il programma creerà un nuovo oggetto di tipo &lt;em&gt;DbConnection&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/connessionedb1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/assets_c/2011/09/connessionedb-thumb-600x1106.png&quot; width=&quot;300&quot; alt=&quot;connessionedb.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Cliccando su questo con il tasto destro e selezionando l'opzione &quot;recupera schema&quot;, sarà possibile selezionare le tabelle su cui vogliamo lavorare, nel nostro caso la tabella &lt;em&gt;states&lt;/em&gt; e la tabella &lt;em&gt;users&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/recuperoschema1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/recuperoschema-thumb-300x543.png&quot; width=&quot;300&quot; height=&quot;543&quot; alt=&quot;recuperoschema.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Aggiungiamo ora i file contenenti i dati.
Subito sotto l'icona delle connessioni ai database (DB connections), troviamo il gruppo dei file CSV, come precedentemente fatto per i database, clicchiamo con il tasto destro sul gruppo e poi su &quot;crea file delimitato&quot;. &lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/creacsv1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/creacsv-thumb-300x539.png&quot; width=&quot;300&quot; height=&quot;539&quot; alt=&quot;creacsv.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Nella prima schermata del wizard che si aprirà, ci verrà richiesto di inserire un nome e una descrizione per la risorsa che stiamo creando. 
Si passa quindi allo step due, nel quale dobbiamo identificare il file di testo a cui vogliamo riferirci, e la sua codifica.
Una volta fatto sarà possibile possibile passare al terzo step, nel quale dobbiamo istruire Talend su come gestire le colonne del CSV.
In questa schermata è possibile : selezionare l'encoding del file (1), i separatori di campo e i caratteri di fine linea (2), e qualora fosse necessario, segnalare quante e quali linee devono essere ignorate sia all'inizio che alla fine del file (3). 
È inoltre possibile segnalare a Talend di utilizzare la prima riga come &quot;schema&quot; del CSV, in maniera che possa prendere i nomi delle colonne direttamente dal file, risparmiando all'utilizzatore l'inserimento manuale del nome delle colonne ( 4 ).&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/step3csv.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/step3csv-thumb-600x487.png&quot; width=&quot;600&quot; height=&quot;487&quot; alt=&quot;step3csv.png&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Nel quarto step resta solo da: modificare lo schema del file che stiamo associando, controllare e modificare i tipi di dato riconosciuti in automatico per ogni colonna e, qualora non fossero stati riconosciuti in automatico dalla testata del CSV, modificare i nomi delle colonne e la lunghezza dei campi.&lt;/p&gt;

&lt;p&gt;Completato il 4° passo del wizard, il file è correttamente associato all'applicazione e pronto per essere usato. &lt;/p&gt;

&lt;p&gt;Una volta aggiunte tutte le risorse che intendiamo utilizzare, è possibile procedere con la creazione del job.
Trasciniamo quindi i due file sull'editor visuale del job, e selezioniamo &lt;em&gt;tFileInputDelimited&lt;/em&gt; come tipo di file.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/tfin1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/assets_c/2011/09/tfin-thumb-363x319.png&quot; width=&quot;363&quot; height=&quot;319&quot; alt=&quot;tfin.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Dalla connessione a Greenplum precedentemente creata invece, trasciniamo sull'editor le due tabelle di destinazione (nel nostro caso &lt;em&gt;states&lt;/em&gt; e &lt;em&gt;users&lt;/em&gt;), e selezioniamo come tipo &lt;em&gt;tGreenplumOutput&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/tgpout1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/assets_c/2011/09/tgpout-thumb-360x322.png&quot; width=&quot;360&quot; height=&quot;322&quot; alt=&quot;tgpout.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Inseriamo ora un oggetto di tipo &lt;em&gt;tMap&lt;/em&gt; - che si trova nella palette degli strumenti alla destra dell'editor visuale - nella cartella &quot;elaborazione&quot; e posizioniamolo fra il file CSV contenente gli stati da importare e la tabella di Greenplum di destinazione.
Colleghiamo il file al componente &lt;em&gt;tMap&lt;/em&gt; (clic con il destro sul file -&gt; riga -&gt; main) e il componente &lt;em&gt;tMap&lt;/em&gt; alla tabella di destinazione (clic destro sulla tabella -&gt; riga -&gt; nuovo output).
Una volta collegati fra di loro i componenti possiamo fare doppio click sull'oggetto &lt;em&gt;tMap&lt;/em&gt; che permette di associare le righe del file da importare a quelle della tabella di destinazione.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/connecting11.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/assets_c/2011/09/connecting1-thumb-546x174.png&quot; width=&quot;546&quot; height=&quot;174&quot; alt=&quot;connecting1.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Trascinando i vari campi dalla tabella di sinistra a quella di destra , è possibile associare ogni colonna del file alla colonna relativa sulla tabella di destinazione.
Cliccando su ok salveremo l'associazione appena effetuata e i dati sono pronti per essere importati dal file di origine alla tabella di destinazione.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/simplemap.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/simplemap-thumb-600x232.png&quot; width=&quot;600&quot; height=&quot;232&quot; alt=&quot;simplemap.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Aggiungiamo ora l'importazione di una lista di utenti dal secondo csv, durante l'importazione è necessario fare &lt;em&gt;lookup&lt;/em&gt; sulla tabella degli stati appena riempita, in maniera da verificare l'associazione &quot;utente -&gt; stato&quot;, riga per riga.
Con il gergo lookup si intende la ricerca di un valore all'interno di un dizionario, utilizzando una chiave al fine di recuperare un ID (solitamente la chiave primaria di quell'oggetto nel database, per garantire integrità referenziale).&lt;/p&gt;

&lt;p&gt;Aggiungiamo quindi un oggetto &lt;em&gt;tMap&lt;/em&gt; fra il file CSV con gli utenti e la tabella di destinazione, inoltre dalla lista delle tabelle di Greenplum trasciniamo nuovamente la tabella contenente gli stati sulla finestra dell'editor visuale, selezionando come tipo &lt;em&gt;tGreenplumInput&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Colleghiamo quindi i tre elementi al componente &lt;em&gt;tMap&lt;/em&gt;, come e' stato fatto precedentemente.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/schemalookup1.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/assets_c/2011/09/schemalookup-thumb-551x356.png&quot; width=&quot;551&quot; height=&quot;356&quot; alt=&quot;schemalookup.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Adesso eseguiamo il mapping fra i tre elementi: questa volta il campo  &lt;em&gt;idState&lt;/em&gt; del CSV deve essere mappato sul campo &lt;em&gt;idState&lt;/em&gt; della tabella &lt;em&gt;states&lt;/em&gt; (row3) e quest'ultimo deve essere collegato alla tabella utenti di destinazione. In questa maniera per ogni linea del CSV viene eseguito il lookup sulla tabella stati, assicurando così l'integrità della relazione &quot;Utente - Stato&quot;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/maplookup.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/maplookup-thumb-600x244.png&quot; width=&quot;600&quot; height=&quot;244&quot; alt=&quot;maplookup.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Per concludere, facciamo in modo che prima venga eseguita l'importazione dei dati relativi agli stati. Successivamente, quelli degli utenti, in modo da poter eseguire correttamente il lookup.
Tracciamo quindi una riga di tipo &lt;em&gt;OnComponentOK&lt;/em&gt; (click destro -&gt; attivare -&gt; onComponentOk) dal componente di output della tabella stati a quello di input degli utenti (il file CSV).&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/schemafinito.html&quot;&gt;&lt;img src=&quot;http://blog.2ndquadrant.it/it/schemafinito-thumb-600x210.png&quot; width=&quot;600&quot; height=&quot;210&quot; alt=&quot;schemafinito.PNG&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;In questo modo prima verrano importati gli stati e solo in caso di successo verranno impotati gli utenti.&lt;/p&gt;

&lt;p&gt;Adesso basterà cercare il tab di esecuzione nella parte bassa dell'area di lavoro e premere il tasto run per fare in modo che il nostro job venga eseguito.&lt;/p&gt;</content>
		<author>
			<name>Giulio Calacoci</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Il PostgreSQL Global Development Group annuncia il rilascio di PostgreSQL 9.1</title>
		<link href="http://www.psql.it/?q=node/956"/>
		<id>http://www.psql.it/956 at http://www.psql.it</id>
		<updated>2011-09-14T12:01:29+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;12 SETTEMBRE 2011: Il PostgreSQL Global Development Group annuncia il rilascio di PostgreSQL 9.1. Quest'ultima versione del leader dei database open source offre tecnologie innovative, estensibilit&amp;agrave; senza paragoni e nuove funzionalit&amp;agrave; come replica sincrona, estensioni, tabelle esterne (&amp;quot;foreign data wrapper&amp;quot;), indici &amp;quot;K-Nearest Neighbor&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.psql.it/?q=node/956&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>psql.it</name>
			<uri>http://www.psql.it</uri>
		</author>
		<source>
			<title type="html">PSQL.it - Comunita' Italiana utenti e sviluppatori PostgreSQL</title>
			<subtitle type="html">Comunita' Italiana utenti e sviluppatori PostgreSQL</subtitle>
			<link rel="self" href="http://www.psql.it/?q=rss.xml"/>
			<id>http://www.psql.it/?q=rss.xml</id>
			<updated>2012-01-23T09:55:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Rilasciato PostgreSQL 9.1</title>
		<link href="http://blog.2ndquadrant.it/it/2011/09/rilasciato-postgresql-91.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.162</id>
		<updated>2011-09-12T13:36:07+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Il PostgreSQL Global Development Group annuncia il rilascio di PostgreSQL 9.1. Quest'ultima versione del leader dei database open source offre tecnologie innovative, estensibilità senza paragoni e nuove funzionalità come replica sincrona, estensioni, tabelle esterne (&lt;em&gt;&quot;foreign data wrapper&quot;&lt;/em&gt;), indici &lt;em&gt;&quot;K-Nearest Neighbor&quot;&lt;/em&gt;.  
&lt;/p&gt;

&lt;p&gt;Nei mesi scorsi, 2ndQuadrant aveva pubblicato una serie di articoli su alcune delle novità di PostgreSQL 9.1, fra cui &lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/06/postgresql-91-tabelle-unlogged.html&quot;&gt;tabelle unlogged&lt;/a&gt;, &lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/06/postgresql-91-tabelle-esterne.html&quot;&gt;tabelle esterne&lt;/a&gt; ed &lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/04/postgresql-9-1-le-estensioni.html&quot;&gt;estensioni&lt;/a&gt;.&lt;/p&gt;

        &lt;p&gt;
&lt;em&gt;&quot;PostgreSQL 9.1 fornisce alcune delle più avanzate funzionalità a disposizione di tutti i database open source ed è sostenuto da una comunità attiva e innovativa, con dimostrata esperienza di successo in ambito aziendale. PostgreSQL è inoltre ben posizionato per costruire ed eseguire applicazioni nel cloud&quot;&lt;/em&gt;, afferma Charles Fan (Vice presidente, Dipartimento di Ricerca e sviluppo, VMware).
&lt;/p&gt;&lt;p&gt;
&lt;h2&gt;Risponde a importanti richieste degli utenti&lt;/h2&gt;
&lt;p&gt;
La versione 9.1 introduce molte funzionalità che per anni sono state richieste dagli utenti, rimuovendo diverse barriere nell'adozione di nuove applicazioni o nella migrazione a PostgreSQL. Fra le altre, sono degne di nota:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;replica sincrona&lt;/strong&gt;: sicurezza e consistenza dei dati (perdita zero) all'interno di un cluster in alta disponibilità di server PostgreSQL;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;collation a livello di colonna&lt;/strong&gt;: definizione delle regole di ordinamento delle stringhe a livello di database, tabella o colonna;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tabelle &quot;unlogged&quot;&lt;/strong&gt;: miglioramenti prestazionali per dati volatili (i.e. caching o sessioni web).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
&lt;em&gt;&quot;Heroku offre il più grande servizio cloud per PostgreSQL del mondo come 'database-as-a-service'&quot;&lt;/em&gt;, svela James Lindenbaum, co-fondatore di Heroku. &lt;em&gt;&quot;Il rilascio della replica sincrona dei dati nella 9.1 fornisce ai nostri clienti modalità innovative per la protezione di dati mission-critical. Consacra inoltre PostgreSQL come una delle soluzioni di memorizzazione dati più dinamiche al momento disponibili&quot;&lt;/em&gt;.
&lt;/p&gt;

&lt;h2&gt;Avanza lo stato dell'arte&lt;/h2&gt;

&lt;p&gt;
La nostra comunità di sviluppatori è in grado di innovare con funzionalità all'avanguardia. La versione 9.1 ne comprende diverse che rappresentano vere e proprie novità nell'industria dei database anche non open source, come:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;indicizzazione &quot;K-Nearest-Neighbor&quot;&lt;/strong&gt;: indici basati sul concetto di distanza, che permettono interrogazioni più veloci nel campo delle ricerche testuali e geografiche;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;Serializable Snapshot Isolation&quot;&lt;/strong&gt;: garanzia di consistenza fra transazioni concorrenti senza necessariamente doverle bloccare, mettendo in pratica il concetto di &quot;true serializability&quot;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;Writeable Common Table Expression&quot;&lt;/strong&gt;: esecuzione di complessi aggiornamenti ai dati su più passi, utilizzando una singola query;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;Security-Enhanced Postgres&quot;&lt;/strong&gt;: implementa la sicurezza di livello militare e il controllo d'accesso vincolato (&quot;Mandatory Access Control&quot;).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
&lt;em&gt;&quot;OpenERP si è sempre avvalso delle funzionalità di classe enterprise di PostgreSQL per dotare di una base veloce, affidabile e scalabile le applicazioni che aiutano a gestire le operazioni quotidiane delle aziende nostre clienti. L'integrità dei dati in contesti altamente concorrenti e transazionali è un argomento di importanza critica per noi, e siamo veramente entusiasti della funzionalità 'Serializable Snapshot Isolation' introdotta in PostgreSQL 9.1!&quot;&lt;/em&gt;, aggiunge Olivier Dony, Community Manager di OpenERP.
&lt;/p&gt;

&lt;h2&gt;Estende il motore del database&lt;/h2&gt;

&lt;p&gt;
L'estensibilità di PostgreSQL consente agli utenti di aggiungere nuove funzionalità ad un database già in produzione e di sfruttarlo per compiti che nessun altro sistema di gestione di database è in grado di fare. La versione 9.1 aggiunge nuovi strumenti per l'estensibilità, fra cui:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tabelle esterne tramite &quot;Foreign Data Wrapper&quot;&lt;/strong&gt;: permette di collegare e interrogare altri database direttamente da PostgreSQL;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;estensioni&lt;/strong&gt;: rende più facile creare, caricare e gestire nuove funzionalità del database.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Tutte le funzionalità descritte sopra e molte altre sono descritte in dettaglio sia nella pagina del wiki di PostgreSQL intitolata &quot;&lt;a href=&quot;http://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.1&quot;&gt;What's New In 9.1&lt;/a&gt;&quot; che nelle &lt;a href=&quot;http://www.postgresql.org/documentation/current/static/release-9-1&quot;&gt;note di rilascio&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Nel 25° anniversario dello sviluppo del database PostgreSQL, la nostra comunità continua a migliorare la tecnologia dei database ad ogni rilascio annuale. Scarica subito la versione 9.1 e prova il più avanzato sistema di database open source al mondo.
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Su PostgreSQL&lt;/strong&gt;: PostgreSQL è il leader dei sistemi di gestione di database open source, con una comunità internazionale costituita da migliaia di utenti e sviluppatori nonché decine di aziende ed enti provenienti da tutte le parti del mondo. Il progetto PostgreSQL vanta 25 anni di attività di ingegneria del software, cominciata all'Università di California a Berkeley e oggi può vantare un ritmo di sviluppo senza uguali. La gamma di funzionalità mature messe a disposizione da PostgreSQL non soltanto è in grado di competere con quelle offerte da sistemi di database proprietari, ma le migliora in termini  di funzionalità avanzate, estensibilità, sicurezza e stabilità. Scopri maggiori informazioni su PostgreSQL e partecipa attivamente alla nostra comunità su &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;http://www.postgresql.org&lt;/a&gt; e, per l'Italia, &lt;a href=&quot;http://www.itpug.org/&quot;&gt;http://www.itpug.org&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Per maggiori informazioni in italiano sul rilascio: &lt;a href=&quot;http://www.postgresql.org/about/press/presskit91&quot;&gt;Press Kit di PostgreSQL 9.1&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PGDay 2011 Italiano: Call for paper</title>
		<link href="http://www.psql.it/?q=node/955"/>
		<id>http://www.psql.it/955 at http://www.psql.it</id>
		<updated>2011-09-02T15:46:29+00:00</updated>
		<content type="html">&lt;p&gt;Lo staff dell'Italian PostgreSQL Users Group (ITPUG) è lieto di annunciare che sono aperte le selezioni per paper, interventi, seminari e tutorial relativi al PostgreSQL Day (PGDay) 2011.&lt;/p&gt;
&lt;p&gt;Vedi &lt;a href=&quot;http://2011.pgday.it/call-papers-cfp&quot; title=&quot;http://2011.pgday.it/call-papers-cfp&quot;&gt;http://2011.pgday.it/call-papers-cfp&lt;/a&gt; per maggiori informazioni.&lt;/p&gt;</content>
		<author>
			<name>psql.it</name>
			<uri>http://www.psql.it</uri>
		</author>
		<source>
			<title type="html">PSQL.it - Comunita' Italiana utenti e sviluppatori PostgreSQL</title>
			<subtitle type="html">Comunita' Italiana utenti e sviluppatori PostgreSQL</subtitle>
			<link rel="self" href="http://www.psql.it/?q=rss.xml"/>
			<id>http://www.psql.it/?q=rss.xml</id>
			<updated>2012-01-23T09:55:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="it">
		<title type="html">Share</title>
		<link href="http://diegocinelli.wordpress.com/2011/09/02/pgday-italiano-2011-call-for-paper/"/>
		<id>http://diegocinelli.wordpress.com/?p=271</id>
		<updated>2011-09-02T10:33:10+00:00</updated>
		<content type="html">&lt;p&gt;Alla vigilia dell&amp;#8217;uscita di PostgreSQL 9.1, lo staff dell&amp;#8217;Italian PostgreSQL Users Group (ITPUG) è lieto di annunciare che sono aperte le selezioni per paper, interventi, seminari e tutorial relativi al PostgreSQL Day (PGDay) 2011. L&amp;#8217;evento, giunto alla quinta edizione, si terrà a Prato il 25 novembre 2011.&lt;/p&gt;
&lt;p&gt;Il PGDay è la giornata nazionale dedicata interamente a PostgreSQL, il più avanzato database Open Source al mondo. Durante l&amp;#8217;evento sviluppatori, amministratori, traduttori, appassionati e in generale membri della comunità italiana ed internazionale possono incontrarsi, scambiarsi idee, informazioni e apprendere tutte le ultime novità su PostgreSQL.&lt;/p&gt;
&lt;p&gt;All&amp;#8217;evento parteciperanno ospiti della comunità internazionale PostgreSQL che terranno talk (in lingua inglese) sullo stato dell&amp;#8217;arte del progetto.&lt;/p&gt;
&lt;ul&gt;
Durante il PGDay 2011 vi saranno:&lt;/ul&gt;
&lt;li&gt;talk regolari (ricerca nel campo dei database, algoritmi e ottimizzazioni, tecniche di amministrazione, disaster recovery, replica, programmazione)&lt;/li&gt;
&lt;li&gt;lightining talks (talk brevi, ad esempio per far conoscere il proprio progetto legato a PostgreSQL)&lt;/li&gt;
&lt;li&gt;tutorial (mini corsi per facilitare l&amp;#8217;apprendimento e l&amp;#8217;adozione di estensioni, librerie, e altro legato al mondo PostgreSQL)&lt;/li&gt;
&lt;li&gt;sessioni interattive di laboratorio, ove sarà possibile apprendere e mettere in pratica immediatamente le nozioni acquisite, sperimentando le feature di PostgreSQL.&lt;/li&gt;

&lt;p&gt;Per tenere un talk al PGDay 2011 occorre inviare il proprio lavoro al comitato di revisione. Il lavoro verrà attentamente revisionato per l&amp;#8217;accettazione e gli autori saranno notificati circa l&amp;#8217;accettazione/rifiuto del talk.&lt;/p&gt;
&lt;p&gt;E&amp;#8217; possibile prenotare un posto per stand, inviando i dettagli circa il prodotto (o i prodotti) che si intendono esibire al comitato di revisione. E&amp;#8217; possibile presentare anche prodotti non OpenSource, avendo però cura di specificare la licenza e il legame con PostgreSQL, nonché i vantaggi derivanti dall&amp;#8217;uso di PostgreSQL e gli eventuali contributi forniti alla comunità. E&amp;#8217; inoltre possibile presentare servizi correlati a PostgreSQL, ad esempio consulenza e hosting, presentando in maniera dettagliata al comitato di revisione le modalità di fruizione dei servizi stessi.&lt;/p&gt;
&lt;p&gt;Per presentare un tutorial su argomenti avanzati di amministrazione o programmazione di un cluster PostgreSQL è necessario inviare il proprio lavoro al comitato di revisione illustrando dettagliatamente il materiale didattico, le necessità hardware/software e gli eventuali requisiti minimi per la partecipazione al tutorial stesso. Tutti i tutorial devono includere una demo interattiva e possono durare al massimo 60 minuti. Il materiale didattico (ad esempio dispense, code snippets, howto, ecc.) è completamente a carico del relatore (o dei relatori) del tutorial, e deve essere disponibile gratuitamente in forma stampata o elettronica ad ogni partecipante.&lt;/p&gt;
&lt;p&gt;E&amp;#8217; possibile fare richiesta immediata per la presentazione di un lightining-talk (massimo 5 minuti) inviando l&amp;#8217;argomento e la scaletta del talk al comitato di revisione. E&amp;#8217; tuttavia possibile registrarsi direttamente all&amp;#8217;evento per discutere un lightining-talk, previa autorizzazione degli organizzatori e disponibilità di slot di tempo.&lt;/p&gt;
&lt;p&gt;Per inviare il proprio lavoro occorre scrivere una e-mail a &lt;a href=&quot;mailto:pgday2011@itpug.org&quot;&gt;pgday2011@itpug.org&lt;/a&gt; entro e non oltre il 16 Ottobre 2011, avendo cura di specificare le seguenti informazioni:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;autore/i del lavoro e relatore designato (è possibile presentare un lavoro congiunto con un massimo di tre relatori);&lt;/li&gt;
&lt;li&gt;titolo del lavoro e contesto scientifico/applicativo. Nel caso si tratti di un tutorial specificare in modo esplicito la natura e lo scopo del tutorial stesso;&lt;/li&gt;
&lt;li&gt;un abstract di massimo 2000 parole che spieghi in maniera dettagiata e concisa il lavoro stesso;&lt;/li&gt;
&lt;li&gt;le eventuali risorse necessarie (connessioni Internet, computer per demo) e la loro disponibilità da parte dell&amp;#8217;autore/i;&lt;/li&gt;
&lt;li&gt;il tempo stimato per il talk. A tal fine si tenga presente che un singolo talk non puo&amp;#8217; superare la durata massima di 30 minuti e non puo&amp;#8217; durare meno di 5 minuti (lightning talk). Nel caso di tutorial la durata minima deve essere di 30 minuti e la durata massima di 60 minuti.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le informazioni di cui sopra devono essere inviate in formato testuale o PDF, non saranno accettati altri formati.&lt;/p&gt;
&lt;p&gt;La commissione di revisione si riserva il diritto di valutare le informazioni pervenute e di richiederne ulteriori qualora necessario.&lt;/p&gt;
&lt;p&gt;Tutti i lavori pervenuti (talk, lightining talks, tutorial) e accettati dovranno essere preparati per la presentazione in accordo alle linee guida che verranno fornite agli autori.&lt;/p&gt;
&lt;p&gt;Per maggiori informazioni, visitate il sito &lt;a href=&quot;http://2011.pgday.it/&quot;&gt;2011.pgday.it&lt;/a&gt; oppure seguici su Twitter @PGDayIT2011 .&lt;/p&gt;
&lt;p&gt;Il Comitato Organizzatore&lt;br /&gt;
Associazione Culturale ITPUG &amp;#8211; Italian PostgreSQL Users Group&lt;br /&gt;
&lt;a href=&quot;http://www.itpug.org/&quot;&gt;www.itpug.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Riferimenti e contatti:&lt;br /&gt;
* Sito web: &lt;a href=&quot;http://2011.pgday.it/&quot;&gt;http://2011.pgday.it/&lt;/a&gt;&lt;br /&gt;
* Twitter: &lt;a href=&quot;https://twitter.com/#!/PGDayIT2011&quot;&gt;https://twitter.com/#!/PGDayIT2011&lt;/a&gt;&lt;br /&gt;
* E-mail per informazioni: &lt;a href=&quot;mailto:pgday2011@itpug.org&quot;&gt;pgday2011@itpug.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- AddToAny BEGIN --&gt;&lt;br /&gt;
&lt;a class=&quot;a2a_dd&quot; href=&quot;http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdiegocinelli.wordpress.com%2F2011%2F09%2F02%2Fpgday-italiano-2011-call-for-paper%2F&amp;linkname=PGDay%20Italiano%202011%3A%20Call%20for%20paper%20&quot;&gt;&lt;img src=&quot;http://static.addtoany.com/buttons/share_save_171_16.png&quot; width=&quot;171&quot; height=&quot;16&quot; border=&quot;0&quot; alt=&quot;Share&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;!-- AddToAny END --&gt;&lt;/p&gt;
&lt;br /&gt;Filed under: &lt;a href=&quot;http://diegocinelli.wordpress.com/category/informatica/&quot;&gt;Informatica&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/category/open-source/&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/category/postgresql/&quot;&gt;PostgreSQL&lt;/a&gt; Tagged: &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/call-for-paper/&quot;&gt;call for paper&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/cfp-pgday/&quot;&gt;CFP pgday&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/open-source/&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/pgday/&quot;&gt;pgday&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/pgday-2011/&quot;&gt;pgday 2011&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgres/&quot;&gt;postgres&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgresql/&quot;&gt;PostgreSQL&lt;/a&gt;, &lt;a href=&quot;http://diegocinelli.wordpress.com/tag/postgresql-day/&quot;&gt;PostgreSQL Day&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/diegocinelli.wordpress.com/271/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/diegocinelli.wordpress.com/271/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=diegocinelli.wordpress.com&amp;blog=8228143&amp;post=271&amp;subd=diegocinelli&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Cinelli Diego</name>
			<uri>http://diegocinelli.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Blog di Diego Cinelli » PostgreSQL</title>
			<subtitle type="html">Vari articoli che parlano di me e del mio mondo :)</subtitle>
			<link rel="self" href="http://diegocinelli.wordpress.com/category/postgresql/feed/"/>
			<id>http://diegocinelli.wordpress.com/category/postgresql/feed/</id>
			<updated>2011-11-09T16:40:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Come utilizzare la Virtual Machine di Greenplum Community Edition con VirtualBox</title>
		<link href="http://blog.2ndquadrant.it/it/2011/08/greenplum-vmware-virtualbox.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.158</id>
		<updated>2011-08-27T08:44:40+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Fra i vari download disponibili nella sezione community del sito di Greenplum, è possibile trovare una Virtual Machine con il software già configurato e installato su un sistema CentOs.&lt;/p&gt;

&lt;p&gt;La virtual machine è fatta per funzionare con VmWare, ma con qualche piccola attenzione e per puri scopi di valutazione di Greenplum, è possibile farla funzionare anche con VirtualBox.&lt;/p&gt;

        &lt;p&gt;Dopo aver installato l'ultima versione di VirtualBox (disponibile su &lt;a href=&quot;http://www.virtualbox.org/wiki/Downloads&quot;&gt;http://www.virtualbox.org/wiki/Downloads&lt;/a&gt; ) è possibile scaricare l'immagine di VmWare da &lt;a href=&quot;http://www.greenplum.com/community/downloads/&quot;&gt;http://www.greenplum.com/community/downloads/&lt;/a&gt;. Una volta ultimato il download, e dopo aver scompattato l'archivio, è possibile procedere con l'installazione.&lt;/p&gt;

&lt;p&gt;Innanzitutto creiamo una nuova virtual machine, semplicemente cliccando sul tasto &quot;Nuovo&quot; in alto a sinistra nella finestra di VirtualBox; avremo così accesso al wizard di creazione virtual machine.
Dopo la prima schermata introduttiva, nella seconda ci troveremo a scegliere il nome della macchina, che deve essere univoco, e il tipo di sistema operativo.
Nel primo dropdown deve essere selezionato &quot;Linux&quot;, mentre come versione va scelta Red Hat a 64 bit, essendo la VM basata su CentOs.
&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;img alt=&quot;Schermata1.PNG&quot; src=&quot;http://blog.2ndquadrant.it/it/Schermata%202011-08-26%20a%2009.55.21.PNG&quot; width=&quot;600&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Nel terzo step del wizard viene chiesta quanta RAM deve essere allocata alla virtual machine. Di default il programma ne assegna 512 MB, ma per il tipo di ambiente che sta per essere eseguito potrebbero essere pochi. Consiglio quindi di aumentare a 1024 MB la RAM da allocare.
&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;img alt=&quot;Schermata2&quot; src=&quot;http://blog.2ndquadrant.it/it/Schermata%202011-08-26%20a%2009.45.40.PNG&quot; width=&quot;600&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Nella quarta schermata deve essere deselezionato il flag &quot;disco di avvio&quot;. Una volta cliccato su continua, VirtualBox ci avvertirà che, continuando senza disco, non potremo fare il boot della macchina. 
Il disco di boot verrà aggiunto manualmente in seguito: selezionare pertanto &quot;continua&quot;.
Nell'ultima schermata bisogna semplicemente cliccare su &quot;continua&quot; per completare la creazione della VM.
&lt;span class=&quot;mt-enclosure mt-enclosure-image&quot;&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/Schermata%202011-08-26%20a%2017.37.47.PNG&quot;&gt;&lt;img alt=&quot;Schermata 2011-08-26 a 17.37.47.PNG&quot; src=&quot;http://blog.2ndquadrant.it/it/Schermata 2011-08-26 a 17.37.47-thumb-600x359.png&quot; width=&quot;600&quot; height=&quot;359&quot; class=&quot;mt-image-none&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;E' il momento di aggiungere il disco di avvio alla VM appena creata: entrare nelle impostazioni relative alla virtual machine e andare nella sezione &quot;archiviazione&quot;.
Nell'albero dei controller deve essere selezionata la voce &quot;controller ide&quot; , cliccando sull'immagine del disco con il &quot;+&quot; verde in basso a sinistra, comparirà l'opzione &quot;aggiungi disco fisso. Alla domanda successiva, relativa alla creazione di un disco vuoto, deve essere selezionata la voce &quot;scegli disco esistente&quot;. 
E' possibile ora navigare fino alla posizione dove è stata scompattata l'immagine della virtual machine, e selezionare il primo della serie di files che compongo l'immagine, in questo caso il file si chiama &quot;CentOS 64-bit-cl1.vmdk&quot;, riconoscibile come primo della serie per l'assenza di numeri sequenziali nel nome.&lt;/p&gt;

&lt;p&gt;Dopo aver aggiunto il disco la virtual machine è pronta per essere avviata.
Completata la fase di boot, il sistema proverà a far partire l'ambiente grafico, ma, essendo il sistema configurato per funzionare con VmWare, i driver attualmente installati non possono funzionare con la scheda video virtuale di VirtualBox. Verrà quindi mostrata una schermata blu di errore che chiederà se devono essere visualizzati i log. Dopo aver risposto &quot;No&quot;, verrà mostrata un'ulteriore schermata per l'autoconfigurazione di GDM. Anche in questo caso non è quello che serve, quindi la risposta da dare è nuovamente &quot;No&quot;.&lt;/p&gt;

&lt;p&gt;Si viene quindi condotti a una schermata di login su shell; per accedere 
l' username è &lt;code&gt;root&lt;/code&gt;, la password è &lt;code&gt;password&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Essendo ora amministratori della macchina è possibile lanciare lo script che disinstallerà i driver specifici di VMWare: &lt;code&gt;vmware-uninstall-tools.pl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;lo script eseguirà la disinstallazione completa dei driver. Una volta terminata, è necessario riavviare il sistema. 
Subito dopo il riavvio ci troveremo nuovamente di fronte alle domande relative al log e all'autoconfigurazione di GDM. Rifiutando come prima, sarà possibile effettuare nuovamente login da shell come root.&lt;/p&gt;

&lt;p&gt;E' ora possibile installare i driver di VirtualBox. Per farlo è necessario andare nel menù &quot;dispositivi&quot; di VirtualBox, e selezionare l'opzione &quot;installa guest additions&quot;. A questo punto tornando sulla shell è possibile lanciare il comando:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mount /dev/cdrom /media&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Andiamo adesso nella directory media:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /media&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;e eseguiamo lo script di installazione dei driver di VirtualBox:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;bash VboxLinuxAdditions.run&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Purtroppo a  causa del kernel troppo vecchio di questa macchina virtuale, non sarà possibile avere l'accelerazione grafica, ma adesso il sistema è pronto per funzionare.&lt;/p&gt;

&lt;p&gt;Dopo un ultimo riavvio, il sistema sarà correttamente funzionante anche su VirtualBox, e potrete pertanto avviare i primi passi con Greenplum direttamente da questo sistema.&lt;/p&gt;

&lt;p&gt;Ricordiamo che il presente articolo deve essere considerato solamente per scopi di valutazione delle funzionalità di Greenplum Community Edition. Per ottenere performance maggiori, si consiglia di installare Greenplum Community Edition su sistemi non virtuali.&lt;/p&gt;

&lt;p&gt;Buon divertimento!&lt;/p&gt;</content>
		<author>
			<name>Giulio Calacoci</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL 9.1 RC 1 è adesso disponibile</title>
		<link href="http://blog.2ndquadrant.it/it/2011/08/postgresql-91-rc-1.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.157</id>
		<updated>2011-08-23T13:42:11+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;La &lt;strong&gt;prima &lt;em&gt;release candidate&lt;/em&gt; di PostgreSQL 9.1 è adesso disponibile&lt;/strong&gt;. Tutti gli utenti sono pregati di aiutare il progetto scaricando, installando e provando questa versione, in modo da accelerare il rilascio della versione 9.1.&lt;/p&gt;

        &lt;p&gt;La nuova versione introduce funzionalità come &lt;strong&gt;replica sincrona&lt;/strong&gt;, &lt;strong&gt;writeable common table expression&lt;/strong&gt;, &lt;strong&gt;collation a livello di colonna&lt;/strong&gt;, &lt;strong&gt;serializable snapshot isolation&lt;/strong&gt; e molte altre ancora.&lt;/p&gt;

&lt;p&gt;La versione RC 1 contiene correzioni per tutti i principali bug riscontrati nelle varie versioni beta di PostgreSQL 9.1. Al fine di prevenire malfunzionamenti nella prossima release di produzione di PostgreSQL 9.1, è fondamentale che tutti gli utenti testino questa versione e controllino la risoluzione dei bug conosciuti.&lt;/p&gt;

&lt;p&gt;&lt;p&gt;Il codice sorgente, insieme a &lt;em&gt;installer&lt;/em&gt; binari per diverse piattaforme, sono a disposizione dal sito di PostgreSQL:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/download/&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/release-9-1.html&quot;&gt;Release Note&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/developer/beta&quot;&gt;Partecipare alla fase di test&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/index.html&quot;&gt;Documentazione beta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL 9.1 Beta 1 è adesso disponibile</title>
		<link href="http://blog.2ndquadrant.it/it/2011/05/postgresql-91-beta-1.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.137</id>
		<updated>2011-08-23T13:41:18+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Un elevato numero di nuove funzionalità come mai si era visto in precedenza
è stato introdotto in PostgreSQL 9.1. Alcune di queste sono &lt;strong&gt;vere e proprie innovazioni che nessun altro DBMS (commerciale e non) può vantare&lt;/strong&gt;. Fra le principali e più attese novità di questa versione ci sono:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Replica sincrona&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Collation a livello di colonna per database multi-lingua&lt;/li&gt;
    &lt;li&gt;Unlogged Table&lt;/li&gt;
    &lt;li&gt;Indicizzazione K-Nearest-Neighbor&lt;/li&gt;
    &lt;li&gt;Serializable Snapshot Isolation&lt;/li&gt;
    &lt;li&gt;Common Table Expression (Query WITH) scrivibili&lt;/li&gt;
    &lt;li&gt;Integrazione con SE-Linux&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/04/extension.html&quot; title=&quot;Articolo di 2ndQuadrant Italia su estensioni&quot;&gt;Estensioni&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Tabelle esterne tramite SQL/MED&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il progetto PostgreSQL è nelle mani di tutti gli utilizzatori che sono in grado di provare 9.1beta1, in modo da
ottenere un rapido feedback e rilasciare una versione 9.1 stabile che sia libera da bug.
Se sei in grado di aiutare nella fase di &lt;strong&gt;beta testing&lt;/strong&gt;, sei pregato di visitare la &lt;a href=&quot;http://wiki.postgresql.org/wiki/HowToBetaTest&quot;&gt;pagina con le istruzioni sul Beta testing di PostreSQL&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Le versioni beta non sono stabili per natura e non dovrebbero mai essere utilizzate in ambienti di produzione; sono esclusivamente ad uso di test. Ad ogni modo, essendo &lt;strong&gt;la lista di funzionalità e le API stabili&lt;/strong&gt;, gli sviluppatori di applicazioni possono già cominciare a sviluppare applicazioni per PostgreSQL 9.1. Altre versioni beta oppure una versione di tipo &quot;release candidate&quot; saranno disponibili fra alcune settimane.&lt;/p&gt;

&lt;p&gt;&lt;p&gt;Il codice sorgente, insieme a &lt;em&gt;installer&lt;/em&gt; binari per diverse piattaforme, sono a disposizione dal sito di PostgreSQL:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/download/&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/release-9-1.html&quot;&gt;Release Note&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/developer/beta&quot;&gt;Partecipare alla fase di test&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/index.html&quot;&gt;Documentazione 9.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL l'inaffondabile</title>
		<link href="http://fluca1978.blogspot.com/2011/08/postgresql-linaffondabile.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-5842021935385746628</id>
		<updated>2011-08-03T17:33:13+00:00</updated>
		<content type="html">E' sempre difficile convincere i non utenti PostgreSQL delle capacità di questo fantastico prodotto, penso che la pigrizia e la paura di cambiare siano i motivi che frenano il passaggio a PostgreSQL. Se ogni database facesse bene il proprio mestiere e implementasse correttamente la teoria (transazioni, WAL, rollback, replica,...) e gli standard i prodotti sarebbero realmente interscambiabili, ma</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">To Dual or not to Dual?</title>
		<link href="http://fluca1978.blogspot.com/2011/07/to-dual-or-not-to-dual.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-984305347912788511</id>
		<updated>2011-07-07T10:11:46+00:00</updated>
		<content type="html">Una delle differenze fra PostgreSQL e Oracle e' nel funzionamento sintattico e semantico dell'istruzione SELECT. Agli utenti Oracle potrebbe risultare strano, ma la clausola FROM di una istruzione SELECT in PostgreSQL e' opzionale:

Command:     SELECT
Description: retrieve rows from a table or view
Syntax:
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Gestire le unita' di misura in PostgreSQL</title>
		<link href="http://fluca1978.blogspot.com/2011/06/gestire-le-unita-di-misura-in.html"/>
		<id>tag:blogger.com,1999:blog-1836481905487384887.post-2087920320505912755</id>
		<updated>2011-06-30T20:43:00+00:00</updated>
		<content type="html">Uno dei problemi di molti, se non tutti, sistemi gestionali e' quello di gestire diverse unita' di misura e le conversioni fra di esse. E' possibile creare nel database una serie di funzioni per la gestione delle unita' di misura e della loro conversione.
Prima di tutto occorre fare alcune assunzioni: (1) le unita' di misura sono legate ad un contesto (o dominio), che identifica a quale settore</content>
		<author>
			<name>Luca Ferrari</name>
			<email>noreply@blogger.com</email>
			<uri>http://fluca1978.blogspot.com/search/label/postgresql</uri>
		</author>
		<source>
			<title type="html">:: Luca Ferrari ::</title>
			<link rel="self" href="http://fluca1978.blogspot.com/feeds/posts/default/-/postgresql"/>
			<id>tag:blogger.com,1999:blog-1836481905487384887</id>
			<updated>2012-02-09T06:25:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL 9.1: Tabelle esterne con SQL/MED</title>
		<link href="http://blog.2ndquadrant.it/it/2011/06/postgresql-91-tabelle-esterne.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.150</id>
		<updated>2011-06-13T19:28:17+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;SQL/MED rappresenta la parte dello standard SQL dedicata alla gestione dei dati esterni (&lt;em&gt;Management of External Data&lt;/em&gt;). Anche se SQL/MED è disponibile già a partire da PostgreSQL 8.4, nella versione 9.1 è stata introdotta la possibilità di definire tabelle speciali, dette &quot;&lt;em&gt;foreign&lt;/em&gt;&quot;, per accedere a dati esterni al database tramite semplici &lt;code&gt;SELECT&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Questo articolo mostra la procedura da seguire per creare una tabella esterna contenente dati ricavati da un file CSV locale e sfrutta un'altra caratteristica introdotta in PostgreSQL 9.1: le estensioni.&lt;/p&gt;

        &lt;p&gt;Prima di tutto, è necessario installare una estensione chiamata &lt;strong&gt;file_fdw&lt;/strong&gt; distribuita nei moduli &lt;em&gt;contrib&lt;/em&gt; di PostgreSQL 9.1. &lt;/p&gt;

&lt;p&gt;Per installare i moduli contrib di PostgreSQL 9.1 dai sorgenti è sufficiente compilarli con &lt;code&gt;gmake world&lt;/code&gt; e installarli con &lt;code&gt;gmake install-world&lt;/code&gt;, oppure entrare nella directory &lt;code&gt;contrib&lt;/code&gt; degli stessi sorgenti e digitare &lt;code&gt;gmake install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Una volta installati i moduli contrib, le estensioni si troveranno in &lt;code&gt;${postgresql_prefix}/share/extension&lt;/code&gt;. Controllate che esistano i file &lt;code&gt;file_fdw.control&lt;/code&gt; e &lt;code&gt;file_fdw--1.0.sql&lt;/code&gt;, che definiscono l'estensione (si rimanda all'&lt;a href=&quot;http://blog.2ndquadrant.it/it/2011/04/postgresql-9-1-le-estensioni.html&quot;&gt;articolo sulle estensioni&lt;/a&gt;  per maggiori informazioni).&lt;/p&gt;

&lt;p&gt;Creare l'estensione con:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CREATE EXTENSION file_fdw;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Il comando psql per mostrare le estensioni è &lt;code&gt;\dx&lt;/code&gt;, che possiede anche la variante &lt;code&gt;\dx+&lt;/code&gt;, che mostra maggiori dettagli:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;test_db=# \dx+ file_fdw
     Objects in extension &quot;file_fdw&quot;
           Object Description            
-----------------------------------------
 foreign-data wrapper file_fdw
 function file_fdw_handler()
 function file_fdw_validator(text[],oid)
(3 rows)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Si noti che questa estensione crea automaticamente un oggetto di tipo &lt;strong&gt;FOREIGN DATA WRAPPER&lt;/strong&gt; di nome &lt;em&gt;file_fdw&lt;/em&gt;, che tornerà utile in seguito.&lt;/p&gt;

&lt;p&gt;Dato che SQL/MED può gestire la copia dei dati anche attraverso database remoti, è necessario creare un server usando l'oggetto file_fdw (questo passo è necessario anche nel caso si stiano caricando dati da un file locale, come in questo esempio):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CREATE SERVER file FOREIGN DATA WRAPPER file_fdw ;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A questo punto, è possibile creare la tabella esterna caricando i dati, con:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CREATE FOREIGN TABLE statistical_data (field1 numeric, field2 numeric)
   SERVER file
   OPTIONS (filename '/tmp/statistical_data.csv', format 'csv', delimiter ';') ;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Attualmente, è possibile eseguire solo query di sola lettura tramite &lt;code&gt;SELECT&lt;/code&gt; sulle tabelle foreign. Le tabelle &lt;em&gt;foreign&lt;/em&gt; inoltre, funzionano anche attraverso dblink, il tool che permette la comunicazione tra database remoti.&lt;/p&gt;

&lt;p&gt;Concludendo, questa caratteristica va a completare una piccola lacuna che Postgres aveva rispetto ad altri database. Va pertanto accolta con grande interesse data la sua utilità, specialmente nel settore del data warehousing, in particolare dell'estrazione e del caricamento dati (ETL), e in più in generale per l'integrazione del database con altri sistemi e altre fonti di dati.&lt;/p&gt;

&lt;p&gt;Per maggiori informazioni si rimanda alla &lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/sql-createforeigntable.html&quot;&gt;documentazione di PostgreSQL sul comando &lt;code&gt;CREATE FOREIGN TABLE&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL 9.1: le tabelle &quot;Unlogged&quot;</title>
		<link href="http://blog.2ndquadrant.it/it/2011/06/postgresql-91-tabelle-unlogged.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.146</id>
		<updated>2011-06-06T14:18:19+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Una delle novità introdotte in Postgres 9.1 è rappresentata dalle tabelle &quot;unlogged&quot;.
Queste tabelle non producono file WAL, cioè quei file che contengono i log delle operazioni di scrittura sulle tabelle.&lt;/p&gt;

        &lt;p&gt;Eliminando del tutto la scrittura dei file WAL e di conseguenza l'operazione di &lt;code&gt;fsync()&lt;/code&gt; al momento del COMMIT della transazione, aumenta considerevolmente la velocità di scrittura su queste particolari tabelle:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
postgres=# CREATE TABLE tabella-normale AS SELECT generate_series( 1,1000000 );
SELECT 1000000
Time: 7626.138 ms
postgres=# CREATE UNLOGGED TABLE tabella-unlogged AS SELECT generate_series( 1,1000000 );
SELECT 1000000
Time: 503.786 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;D'altra parte, l'assenza di file WAL relativi alle operazioni sulla tabella fa sì che il contenuto delle tabelle unlogged &lt;strong&gt;non&lt;/strong&gt; venga mantenuto dopo un riavvio del server causato da un crash (potete divertirvi a provare questo comportamento usando il comando kill sul processo server - preferibilmente non in produzione).&lt;/p&gt;

&lt;p&gt;Inoltre, se si usa un sistema di replica come warm standby o hot standby, il contenuto delle tabelle unlogged &lt;strong&gt;non&lt;/strong&gt; viene replicato sui vari &lt;em&gt;slave&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Concludendo, questa nuova funzionalità introduce vantaggi per la memorizzazione di dati facilmente generabili e non durabili.
Un caso d'uso comune potrebbe essere il &lt;strong&gt;caching&lt;/strong&gt;, dove la velocità di scrittura è fondamentale e allo stesso tempo non ci si deve preoccupare della persistenza dei dati dopo un crash del server.&lt;/p&gt;

&lt;p&gt;Per maggiori informazioni: &lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/sql-createtable.html&quot;&gt;http://www.postgresql.org/docs/9.1/static/sql-createtable.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ll presente articolo è ispirato dal &lt;a href=&quot;http://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.1&quot;&gt;Wiki sulle novità della release 9.1&lt;/a&gt; redatto dalla comunità PostgreSQL.&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL 9.1: Le estensioni</title>
		<link href="http://blog.2ndquadrant.it/it/2011/04/postgresql-9-1-le-estensioni.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.133</id>
		<updated>2011-06-06T14:17:06+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Una delle caratteristiche più interessanti introdotte in PostgreSQL 9.1 è sicuramente la possibilità di creare delle &lt;strong&gt;EXTENSION&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Questa funzionalità risolverà il problema noto a tutti i DBA PostgreSQL che riguardava la gestione delle estensioni (ad esempio PostGIS), in cui ad ogni upgrade di versione le funzioni e i tipi di dato propri dell'estensione si mischiavano con gli altri oggetti del database. Dalla versione 9.1, se opportunamente sviluppate, verranno viste nelle operazioni di dump/restore come un semplice contenitore esterno.&lt;/p&gt;

        &lt;p&gt;Una EXTENSION è semplicemente un contenitore di oggetti SQL (per esempio tabelle, funzioni, tipi ecc...).&lt;/p&gt;

&lt;p&gt;L'idea che molteplici oggetti del database possano essere considerati come un'unica entità porta notevoli vantaggi in termini di gestione e design del database, in quanto con un solo comando si possono aggiungere, modificare o cancellare tutti gli oggetti contenuti in una estensione.&lt;/p&gt;

&lt;p&gt;Una caratteristica che ho trovato particolarmente interessante è sicuramente la possibilità di definire dipendenze tra EXTENSION diverse, il che rende ancora più strutturato e facilmente gestibile il design del database.&lt;/p&gt;

&lt;p&gt;Ecco un semplice esempio di EXTENSION:&lt;/p&gt;

&lt;p&gt;Un'estensione ha bisogno di almeno 2 file, uno chiamato .control e almeno uno chiamato --.sql. Entrambi i file devono risiedere nella directory &quot;extension&quot; presente nella share di Postgres (anche se nel file .control è possibile indicare un path diverso per il/i file .sql).&lt;/p&gt;

&lt;p&gt;Un esempio di file hello--1.0.sql:   &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE FUNCTION hello_f()
RETURNS TEXT LANGUAGE SQL AS 'SELECT ''Hello World''::TEXT';
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E relativo file hello.control:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;comment = 'A trivial extension'
default_version = '1.0'
superuser = false
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Una volta creati questi due file, è possibile effettuare alcune operazioni, ad esempio:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
CREATE EXTENSION hello; 
DROP EXTENSION hello; # Cancella tutti gli oggetti
                      # contenuti nell'estensione
ALTER EXTENSION hello [ADD | DROP] member_object
ALTER EXTENSION hello SET SCHEMA nuovo_schema
ALTER EXTENSION hello UPDATE [TO nuova_versione]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Si rimanda alla &lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/extend-extensions.html&quot;&gt;documentazione ufficiale di PostgreSQL&lt;/a&gt; per maggiori informazioni.&lt;/p&gt;

&lt;p&gt;Sono convinto che la facilità di utilizzo e l'estrema utilità renderanno le EXTENSION una delle caratteristiche più apprezzate dagli utilizzatori di PostgreSQL in futuro - oltre che un notevole vantaggio nello sviluppo del software per noi che facciamo consulenze di professione.&lt;/p&gt;</content>
		<author>
			<name>Carlo Ascani</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">EuroPython 2011: PostgreSQL e Python</title>
		<link href="http://blog.2ndquadrant.it/it/2011/06/europython-2011-postgresql-e-p.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.143</id>
		<updated>2011-06-02T17:18:35+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Nel corso di EuroPython 2011, il principale evento annuale per gli sviluppatori e utenti Python in Europa, 2ndQuadrant terrà una sessione speciale di formazione intitolata &quot;&lt;strong&gt;&lt;a href=&quot;http://ep2011.europython.eu/conference/talks/python-and-elephant&quot;&gt;The Python and the Elephant&lt;/a&gt;&lt;/strong&gt;&quot;.
Questo workshop di 4 ore si svolgerà giovedì 23 giugno e coprirà le due principali tecniche di scrittura di applicazioni in Python con PostgreSQL: applicazioni client di tipo standard utilizzando PsycoPG oppure estensioni interne utilizzando il linguaggio PL/Python per le stored procedure.&lt;/p&gt;

        &lt;p&gt;Il costo per la partecipazione al workshop è di 100 euro a persona. Il numero di posti è limitato e la partecipazione è riservata ai soli possessori di biglietti EuroPython. La registrazione è disponibile dal sito di EuroPython.&lt;/p&gt;

&lt;p&gt;&quot;The Python and the Elephant&quot; sarà tenuto da un team di esperti PostgreSQL di 2ndQuadrant composto da Gabriele Bartolini, Peter Geoghegan, Harald Armin Massa e Marco Nenciarini.&lt;/p&gt;

&lt;p&gt;2ndQuadrant è uno sponsor di Platino di PostgreSQL e costituisce il più vasto gruppo di &quot;contributor&quot; al progetto PostgreSQL. 2ndQuadrant infatti sviluppa e manutiene sia funzionalità del nucleo di PostgreSQL in materia di alta disponibilità (HA) e performance, che progetti satellite.&lt;/p&gt;

&lt;p&gt;2ndQuadrant è uno sponsor di EuroPython 2011, che si svolgerà a Firenze dal 20 al 26 giugno prossimi.&lt;/p&gt;

&lt;p&gt;Per maggiori informazioni:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sito di EuroPython: &lt;a href=&quot;http://ep2011.europython.eu&quot;&gt;http://ep2011.europython.eu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sito di 2ndQuadrant: &lt;a href=&quot;http://www.2ndQuadrant.it/&quot;&gt;http://www.2ndQuadrant.it/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Brain Jumble</title>
		<link href="http://blog.2ndquadrant.it/it/2011/05/brain-jumble.html"/>
		<id>tag:blog.2ndquadrant.it,2011:/it//2.141</id>
		<updated>2011-05-18T12:13:06+00:00</updated>
		<content type="html" xml:lang="it">&lt;p&gt;Da Giovedì 19 a sabato 21 maggio, a Settala (Milano) si terrà l'evento &lt;strong&gt;Brain Jumble&lt;/strong&gt; organizzato dal Comune di Settala e dal Linux User Group di Vignate (VigLug).
Giovedì 19 maggio alle ore 15.40 l'Associazione Italian PostgreSQL Users Group terrà un intervento su &quot;&lt;strong&gt;PostgreSQL 9, il database open-source più avanzato al mondo&lt;/strong&gt;&quot;, volto a illustrare le potenzialità di PostgreSQL e il suo utilizzo anche in ambienti business critical.
Per maggiori informazioni sull'evento Brain Jumble si rimanda al sito http://viglug.org/2011/02/03/brain-jumble-a-settala/&lt;/p&gt;</content>
		<author>
			<name>Gabriele Bartolini</name>
			<uri>http://blog.2ndquadrant.it/it/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant Italia</title>
			<subtitle type="html">Il blog di 2ndQuadrant Italia.
PostgreSQL e argomenti correlati.</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.it/it/atom.xml"/>
			<id>tag:blog.2ndquadrant.it,2008-11-08:/it//2</id>
			<updated>2011-11-08T08:50:03+00:00</updated>
		</source>
	</entry>

</feed>

