Why does Postgres require vacumming? ------------------------------------ All database systems require some kind of cleanup to remove data that is no longer required, such as deleted rows and data from aborted transactions; this is the function of vacuum. However, Postgres is a little unique in the way it cleans up. Many database systems do expensive cleanup operations as part of normal query processing, making the cleanup more invisible to the user . The disadvantage of this is that cleanup activity slows down normal query processing at seemingly random times. The Postgres approach is to do cleanup operations in a separate process, which fortunately runs by default. A second difference of Postgres is that update operations often generate additional rows that require later cleanup (see "How Hot is HOT?" below for the details). While cleanup from updates is inconvenient, it does allow Postgres to operate with very high concurrency with readers never blocking writers, and writers never blocking readers. In fact, the only time an operation is blocked is if two sessions try to update the same row, or insert rows with identical primary keys. This capability is called multi-version concurrency control (MVCC); several other database systems have adopted this capability as well. How Hot is HOT? --------------- Added in Postgres 8.3, HOT allows for the cleanup of unneeded rows in a very low-impact manner (see "vacuuming" item above). One of the very expensive database cleanup operations is removing the index entries of unneeded rows. Using HOT, Postgres can create update rows that can be cleaned up without the requirement of index cleanup, assuming the old and new index rows are in the same data block and have unmodified index columns. HOT can also reuse most of the space consumed by deleted and aborted transactions too. As you can see, the HOT capability greatly reduces the need for vacuum cleanup operations. What text search capability is supported by Postgres? ----------------------------------------------------- Postgres was originally designed as a next-generation database system. In fact, it is called "Postgres" because it was designed to be post-Ingres (Ingres being one of the first relational database systems). One of Postgres's post-relational capabilities is the ability to easily add software that modifies the database's behavior; this was used to great advantage when adding full text support. While many database systems add full text support in a bolted-on or non-integrated way, the Postgres full text engine is fully integrated and allows very complex full text search configurations, making Postgres one of the most advanced text search systems available in any database. What is PostGIS? ---------------- GIS is used to store and manipulate geographic objects. PostGIS is a GIS implementation designed to store GIS objects in Postgres. Thanks to the modular capabilities of Postgres (see the "text search" item above), PostGIS is one of the premier GIS implementations, giving Postgres a very visible position in the geospatial database market.