https://wiki.postgresql.org/api.php?action=feedcontributions&user=Mbalmer&feedformat=atomPostgreSQL wiki - User contributions [en]2024-03-29T11:28:02ZUser contributionsMediaWiki 1.35.13https://wiki.postgresql.org/index.php?title=Lua&diff=19092Lua2013-02-24T16:53:16Z<p>Mbalmer: license is BSD, not MIT...</p>
<hr />
<div>= Using Lua to Access a PostgreSQL Database =<br />
<br />
There is an BSD-licensed Lua binding to libpq which gives you more or less all features found in the libpq C library in Lua:<br />
<br />
[https://github.com/mbalmer/luapgsql LuaPgSQL]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=User:Mbalmer&diff=19091User:Mbalmer2013-02-24T16:51:53Z<p>Mbalmer: Add Lua</p>
<hr />
<div>= Welcome to my spot on the PostgreSQL Wiki =<br />
<br />
I wrote the Lua interface to PostgreSQL: [[Lua]]<br />
<br />
== Personal websites ==<br />
<br />
* Visit my blog: [http://www.vnode.ch/ www.vnode.ch]<br />
* I am a licensed radio amateur (german): [http://www.hb9ssb.ch/ www.hb9ssb.ch]<br />
<br />
== My company ==<br />
<br />
* My company's homepage (german): [http://www.msys.ch/ www.msys.ch]<br />
* Our flagship product (it uses PostgreSQL; german): [http://www.arcapos.com/ www.arcapos.com]<br />
<br />
== Events ==<br />
<br />
I was at the following events:<br />
<br />
* XDS 2012<br />
* PGDay.EU 2012<br />
* FOSDEM 2013<br />
<br />
[http://www.twitter.com/mbalmer Follow me on Twitter]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=Lua&diff=19090Lua2013-02-24T16:47:38Z<p>Mbalmer: Add link to LuaPgSQL on github</p>
<hr />
<div>= Using Lua to Access a PostgreSQL Database =<br />
<br />
There is an MIT-licensed Lua binding to libpq which gives you more or less all features found in the libpq C library in Lua:<br />
<br />
[https://github.com/mbalmer/luapgsql LuaPgSQL]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=Development_Articles&diff=19089Development Articles2013-02-24T16:44:56Z<p>Mbalmer: /* JDBC/J2EE */ Add a section about using Lua to access PostgreSQL databases</p>
<hr />
<div>These are articles about developing with PostgreSQL (not on [[Development information|developing PostgreSQL]] itself).<br />
<br />
== General Development ==<br />
<br />
* [http://www.webdotdev.com/nvd/articles-reviews/postgresql/programming-otl-using-postgresql-and-unixodbc-in-the-solaris-environment-348.html Programming OTL using PostgreSQL and unixODBC in the Solaris environment: a step-by-step guide] by Carlos Crosetti (2006-02-13)<br />
* [http://www.postgresql.org/files/documentation/books/aw_pgsql/writing_apps/ Writing Applications for PostgreSQL] by Bruce Momjian<br />
* [http://www.codeproject.com/KB/database/PostgreSQLTasks.aspx PostgreSQL & PostGIS operations] by Mohammed Thabet<br />
<br />
== JDBC/J2EE ==<br />
<br />
* [http://www.linuxfocus.org/English/March2003/article285.shtml Accessing PostgreSQL through JDBC via a Java SSL tunnel] by Chianglin Ng<br />
<br />
== Lua ==<br />
<br />
* [[Lua|Accessing PostgreSQL Databases Using the Lua Scripting Language]]<br />
<br />
== Materialized Views ==<br />
See [[Materialized Views]] for more information<br />
<br />
* [http://jonathangardner.net/PostgreSQL/materialized_views/matviews.html Implementing Materialized Views in PostgreSQL] by Jonathan Gardner<br />
* [http://www.pgcon.org/2008/schedule/events/69.en.html Materialized Views that Really Work] by Dan Chak<br />
<br />
== Microsoft Access and .NET ==<br />
<br />
* [http://www.developer.com/open/article.php/631251 Connecting to PostgreSQL from Windows Platforms] by Damond Walker<br />
* [http://pgfoundry.org/projects/npgsql/ The npgsql Project] - .Net Data Provider for PostgreSQL<br />
* [[Using Microsoft .NET with the PostgreSQL Database Server via ODBC]] by Matthew Stanfield (2002-04-15)<br />
* [http://www.postgresonline.com/journal/index.php?/archives/37-REST-in-PostgreSQL-Part-2-A-The-REST-Server-service-with-ASP.NET.html REST in PostgreSQL Part 2 A - The REST Server service with ASP.NET] - Postgres OnLine Journal (March 2008)<br />
*[http://www.postgresonline.com/journal/index.php?/archives/24-Using-MS-Access-with-PostgreSQL.html Using MS Access with PostgreSQL] Postgres OnLine Journal (January/February 2008)<br />
*[http://www.c-sharpcorner.com/UploadFile/thabet084/CrystalReport_PostgreSQL08252009111048AM/CrystalReport_PostgreSQL.aspx?ArticleID=02d7c2d1-2fb6-4b1f-bc0c-79dfda6cc54c Crystal Report with PostgreSQL using dataset]By Mohammed Thabet Zaky (August 2009)<br />
<br />
== PL/pgSQL ==<br />
<br />
* HOWTO: [[Return more than one row of data from PL/pgSQL functions]] by Stephan Szabo<br />
*[http://www.postgresonline.com/journal/index.php?/archives/16-Trojan-SQL-Function-Hack---A-PL-Lemma-in-Disguise.html Trojan SQL Function Hack - A PL Lemma in Disguise] Postgres OnLine Journal (January/February 2008) - Trick to using set returning functions in non-constant join (e.g. simulate SQL Server 2005 CROSS APPLY)<br />
* [http://www.postgres.cz/index.php/PL/pgSQL_(en) Introduction to PL/pgSQL] by Pavel Stehule<br />
<br />
== Python ==<br />
*[[Using psycopg2 with PostgreSQL]]<br />
<br />
== PL/Python ==<br />
*[http://www.postgresonline.com/journal/index.php?/archives/99-Quick-Intro-to-PLPython.html Quick Intro to PLPython] Postgres OnLine Journal (January 2009)<br />
*[http://www.postgresonline.com/journal/index.php?/archives/100-PLPython-Part-2-Control-Flow-and-Returning-Sets.html PLPython Part 2: Control Flow and Returning Sets] Postgres OnLine Journal (February 2009)<br />
*[http://www.postgresonline.com/journal/index.php?/archives/101-PLPython-Part-3-Using-custom-classes,-pulling-data-from-PostgreSQL.html PLPython Part 3: Using custom classes, pulling data from PostgreSQL] Postgres OnLine Journal (February 2009)<br />
*[http://www.postgresonline.com/journal/index.php?/archives/102-PLPython-Part-4-PLPython-meets-aggregates.html PLPython Part 4: PLPython meets aggregates] Postgres OnLine Journal (February/March 2009)<br />
*[http://www.postgresonline.com/journal/index.php?/archives/107-PLPython-Part-5-PLPython-meets-PostgreSQL-Multi-column-aggregates-and-SVG-plots.html PLPython Part 5: PLPython meets PostgreSQL Multi-column aggregates and SVG plots] Postgres OnLine Journal (February/March 2009)<br />
<br />
*[http://www.postgresonline.com/journal/index.php?/archives/106-PL-Python-Cheatsheet-Overview.html PL Python Cheatsheet] Postgres OnLine Journal (February/March 2009)<br />
<br />
== PL/R ==<br />
*[http://www.joeconway.com/web/guest/pl/r PL/R Wiki] <br />
*[http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut01 Up and Running with PL/R An Almost Idiot's Guide] <br />
*[http://www.postgresonline.com/journal/archives/188-plr_part1.html Quick Intro to PL/R and R] - 2010-11-28 Postgres OnLine Journal<br />
*[http://www.postgresonline.com/journal/archives/189-plr_part2.html PL/R Part 2: Functions that take arguments and the power of aggregation] - 2010-12-10 Postgres OnLine Journal<br />
*[http://www.postgresonline.com/journal/archives/190-plr_part3.html PL/R Part 3: Sharing Functions across PL/R functions with plr_module] - 2010-12-20 Postgres OnLine Journal<br />
<br />
== Smalltalk ==<br />
<br />
* [http://www.io.com/~jimm/projects/squeak_postgresql/ Squeak Smalltalk client by Jim Menard (2005-2006)]<br />
<br />
* [http://www.cincomsmalltalk.com/userblogs/jsavidge/blogView?showComments=true&title=Installing+PostgreSQL+to+use+with+VisualWorks+StORE&entry=3319025226 Installing the PostgreSQL driver and client library from the Store in VisualWorks Smalltalk by Cincom (2006)]<br />
<br />
== Referential Integrity ==<br />
<br />
* [[Compensating for Unimplemented Features in PostgreSQL 7.1]] by John Pagakis and Todd Gauthier (2001-08-21)<br />
* [[Referential Integrity Tutorial & Hacking the Referential Integrity tables]] by Joel Burton (2001-09-03)<br />
* [http://www.freebsddiary.org/postgresql-dropping-constraints.php Removing Foreign Keys] by Dan Langille<br />
<br />
== Web development ==<br />
* [http://whatcodecraves.com/articles/2008/02/05/setup_rails_with_postgresql/ Setup Rails with PostgreSQL]<br />
* [http://www.tgds.net/ultra.html Using Macromedia UltraDev with PostgreSQL, Tomcat and Apache] by Tony Grant<br />
* [http://www.holindis.co.uk/PostgreSQLApacheTomcatWin32_v1.1.pdf Apache 2.0, Tomcat 5.5, WARs & PostgreSQL 8.1 JDBC DataSources on Windows] by Chris Drawater (Jan 2006)<br />
* Italian: [http://cuneo.linux.it/materiale/index.php?txt=pgsql/index Appunti di PostgreSQL] by Giorgio Ponza - GlugCN (2006-03-14)<br />
<br />
[[Category:General articles and guides]]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PGDay_FOSDEM_2013&diff=18817PGDay FOSDEM 20132013-01-07T18:54:34Z<p>Mbalmer: /* Dinner */</p>
<hr />
<div>= PGDay FOSDEM 2013 =<br />
<br />
This is the first PgDay we hold in Belgium. FOSDEM PGDay 2013 will be held on Feb 1st in Brussels, Belgium, at the Radisson Blu Royal hotel. As an extension to the regular PostgreSQL devroom at FOSDEM, it will cover topics for PostgreSQL users, developers and contributors, and anybody else interested in PostgreSQL<br />
<br />
== Details ==<br />
<br />
* '''Date:''' Feb 01st, 2013 9am-5pm<br />
* '''Venue:''': Radisson Blu Royal Hotel<br />
* '''Coordinator:''': PostgreSQL Europe [mailto:contact@pgconf.eu contact@pgconf.eu]<br />
* '''Website:''': http://fosdem2013.pgconf.eu/<br />
<br />
== Registration ==<br />
<br />
Free attendance, web registration required: http://fosdem2013.pgconf.eu/registration/ (limited seats)<br />
<br />
== Schedule ==<br />
<br />
Schedule is be published at: http://fosdem2013.pgconf.eu/schedule/<br />
<br />
== Location and Venue ==<br />
<br />
http://fosdem2013.pgconf.eu/venue/<br />
<br />
Address: <br />
<br />
http://www.radissonblu.com/royalhotel-brussels/location<br />
<br />
<br />
== Dinner ==<br />
<br />
We are organizing a dinner after the event on Friday 1st, 2013 at Hard Rock Cafe Brussels. We have limited (30) number of seats, so please add your name to this list before going there.<br />
<br />
If you are bringing someone to the event, make sure you enter your name *twice* (or more) on the list, so the attendee count matches!<br />
<br />
Attendees:<br />
<br />
# Devrim Gündüz<br />
# Devrim Gündüz +1<br />
# Magnus Hagander<br />
# Andreas Scherbaum<br />
# Andreas Scherbaum +1<br />
# Jean-Paul Argudo<br />
# Patryk Kordylewski<br />
# Patryk Kordylewski +1<br />
# Dimitri Fontaine<br />
# Julien Rouhaud<br />
# Dave Page<br />
# Marc Cousin<br />
# Stéphane Schildknecht<br />
# Stéphane Schildknecht +1<br />
# Jehan-Guillaume de Rorthais<br />
# Guillaume Lelarge<br />
# Markus Winand<br />
# Marc Balmer<br />
# Marc Balmer +1<br />
<br />
[[Category:PostgreSQL Events]]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=User:Mbalmer&diff=17809User:Mbalmer2012-06-17T08:31:12Z<p>Mbalmer: /* Events */</p>
<hr />
<div>= Welcome to my spot on the PostgreSQL Wiki =<br />
<br />
== Personal websites ==<br />
<br />
* Visit my blog: [http://www.vnode.ch/ www.vnode.ch]<br />
* I am a licensed radio amateur (german): [http://www.hb9ssb.ch/ www.hb9ssb.ch]<br />
<br />
== My company ==<br />
<br />
* My company's homepage (german): [http://www.msys.ch/ www.msys.ch]<br />
* Our flagship product (it uses PostgreSQL; german): [http://www.arcapos.com/ www.arcapos.com]<br />
<br />
== Events ==<br />
<br />
I will be at the following events:<br />
<br />
* XDS 2012<br />
* PGDay.EU 2012<br />
<br />
<br />
[http://www.twitter.com/mbalmer Follow me on Twitter]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=Events&diff=16278Events2012-02-13T10:57:58Z<p>Mbalmer: /* PostgreSQL Events */ move two events to the past</p>
<hr />
<div>== PostgreSQL Events ==<br />
<br />
Most PostgreSQL-specific events are tracked on the [http://www.postgresql.org/about/eventarchive PostgreSQL Events] page. This is a listing of events at which we expect, or would like to have, a PostgreSQL presence. Please keep the events in order by starting date and follow the existing examples. Please also tag the events with the MediaWiki "PostgreSQL Events" category. If you are going to be organizing a PostgreSQL booth, please adhere to [[BoothPolicies]]. PostgreSQL Europe conference coordination [[PGUG EU Conference Coordination|is here]]. Conference for China user group [[Pg_envent_cn| is here]].<br />
<br />
{| border="1"<br />
|+ <br />
|- style="background:Khaki;"<br />
'''Upcoming PostgreSQL Events Listing'''<br />
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''<br />
|-<br />
| PGDay NYC 2012 || [http://pgday.nycpug.org PGDay NYC 2012] || April 2, 2012 || USA || New York, NY || Talks<br />
|-<br />
| PGWest 2012 || [https://www.postgresqlconference.org/ PostgreSQL West 2012] || June 26-29, 2012 || USA || Denver, CO || Training, Talks<br />
|-<br />
| PGOpen 2012 || [http://postgresopen.org Postgres Open 2012] || September 16-19, 2012 || USA || Chicago, IL || Training, Talks<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+ <br />
|- style="background:Khaki;"<br />
'''Previous PostgreSQL Events Listing'''<br />
| '''Event''' || '''Web Page''' || '''Date''' || '''Country''' || '''City''' || '''Activities'''<br />
|-<br />
| [[FOSDEM 2012]] || [http://www.fosdem.org/2012/ FOSDEM '12] || February 04-05, 2012 || Belgium || Brussels || Booth, Devroom<br />
|-<br />
| PG Session #3 || [http://www.postgresql-sessions.org/3/ PG Session #3] || February 02 2012 || France || Paris || Talks<br />
|-<br />
| PostgreSQL Conference Germany 2011 || [http://2011.pgconf.de/ PGConf.DE 2011]|| Nov 11, 2011 || Germany || Oberhausen || [[German-Speaking PostgreSQL Conference 2011|Talks]]<br />
|-<br />
| PGBR2011 || [http://pgbr.postgresql.org.br/ PGBR2011] || Nov 3-4, 2011 || Brazil || São Paulo || Tutorials, Talks, Booth<br />
|-<br />
| PostgreSQL Conference Europe 2011 || [http://2011.pgconf.eu/ PGConf.EU 2011] || October 18-21, 2011 || The Netherlands || Amsterdam || Training, [[PostgreSQL Conference Europe Talks 2011|Talks]]<br />
|-<br />
| PostgreSQL Conference West 2011 || [http://www.postgresqlconference.org/ #PgWest 2011] || September 27-30, 2011 || San Jose || California || Training, Talks, Booth<br />
|-<br />
| Postgres Open || [http://postgresopen.org/2011/home/ Postgres Open 2011] || Sep 14-16, 2011 || USA || Chicago || [[Postgres Open Talks 2011]]<br />
|-<br />
| PGDay Porto Alegre || [http://www.postgresql.org.br/eventos/2011/pgday/rs PGDay Porto Alegre] || August 19, 2011 || Brazil || Porto Alegre || Talks, Booths<br />
|-<br />
| FrOSCon || [http://www.froscon.de/ FrOSCon 2011]|| August 20-21, 2011 || Germany || St. Augustin || Talks, Booth<br />
|-<br />
| Pg Conf Colombia || [http://www.pgconf.org Pg Conf Colombia 2011]|| August 4-5, 2011 || Colombia || Bucaramanga ||<br />
|-<br />
| PgDay at OSCON 2011 || [http://pugs.postgresql.org/node/1663 PgDay at OSCON 2011] || July 24, 2011 || USA || Portland, OR || Talks, party<br />
|-<br />
| 2011 China PostgreSQL User conference ||[http://wiki.postgresql.org/wiki/Pgconchina2011 2011 China PostgreSQL User conference] || July 16-17, 2011 || China || GUANGZHOU ||Talks,Tutorial<br />
|-<br />
| PGCon 2011 || [http://www.pgcon.org/2011/ PGCon 2011] || May 17-20, 2011 || Canada || Ottawa || Talks, Training<br />
|-<br />
| PGEast 2011 || [https://www.postgresqlconference.org/ PGWest] || March 22-25, 2011 || USA || New York, NY || Talks, Training<br />
|-<br />
| PostgresSQL Conference 2011 Japan || || February 25-26, 2011 || Tokyo || Japan ||<br />
|-<br />
| [[FOSDEM, Brussels 2011]] || [http://www.fosdem.org/2011/ FOSDEM '11] || February 05-06, 2011 || Belgium || Brussels || Booth, Devroom<br />
|-<br />
| [[PGDAY-Latino, La Habana 2011]] || [http://postgresql.uci.cu/news/19 PGDAY-Latino '11] || February 01-05, 2011 || Cuba || La Habana || Talks, Workshop<br />
|-<br />
| colspan="6" | [[Events/2010 | 2010 events]]<br />
|-<br />
| colspan="6" | [[Events/2009 | 2009 events]]<br />
|-<br />
| colspan="6" | [[Events/2008 | 2008 events]]<br />
|-<br />
| colspan="6" | [[Events/2007 | 2007 events]]<br />
|}<br />
<br />
== External Links ==<br />
<br />
* [http://conferences.oreillynet.com/ O'Reilly conferences]<br />
* [http://opencheese.com/2007/10/14/open-source-events-2008/ "Open Source and Linux events in 2008"]<br />
<br />
[[Category:PostgreSQL Events]]<br />
[[Category:Advocacy]]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=BinaryFilesInDB&diff=16277BinaryFilesInDB2012-02-13T10:49:29Z<p>Mbalmer: /* When is it bad idea to store binary files in the database? */ typos</p>
<hr />
<div>==Storing Binary files in the Database==<br />
<br />
Purpose: to cover the pluses and minuses of storing files in a database versus storing the path to the binary file and other meta data.<br />
<br />
Reason: this topic has come up several times in the past on the PostgreSQL mailing lists. With new user asking, is it OK store pictures, word, spreadsheet, html, pdf, or etc. in the database. Of course like everything thing there is 2 prevailing schools of thought each method having pluses and minus detailed below. <br />
<br />
<br />
==Methods:==<br />
<br />
===Storing the large binary* file aka unstructured data streams in a database.===<br />
Postgres along with other databases offer similar basic structures. <br />
* BLOB binary large object see [http://www.postgresql.org/docs/current/static/largeobjects.html Large Object Support]<br />
** Pluses <br />
*** limited 2G's per entry, & 4 Billion per database<br />
*** Can stream, and seek over entries ( can reduce memory requirements on DB server and client)<br />
*** no encoding or escaping required.<br />
** Minuses <br />
*** must use different interface from what is normally used to access BLOBs. <br />
*** Need to track OID. Normally a separate table with addition meta data is used to describe OID <br />
*** (8.4 or older) No access controls in database.<br />
* Storing binary data using [http://www.postgresql.org/docs/8.4/static/datatype-binary.html btyea] or [http://www.postgresql.org/docs/8.4/static/datatype-character.html text] data types<br />
** Pluses<br />
*** Storing and Accessing entry utilizes the same interface when accessing any other data type or record. <br />
*** No need to track OID<br />
** Minus <br />
*** bytea and text data type both use [http://www.postgresql.org/docs/8.4/static/storage-toast.html TOAST] <br />
**** limited to 1G per entry <br />
**** 4 Billion entries per table<br />
*** Need to escape/encode binary data before sending to DB then do the reverse after retrieving the data <br />
*** Memory requirements on the server can be steep even on a small record set.<br />
* Pluses overall<br />
** Security and access control is simplified <br />
** version controlling is easier. <br />
** ACID<br />
** Backups are easier no need to track external files<br />
* Minus overall<br />
** Performance hit storing files in database.<br />
** Memory requirements higher, for Database <br />
** Backups can take significantly longer <br />
** Access to files to external applications is complicated. Normally a temporary file is copied to the client to access and modify the file then needs to be copied back.<br />
<br />
===Storing Meta data and symbolic link in the database to where a Binary file is located ===<br />
* Pluses <br />
** Performance accessing binary file skips DB access layer.<br />
** Number of files limited only by file system<br />
** Size limited by file system<br />
* Minuses <br />
** Need to develop an interface to keep track of externally attached files<br />
** external files and database can get out of sync<br />
*** binary files missing entries in the database<br />
*** database having entries to external files that's been deleted or moved by users or other events out of control of the database.<br />
** Security settings between file system and database are independent from each other. The application may need to may need multiple security logins to access all resources. This is dependent on security needs of the application, and methods used for access control. There are several methods to create a single log on infrastructure.<br />
** Multi points of failure depending on complexity of the network.<br />
<br />
==When should files be stored in the database?==<br />
<br />
The common suggestion here is when the files have to be [http://en.wikipedia.org/wiki/ACID ACID]. <br />
<br />
Example: Photos taken during a Quality Inspection process: <br />
<br />
A normal/ordinary record in a database would consist of a Inspector, time stamp of inspection, process used to inspect the part, was the part accepted or rejected, and the parts serial number. In this scenario photos are also taken showing the part inspected. The photos are a integral piece of the inspection record keeping process. <br />
<br />
The photos being a critical piece making up the record/inspection report should not to be stored separately. Consider if the photos being stored on file sever are moved to new location as part of upgrade, the link to the record is bad if it was not updated. So now the inspection record by itself is worth less as it lost the piece it is describing and the photos are worthless without the record describing them. So the two pieces must stay together to have any value as a inspection report. <br />
<br />
Storing the photos outside the database, there is no easy way to guarantee atomicity, consistency, isolation and durability of the photos. Storing the photos in the database is the only practical solution where the programmer can guarantee rules are followed in the future. <br />
<br />
===What is the best way to store the files in the Database?===<br />
<br />
There are two methods to choose from in PostgreSQL BLOB or bytea/text data types. The authors personal preference is using text data type to store files in the database as it simplifies getting to the file and eases encoding the file for storage. <br />
<br />
The BLOB type requires using a different interface and adds some complexity in programming. Although it does support a far larger file. This added complexity the author tries to avoid.<br />
<br />
The author dislikes the bytea data type as it can be very difficult to escape and then unescape depending on programming tools used. There is nothing wrong with the bytea data type but it can be more difficult to use. Yet this has been made easier in some programming languages such as PHP, which includes a escape and unescape bytea functions. Yet this is not a common tool available in other programming languages and as a general rule/suggestion the database should be designed to work with as many programming languages and or frameworks as makes sense.<br />
<br />
Storing files in the text data type requires the files to be encoded in some character to binary representation. There are several to chose. This is not exhausted list just commonly used ones.<br />
<br />
* [http://en.wikipedia.org/wiki/Base64 Base64]<br />
* [http://en.wikipedia.org/wiki/Uuencode uuencoding]<br />
* [http://en.wikipedia.org/wiki/Quoted-printable Quoted Printable]<br />
* [http://en.wikipedia.org/wiki/Ascii85 ASCII85]<br />
<br />
Base64 probably today is the most common encoding method for binary files thanks to email. Many programing languages, and frameworks support base64. So the author encodes the files in base64 when storing files in the database. Postgresql also has base64 encoding and decoding "encode() & decode()"<br />
<br />
see section [http://www.postgresql.org/docs/current/static/functions-string.html 9.4 String Function and Operators] for more details <br />
<br />
Biggest draw back using text data type and base64 encoding is it inflates the data by 33%. This adds a significant increase to storage requirements and overhead that bytea and BLOB do not suffer from. So keep in mind when designing a database what appears to be a simple decision now, can have big impacts down the road. <br />
<br />
This 33% hit in overhead can have a significant impact. Consider the process time and IO hit on a 10 gig table with binary files. Postgresql is having to process an additional 3.3 gigs of more data because of the encoding method. <br />
<br />
===What Meta Data should be stored in a database?===<br />
here is a basic list what should be recorded in the database along side the binary file<br />
*original file name<br />
*data type<br />
**this is needed to tell us what kinda of binary file is stored in the database <br />
**the author suggest following the [http://en.wikipedia.org/wiki/Internet_media_type Internet Media Type] it makes it easier to use the same information for a website or attaching to email.<br />
*long description <br />
*date added<br />
<br />
==When is it bad idea to store binary files in the database?==<br />
<br />
Very large files (100meg+), where performance is critical to the application. The database layer adds a lot of overhead and complexity that may not be required.</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=BinaryFilesInDB&diff=16276BinaryFilesInDB2012-02-13T10:47:50Z<p>Mbalmer: /* Storing Meta data and symbolic link in the database to where a Binary file is located */ out of sink -> out of sync</p>
<hr />
<div>==Storing Binary files in the Database==<br />
<br />
Purpose: to cover the pluses and minuses of storing files in a database versus storing the path to the binary file and other meta data.<br />
<br />
Reason: this topic has come up several times in the past on the PostgreSQL mailing lists. With new user asking, is it OK store pictures, word, spreadsheet, html, pdf, or etc. in the database. Of course like everything thing there is 2 prevailing schools of thought each method having pluses and minus detailed below. <br />
<br />
<br />
==Methods:==<br />
<br />
===Storing the large binary* file aka unstructured data streams in a database.===<br />
Postgres along with other databases offer similar basic structures. <br />
* BLOB binary large object see [http://www.postgresql.org/docs/current/static/largeobjects.html Large Object Support]<br />
** Pluses <br />
*** limited 2G's per entry, & 4 Billion per database<br />
*** Can stream, and seek over entries ( can reduce memory requirements on DB server and client)<br />
*** no encoding or escaping required.<br />
** Minuses <br />
*** must use different interface from what is normally used to access BLOBs. <br />
*** Need to track OID. Normally a separate table with addition meta data is used to describe OID <br />
*** (8.4 or older) No access controls in database.<br />
* Storing binary data using [http://www.postgresql.org/docs/8.4/static/datatype-binary.html btyea] or [http://www.postgresql.org/docs/8.4/static/datatype-character.html text] data types<br />
** Pluses<br />
*** Storing and Accessing entry utilizes the same interface when accessing any other data type or record. <br />
*** No need to track OID<br />
** Minus <br />
*** bytea and text data type both use [http://www.postgresql.org/docs/8.4/static/storage-toast.html TOAST] <br />
**** limited to 1G per entry <br />
**** 4 Billion entries per table<br />
*** Need to escape/encode binary data before sending to DB then do the reverse after retrieving the data <br />
*** Memory requirements on the server can be steep even on a small record set.<br />
* Pluses overall<br />
** Security and access control is simplified <br />
** version controlling is easier. <br />
** ACID<br />
** Backups are easier no need to track external files<br />
* Minus overall<br />
** Performance hit storing files in database.<br />
** Memory requirements higher, for Database <br />
** Backups can take significantly longer <br />
** Access to files to external applications is complicated. Normally a temporary file is copied to the client to access and modify the file then needs to be copied back.<br />
<br />
===Storing Meta data and symbolic link in the database to where a Binary file is located ===<br />
* Pluses <br />
** Performance accessing binary file skips DB access layer.<br />
** Number of files limited only by file system<br />
** Size limited by file system<br />
* Minuses <br />
** Need to develop an interface to keep track of externally attached files<br />
** external files and database can get out of sync<br />
*** binary files missing entries in the database<br />
*** database having entries to external files that's been deleted or moved by users or other events out of control of the database.<br />
** Security settings between file system and database are independent from each other. The application may need to may need multiple security logins to access all resources. This is dependent on security needs of the application, and methods used for access control. There are several methods to create a single log on infrastructure.<br />
** Multi points of failure depending on complexity of the network.<br />
<br />
==When should files be stored in the database?==<br />
<br />
The common suggestion here is when the files have to be [http://en.wikipedia.org/wiki/ACID ACID]. <br />
<br />
Example: Photos taken during a Quality Inspection process: <br />
<br />
A normal/ordinary record in a database would consist of a Inspector, time stamp of inspection, process used to inspect the part, was the part accepted or rejected, and the parts serial number. In this scenario photos are also taken showing the part inspected. The photos are a integral piece of the inspection record keeping process. <br />
<br />
The photos being a critical piece making up the record/inspection report should not to be stored separately. Consider if the photos being stored on file sever are moved to new location as part of upgrade, the link to the record is bad if it was not updated. So now the inspection record by itself is worth less as it lost the piece it is describing and the photos are worthless without the record describing them. So the two pieces must stay together to have any value as a inspection report. <br />
<br />
Storing the photos outside the database, there is no easy way to guarantee atomicity, consistency, isolation and durability of the photos. Storing the photos in the database is the only practical solution where the programmer can guarantee rules are followed in the future. <br />
<br />
===What is the best way to store the files in the Database?===<br />
<br />
There are two methods to choose from in PostgreSQL BLOB or bytea/text data types. The authors personal preference is using text data type to store files in the database as it simplifies getting to the file and eases encoding the file for storage. <br />
<br />
The BLOB type requires using a different interface and adds some complexity in programming. Although it does support a far larger file. This added complexity the author tries to avoid.<br />
<br />
The author dislikes the bytea data type as it can be very difficult to escape and then unescape depending on programming tools used. There is nothing wrong with the bytea data type but it can be more difficult to use. Yet this has been made easier in some programming languages such as PHP, which includes a escape and unescape bytea functions. Yet this is not a common tool available in other programming languages and as a general rule/suggestion the database should be designed to work with as many programming languages and or frameworks as makes sense.<br />
<br />
Storing files in the text data type requires the files to be encoded in some character to binary representation. There are several to chose. This is not exhausted list just commonly used ones.<br />
<br />
* [http://en.wikipedia.org/wiki/Base64 Base64]<br />
* [http://en.wikipedia.org/wiki/Uuencode uuencoding]<br />
* [http://en.wikipedia.org/wiki/Quoted-printable Quoted Printable]<br />
* [http://en.wikipedia.org/wiki/Ascii85 ASCII85]<br />
<br />
Base64 probably today is the most common encoding method for binary files thanks to email. Many programing languages, and frameworks support base64. So the author encodes the files in base64 when storing files in the database. Postgresql also has base64 encoding and decoding "encode() & decode()"<br />
<br />
see section [http://www.postgresql.org/docs/current/static/functions-string.html 9.4 String Function and Operators] for more details <br />
<br />
Biggest draw back using text data type and base64 encoding is it inflates the data by 33%. This adds a significant increase to storage requirements and overhead that bytea and BLOB do not suffer from. So keep in mind when designing a database what appears to be a simple decision now, can have big impacts down the road. <br />
<br />
This 33% hit in overhead can have a significant impact. Consider the process time and IO hit on a 10 gig table with binary files. Postgresql is having to process an additional 3.3 gigs of more data because of the encoding method. <br />
<br />
===What Meta Data should be stored in a database?===<br />
here is a basic list what should be recorded in the database along side the binary file<br />
*original file name<br />
*data type<br />
**this is needed to tell us what kinda of binary file is stored in the database <br />
**the author suggest following the [http://en.wikipedia.org/wiki/Internet_media_type Internet Media Type] it makes it easier to use the same information for a website or attaching to email.<br />
*long description <br />
*date added<br />
<br />
==When is it bad idea to store binary files in the database?==<br />
<br />
Very large files (100meg+), Where performance is critical to the application. The database layer adds allot of over head and complexity that may not be required.</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PGDay_Europe_2010_Talks&diff=12747PGDay Europe 2010 Talks2010-12-07T16:07:02Z<p>Mbalmer: /* 12:10 - 13:00 PostgreSQL als Basis für Detailhandels-Anwendungen (Marc Balmer) */</p>
<hr />
<div>PGDay.EU 2010 was held in Stuttgart, Germany on December 6th - 8th.<br />
<br />
== Monday, December 6, 2010 ==<br />
<br />
=== Berlin 1+2 ===<br />
<br />
==== 9:45 - 10:45 [[Keynote: Back To The Future of Open Source (Simon Phipps)]]====<br />
==== 11:10 - 12:00 [[Play chess against PostgreSQL (and get beaten) (Gianni Ciolli)]] ====<br />
==== 12:10 - 13:00 [[Rapid Upgrades With Pg_Upgrade (Bruce Momjian)]] ====<br />
==== 14:00 - 14:50 [[PostGIS 1.5 and beyond: a technical perspective (Mark Cave-Ayland, Olivier Courtin)]] ====<br />
==== 15:20 - 16:10 [[Managing PostgreSQL Replication (Simon Riggs)]] ====<br />
<br />
=== Berlin 3 ===<br />
<br />
==== 11:10 - 12:00 [[Media:Postgis_das_wo_in_der_datenbank_pgday_eu_2010.pdf|PostGIS - Das Wo? in der Datenbank (Stefan Keller, Andreas Neumann)]]====<br />
<br />
==== 12:10 - 13:00 [[Media:Pgsql_detailhandel.pdf|PostgreSQL als Basis für Detailhandels-Anwendungen (Marc Balmer)]]====<br />
<br />
==== 14:00 - 14:50 [[Media:Pg-community.pdf|Die PostgreSQL Community (Bernd Helmle)]]====<br />
<br />
==== 16:20 - 17:10 [[Media:Pgday-2010-ose-print.pdf|Open Source Entscheidungen]] ([[User:Ads|Andreas Scherbaum]]) ====<br />
<br />
=== Glasgow ===<br />
<br />
=== Tara ===<br />
<br />
<br />
<br />
<br />
== Tuesday, December 7, 2010 ==<br />
<br />
=== Berlin 1+2 ===<br />
<br />
=== Berlin 3 ===<br />
<br />
==== 10:25 - 11:10 [[Media:Pgday_eu_2010_benchmarking.pdf|Benchmarking und Performancetesting von und mit PostgreSQL]] ([[User:mastermind|Stefan Kaltenbrunner]]) ====<br />
<br />
==== 11:35 - 12:20 [[Media:Pgday-2010-mysql-to-pg-print.pdf|Datenbanken von MySQL zu PostgreSQL portieren]] ([[User:Ads|Andreas Scherbaum]]) ====<br />
<br />
=== Glasgow ===<br />
==== 10:25 - 11:10 [http://www.slideshare.net/Tim.Bunce/pl-perl90-201012 PL/Perl new features in 9.0] ([[User:timbunce|Tim Bunce]]) ====<br />
<br />
=== Tara ===</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=File:Pgsql_detailhandel.pdf&diff=12746File:Pgsql detailhandel.pdf2010-12-07T15:58:48Z<p>Mbalmer: Slides from my talk during PGDay Europe 2010</p>
<hr />
<div>Slides from my talk during PGDay Europe 2010</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12354PG-DACH2010-11-02T11:53:02Z<p>Mbalmer: /* PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe */</p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
Reicht das als Name oder muss es etwas wie "Verband der deutschsprachigen PostgreSQL Anwender" heissen?<br />
<br />
== Zu klärende Fragen ==<br />
<br />
=== Ziele ===<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
=== Form ===<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
==== Vorschlag Marc Balmer ====<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Nach CH Recht braucht es mind. 3 Leute für einen Verein und die gesetzlichen Regelungen sind minimal. Es braucht Statuten, z.B.<br />
<br />
=== Präsidentschaft: ===<br />
<br />
Vom Vorstand aus seinen Reihen gewählt<br />
<br />
Oder automatische Rotation?<br />
<br />
Denkbar wäre natürlich auch eine Monarchie.<br />
<br />
=== Vorstand ===<br />
<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Von den Mitgliedern gewählt<br />
<br />
Amtsdauer? Wählbarkeit? Gewichtung?<br />
<br />
=== Sekretariat: ===<br />
<br />
=== Mitgliedschaft ===<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12353PG-DACH2010-11-02T11:26:26Z<p>Mbalmer: /* Präsidentschaft: */</p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Zu klärende Fragen ==<br />
<br />
=== Ziele ===<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
=== Form ===<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
==== Vorschlag Marc Balmer ====<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Nach CH Recht braucht es mind. 3 Leute für einen Verein und die gesetzlichen Regelungen sind minimal. Es braucht Statuten, z.B.<br />
<br />
=== Präsidentschaft: ===<br />
<br />
Vom Vorstand aus seinen Reihen gewählt<br />
<br />
Oder automatische Rotation?<br />
<br />
Denkbar wäre natürlich auch eine Monarchie.<br />
<br />
=== Vorstand ===<br />
<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Von den Mitgliedern gewählt<br />
<br />
Amtsdauer? Wählbarkeit? Gewichtung?<br />
<br />
=== Sekretariat: ===<br />
<br />
=== Mitgliedschaft ===<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12352PG-DACH2010-11-02T11:25:54Z<p>Mbalmer: /* Vorstand */</p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Zu klärende Fragen ==<br />
<br />
=== Ziele ===<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
=== Form ===<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
==== Vorschlag Marc Balmer ====<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Nach CH Recht braucht es mind. 3 Leute für einen Verein und die gesetzlichen Regelungen sind minimal. Es braucht Statuten, z.B.<br />
<br />
=== Präsidentschaft: ===<br />
<br />
Vom Vorstand aus seinen Reihen gewählt<br />
<br />
Denkbar wäre natürlich auch eine Monarchie.<br />
<br />
=== Vorstand ===<br />
<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Von den Mitgliedern gewählt<br />
<br />
Amtsdauer? Wählbarkeit? Gewichtung?<br />
<br />
=== Sekretariat: ===<br />
<br />
=== Mitgliedschaft ===<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12351PG-DACH2010-11-02T11:25:03Z<p>Mbalmer: </p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Zu klärende Fragen ==<br />
<br />
=== Ziele ===<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
=== Form ===<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
==== Vorschlag Marc Balmer ====<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Nach CH Recht braucht es mind. 3 Leute für einen Verein und die gesetzlichen Regelungen sind minimal. Es braucht Statuten, z.B.<br />
<br />
=== Präsidentschaft: ===<br />
<br />
Vom Vorstand aus seinen Reihen gewählt<br />
<br />
Denkbar wäre natürlich auch eine Monarchie.<br />
<br />
=== Vorstand ===<br />
<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Mindestens eine Person aus jedem Land<br />
Von den Mitgliedern gewählt<br />
<br />
=== Sekretariat: ===<br />
<br />
=== Mitgliedschaft ===<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12350PG-DACH2010-11-02T11:23:53Z<p>Mbalmer: </p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Zu klärende Fragen ==<br />
<br />
=== Ziele ===<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
=== Form ===<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
==== Vorschlag Marc Balmer ====<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Nach CH Recht braucht es mind. 3 Leute für einen Verein und die gesetzlichen Regelungen sind minimal. Es braucht Statuten, z.B.<br />
<br />
Präsidentschaft:<br />
<br />
Vom Vorstand aus seinen Reihen gewählt<br />
=== Vorstand ===<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Mindestens eine Person aus jedem Land<br />
Von den Mitgliedern gewählt<br />
<br />
=== Sekretariat: ===<br />
<br />
=== Mitgliedschaft ===<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12348PG-DACH2010-11-02T11:18:50Z<p>Mbalmer: </p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Zu klärende Fragen ==<br />
<br />
Ziele:<br />
<br />
Unterstützung der PostgreSQL Entwicklung, z.B. Spesenübernahme für Konferenzteilnehmer,<br />
Werbematerial, Präsenz an Messen und Konferenzen, Werbung.<br />
<br />
PostgreSQL Nutzern das Gefühl vermitteln, dass es gleichgesinnte gibt (Sicherheit!),<br />
eine Ansprechstelle sein für Firmen, die Kontakt suchen<br />
<br />
Form:<br />
<br />
* Loser Zusammenschluss<br />
* Verein<br />
* GmBH<br />
<br />
Vorschlag Marc Balmer:<br />
<br />
Verein nach Schweizer Recht mit Sitz am Wohnort von Marc Balmer<br />
<br />
Vorstand:<br />
<br />
Mindestens eine Person aus jedem Land<br />
<br />
Mitgliedschaft:<br />
<br />
Offen für private und Firmen<br />
<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=PG-DACH&diff=12347PG-DACH2010-11-02T11:14:11Z<p>Mbalmer: New page: = PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe = == Ideensammler ==</p>
<hr />
<div>= PG-DACH - Eine deutschprachige PostgreSQL Anwendergruppe =<br />
<br />
== Ideensammler ==</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=User:Mbalmer&diff=11785User:Mbalmer2010-08-15T16:13:09Z<p>Mbalmer: /* Events */</p>
<hr />
<div>= Welcome to my spot on the PostgreSQL Wiki =<br />
<br />
== Personal websites ==<br />
<br />
* Visit my blog: [http://www.vnode.ch/ www.vnode.ch]<br />
* I am a licensed radio amateur (german): [http://www.hb9ssb.ch/ www.hb9ssb.ch]<br />
<br />
== My company ==<br />
<br />
* My company's homepage (german): [http://www.msys.ch/ www.msys.ch]<br />
* Our flagship product (it uses PostgreSQL; german): [http://www.arcapos.com/ www.arcapos.com]<br />
<br />
== Events ==<br />
<br />
I will be at the following events:<br />
<br />
* MeKa 2010<br />
* FOSDEM 2010<br />
* EuroBSDCon 2010<br />
* XDS 2010<br />
<br />
[http://www.twitter.com/mbalmer Follow me on Twitter]</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=IRC2RWNames&diff=11784IRC2RWNames2010-08-15T16:05:51Z<p>Mbalmer: /* List of IRC nicks with their respective real world names */ Add myself</p>
<hr />
<div>=== List of IRC nicks with their respective real world names ===<br />
<br />
You can find many PostgreSQL users and developers chatting in [irc://irc.freenode.net/postgresql #postgresql on freenode]. Here's more information about some of the regulars there:<br />
<br />
{| border="1"<br />
|-<br />
!Nickname || Real Name<br />
|-<br />
|ads || Andreas Scherbaum<br />
|-<br />
|agliodbs, aglio2 (freenode), jberkus (oftc) || Josh Berkus<br />
|-<br />
|ahammond || Andrew Hammond<br />
|-<br />
|alvherre || Alvaro Herrera<br />
|-<br />
|andres || Andres Freund<br />
|-<br />
|Assid || Satish Alwani<br />
|-<br />
|aurynn || Aurynn Shaw<br />
|-<br />
|BlueAidan/BlueAidan_work || [[user:davidblewett | David Blewett]]<br />
|-<br />
|bmomjian || Bruce Momjian<br />
|-<br />
|cbbrowne || Christopher Browne<br />
|-<br />
|crab || Abhijit Menon-Sen<br />
|-<br />
|Crad || Gavin M. Roy<br />
|- <br />
|daamien || Damien Clochard<br />
|-<br />
|DarcyB || Darcy Buskermolen<br />
|-<br />
|davidfetter || David Fetter<br />
|-<br />
|dcolish || [http://www.unencrypted.org Dan Colish]<br />
|-<br />
|dcramer || Dave Cramer<br />
|-<br />
|DeciBull, TheCougar || Jim C. Nasby<br />
|-<br />
|dennisb || Dennis Bj&ouml;rklund<br />
|-<br />
|depesz || Hubert Lubaczewski<br />
|-<br />
|devrimgunduz || Devrim G&uuml;nd&uuml;z<br />
|-<br />
|digicon || [http://digicondev.blogspot.com Zach Conrad]<br />
|-<br />
|dim || Dimitri Fontaine<br />
|-<br />
|direvus || Brendan Jurd<br />
|-<br />
|drbair || Ryan Bair<br />
|-<br />
|duck_tape || Adi Alurkar<br />
|-<br />
|dvl || Dan Langille<br />
|-<br />
|eggyknap || Joshua Tolley<br />
|-<br />
|endpoint_david || David Christensen<br />
|-<br />
|f3ew/devdas || Devdas Vasu Bhagat<br />
|-<br />
|feivel || Michael Meskes<br />
|-<br />
|elein || Elein Mustain<br />
|-<br />
|gleu || Guillaume Lelarge<br />
|-<br />
|gorthx || Gabrielle Roth<br />
|-<br />
|grzm || Michael Glaesemann<br />
|-<br />
|gsmet || Guillaume Smet<br />
|-<br />
|gregs1104 || Greg Smith<br />
|-<br />
|G_SabinoMullane || Greg Sabino Mullane<br />
|-<br />
|HarrisonF || Harrison Fisk<br />
|-<br />
|indigo || Phil Frost<br />
|-<br />
|JanniCash || Jan Wieck<br />
|-<br />
|jconway || Joe Conway<br />
|-<br />
|jdavis, jdavis_ || Jeff Davis<br />
|-<br />
|johto || Marko Tiikkaja<br />
|-<br />
|jurka || Kris Jurka<br />
|-<br />
|justatheory || David Wheeler<br />
|-<br />
|jpa || Jean-Paul Argudo<br />
|-<br />
|jwp || James Pye<br />
|-<br />
|j_williams || Josh Williams<br />
|-<br />
|kgrittn || Kevin Grittner<br />
|-<br />
|klando || Cédric Villemain<br />
|-<br />
|larryrtx || Larry Rosenman<br />
|-<br />
|linuxpoet, postgresman || Joshua D. Drake<br />
|-<br />
|lluad || Steve Atkins<br />
|-<br />
|lsmith || Lukas Smith<br />
|-<br />
|magnush || Magnus Hagander<br />
|-<br />
|marco44 || Marc Cousin<br />
|-<br />
|markwkm || Mark Wong<br />
|-<br />
|mastermind || [[user:mastermind | Stefan Kaltenbrunner]]<br />
|-<br />
|mbalmer || [[user:mbalmer | Marc Balmer]]<br />
|-<br />
|merlin83 || Chua Khee Chin<br />
|-<br />
|merlinm || Merlin Moncure<br />
|-<br />
|metatrontech || Chris Travers<br />
|-<br />
|miracee || Susanne Ebrecht<br />
|-<br />
|Moosbert || Peter Eisentraut<br />
|-<br />
|neilc || Neil Conway<br />
|-<br />
|oicu || Andrew Dunstan<br />
|-<br />
|okbobcz || Pavel Stehule<br />
|-<br />
|pgSnake || Dave Page<br />
|-<br />
|PJMODOS || Petr Jel&iacute;nek<br />
|-<br />
|Possible || Robert Ivens<br />
|-<br />
|postwait || Theo Schlossnagle<br />
|-<br />
|prothid || R Brenton Strickler<br />
|-<br />
|psoo || Bernd Helmle<br />
|-<br />
|pyarra || Philip Yarra<br />
|-<br />
|raptelan || [[user:Cshobe|Casey Allen Shobe]]<br />
|-<br />
|rhaas || Robert Haas<br />
|-<br />
|RhodiumToad (formerly AndrewSN) || Andrew Gierth<br />
|-<br />
|Robe || [[user:Robe | Michael Renner]]<br />
|-<br />
|rotellaro || Federico Campoli<br />
|-<br />
|rtfm_please || [[IRCBotSyntax]]<br />
|-<br />
|SAS || Stéphane Schildknecht<br />
|-<br />
|scrappy || Marc G. Fournier<br />
|-<br />
|selenamarie || Selena Deckelmann<br />
|-<br />
|SkippyDigits || Sherri Kalm<br />
|-<br />
|Snow-Man || Stephen Frost<br />
|-<br />
|sternocera || Peter Geoghegan<br />
|-<br />
|StuckMojo, MojoWork || Jon Erdman<br />
|-<br />
|swm || Gavin Sherry<br />
|-<br />
|vy || Volkan YAZICI<br />
|-<br />
|wulczer || Jan Urbański<br />
|-<br />
|xaprb || Baron Schwartz<br />
|-<br />
|xzilla, xzi11a || [[User:Xzilla|Robert Treat]]<br />
|}</div>Mbalmerhttps://wiki.postgresql.org/index.php?title=User:Mbalmer&diff=9510User:Mbalmer2010-01-10T12:20:43Z<p>Mbalmer: New page: = Welcome to my spot on the PostgreSQL Wiki = == Personal websites == * Visit my blog: [http://www.vnode.ch/ www.vnode.ch] * I am a licensed radio amateur (german): [http://www.hb9ssb.ch...</p>
<hr />
<div>= Welcome to my spot on the PostgreSQL Wiki =<br />
<br />
== Personal websites ==<br />
<br />
* Visit my blog: [http://www.vnode.ch/ www.vnode.ch]<br />
* I am a licensed radio amateur (german): [http://www.hb9ssb.ch/ www.hb9ssb.ch]<br />
<br />
== My company ==<br />
<br />
* My company's homepage (german): [http://www.msys.ch/ www.msys.ch]<br />
* Our flagship product (it uses PostgreSQL; german): [http://www.arcapos.com/ www.arcapos.com]<br />
<br />
== Events ==<br />
<br />
I will be at the following events:<br />
<br />
* MeKa 2010<br />
* FOSDEM 2010<br />
<br />
[http://www.twitter.com/mbalmer Follow me on Twitter]</div>Mbalmer