What is Dataman?
What license covers Dataman?
Why would I want to use it?
What are some of the features?
Is Dataman relational?
What software has been built on this package?
The default build fails in the Java classlib section

What is Dataman?

Dataman is a database manager. Twenty some years ago Nixdorf computer had systems designed specifically for volume data entry. The system database language was called EDITOR. This package is based on the verbs of that language. At the time, the language didn't have many modern capabilities. There were no arrays, control structures were primitve, and it would run only on their systems. In an effort to make the database abilities more accessable the verbs of the language were originally written as a 'C' runtime library that would directly access the database. It was implemented on MS-DOS, UNIX, and AOS/VS. The databases were entirely portable, and the applications required only a re-compile between the systems. In 2002 it was decided to bring things out of the stone age, and it was split up into a server with a C language API library. In 2004 the entire system was released under the GPL.

What license covers Dataman?

The different parts of Dataman are covered by different licenses. The GPL covers the server sytem and utilities. This requires any modifications to the server to be open sourced. The C, C++, and Java API's are covered by the LGPL so that you can use them in closed-source applications. The PHP module is covered by the PHP license for obvious reasons. Finally, the documentation is covered by the GPL documentation license.

Why would I want to use it?

Admittedly there are many larger and more sophisticaed systems out there. This is partly why you would want to use it. It is small and fast. Stripped of symbols, the connection server is ~18K and the actual database server is approximately 50K. Yet it is multi threaded and supports multiple concurrent connections (256) and has system and user level concurrency controls. It supports many (not yet all) of the things that modern databases do.
In the latest revision (3.3.1) the server has grown to 56K, but it now supports blobs, very large (64 bit) databases, and has real transaction processing facility.

What are some of the features?

With the release of 3.3.1 Dataman supports transaction processing. It also supports 64 bit databases. Records may contain blobs. That is a record may have both structured and unstructured data in it. There -are- limits. The structured part of a data record may be only 32K. Records that contain blobs have a 2Gb limit. If this becomes a problem, it will be changed. There are concurrency operations to perform co-operative multi processing. The database now supports not just C, but C++, Java, and PHP. If someone wants to write a python piece, please contact me.

Is Dataman relational?

No. It is not relational. It is based on ISAM access techniques. But due to the ability for a file/table to have many different formats, and the ability to define a logical structure for each data file, data ownership and relations can be implicitly inferred. It would be very possible to write a relational layer on top of the current package.

What software has been built on this package?

There was an automotive decision support package, a retail pharmacy management package, and a retail auto parts store package as well. There have been many others at least considering this package in the last year, juging from the downloads.

The default build fails in the Java classlib section

By default the makefile will attempt to build the Java class library. If the Sun Java development kit is not in your $PATH, the build will fail at that point because it is trying to invoke the javac compiler. There are two ways around this. The first is to install the JDK and place the binary directory in your PATH. The second is to disable the Java build. Simply run the configure command like this:

./configure --disable-java
make
make install