Berkeley DB license - Mailing list pgsql-hackers

From Michael A. Olson
Subject Berkeley DB license
Date
Msg-id 200005161359.GAA74742@triplerock.olsons.net
Whole thread Raw
In response to Re: WAL versus Postgres (or: what goes around, comes ar ound)  (Daniel Kalchev <daniel@digsys.bg>)
Responses Re: Berkeley DB license
Re: Berkeley DB license
Re: Berkeley DB license
List pgsql-hackers
Yesterday I sent out a message explaining Sleepycat's standard
licensing policy with respect to binary redistribution.  That
policy generally imposes GPL-like restrictions on the embedding
application, unless the distributor purchases a separate
license.

We've talked it over at Sleepycat, and we're willing to write a
special agreement for PostgreSQL's use of Berkeley DB.  That
agreement would permit redistribution of Berkeley DB with
PostgreSQL at no charge, in binary or source code form, by any
party, with or without modifications to the engine.

In short, we can adopt the PostgreSQL license terms for PostgreSQL's
use of Berkeley DB.

The remaining issues are technical ones.

Rather than replacing just the storage manager, you'd be replacing
the access methods, buffer manager, transaction manager, and some
of the shared memory plumbing with our stuff.  I wasn't sufficiently
clear in my earlier message, and talked about "no-overwrite" as if
it were the only component.

Clearly, that's a lot of work.  On the other hand, you'd have the
benefit of an extremely well-tested and widely deployed library to
provide those services.  Lots of different groups have used the
software, so the abstractions that the API presents are well-thought
out and work well in most cases.

The group is interested in multi-version concurrency control, so that
readers never block on writers.  If that's genuinely critical, we'd
be willing to see some work done to add it to Berkeley DB, so that it
can do either conventional 2PL without versioning, or MV.  Naturally,
we'd participate in any kind of design discussions you wanted, but
we'd like to see the PostgreSQL implementors build it, since you
understand the feature you want.

Finally, there's the question of whether a tree-based heap store with
an artificial key will be as fast as the heap structure you're using
now.  Benchmarking is the only way to know for sure.  I don't believe
that this will be a major problem.  The internal nodes of any btree
generally wind up in the cache very quickly, and stay there because
they're hot.  So you're not doing a lot of disk I/O to get a record
off disk, you're chasing pointers in memory.  We don't lose technical
evaluations on performance, as a general thing; I think that you will
be satisfied with the speed.

                mike



pgsql-hackers by date:

Previous
From: Ryan Kirkpatrick
Date:
Subject: Re: [PORTS] Linux/Alpha and PostgreSQL 7.0 Release Status
Next
From: Tom Lane
Date:
Subject: Re: RE: PostgreSQL and Unicode