Hi all,

For a while now I have been thinking about just how useful the database
abstraction layer is for people who want to use Sleepycat DB2 or DB3 -
also known as Berkeley DB - (www.sleepycat.com) database systems.

Those familiar with either know just how sophisticated they are: offering
full multi-versioning, cursors, logical joins, duplicate keys, an RPC
interface and much more. None of this is really given over to the PHP
user - presumably, because it doesn't fit with the rest of the dba
interface.

In my opinion, it would be well worth implementing the full DB2 and DB3
library. Since the API namespace is still quite similar between DB2 and
DB3, the interface to both databases could be combined and made
driver-driven in the same way as dba.

There are some good reasons the dba interface shouldn't just be
extended? Firstly, the current PHP functions do not lend themselves to
cursors, duplicates and transactions, which are all handled at the API
level within sleepycat. 

Secondly, the function namespace and defintions differ significantly from
the C library. It is important to maintain the close tie to the
underlying library here not just in order to best implement the
features of sleepycat DB (as above) but also because many people initially
interested in using sleepycat DB2 or 3 within PHP have probably worked
with it in their C applications and are familiar with the library. 

For this reason as well, it would be useful to implement both a standard
PHP interface (db_create(),db_open(),db_curopen(),db_put()...) as well as
an OO style library, where the db operation functions hang off the
database or cursor object as methods. That is, it would be implemented in a
similiar way to DOM XML interface.

What do people think? Is this just more bulk to the extension frame
work? Any suggestions etc?

Gavin


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to