I recently worked on rewriting a fairly complex Berkeley DB
based system using Postgres DB. Following is a wish list and a brief
explanation for each of those items for postgres. It is not necessarily a
comparison of postgres functionality with that of Berkeley DB but some required
useful functionality currently lacking in postgres. I would like to have some
feedback, comments, suggestions regarding these. ·
Shared memory based connectivity: As such
postgres has client – server model. The TCP-IP nature of its connectivity
further adds to the latency of this communication. It will be nice to have a
shared memory based connectivity between libpq front end and the back end. ·
Extended SQL functionality o
Unsigned data types: It would be nice to
have native support for unsigned flavor of simple data types (e.g. integer) o
Nested transaction funtionality: I
followed quite a few discussions stating postgres considering it at some time
but later abandoning it due to some complexity. The “savepoints”
are also believed to provide similar semantics. However it is useful and handy
to have the simple nested transaction syntax and functionality. ·
Cursors o
It would be useful to have updateable cursors.
Otherwise the application is required to figure out a required INSERT versus
UPDATE amongst other things. o
Berkeley DB has various positioning (e.g.
DB_SET_RANGE ) as well as operational (e.g. DB_NOOVERWRITE) options in its
cursors. Postgres can provide such functionality (e.g. using underlying btree
for an index to give DB_SET_RANGE like positioning) very easily. ·
Configurable error handling control: in
case of fatal errors the transaction is aborted by default. It would be useful
to make some configurable options available for the application to control the
error handling in such situations. Berkeley DB has an option where all the
exceptions can be turned off and the system returns only error codes which are
then required to be handled by the application. Thanks, Sameer |