You are not logged in Log in Join
You are here: Home » Members » mcdonc » RelationalDatabaseWiki » PostgreSQL » wikipage_view

Log in
Name

Password

 
 
FrontPage »

PostgreSQL

PostgreSQL is an Open Source Object Relational Database (ORDB), a sort of "digi-volved" form of the familiar tabular datastore, with enhanced object-like features.

Typical requirements for a powerful "SQL" RDBM system can certainly be met by PostgreSQL, but a more intriguing aspect, with regard to Zope, is the possibility to define new datatypes. As for the Object part of ORDB, the OO concept of inheritence is implemented in PostgreSQL datatypes. These may be subclassed as "child" datatypes, thus inheriting properties from the "parent" datatypes. PostgreSQL is especially enticing for purposes of storing Zope objects, which can be code, data, documents, images, templates, or some less tidy mixture of "all of the above". User defined, data types in PostgreSQL may host Zope Objects within an environment that is intimately aware of their complex nature. Inserting a new row in a PostgreSQL database is analogous to instantiating an object, or vice-versa, depending on which you consider to be the row/object's "native" environment.

PostgreSQL also supports user defined procedures running within the ORDB engine itself, or within in a bound instance of an external interpreter, e.g. Python. Moving code "closer to the data" can provide performance enhancements by pre-processing objects prior to passing a result set out to the Zope/Web environment. By optimizing queries and delivering pre-marshalled "intelligent" datasets to Zope, much of the overhead now incurred within Zope might be handled more efficiently.

By the way, PostgreSQL User Defined Datatype definitions, and User Defined Procedures, are themselves stored as "rows" in PostgreSQL's "Catalogs". The Catalogs are similar to data dictionaries of conventional databases. However, if conventional=static, PostgreSQL is niether, with nearly Zope-like flexibility and dynamism. For example Catalog entries can be created dynamically, so that Objects (classes/datatypes) stored in PostgreSQL may be defined, instantiated, and updated on the fly. An administrator might perform an update directly through the Zope Management Interface, or a user could invoke an update programmatically within a Zope Application. Imagine a newly defined Object being generated, inserted, and immediately called by the Web Aplication that created it! I know what you're thinking, but no, PostgreSQL isn't written in Python . . .

Think of PostgreSQL as a conventional "SQL" datastore, with the ability to morph on demand into a different beast, e.g. appearing as a native XML object tree, with inline pre-processing invoked by a property (trigger/method) of a custom "intelligent" datatype.

Hesitant due to management discomfort with " unsupported shareware "?
Commercial support for PostgreSQL is now available from: