[comp.unix.questions] Need freely-distributable C database library

dce@smsc.sony.com (David Elliott) (02/14/91)

I need a database library for a project I am working on.  I hesitate
to call it a "database", because it's more like a simple hierarchical
filesystem inside a file than a database.

The requirements are:

	* Freely distributable

	* Single key per record (keys will look a lot like pathnames
		due to hierarchical nature of the data) with reasonably
		long key length (1024 bytes for entire key is fine)

	* Variable record size - from a few bytes to over a megabyte
		(this leaves out dbm/ndbm on Unix)

	* No restrictions on content - may contain ASCII text, images,
		or binaries

	* An entire database must be able to be fit in a single file
		(no .pag/.dir combinations unless .dir can be
		recreated on the fly)

In other words, except for the last item, I need a Unix filesystem
that can live in a single file.

For now, I am implementing the database as a Unix directory structure,
and will probably keep that as an option later, but I want the data
to be transportable in a single file at some point in the future.

jik@athena.mit.edu (Jonathan I. Kamens) (02/15/91)

  I believe that the GNU dbm library, gdbm, will do everything you listed in
your list of requirements, and it is freely redistributable (under the GPL). 
It is available for anonymous ftp in the file /pub/gnu/gdbm-1.4.tar.Z on
prep.ai.mit.edu (18.71.0.38), and (I assume) at other GNU archive sites.

-- 
Jonathan Kamens			              USnail:
MIT Project Athena				11 Ashford Terrace
jik@Athena.MIT.EDU				Allston, MA  02134
Office: 617-253-8085			      Home: 617-782-0710

oz@yunexus.yorku.ca (Ozan Yigit) (02/21/91)

In article <See ref> dce@smsc.sony.com (David Elliott) writes:
>I need a database library for a project I am working on. ...
>
>The requirements are:
>
>	* Freely distributable
>	* Single key per record ...
>	* Variable record size - from a few bytes to over a megabyte
>	* No restrictions on content ...
>	* An entire database must be able to be fit in a single file

Berkeley Hash package fits this bill nicely. It also comes with byte-order
independence, and the usual permissive berkeley copyright. It also happens
to be the fastest such package available.

A version of this code should be ftp-able from ucbarpa. You may wish to
query margo@postgres.berkeley.edu about it. This package will be a regular
part of future berkeley distributions.

For gory implementation details of this package, see the paper in 1991
Winter Usenix Conference proceedings: "A New Hash Package for UNIX" by
Margo Seltzer and Ozan Yigit.

enjoy...		oz
---
First learn your horn and all the theory.	Internet: oz@nexus.yorku.ca
Next develop a style. Then forget all that	uucp: utzoo/utai!yunexus!oz
and just play.		 -- Charlie Parker	York U. CCS: (416) 736 5257