<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DailyStuff &#187; PostgreSQL</title>
	<atom:link href="http://blog.dailystuff.nl/tag/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dailystuff.nl</link>
	<description>toen Internet stil stond en weer doorging</description>
	<lastBuildDate>Wed, 11 Aug 2010 23:51:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="search"
           href="http://blog.dailystuff.nl/opensearch"
           type="application/opensearchdescription+xml"
           title="Content Search" />		<item>
		<title>Als een eerstejaars met psycopg2</title>
		<link>http://blog.dailystuff.nl/2010/07/als-een-eerstejaars-met-psycopg2/</link>
		<comments>http://blog.dailystuff.nl/2010/07/als-een-eerstejaars-met-psycopg2/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 18:45:09 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[autocommit]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[psycopg2]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=1044</guid>
		<description><![CDATA[Als een eerstejaars ben ik sinds jaren weer in de autocommit grap van database getrapt. Om een of andere reden bleven de tupels netjes in de tabel zitten. Dit terwijl de query direct met psql uitgevoerd wel netjes zijn werk deed. Dus maar eens in de documentatie van psycopg2 gedoken om te zien wat er [...]]]></description>
			<content:encoded><![CDATA[<p>Als een eerstejaars ben ik sinds jaren weer in de <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Autocommit">autocommit</a> grap van database getrapt. Om een of andere reden bleven de tupels netjes in de tabel zitten. Dit terwijl de query direct met psql uitgevoerd wel netjes zijn werk deed. Dus maar eens in de documentatie van <a href="http://initd.org/psycopg/">psycopg2</a> gedoken om te zien wat er mis was met de volgende <a href="http://www.python.org/">Python</a>-code.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">curr = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
    curr.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;&quot;delete from tabel where x &gt; 2&quot;&quot;&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span>, e:
    exit<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Het antwoord was helaas snel gevonden en deed me terug denken aan de eerste stappen op Oracle. Een dikke 15 jaar geleden, dat wel. De bijgewerkte code hieronder vertelt eigenlijk wel het verhaal.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">curr = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
    curr.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;&quot;delete from tabel where x &gt; 2&quot;&quot;&quot;</span><span style="color: black;">&#41;</span>
    conn.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span>, e:
    conn.<span style="color: black;">rollback</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    exit<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Ik heb me laten misleiden door de autocommit bij andere modules binnen <a href="http://www.php.net/">PHP</a> en <a href="http://www.perl.org/">Perl</a> als een eerstejaars. Want daar stopt autocommit op het moment dat je een transactie start, maar hier moet alles worden gecommit. Dit doet met denken of er dirty read/write bugs zijn te vinden in sommige applicaties die autocommit doen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/07/als-een-eerstejaars-met-psycopg2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL en NULL</title>
		<link>http://blog.dailystuff.nl/2010/01/postgresql-en-null/</link>
		<comments>http://blog.dailystuff.nl/2010/01/postgresql-en-null/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 07:04:35 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=961</guid>
		<description><![CDATA[Mijn docenten zullen wel de koude rillingen krijgen, maar soms heb je gewoon attribuut op je tupel staan die de geen waarde heeft. NULL is hier de algemene benaming voor zoals C-programmeurs die ook wel kennen. De grap komt hoe je tupels gaat selecteren die geen waarde hebben. Veel mensen zie je het volgende statement [...]]]></description>
			<content:encoded><![CDATA[<p>Mijn docenten zullen wel de koude rillingen krijgen, maar soms heb je gewoon attribuut op je tupel staan die de geen waarde heeft. NULL is hier de algemene benaming voor zoals C-programmeurs die ook wel kennen. De grap komt hoe je tupels gaat selecteren die geen waarde hebben. Veel mensen zie je het volgende statement gebruiken en daarna zoeken waarom hun code fout loopt.<br />
<code><br />
# select * from table where column1 = NULL;<br />
</code><br />
Het correcte statement hiervoor staat hieronder en de truuk zit hem in de <strong>IS</strong>. Je wilt geen vergelijking van de waarde van het attribuut, maar je wilt iets weten over de staat van het attribuut.<br />
<code><br />
# select * from table where column1 IS NULL;<br />
# select * from table where column1 IS NOT NULL;<br />
</code><br />
De tweede regel is een klein toegift om te kijken of het attribuut niet NULL vertegenwoordigd. Zal de komende periode kijken of ik nog meer van dit soort leuke PostgreSQL dingetjes kan posten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/postgresql-en-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWL vervuiling opschonen</title>
		<link>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/</link>
		<comments>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 07:51:30 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[AWL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=952</guid>
		<description><![CDATA[SpamAssassin heeft de optie om te leren en te scoren op basis van een combinatie van e-mail en IP-adres. Nu lijkt deze optie zinvol en het lijkt te werken, maar hoever het schaalt is nog de vraag. Wat het schalen gaat beïnvloeden is de hoeveelheid combinaties die in de database staan en hoe snel deze [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dailystuff.nl/tag/spamassassin/">SpamAssassin</a> heeft de optie om te leren en te scoren op basis van een combinatie van e-mail en IP-adres. Nu lijkt deze optie zinvol en het lijkt te werken, maar hoever het schaalt is nog de vraag. Wat het schalen gaat beïnvloeden is de hoeveelheid combinaties die in de database staan en hoe snel deze combinaties te doorzoeken zijn. Helaas is er geen standaardoplossing in SpamAssassin om de AWL-tabel op te schonen, maar gelukkig zijn er opties binnen <a href="http://blog.dailystuff.nl/tag/postgresql/">PostgreSQL</a> om dit te regelen.</p>
<p>De eerste stap is om de AWL-tabel aan te passen door een attribuut toe te voegen met het volgende SQL-commando:<br />
<code><br />
alter table awl add lastupdate timestamp with time zone default now();<br />
</code><br />
De tweede stap is om een trigger te definiëren en aan de tabel te koppelen met het volgende SQL-commando:<br />
<code><br />
CREATE OR REPLACE FUNCTION trg_handle_awl_lastupdate() RETURNS TRIGGER AS $BODY$<br />
BEGIN<br />
IF NEW.lastupdate = OLD.lastupdate THEN NEW.lastupdate := now(); END IF;<br />
RETURN NEW;<br />
END;<br />
$BODY$ LANGUAGE 'plpgsql';<br />
CREATE TRIGGER trg_handle_timestamp BEFORE UPDATE ON awl FOR EACH ROW EXECUTE PROCEDURE trg_handle_awl_lastupdate();<br />
</code><br />
Vanaf dit moment zal het attribuut <em>lastupdate</em> elke keer worden bijgewerkt wanneer de combinatie door SpamAssassin wordt gezien en daardoor ook de tabel bijwerkt. Door nu wekelijks of dagelijks een SQL-script te draaien die bijvoorbeeld elke combinatie die te lang onaangeraakt is te verwijderen. Zoals de voorbeeld code hieronder.<br />
<code><br />
delete from awl<br />
where ( lastupdate < = now() - interval '4 months' and count > 1 )<br />
   or ( lastupdate < = now() - interval '3 months' and count = 1 );<br />
</code><br />
Belangrijk om mee te nemen dat het soms even kan duren voordat bepaalde combinaties weer worden gezien. Veel mailinglisten komen meestal wel eens per maand voor. De interval van 3 maanden zou deze lijsten dus voldoende tijd moeten geven om een score te vormen.</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2010/01/awl-vervuiling-opschonen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL redden of migreren???</title>
		<link>http://blog.dailystuff.nl/2009/12/mysql-redden-of-migreren/</link>
		<comments>http://blog.dailystuff.nl/2009/12/mysql-redden-of-migreren/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 20:44:28 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=920</guid>
		<description><![CDATA[Een jaar geleden kocht Sun Microsystems MySQL AB op en daarmee ook de open source database MySQL. De transitie ging al niet geheel soepel en ook binnen waren er voldoende vragen waarom dit gedaan was aangezien veel engineers binnen Sun Microsystems een voorkeur hadden voor PostgreSQL. Zeker omdat er al een migratie was gestart om [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mysql.com/"><img class="alignright size-thumbnail wp-image-921" title="MySQL logo" src="/wp-content/uploads//2009/12/mysql-167x86-150x77.png" alt="MySQL logo" width="150" height="77" /></a>Een jaar geleden kocht Sun Microsystems MySQL AB op en daarmee ook de open source database MySQL. De transitie ging al niet geheel soepel en ook binnen waren er voldoende vragen waarom dit gedaan was aangezien veel engineers binnen Sun Microsystems een voorkeur hadden voor PostgreSQL. Zeker omdat er al een migratie was gestart om van oa Oracle over te stappen naar PostgreSQL voor oa Sun Management Center.</p>
<p>Dit jaar is de dans om Sun Microsystems begonnen met IBM, maar uiteindelijk werd het Oracle die daadwerkelijk Sun wilde kopen. In de VS is al toestemming gegeven, maar de EC heeft aangegeven dat er kanttekeningen zijn. Het is grappig dat veel kanttekeningen gaan over MySQL, maar niemand beseft dat er maar twee leveranciers zijn van taperobots en Sun is er een van.</p>
<p>Het is dan ook toepasselijk dat <a href="http://monty-says.blogspot.com/2009/12/help-saving-mysql.html">Monty van MySQL nu begint</a> over dat zijn database mogelijk wordt opgeofferd. Oracle heef InnoDB verder ontwikkelt, maar dit valt niet in de licentie die MySQL met Oracle had over InnoDB. En om heel eerlijk te zijn is dit een dure les dat code inkopen voor een open source product dus slecht kan aflopen. Dit is dus ook waar open source projecten PostgreSQL en SQLite dus verschillen tov MySQL.</p>
<p>Ik gok dat dit een dure les gaat worden voor de wereld die steeds meer is gaan vertrouwen op open source producten ipv open source projecten. De vraag is dan misschien ook wat er gaat gebeuren met bv projecten zoals OpenSolaris, OpenJDK, Glassfish, SugarCRM en nog vele andere. Een collega zei het vrijdag heel toepasselijk dat GPL is sommige gevallen best wel heel erg handig kan zijn. De vraag blijft of MySQL met de Falcon-engine te redden is of dat PostgreSQL voor nieuwe projecten een betere optie is.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2009/12/mysql-redden-of-migreren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL is not a standard?</title>
		<link>http://blog.dailystuff.nl/2009/06/sql-is-not-a-standard/</link>
		<comments>http://blog.dailystuff.nl/2009/06/sql-is-not-a-standard/#comments</comments>
		<pubDate>Sun, 31 May 2009 22:18:08 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Open & free]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=797</guid>
		<description><![CDATA[SQL has been seen by many as a standard and on paper they are right. In the real world they are far from the truth when you try to make applications work on multiple databases. Who doesn&#8217;t remember ODBC as the golden bullet to solve all your database access issues and later on the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/SQL">SQL</a> has been seen by many as a standard and on paper they are right. In the real world they are far from the truth when you try to make applications work on multiple databases. Who doesn&#8217;t remember <a href="http://en.wikipedia.org/wiki/ODBC">ODBC</a> as the golden bullet to solve all your database access issues and later on the same with <a href="http://en.wikipedia.org/wiki/JDBC">JDBC</a>. Luckily the language has been standardized is 1986 for the first time and they now are working on the 2008 revision which can be bought from ISO if you want to implement this free standard.</p>
<p>But who implements this standard? MySQL, Oracle, Sybase, PostgreSQL, MS-SQL? The question may be more like <em>&#8220;who implements what?&#8221;</em> and <em>&#8220;how?&#8221;</em>. Bug <a href="https://bugzilla.wikimedia.org/show_bug.cgi?id=18078">18078</a> may give a hint in how well vendors are implementing SQL and may give an inside on how big the vendor lock-in really is. But is also gives an inside on how developers are wasting time writing and discussing abstraction layers to let there application like MediaWiki for example run on multiple databases.</p>
<p>Is this the new barrier where the FOSS-community needs to spend time to give proprietary vendors a run for there money? Just like Mozilla pushed Microsoft to accept open standard for the web, or like <a href="http://en.wikipedia.org/wiki/OASIS_(organization)">OASIS</a> did with OpenDocument, or like the XMPP Standards Foundation is doing with instant messaging? Yes, AOL is running to get there AIM/ICQ-network migrated to <a href="http://en.wikipedia.org/wiki/Jabber">XMPP</a> so they can compete and communicate with Google Talk. Hopefully time will teach us how we can free us from proprietary only solutions and level the field again. Until then it&#8217;s something to work on and check for when using new applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2009/06/sql-is-not-a-standard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLism slaat weer toe</title>
		<link>http://blog.dailystuff.nl/2009/05/mysqlism-slaat-weer-toe/</link>
		<comments>http://blog.dailystuff.nl/2009/05/mysqlism-slaat-weer-toe/#comments</comments>
		<pubDate>Thu, 21 May 2009 17:11:48 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=789</guid>
		<description><![CDATA[Hoewel de core van MediaWiki zelf redelijk goed met verschillende databases om lijkt te gaan is dit niet het geval voor sommige extensies. Zo ook voor de extensie NewestPages waar wordt uitgegaan van MySQL als database en de SQL-query zo geschreven is om op MySQL te draaien. Helaas is PostgreSQL wat kieskeuriger en klaagt over [...]]]></description>
			<content:encoded><![CDATA[<p>Hoewel de core van <a href="http://www.mediawiki.org/">MediaWiki</a> zelf redelijk goed met verschillende databases om lijkt te gaan is dit niet het geval voor sommige extensies. Zo ook voor de extensie <a href="http://www.mediawiki.org/wiki/Extension:Newest_Pages">NewestPages</a> waar wordt uitgegaan van MySQL als database en de SQL-query zo geschreven is om op MySQL te draaien.</p>
<p>Helaas is PostgreSQL wat kieskeuriger en klaagt over het feit dat er een <strong>&#8220;SELECT &#8230; LIMIT 0,5&#8243;</strong> wordt aangeboden. Gelukkig is er ook een optie om met een SQL-statement beide database te bevragen. De vraag is dan ook waarom niet direct voor <strong>&#8220;SELECT &#8230; LIMIT 5 OFFSET 0&#8243;</strong> is gekozen aangezien zowel <a href="http://dev.mysql.com/doc/refman/5.1/en/select.html">MySQL 5</a> als <a href="http://www.postgresql.org/docs/8.3/static/sql-select.html">PostgreSQL 8</a> dit ondersteunen.</p>
<p>De developer heeft een <a href="https://bugzilla.wikimedia.org/show_bug.cgi?id=18863">bugreport</a> en <a href="https://bugzilla.wikimedia.org/attachment.cgi?id=6142&#038;action=diff">patch</a> gekregen om dit structureel op te lossen. Helaas gaat deze functionaliteit niet zonder flinke aanpassingen werken op Oracle aangezien ondersteuning voor oa LIMIT en OFFSET daarin niet aanwezig is. De komende periode maar eens kijken naar welke extensies ook problemen hebben met PostgreSQL als database achter MediaWiki, want <a href="http://blog.dailystuff.nl/2009/05/met-mediawiki-114-naar-postgresql/">ik ga niet meer terug naar MySQL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2009/05/mysqlism-slaat-weer-toe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Met MediaWiki 1.14 naar PostgreSQL</title>
		<link>http://blog.dailystuff.nl/2009/05/met-mediawiki-114-naar-postgresql/</link>
		<comments>http://blog.dailystuff.nl/2009/05/met-mediawiki-114-naar-postgresql/#comments</comments>
		<pubDate>Sat, 16 May 2009 20:34:18 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=780</guid>
		<description><![CDATA[PostgreSQL ondersteuning kwam pas met versie 1.12 echt van de grond en met 1.15 voor de deur werd het tijd om verschillende 1.13 installaties te gaan upgraden naar 1.14. Bij een eerste poging om van 1.13 naar 1.14 te gaan gingen de wiki&#8217;s blank wat helaas geen mooi gezicht was. Bij het niet kunnen herleiden [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.postgresql.org/">PostgreSQL</a> ondersteuning kwam pas met versie 1.12 echt van de grond en met 1.15 voor de deur werd het tijd om verschillende 1.13 installaties te gaan upgraden naar 1.14. Bij een eerste poging om van 1.13 naar 1.14 te gaan gingen de wiki&#8217;s blank wat helaas geen mooi gezicht was. Bij het niet kunnen herleiden van het probleem bleef alleen de upgrades naar 1.13.3 en 1.13.4 over. Bij het uitzoeken wat er mis was besloot Oracle om Sun Microsystems over te nemen waarbij de toekomst van <a href="http://www.mysql.com/">MySQL</a> nog onzekerder is geworden. Dit ook omdat MySQL 5.1 onder leiding van Sun ook al niet geheel een positieve ervaring was en MySQL 6 heeft DukeNukem Forever trekjes.</p>
<p>Het werd tijd om in een testomgeving MediaWiki 1.14 op te bouwen met PostgreSQL als achterliggende database-engine. Het overstappen van database-prefixes naar schema&#8217;s maakt de DBA in mij ook weer blij nu het wat overzichtelijker is geworden. Zeker omdat PostgreSQL dumps op schema-niveau ondersteunt en met veel verschillende wiki&#8217;s is dat wel een fijne feature, want bij MySQL is dit helaas niet mogelijk.</p>
<p>Helaas zijn er ook nadelen met de overstap naar PostgreSQL zoals dat voor <a href="http://www.mediawiki.org/">MediaWiki</a> 1.15 een nieuwe versie van PostgreSQL vereist is. Ik gebruik nu 8.1 en dan zal 8.3 nodig zijn volgens de specificaties. Een tweede punt en dat hangt samen met deze aanpassing is het laden van tsearch2-ondersteuning, maar deze ondersteuning zou bij PostgreSQL 8.3 standaard is de database moeten zitten. Voorlopig voldoet Mediawiki 1.14 en kan de upgrade nog even wachten tot het moment dat de databaseserver overgaat van Debian 4.0 naar Debian 5.0 deze zomer.</p>
<p>Nu deze migratie van MySQL naar PostgreSQL gedaan is gaat wordt het tijd om de volgende migratie te gaan voorbereiden. Dit zullen hoogstwaarschijnlijk Dovecot en Postfix gaan worden, maar eerst even kijken of er nog issues uit de migratie van MediaWiki komen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2009/05/met-mediawiki-114-naar-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PostgreSQL voor Bayesian-filtering in SpamAssassin</title>
		<link>http://blog.dailystuff.nl/2009/05/postgresql-voor-bayesian-filtering-in-spamassassin/</link>
		<comments>http://blog.dailystuff.nl/2009/05/postgresql-voor-bayesian-filtering-in-spamassassin/#comments</comments>
		<pubDate>Thu, 14 May 2009 22:06:45 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Internet, Unix en security]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SpamAssassin]]></category>

		<guid isPermaLink="false">http://blog.dailystuff.nl/?p=778</guid>
		<description><![CDATA[SpamAssassin beschikt over veel regels om e-mail te doorzoeken en te beoordelen op basis van een score of het spambericht is of een mailbericht. Er bestaat ook een optie om SpamAssassin uit te breiden met extra regels en bestaande te updaten, maar deze wedloop kan nooit worden gewonnen. Gelukkig zijn er meer opties om e-mail [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.spamassassin.org/">SpamAssassin</a> beschikt over veel regels om e-mail te doorzoeken en te beoordelen op basis van een score of het spambericht is of een mailbericht. Er bestaat ook een optie om SpamAssassin uit te breiden met extra regels en bestaande te updaten, maar deze wedloop kan nooit worden gewonnen. Gelukkig zijn er meer opties om e-mail te beoordelen, zoals met een <a href="http://en.wikipedia.org/wiki/Bayesian_probability">Bayesian</a>-filter waarbij de kans wordt berekent of een bericht spam is of niet. Een methode waarbij niet wordt gekeken naar de frequentie dat iets voorkomt en daarmee alleen kan zeggen of een stelling waar is of niet waar is. Er is de mogelijkheid om te zeggen dat een bericht de kans heeft van 20% dat het een spambericht is en daarmee is de kans dus redelijk laag, maar er kan ook uitkomen dat de kans 80% is waarmee het veel aannemelijker is dat het een spambericht is.</p>
<p>De voorwaarde voor een goede werking is om goede statistieken te hebben om zo een kansberekening te maken. En hoewel er discussie bestaat over hoe deze statistieken moeten worden gemaakt lijkt de methode nu te werken om het filter op een regelmatige basis zowel spam- als hamberichten te voeden. Hoe je aan deze berichten komt laat ik nu even buiten beschouwing. De eerste stap op Bayesian-filtering aan te zetten in SpamAssassin is door de volgende aanpassingen te maken in <em>/etc/spamassassin/local.cf</em>:<br />
<code><br />
use_bayes 1<br />
bayes_auto_learn 0<br />
</code><br />
Na deze aanpassing moet een database worden aangemaakt in <a href="http://www.postgresql.org/">PostgreSQL</a> en moet worden voorzien van de tabellen die in <em>/usr/share/doc/spamassassin/sql/bayes_pg.sql</em> staan. Hierna moet <em>/etc/spamassassin/local.cf</em> worden uitgebreid met de onderstaande regels om SpamAssassin de database te laten gebruiken.<br />
<code><br />
bayes_store_module  Mail::SpamAssassin::BayesStore::PgSQL<br />
bayes_sql_dsn  dbi:Pg:dbname=database;host=localhost;port=5432<br />
bayes_sql_username  gebruiker<br />
bayes_sql_password  wachtwoord<br />
</code><br />
Vanaf dit moment kan SpamAssassin gebruik maken van PostgreSQL om te beoordelen en met <em><strong>spamassassin &#8211;lint</strong></em> kan worden gecontroleerd of alles correct werkt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2009/05/postgresql-voor-bayesian-filtering-in-spamassassin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PostgreSQL wordt geaccepteerd?</title>
		<link>http://blog.dailystuff.nl/2007/07/postgresql-wordt-geaccepteerd/</link>
		<comments>http://blog.dailystuff.nl/2007/07/postgresql-wordt-geaccepteerd/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 08:08:24 +0000</pubDate>
		<dc:creator>Hans</dc:creator>
				<category><![CDATA[Open & free]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://www.dailystuff.nl/2007/07/14/postgres-wordt-geaccepteerd/</guid>
		<description><![CDATA[MySQL was altijd de database in het open source landschap, maar de laatste tijd lijkt daar steeds meer verandering in te komen. Projecten richten zich meer om applicaties op meerdere databases te laten draaien en zo ook MediaWiki wat de software achter WikiPedia is. Maar het was al even mogelijk om PostgreSQL als database voor [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mysql.com/">MySQL</a> was altijd <em>de</em> database in het open source landschap, maar de laatste tijd lijkt daar steeds meer verandering in te komen. Projecten richten zich meer om applicaties op meerdere databases te laten draaien en zo ook <a href="http://www.mediawiki.org/">MediaWiki</a> wat de software achter <a href="http://nl.wikipedia.org/">WikiPedia</a> is.</p>
<p>Maar het was al even mogelijk om <a href="http://www.postgresql.org/">PostgreSQL</a> als database voor MediaWiki te gebruiken, maar er waren nog voldoende onvolkomenheden. Gelukkig komt daar met versie 1.10.1 verandering is en worden zoekfuncties betrouwbaar naast de al goede performance van MediaWiki op PostgreSQL die zeker te vergelijken is met de MySQL implementatie.</p>
<p>Hopelijk maken meer projecten zich sterk om PostgreSQL als database backend te gaan gebruiken, want concurrentie cq competitie is goed in de open source wereld om een gezonde omgeving voor iedereen te maken en te houden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dailystuff.nl/2007/07/postgresql-wordt-geaccepteerd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
