Postgres-XC project Page. Multi-Master (Read and Write) Cluster for PostgreSQL. Supports replicated setups as well as partitioned setups (or mixed forms).
postgresql
PostgreSQL: Documentation: 8.4: hstore. From the series "Things your database can do that you might not know": Key-Value-Stores within a PostgreSQL data field. Or also poor-mans-object-notation. Or simply practical when you want to store loosely structured data but don't want to constantly adjust the schema - the schema is then the primary data for the order of the model, the dependencies, cardinalities, etc. - and the hstore field then stores the additional manifestations that, for example, result dynamically from business requirements. Sometimes the better alternative to a denormalized property table. And it's been there since the 8.x versions (though it is a loadable module).
TeamPostgreSQL - PostgreSQL Web Admin GUI Tools. Looks good, a web interface for administering PostgreSQL databases that comes close to PGAdminIII and doesn't look as spartan as PHPPGAdmin. However, I have problems accessing databases from a project - it seems not everything is quite cleanly implemented, especially in the handling of sequences. Therefore, I can't say anything yet about whether it is performant. The whole thing comes with a Java-Tomcat server, so you can install and run it locally directly.
The Schemaverse. And while we're on the topic of strange projects: someone has programmed an MMO that runs entirely within PostgreSQL. So using pgSQL as the language. Something like a multi-user battleships game. It just runs in a database. And is controlled via SQL.
Temporal Keys, Part 2 | Experimental Thoughts. One always learns new things about PostgreSQL - this time PERIOD, a data type that encompasses time spans, and EXCLUDES, another form of constraint on tables, with which overlaps of time periods can be avoided in the data design together with PERIOD. In Dynamics AX, there is something similar in the form of Date Effectivity, which goes a bit further because it also includes automatic creation of new areas, gap-free timelines, etc., while this is only the basics for non-overlapping data records. On the other hand, this can be used much more broadly, as you can formulate any EXCLUDES constraints.
XML in Postgres – The Game Changer « Flex and Specs() - I should really take a closer look at the new PostgreSQL features. Especially since the XML support in PostgreSQL brings some of the advantages of document-oriented databases to the relational world, without needing extra middleware.
PostgreSQL: News: 9.0 Alpha 4 Available Now - was previously called 8.5, so it is the version with streaming replication.
git.postgresql.org Git - postgresql.git/commit - the first replication features are coming to the PostgreSQL tree and will therefore be available in 8.5. Great!
What happened to Hot Standby? - real native synchronization is coming with PostgreSQL 8.5! There are already existing solutions, but native is of course easier for administration. And should finally shorten the silly discussions with the MySQL disciples.
Postgres-R: a database replication system for PostgreSQL - worth a look?
Materialized Views in PostgreSQL - interesting alternative to denormalization (or a technique for organized denormalization that doesn't trample the relational model too much, as the logical view remains the clean normalized form, but automatic performance-optimized denormalizations occur)
Database test: dual Intel Xeon 5160 (6/6) - could all MySQL advocates now please take a look at the graphics and finally shut up? MySQL is a hyped flash-in-the-pan with mediocre performance (which you have to buy with self-destructing indexes) and inadequate features. Period.
Automatic Pickle Serialization and Deserialization with PostgreSQL - very interesting, automatic pickle/unpickle when using PsycoPG2.
cucumber2: an object-relational mapping system for Python and PostgreSQL - another ORM for Python. Special feature here: PostgreSQL table inheritance is used to make the transitions between objects and classes easier. However, it is also not portable to other databases.
Jacobian.org : Django performance tips - Jacob, one of the Django Core-Devs, writes about performance tuning for Django applications. Strongly aligns with my experiences.
pgpool page - interesting connection proxy for PostgreSQL with connection pooling and database failover.
sql relay is a SQL connection pool that can serve various databases and handles client connections to the database via a central pool. Ideal in multi-host environments and when the connection load is too high (e.g., Django generates a connection per request).
PostgreSQL 8.1
PostgreSQL 8.1 with Two-Phase-Commits and User Roles:
Transactions can now be prepared on multiple computers with PREPARE TRANSACTION and executed together later. If a machine fails after PREPARE, the transaction can be correctly completed with COMMIT after the restart.
Yes!
PostgresPy is a collection of various Python modules around Postgres. Server-side and client-side.
Those who only occasionally work with PostgreSQL, so to speak, want to use it as a desktop database: PostgreSQLX is a compilation of the PostgreSQL server that can be easily started and stopped as a Mac application. Ideal for developers. Then also the PGAccess interface and you can do without something like Microsoft Access. Of course, all of this only from 10.3 (it's about time 10.4 comes out and I'm up to date at home again).
PostgreSQL 8.0.2 released with patent fix
Just found: PostgreSQL 8.0.2 released with patent fix. PostgreSQL has therefore received a new minor version in which a patented caching algorithm (arc) was replaced with a non-patented one (2Q). The interesting part: this is one of the patents that IBM has released for open source. And why did they switch anyway? Because IBM has released these patents for open source use, but not for commercial use - PostgreSQL, however, is under the BSD license, which explicitly allows completely free commercial use.
For PostgreSQL itself, this would not have been a problem: as long as it remains BSD, the use of the IBM patent would not have caused any problems. Only a later license change - such as when someone chooses BSD software as the basis for a commercial product - would have been excluded.
A nice example of how even liberally handled software patents cause problems. Because medium-sized companies that build commercial products on open source would have lost a previously available basis - solely due to the patented caching algorithm (efficient storage of and efficient access to data - so patentable according to Clements' idea).
In the case of PostgreSQL, it went smoothly: the patented algorithm is not faster or better than its non-patented counterpart. And for the software itself, nothing really world-shattering has changed. But this does not have to (and will not) always go so smoothly. In the field of audio processing and video processing, the patented minefields are much more extensive and therefore much more critical for free projects.
Okay, one might still argue that this would not have happened with a GPL license. But with a GPL license, certain forms of use as they already exist in PostgreSQL today (e.g., companies building special databases on PostgreSQL without making these special databases open source) are not possible. You can take a stand on this as you like - ideology aside - the PostgreSQL project has chosen the BSD license as its basis.
Even well-intentioned patent handling in the context of open source software would therefore be problematic. Exactly this is the reason why I am generally against software patents.
Revenge of the Flashcards
Well, there are days in an admin's life that hurt but are necessary: I'm currently playing around with a spam filter (DSPAM) that stores its statistics in an SQL database. The spam filter supports a variety of database drivers, including PostgreSQL and MySQL, and a few other non-client-server databases (SQLite, etc.). So, out of habit, I first reached for PostgreSQL - it was already running on the machine.
Well, it was a bit slow at the beginning and the machine was a bit overloaded, but I found a few tips on the net with which one could make PostgreSQL run faster for DSPAM. After that, the computer didn't run particularly fast, but significantly faster than before. So, let it run through the night.
Well, the next day the rude awakening: tons of blocked processes, pig-slow updates against the database, deadly performance when learning a mail: 12 minutes runtime is no exception. Ouch. The database dump is already 100 MB in size at this point. The whole thing is not particularly exciting when the system load is always between 3 and 6 ... Ok, so bite the bullet and install and configure the index card box MySQL. Then bring Exim back up and sort the waiting mails. Effect: total load explosion. Loads above 30 and then at some point the watchdog struck and booted. Oh shit. All clear, let's see what's actually in the box: yeah, only 256 MB of memory and the MySQL server got massively into paging. He can't help it if I just don't have enough memory. PostgreSQL had fewer problems with that because PostgreSQL's memory management is much more static and the server doesn't grab so much memory in the basic configuration.
Ok, Jutta swapped the memory with her Linux box and now the server has 512 MB of memory, which is enough for the purpose. And the system load with MySQL is significantly better than anything before. Ok, I could certainly also bring PostgreSQL to better performance with a larger configuration, but the problem was, according to the symptoms, the massive number of parallel updates and the multi-version transaction technique of the server - that was definitely in the way in this concrete case.
Note: MySQL is still only a glorified index card box and MyISAM is definitely the dumbest table format you can choose, but no technology is so stupid that you can't need it from time to time. If the data is completely transaction-free - because the SQL server is simply being misused as a data storage without a real business data model with great referential integrity - then you should simply not use a database whose focus is exactly the opposite. In this case, MySQL and MyISAM are simply the better choice.
It's definitely better than Berkley-DB or other in-process databases, because they can only work reliably via file locking and with the massive parallel updates that DSPAM makes (it learns - depending on the setting - with every mail and updates its statistical basis) a database on a file system basis is extremely unfavorable.
Now I'll wait for the next night and see how DSPAM struggles with the nightly mail pile and how the system looks tomorrow, when several thousand mails have been processed (yes, with only two users we consume gigantic amounts of mail traffic - primarily due to mountains of spam, mountains of administrative mails from various systems and mountains of mailing lists). Let's see if the system is still as fast tomorrow as it is today. I'm afraid that with the amount of mail I will also push the MySQL base for DSPAM to the limit of the possible ...
Update: so far, things look very good with the load, so the index card box actually has the nose ahead
Ape can transparently map Python objects in Zope to filesystem objects or PostgreSQL databases. Could be very interesting for work. Can also be used standalone (without Zope).
Pro-Linux News: Daffodil Replicator wird freie Software - Replicator der Datenbank-agnostisch ist und unter anderem PostgreSQL unterstützt
tsearch-v2-intro - Einführung in tsearch2 - eine Volltextindextechnik für PostgreSQL
Tsearch2 - full text extension for PostgreSQL - weitere Dokumentationen zu tsearch2
ONLamp.com: Introducing Slony - Slony ist eine asynchrone Replikationslösung für PostgreSQL
Squawks of the Parrot: Suboptimal optimizing - PostgreSQL hat einen Bug beim Optimieren von LIKE Ausdrücken
Tsearch2 - full text extension for PostgreSQL - Volltextindizes für PostgreSQL
gppl's nest - Hierarchische Queries mit PostgreSQL