<?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>guzik &#187; PostgreSQL</title>
	<atom:link href="http://guzik.net.pl/blog/category/tech/db/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>http://guzik.net.pl/blog</link>
	<description>Mój blog</description>
	<lastBuildDate>Thu, 09 Sep 2010 20:52:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SQL Relay</title>
		<link>http://guzik.net.pl/blog/2008/09/sql-relay/</link>
		<comments>http://guzik.net.pl/blog/2008/09/sql-relay/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 05:57:49 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL Relay]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=64</guid>
		<description><![CDATA[Zajmował się ktoś SQL Relay? Wygląda obiecująco, i te wsparcie dostawców &#8211; Oracle, MySQL, mSQL, PostgreSQL, Sybase, MS SQL Server (oba przez FreeTDS), IBM DB2, Interbase, SQLite, ODBC, MS Access (MDB Tools)&#8230; Postanowiłem przyjrzeć się temu w połączeniu z PostgreSQL i MySQL z C/C++ i Perl API. Wersja 0.39.4. Jest w portach dla FreeBSD, nie [...]]]></description>
			<content:encoded><![CDATA[<p>Zajmował się ktoś <a title="http://sqlrelay.sourceforge.net/" href="http://sqlrelay.sourceforge.net/">SQL Relay</a>? Wygląda obiecująco, i te wsparcie dostawców &#8211; <a title="http://www.oracle.com/index.html" href="http://www.oracle.com/index.html">Oracle</a>, <a title="http://dev.mysql.com/" href="http://dev.mysql.com/">MySQL</a>, <a title="http://www.hughes.com.au/products/msql/" href="http://www.hughes.com.au/products/msql/">mSQL</a>, <a title="http://www.postgresql.org/" href="http://www.postgresql.org/">PostgreSQL</a>, <a title="http://www.sybase.com/" href="http://www.sybase.com/">Sybase</a>, <a title="http://www.microsoft.com/sqlserver/2008/en/us/default.aspx" href="http://www.microsoft.com/sqlserver/2008/en/us/default.aspx">MS SQL Server</a> (oba przez <a title="http://www.freetds.org/" href="http://www.freetds.org/">FreeTDS</a>), <a title="http://www.ibm.com/db2" href="http://www.ibm.com/db2">IBM DB2</a>, <a title="http://www.codegear.com/products/interbase" href="http://www.codegear.com/products/interbase">Interbase</a>, <a title="http://www.sqlite.org/" href="http://www.sqlite.org/">SQLite</a>, <a title="http://pl.wikipedia.org/wiki/ODBC" href="http://pl.wikipedia.org/wiki/ODBC">ODBC</a>, <a title="http://office.microsoft.com/pl-pl/access/default.aspx" href="http://office.microsoft.com/pl-pl/access/default.aspx">MS Access</a> (<a title="http://mdbtools.sourceforge.net/" href="http://mdbtools.sourceforge.net/">MDB Tools</a>)&#8230;</p>
<p>Postanowiłem przyjrzeć się temu w połączeniu z PostgreSQL i MySQL z C/C++ i Perl API. Wersja 0.39.4.<br />
Jest w portach dla <a title="http://www.freebsd.org/" href="http://www.freebsd.org/">FreeBSD</a>, nie ma w paczkach dla <a title="http://www.gentoo.org/" href="http://www.gentoo.org/">Gentoo</a>. Potrzebuje dodatkowej biblioteki <a title="http://rudiments.sourceforge.net/" href="http://rudiments.sourceforge.net/">Rudiments</a> (<a title="http://www.freshports.org/devel/rudiments/" href="http://www.freshports.org/devel/rudiments/">devel/rudiments</a> we FreeBSD, <a title="http://packages.gentoo.org/package/dev-cpp/rudiments" href="http://packages.gentoo.org/package/dev-cpp/rudiments">dev-cpp/rudiments</a> w Gentoo) i jeśli chcemy jakiegoś API, to odpowiednio: <a href="http://www.perl.org/">Perl</a>,  <a href="http://www.php.org/">PHP</a>, <a href="http://www.python.org/">Python</a>, <a href="http://www.ruby-lang.org/">Ruby</a>, <a href="http://tcl.sourceforge.net/">TCL</a>, <a href="http://java.sun.com/">Java</a> lub <a href="http://www.zope.org/">Zope</a>. <a title="http://www.gtk.org/" href="http://www.gtk.org/">GTK+</a> i glib  da nam GUI.</p>
<p>Konfiguracja nietrudna &#8211; w pliku XML. W <em>tagu</em> <strong>instance</strong> definiujemy proces nasłuchu. <em>Tag</em> <strong>user</strong> to definicje użytkowników wraz z hasłami. Na koniec <em>tag</em> <strong>connection</strong>, który wskazuje konfigurację do konkretnej bazy.<br />
W bardziej złożonej konfiguracji mamy jeszcze <strong>router</strong> i <strong>filter</strong>. Pierwszy <em>tag</em> odpowiada za kierowanie zapytań do odpowiedniej bazy, drugi &#8211; za filtrowanie zapytań (zdefiniowane nie będą w ogóle przesyłane do serwera, a klient dostanie błąd). W obu przypadkach jest możliwość dopasowania zapytań za pomocą wyrażeń regularnych.</p>
<p>Jeżeli uruchamiamy SQL Relay za pomocą sqlr-start, musimy pamiętać, że wszystkie programy, które wywołuje, np. sqlr-listener muszą być w ścieżce ($PATH). Baza również musi działać. Jeśli nie, pozostaje walka z czyszczeniem <em>shared memory segment</em> i <em>semaphore</em> (ipcs, ipcrm), bo SQL Relay nie sprząta po sobie.</p>
<p>Na tym skończyłem walkę. To znaczy próbowałem uruchomić SQL Relay zarówno z MySQL jak i PostgreSQL, ale niestety zakończyło się to niepowodzeniem (SQL Relay nasłuchiwał, przy połączeniu cisza). Mam nadzieję, że kiedyś wrócę do tego tematu.</p>
<p>Przepraszam, jeśli ktoś był pełen nadzieji, że czegoś się dowie z tego artykułu. Zmieniłem pracę i już nie robię tego co robiłem, więc wiele rzeczy pozostało niedokończonych&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/09/sql-relay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL vs. PostgreSQL (adresy IP)</title>
		<link>http://guzik.net.pl/blog/2008/07/mysql-vs-postgresql-adresy-ip/</link>
		<comments>http://guzik.net.pl/blog/2008/07/mysql-vs-postgresql-adresy-ip/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 14:19:22 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[cidr]]></category>
		<category><![CDATA[inet]]></category>
		<category><![CDATA[INET_ATON]]></category>
		<category><![CDATA[INET_NTOA]]></category>
		<category><![CDATA[macaddr]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=51</guid>
		<description><![CDATA[Jeżeli kiedykolwiek zastanawialiśmy się jak przechowywać i łatwo przetwarzać adresy IP w bazie danych MySQL, odpowiedź brzmi &#8211; zmienić bazę na PostgreSQL (i nie tylko w tym przypadku). MySQL oprócz funkcji INET_ATON() i INET_NTOA() nie oferuje nic więcej, ale to i tak lepsze niż przechowywanie adresów w CHAR(15) czy VARCHAR(15). Wskazany typ kolumny to UNSIGNED [...]]]></description>
			<content:encoded><![CDATA[<p>Jeżeli kiedykolwiek zastanawialiśmy się jak przechowywać i łatwo przetwarzać adresy IP w bazie danych <a title="http://dev.mysql.com/" href="http://dev.mysql.com/">MySQL</a>, odpowiedź brzmi &#8211; zmienić bazę na <a title="http://www.postgresql.org/" href="http://www.postgresql.org/">PostgreSQL</a> (i nie tylko w tym przypadku).</p>
<p>MySQL oprócz funkcji <a title="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton" href="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton">INET_ATON()</a> i <a title="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa" href="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa">INET_NTOA()</a> nie oferuje nic więcej, ale to i tak lepsze niż przechowywanie adresów w CHAR(15) czy <a title="http://dev.mysql.com/doc/refman/5.0/en/char.html" href="http://dev.mysql.com/doc/refman/5.0/en/char.html">VARCHAR(15)</a>. Wskazany typ kolumny to <a title="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html">UNSIGNED INT</a>, a konwersja przy wstawianiu rekordów czy ich pobieraniu właśnie za pomocą wspomnianych funkcji.</p>
<p>PostgreSQL daje nam następujące typy danych: <a title="http://www.postgresql.org/docs/8.3/interactive/datatype-net-types.html" href="http://www.postgresql.org/docs/8.3/interactive/datatype-net-types.html">cidr</a>, inet i dodatkowo macaddr (do przechowywania adresów MAC). Umożliwia także łatwe zarządzanie danymi za pomocą operatorów i <a title="http://www.postgresql.org/docs/8.3/interactive/functions-net.html" href="http://www.postgresql.org/docs/8.3/interactive/functions-net.html">funkcji</a>.</p>
<p>Oczywiście sposób przechowywania adresu IP na pewno nie powinien być kryterium wyboru silnika baz danych, ale może być drobnym argumentem.</p>
<p>Do przeanalizowania kwestia szybkości przeszukiwania, indeksowania i wielkości danych.</p>
<p>Do poczytania:</p>
<ul>
<li><a title="http://arjen-lentz.livejournal.com/44290.html" href="http://arjen-lentz.livejournal.com/44290.html">Arjen&#8217;s Journal &#8211; Storing an IP address in a database table</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/07/mysql-vs-postgresql-adresy-ip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
