<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.dataprix.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Data warehouse</title>
 <link>http://www.dataprix.com/ca/category/business-intelligence/data-warehouse</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>ca</language>
<item>
 <title> Vistes materialitzades d&#039;Oracle per optimitzar un Datawarehouse</title>
 <link>http://www.dataprix.com/ca/vistes-materialitzades-doracle-optimitzar-un-datawarehouse</link>
 <description>&lt;div style=&quot;margin: 1ex;&quot;&gt;
&lt;div&gt;
&lt;p&gt;Com les c&amp;agrave;rregues d&#039;un &lt;strong&gt;Data  warehouse&lt;/strong&gt; es realitzen de manera peri&amp;ograve;dica, i a m&amp;eacute;s &amp;eacute;s habitual la  creaci&amp;oacute; de &lt;strong&gt;taules agregades&lt;/strong&gt; per millorar l&#039;efici&amp;egrave;ncia i temps de resposta dels nostres informes, un recurs d&#039;optimitzaci&amp;oacute; f&amp;iacute;sica que pot aportar grans millores &amp;eacute;s la utilitzaci&amp;oacute; de &lt;strong&gt;vistes materialitzades&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La vista materialitzada no &amp;eacute;s m&amp;eacute;s que una vista, definida amb una sent&amp;egrave;ncia SQL, de la qual a m&amp;eacute;s d&#039;emmagatzemar la seva definici&amp;oacute;, s&#039;emmagatzemen les dades que retorna, realitzant una c&amp;agrave;rrega inicial i despr&amp;eacute;s cada cert temps un refresc dels mateixos.&lt;/p&gt;
&lt;p&gt;Aix&amp;iacute;, si tenim un Datawarehouse que s&#039;actualitza di&amp;agrave;riament, podr&amp;iacute;em utilitzar vistes materialitzades per anar actualitzant taules interm&amp;egrave;dies que alimentin els nostres esquemes de DWH, o directament per implementar taules agregades que es refrescaran a partir de les nostres taules basi.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La creaci&amp;oacute; d&#039;aquest tipus de vistes no tan complexa com pot semblar, el m&amp;eacute;s important &amp;eacute;s tenir clar cada quant temps volem actualitzar la informaci&amp;oacute; de les vistes, i quin m&amp;egrave;tode de refresc utilitzar.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Sintaxi b&amp;agrave;sica per la    creaci&amp;oacute; d&#039;una vista materialitzada&lt;/h3&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;CREATE MATERIALIZED VIEW la meva_vista_materialitzada&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [TABLESPACE el meu_tablespace]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [BUILD {IMMEDIATE | DEFERRED}]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [REFRESH {ON COMMIT | ON  DEMAND | [START WITH data_inici] NEXT data_interval } |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {COMPLETI | FAST | FORCE} ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [{ENABLE|DISABLE} QUERY REWRITE]&lt;br /&gt;
AS SELECT t1.camp1, t2.camp2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  FROM la meva_taula1 t1&amp;nbsp; , la meva_taula2 t2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  WHERE t1.camp_fk = t2.camp_pk&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND &amp;hellip; &lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Comentaris sobre  les diferents  opcions:&lt;/h3&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;C&amp;agrave;rrega de dades en la vista&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;BUILD IMMEDIATE:&lt;/em&gt;&lt;br /&gt;
Les dades de la vista es carreguen en el mateix moment de la creaci&amp;oacute;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;BUILD DEFERRED&lt;/em&gt;:&lt;br /&gt;
&amp;nbsp; Nom&amp;eacute;s es crea la definici&amp;oacute;, les dades es carregaran m&amp;eacute;s avanci. Per realitzar aquesta c&amp;agrave;rrega es pot utilitzar la funci&amp;oacute; REFRESH del package DBMS_MVIEW:&lt;br /&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;em&gt;begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_mview.refresh(&#039;la meva_vista_&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;em&gt;materialitzada&#039;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/em&gt;&amp;nbsp;&lt;strong&gt;&lt;br type=&quot;_moz&quot; /&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;M&amp;egrave;tode i temporalitat    del refresc de les dades&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;span style=&quot;display: none;&quot; id=&quot;1218606759544S&quot;&gt;&amp;nbsp;&lt;/span&gt;Cada quant temps es  refrescaran:&lt;/p&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH ON COMMIT&lt;/em&gt;:&lt;br /&gt;
    &amp;nbsp; &amp;nbsp; Cada cop que es faci un commit en els objectes origin definits en  la select &lt;/p&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH ON DEMAND&lt;/em&gt;:&lt;br /&gt;
    &amp;nbsp;     Com amb l&#039;opci&amp;oacute; DEFERRED del BUILD, s&#039;utilitzaran els procedures REFRESH, REFRESH_ALL_MVIEWS o REFRESH_DEPENDENT del package DBMS_MVIEW &lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH [START WITH data_inici]  NEXT data_interval&lt;/em&gt;:&lt;br /&gt;
&amp;nbsp; START WITH indica la data del  primer  refresc (data_inici sol ser un SYSDATE)&lt;br /&gt;
&lt;span id=&quot;1218606742062S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span id=&quot;1218606741321S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span id=&quot;1218606740630S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;nbsp; NEXT indica cada quant  temps s&#039;actualitzar&amp;agrave; (data_interval podria ser SYSDATE +1 per  realitzar el refresc una vegada al dia)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;De quina manera es refrescaran&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH COMPLETE&lt;/em&gt;:&lt;br /&gt;
El refresc es far&amp;agrave; de totes les dades de la vista materialitzada, la recrear&amp;agrave; completament cada cop que es llanci el refresc&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH FAST&lt;/em&gt;:&lt;br /&gt;
El refresc ser&amp;agrave; incremental, &amp;eacute;s l&#039;opci&amp;oacute; m&amp;eacute;s recomanable, el de &lt;em&gt; fast&lt;/em&gt; ya d&amp;oacute;na una idea del perqu&amp;egrave;. &lt;br /&gt;
Aquest tipus de refresc t&amp;eacute; bastants  restriccions segons el tipus de vista que s&#039;estigui creant. &lt;br /&gt;
Es poden  consultar en &lt;a target=&quot;_blank&quot; href=&quot;http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/basicmv.htm#sthref534&quot; rel=&quot;nofollow&quot;&gt;General Restrictions on Fast Refresh&lt;/a&gt; de la documentaci&amp;oacute; oficial d&#039;Oracle&lt;/p&gt;
&lt;p&gt;Una de les coses importants a tenir en compte &amp;eacute;s que per poder utilitzar aquest m&amp;egrave;tode gaireb&amp;eacute; sempre &amp;eacute;s necessari haver creat abans un LOG de la Vista materialitzada, indicant els camps clau en els quals es basar&amp;agrave; el manteniment de la vista. &lt;br /&gt;
S&#039;utilitza la instrucci&amp;oacute; CREATE MATERIALIZED VIEW LOG ON:&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp; C&lt;/em&gt;&lt;em&gt;CREATE MATERIALIZED VIEW LOG  ON la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH PRIMARY  KEY&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INCLUDING  NEW VALUES;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH FORCE&lt;/em&gt;:&lt;br /&gt;
Amb aquest m&amp;egrave;tode s&#039;indica que si &amp;eacute;s possible s&#039;utilitzi el metodo FAST,  i si no el COMPLETI.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;Per saber si una vista materialitzada pot utilitzar el m&amp;egrave;tode FAST, el package DBMS_MVIEW proporciona el procedure EXPLAIN_MVIEW&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;Activaci&amp;oacute; de la reescritura de consultes&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;ENABLE QUERY REWRITE&lt;/em&gt;:&lt;br /&gt;
Es permet a la base de dades la reescritura de consultes&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;DISABLE QUERY REWRITE&lt;/em&gt;:&lt;br /&gt;
Es desactiva la reescritura de consultes&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;L&#039;opci&amp;oacute; QUERY REWRITE &amp;eacute;s la que m&amp;eacute;s anem a utilitzar si volem les vistes materialitzades per optimitzar nostre Data warehouse. &lt;br /&gt;
Aquesta opci&amp;oacute; permet crear taules agregades en forma de vistes materialitzades, i que quan es llanci una SELECT la base de dades pugui reescriure-la per consultar la taula o vista que vagi a retornar les dades sol&amp;middot;licitades en menys temps, tot de manera totalment transparent &lt;em&gt;a l&#039;usuari&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;L&#039;&amp;uacute;nic que cal fer &amp;eacute;s crear les taules agregades com a vistes materialitzades amb QUERY REWRITE habilitat.&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Exemples de vistes materialitzades&lt;/h3&gt;
&lt;p&gt;S&amp;oacute;n moltes combinacions, per&amp;ograve;  la sent&amp;egrave;ncia final no &amp;eacute;s tan complexa.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Primer pas de l&#039;ETL&lt;/h4&gt;
&lt;p&gt;Si volgu&amp;eacute;ssim crear una vista materialitzada d&#039;una taula que es refresqui un dia a la setmana, i de manera incremental far&amp;iacute;em el seg&amp;uuml;ent:&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;CREATE MATERIALIZED VIEW LOG  ON la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp; WITH&amp;nbsp; PRIMARY  KEY&lt;br /&gt;
&amp;nbsp;&amp;nbsp; INCLUDING NEW  VALUES;&amp;nbsp;&lt;br /&gt;
CREATE MATERIALIZED VIEW la meva_vista_materialitzada&lt;br /&gt;
&amp;nbsp; REFRESH FAST&amp;nbsp; NEXT  SYSDATE + 7&lt;br /&gt;
&amp;nbsp; AS SELECT camp1, camp2,  camp8&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  FROM la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE camp2  &amp;gt; 5000;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aquesta vista podria servir-nos per alimentar la c&amp;agrave;rrega d&#039;un Data Mart que es realitz&amp;eacute;s setmanalment. Podr&amp;iacute;em programar-la perqu&amp;egrave; es refresqu&amp;eacute;s just abans de l&#039;inici del proc&amp;eacute;s de c&amp;agrave;rrega, o com a primer pas en l&#039;ETL, i ja tindr&amp;iacute;em les dades necess&amp;agrave;ries actualitzades, i independents de l&#039;origen de dades (no haur&amp;iacute;em de molestar m&amp;eacute;s a l&#039;operacional). Un altre avantatge a tenir en compte &amp;eacute;s que si hi ha algun problema amb l&#039;acc&amp;eacute;s a les dades origen, si no els hem eliminat, en la vista materialitzada encara tindrem les dades de l&#039;&amp;uacute;ltim refresc, amb el que encara que el refresc fall&amp;eacute;s no ens trobar&amp;iacute;em un error que trunqu&amp;eacute;s la c&amp;agrave;rrega de nostre Data Warehouse, o una taula buida. &lt;br /&gt;
Per descomptat, en les condicions del WHERE podr&amp;iacute;em seleccionar nom&amp;eacute;s els registres necessaris, nom&amp;eacute;s els de l&#039;&amp;uacute;ltim mes, etc.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Taules agregades&lt;/h4&gt;
&lt;p&gt;Un altre exemple important seria la utilitzaci&amp;oacute; de vistes materialitzades per la &lt;strong&gt; &lt;strong&gt;creaci&amp;oacute; de taules agregades&lt;/strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;strong&gt;&lt;em&gt;CREATE MATERIALIZED VIEW vendes_agregades_mv&lt;br /&gt;
&amp;nbsp; BUILD IMMEDIATE&lt;br /&gt;
&amp;nbsp; REFRESH COMPLETI&lt;br /&gt;
&amp;nbsp; ENABLE QUERY REWRITE&lt;br /&gt;
AS&lt;br /&gt;
&amp;nbsp; SELECT aneu_producte, sum(import) total_vendes&lt;br /&gt;
&amp;nbsp; FROM vendes;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Amb aquesta senzilla sent&amp;egrave;ncia es crearia una taula agregada de total de vendes per producte d&#039;una suposada taula de vendes que seria la taula de fets.&lt;/p&gt;
&lt;p&gt;A nivell de sessi&amp;oacute; tamb&amp;eacute; caldria assegurar-se que l&#039;opci&amp;oacute; QUERY_REWRITE estigu&amp;eacute;s activada. Per si per ventura s&#039;habilita amb&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;ALTER SESSION SET QUERY_REWRITE_ENABLED=TRUE;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si ara dintre d&#039;aquesta sessi&amp;oacute; s&#039;executa la sent&amp;egrave;ncia&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;SELECT sum(import)&lt;br /&gt;
FROM vendes;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;la base de dades preparar&amp;agrave; el pla d&#039;execuci&amp;oacute; tenint en compte la vista materialitzada creada i internament realitzar&amp;agrave; la selecci&amp;oacute; sobre la vista vendes_agregades_mv.&lt;/p&gt;
&lt;p&gt;Una manera senzilla de comprovar-ho, apart d&#039;examinar el pla d&#039;execuci&amp;oacute;, o de comparar temps abans i despr&amp;eacute;s de la creaci&amp;oacute; de la vista, o desactivant el QUERY_REWRITE, &amp;eacute;s comprovar que aquesta sent&amp;egrave;ncia retorna resultats en el mateix temps que la sent&amp;egrave;ncia&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;SELECT sum(import)&lt;br /&gt;
FROM vendes_agregades_mv;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Per consultar m&amp;eacute;s detalls, o la sintaxi completa de la creaci&amp;oacute; de vistes materialitzades en el cap&amp;iacute;tol &lt;a rel=&quot;nofollow&quot; href=&quot;http://xixona.dlsi.ua.es/apertium-www/common/browser.php?mark=&amp;amp;dir=es-ca&amp;amp;inurl=http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6002.htm#i2063793&quot; target=&quot;_blank&quot;&gt;Create Materialized View&lt;/a&gt; del manual de refer&amp;egrave;ncia SQL d&#039;Oracle&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Amb enterprise manager o amb la consola web de la base de dades tamb&amp;eacute; es poden crear les vistes materialitzades d&#039;una manera m&amp;eacute;s &lt;em&gt;assistida&lt;/em&gt;, per&amp;ograve; igualment &amp;eacute;s important tenir clars els conceptes abans de fer-ho.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img align=&quot;middle&quot; alt=&quot;Vistas materializadas en Oracle Enterprise Manager&quot; src=&quot;/files/uploads/2/rmsnapgr.gif&quot; style=&quot;width: 633px; height: 546px;&quot; /&gt;&lt;/p&gt;
</description>
 <comments>http://www.dataprix.com/ca/vistes-materialitzades-doracle-optimitzar-un-datawarehouse#comments</comments>
 <category domain="http://www.dataprix.com/ca/category/business-intelligence/data-warehouse">Data warehouse</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos/oracle">Oracle</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos">Bases de datos</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/dise-o-f-sico">diseño físico</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/sql">SQL</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/vistas">vistas</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/vistas-materializadas">vistas materializadas</category>
 <pubDate>Thu, 21 Aug 2008 17:50:09 +0200</pubDate>
 <dc:creator>carlos</dc:creator>
 <guid isPermaLink="false">266 at http://www.dataprix.com</guid>
</item>
</channel>
</rss>
