From: gonzalod@amex-trs.com (Gonzalo Diethelm)
Newsgroups: comp.databases
Subject: Summary: Btree libraries
Date: 9 Oct 92 00:36:55 GMT
Article-I.D.: cs90code.9210090036.AA32245



Distribution: world

This is a second summary of my previous posting regarding B-Tree libraries:

>
> I'm looking for a Btree or B+tree library, hopefully with source
> code. The requirements are:
>
> * Callable from C/C++.
> * Usable under MS-Dog and MS-Windows 3.1
> * Stores data and indexes in disk (as opposed to an in-memory
>   implementation).
> * Multiuser support.
> * Well documented... 8^)
>
> What are your opinions on the following packages:
> Company         Product              Price w/src Remarks
> --------------- ------------------- ------ ----- ------------------------
> RogueWave       Tools.h++              89    269 Support for multiusers?
> Softfocus       ISAM/Btree           ~100      ? Ditto?
> Trio Systems    CISAM/II+             600      ? Ditto?
> ?               DATAMAN                 ?      ?
> South Mountain  Essential Btree 2.0   179      ?
> Faircom         cTree Plus            476      ?
>
> Also, for you Windows experts, I have a very basic question. If I want
> to use one of these libraries in a Windows application that I'm
> writing, am I correct in assuming that the library does not have to
> be a DDL? Would there be any advantages in having the library run as a DDL 
> other than potential savings in memory when I'm running more that
> one application that uses the DDL? How hard would it be to create a DDL
> from the source code for the library?
>

Got responses from (in alphabetical order based on first name; many thanks!):

Anders Thulin         ath@linkoping.trab.se 
Andrew Dent           dent@dialix.oz.au
Art                   pollarda@xray.byu.edu
Bruce Momjian         root%candle.uucp@bts.com
Dan Shearer           Dan.Shearer@UniSA.edu.au
dathomps              dathomps@vela.acs.oakland.edu
Hogan Long            hogan@spunky.cs.nyu.edu
Ivan                  ivang@cup.portal.com
Levin F Magruder      levin@world.std.com
Margo Seltzer         margo@postgres.berkeley.edu
Mark T. Edmead        edmead@netlink.cts.com
Steven Woolgar        famus2@dmi.usherb.ca
Ted Roycraft          ted@allegra.tempo.att.com
Thomas Nagel          ktn@materna.de
Tom Green             tomg@code3.code3.com
Tommy Jasmin          TommyJ@ssecmail.ssec.wisc.edu

and requests for a summary to the net and/or direct e-mail from:

Bryce Abbott          babbott@alsvid.une.edu.au
Dan Shearer           Dan.Shearer@UniSA.edu.au
dathomps              dathomps@vela.acs.oakland.edu
Dhiraj Sharma         dhiraj@bohra.cpg.oz.au
Hogan Long            hogan@spunky.cs.nyu.edu
Ian Leonard           ian@eonsw.demon.co.uk
John Larson           John.Larson@f824.n107.z1.fidonet.org
Tom Green             tomg@code3.code3.com
Yury Peskin           peskin@epx.cis.umn.edu

You guys are getting this summary directly; it is also being posted
to comp.databases and comp.sources.wanted. John, I don't know if I can
reach you in Fidonet, I tried sending e-mail but it seems to have gone
to the bit bucket; hope you get this summary.

This summary doesn't try to give a final answer to the question "which library
should I use?". Rather, it is an attempt to present in one place all the
relevant information I could gather, so that whoever is facing the same
decision I am, can reach his/her (its?) own conclusions.

As always, thanks to the net for its helpful responses. Regards.


== Beginning of Summary =================================================

0. Why use a DDL on Windows instead of a regular library:

Mark: There are several reasons why you would want to use a DLL instead of
      a library.  For one, with a DLL, if you decide to add or remove
      features contained in the source, then all you need to do is replace
      the DLL with another one.  No need to recompile the original source.
      This is especially useful when upgrading workstations.  Let's say for
      instance that your program uses a graphic image conversion program. 
      Initially, the program only supports 4 image file formats and the
      conversion routines are contained in the DLL. Later on, if you want
      to add a new file format, all you do is provide your users with a new
      DLL, no need to give them a new application executable.
      The second reason is for development purposes.  Using a DLL, you can
      give the development tasks to another   person without them knowing
      what the whole project is about...


1. Database Library from Berkeley:

Margo: Take a look at the database library from Berkeley. It contains a
       hashed access method, btrees, and a record number package (built
       on top of the btrees).  It is available via anonymous ftp from:

         okeeffe.cs.berkeley.edu.
         /pub/db.tar.Z

Me: This package looks pretty good, I haven't had luck in compiling it just
    because my make utility is brain-dead (AIX, I love you! AAARRGGGHHHHH!
    Sorry...8^). It doesn't provide any form of record locking or transaction
    management.


2. Softfocus ISAM/Btree

Anders: It is small, cheap and extraordinary good. Multiuser version
        available. Around $100 dollars. Extremely portable, and comes with
        quite exhaustive test programs to verify that it works.
        There is a multiuser version, yes. $175 RRP, althout you can get it
        for ~100 from places like PC Connection. I have only used the 2.1
        version, which I found very good. I was very impressed by the
        installation test programs included.  I believe the latest version
        is 3.1.


3. Trio Systems C-ISAM/II+

Anders: Large and expensive (~$600). For heavy-duty jobs. Also quite
        portable, but not quite as much as the Softfocus package.  
        Does those extra things that Softfocus doesn't.
        You're probably thinking of C-INDEX/Plus and C-INDEX/II - they're two
        separate products. C-INDEX/II is for rellay big databases - the Plus
        version has a 64 Kbyte limit on records, which II doesn't have.
        I've been using C-INDEX/Plus - a very solid product, easily portable.
        However, if user-defined key types are important, C-INDEX/II is the
        right product. Price approx 450 from PC connection - I don't have
        their latest prices.

Levin: I used [this] product for DOS only.  It gives you a reasonably
       simple interface to multiply keyed records, but doing special
       stuff - say, indexing every word in a field that can be 0 or more
       words long - was over my head; perhaps impossible, but I doubt
       it.  They provided source. Docs mentioned that it was usable for
       multi-user, but said something like "multi-user programming is
       complex, and a full discussion of the subject is beyond the scope
       of this manual...."  This was 3 years ago or more, and the $600
       package may go into detail.


4. Faircom cTree plus

Andrew: I don't know about the DOS version but I have been very happy with 
        the Mac version of cTree Plus. I'm writing variable length records
        of at least 2kb and have good performance on very low-end Mac's.
        The ISAM stuff is fast and their key-compression worth using!

Anders: Faircom supports multi-user and network environments.

Me: I have heard very ggod comments about this product at work.


5. Mix Software's C Database Toolchest

Art: The toolchest comes with a good B+tree as well as a good ISAM library.
     It also comes with a 300 page manual (or so) and is quite well
     documented. Price is $19.95 for the manual and library files and
     another $10 for source.

Anders: Unfortunately it does not permit the use of binary keys - all keys
        must be ASCII strings, Unless they changed something in the latest
        releases.

Me: I called Mix Software and asked them about multiuser support; they are
    working on it, and their gesstimated release date is somewhere within
    the next four months (that was about a month ago).


6. DATAMAN

Tom: It is a complete 'C' based library and utilities package.  If you are
     interested in receiving a copy of the manual I can send you a UUENCODEd
     copy of the WP version, it is a UUENCODEd version of a WordPerfect 5.1
     doc. The package is continually improving. I would be interested in
     feedback in anycase.

Me: Tom Greene, from Superuser Software, the company that sells DATAMAN,
    called to give me some information about his product. The library sells
    for $145 (multiuser version), and he hasn't decided yet about any
    source-code release policy. He can be reached at (801)265-4310.


7. Package in "C Database Development" by Al Stevens

Tommy: I've been using a package the last two months that meets all five of
       your requirements.  It was from the book "C Data Base Development"
       by Al Stevens on MIS Press.  The source is also available on disk.
       Yes, it has record locking. The author encourages using the code,
       however it costs an extra 20 bucks to get a diskette.  If you wanted
       to order the book and/or diskette, there is a toll free number to
       call: 1-800-MANUALS. It was written for DOS. The ISBN number is
       0-943518-33-4.

Me: Though I've been looking frantically for the book (well, maybe not THAT
    desperate), I haven't found it anywhere: bookstores, libraries, etc.
    I would really like to take a look at it before I buy it.


8. Btrieve

Levin: Just in case you're programming for Novell, you might check out
       Btrieve. It works as a TSR, I think, that might make it unacceptable.
       What's nice or not nice, depending on your pov, is that the end user
       can manipulate btrieve files, given the layout.  We have an app that
       uses btrieve and it was a lifesaver for us - I was able to get the
       info out of the databases and share it with another vendor's app.

Hogan: I was supprised to not see BTRIEVE (now owned by novell) not in the
       list. This is (as I understand) the most popular B-tree manager for
       dos multi-user systems (mostly because novell purchased it a few years
       back, but it was before novell got it).  I have used it a lot and it
       is very fast and very "good" about multi-user issues.  I suggest you
       look into in.

dathomps: I've looked into BTrieve from Novell, but I am unsure as to whether
          you can distribute the BTrieve library, or if it can even be used
          outside a Novell network.


9. South Mountain's Essential Btree 2.0

Anders: South Mountain supports multi-user and network environments.


10. Informix C-ISAM

Anders: I think Informix may have a version of their C-ISAM library for MSDOS.
        I've only seen it mentioned in passing, through.


11. BTree ISAM from ENZ EDV Beratung GmbH

Thomas: I've made good experiences (in a former position) with a Btree-Library 
        call 'BTree ISAM' from 'ENZ EDV Beratung GmbH', Wetterauerstr. 3,
        DW-6380 Bad Homburg 3, Germany.Tel. x49-(0)6172-41014,
        FAX x40-(0)6172-458652. It's available both for C/C++ and for
        Turbo-Pascal, and both for MS-DOS and Windows. Also they say it
        supports Network Support for Novell, Banyan, MsNetBios. I've used it
        for Novell - very good. Also it has very good capabilities to rebuild
        databases after corruption. Prices range from DM 375 (single-user) to
        DM 595 (multi-user). These prices include the source code.


12. BFAST11

Dan: What about a free one, which has had a number of versions and is reputed
     to be quite good, although I haven't used it: 

   BFAST11.ZIP    88773  8  920911  FREE Btrieve fully functioning C++ library

     You'll find in on Garbo or Simtel; in Simtel its in PD1:<MSDOS.CPLUSPLUS>.

13. Raima Data Manager


Steven: I use Raima Data Manager 3.2.1 for B*tree type of stuff.  It offers
        Network model database access as well.  The B*tree is well implemented
        and very stable. It used to be called db_VISTA III.


14. Rogue Wave's Tools.h++

Ted: Rogue Wave sells a C++ class library for UNIX/MSDOS that contains a
     Btree on disk. It works fine with Windows 3.1 also. They provide full
     source (as an option).


15. MetalBase

Bruce: Try mbase(metalbase) posted to comp.sources.misc.  It has some bugs and
       is not currently supported by the author, but it is all I know of.


Me: MetalBase is available from most archives. The current release is 4.0
    (as far as I know), the author is Richid Jernigan IV
    (richid@owlnet.rice.edu). From what I can recall, it implements
    relations on disk using AVLs in a very efficient manner, including
    multiuser access. Metalbase is shareware.


16. Others:

Ivan: For the price of any of those packages you can get a real Persistence
      Server with transactions, versioning, multuser, crash recovery and
      rollback, etc., etc. as wella as the simple llokup and insert of
      a b-tree. As k at kala-request@world.std.com for an info packet.

== End of Summary =======================================================

gonzalod@amexphx.amex-trs.com
Gonzalo A. Diethelm                 (602)375-8410  home
16220 N 7th St Ap 1314              (602)492-3536  office
Phoenix, AZ 85022                   (602)492-4248  FAX
Newsgroups: comp.databases