Faircom C-tree Plus?

Faircom C-tree Plus?

Post by Gregory K Willia » Wed, 12 Apr 1995 04:00:00



: We will be porting a DOS based application written w/ Borland C & the
: Paradox Engine to Solaris 2.4.  After searching for a database library for
: Unix, I came up w/ Faircom's C-Tree Plus.  This seems to compile on many
: Unix platforms (as well as DOS) which was one of the main reasons for
: choosing it (for future development).  I was just curious if anybody else
: has used it & what their opinions of it are (ease of use?  speed of coding
: w/ it?  speed of runtime performance?  where could I direct general
: questions about it-- is there a newsgroup or do I have to contact Faircom
: tech-support for every 'little' question?)

Well, we've used the Faircom toolkit for a couple of years now, and me
personally for about a year.  The toolkit has ctree, rtree (report script) and
dtree (interface builder).  The version we have is 6.0 for ctree, rtree 1.2,
and dtree 3.1.  The sole use up to this point has been on SCO.  I am currently
trying to port our application from SCO to IRIX 5.2.  The latest version of
the toolkit supports IRIX, but dtree still isn't ready so I'm having to wait
for that to be released.  The version we currently have isn't working at all
on the SGI.

Overall, I'm not particularly thrilled with Faircom, though most of my problems
are more related to the awful application I inherited.  The previous
programmers working on it had to heavily modify dtree to get things to work
in unix.  The screen stuff it had didn't use curses, and they modified it to
do so.  Rtree is pretty limited in what you can do with it, but if you stay
within those limits, it works fairly well.

Ctree itself seems to be fairly decent, though.  It is missing some key
features that I've found on other databases, though.  For example, I haven't
seen any function that lets you search on a range of keys (between "A" and "D"
for example).  You can probably write one yourself, though.  Speed seems to
be mediocre to me, though that may be related to our crappy application again.
But, I've found things like MS-Access to have a much quicker database engine.
(If you get the SQL support for ctree, the "between" is supported.)

If you're a perl programmer, go get the ctreeperl extensions for perl 4.036.
I haven't used them yet, but they could be very useful to you.

I haven't had much experience yet with technical support yet, but I expect I
will very soon if I can't get ctree to work on IRIX.  The contact I've had so
far has been good.

Faircom is working on ODBC drivers for ctree.  I don't know when they'll be
ready.

: I did have one question regarding the usage of strings in the database
: fields.  According to the manual, they advise not to use strcpy() to copy
: data into the database fields-- is there a particular reason to this??
: They say that you should use their version of memcpy() instead because the
: data may have embedded NULL characters in the strings & may not be NULL
: terminated.  The reason I ask, is that the DOS app I must port uses
: strcpy() througout & the string-fields in the Paradox table are all NULL
: terminated w/o any embedded NULL characters.   So, given that all of the
: strings I am using are properly NULL terminated, can I get away w/ strcpy()
: w/ C-tree Plus??   It seemed a bit strange when I read it in the manual,
: but I haven't yet coded anything, so I am just asking.

You'll probably be okay.  What they probably want is for you to use their
memcpy because it checks strings for you, or at least that's my guess.

In general I would prefer to use something else than ctree.  Part of this is
because of the poor coding on our application, but the other part is the time
required to write an application using straight C.  In this world of "visual"
programming languages, having to write an application completely in C seems
archaic to me and a waste of time.

--
_____________
Greg Williams

 
 
 

Faircom C-tree Plus?

Post by Christopher Wo » Wed, 12 Apr 1995 04:00:00




> We will be porting a DOS based application written w/ Borland C & the
> Paradox Engine to Solaris 2.4.  After searching for a database library for
> Unix, I came up w/ Faircom's C-Tree Plus.  This seems to compile on many
> Unix platforms (as well as DOS) which was one of the main reasons for
> choosing it (for future development).  I was just curious if anybody else
> has used it & what their opinions of it are (ease of use?  speed of coding
> w/ it?  speed of runtime performance?  where could I direct general
> questions about it-- is there a newsgroup or do I have to contact Faircom
> tech-support for every 'little' question?)

I looked at Faircom's ctree-plus product, and tried to digest their
documentation. While their product is powerful and flexible, I found
their programming interface complex and confusing. If you wanted a
straightforward database library that gave you easy handling of the
basic data "types" -- character, number, date etc -- ctree-plus may
not be for you. The functions operate at too low a level for my
tastes.

By contrast, I suggest you take a look at Codebase 5.1 Multiplatform.
This version of Codebase comes with source code, and is relatively
painless to build. The interface is more pleasant to work with, and
the documentation is more readable. While I don't have hard data, I
would say that it would take less code to do normal database
operations in Codebase than in ctree-plus. As a bonus, you generate
Foxpro-compatible dbf and index files (or Dbase or Clipper). If,
however, you need stuff like transaction processing, Codebase is not
for you.

Chris

 
 
 

Faircom C-tree Plus?

Post by Mahesh Neelakan » Wed, 12 Apr 1995 04:00:00


: choosing it (for future development).  I was just curious if anybody else
: has used it & what their opinions of it are (ease of use?  speed of coding
: w/ it?  speed of runtime performance?  where could I direct general
: questions about it-- is there a newsgroup or do I have to contact Faircom
: tech-support for every 'little' question?)

We chose to use Faircom c-tree Plus as the underlying database for our
port from DOS. Since it came with source, we were able get it running on
all the unix os's we supported (bsd/os, linux, solaris, sco). The DOS version
used btrieve so we had to write a compatibility layer that converted btrieve
calls to c-tree plus, which turned out to be not too much work once we
figured out how to generate multi-index (segmented) keys.

So far, i have only come across three things which irritate me (both of which
we worked around)

1) Fixed length records can't have a binary field (like an int) as the first
   element. By making the record a variable length record, you can get around
   this (with a performance penalty of course). We decided to move the
   offending field below a character string to keep performance.

2) If you get the absolute position of a variable record, then update the
   record with a longer record and try to go back to the absolute position,
   we get an error because the absolute position was changed internally
   by ctree. I tend to think that this is normal since the record might have
   to be moved because there is no space where it currently resides.

3) see below.

: I just unwrapped it & compiled it... so I'm still reading the intro
: sections in the manual-- they provide 2 manuals of a few hundred pages
: each & I'm not the type to read a programming manual from cover-to-cover
: (borrrring), so I wanted to get an idea of how much effort will be

<smile> I found the manual to be a little confusing at first but then once
you learn the way they arrange the topics, it's pretty easy. The function
reference has proved to be pretty useful (like man pages!)

: I did have one question regarding the usage of strings in the database
: fields.  According to the manual, they advise not to use strcpy() to copy
: data into the database fields-- is there a particular reason to this??
: They say that you should use their version of memcpy() instead because the
: data may have embedded NULL characters in the strings & may not be NULL
: terminated.  The reason I ask, is that the DOS app I must port uses
: strcpy() througout & the string-fields in the Paradox table are all NULL
: terminated w/o any embedded NULL characters.   So, given that all of the
: strings I am using are properly NULL terminated, can I get away w/ strcpy()
: w/ C-tree Plus??   It seemed a bit strange when I read it in the manual,
: but I haven't yet coded anything, so I am just asking.

This was one of the fundamental problems (#3) I think still exists under
c-tree Plus. They don't allow a field of type ZSTRING (like btrieve does).
Luckily, our dos code uses stzcpy() which is our variant which zero pads
our strings. You might also want to check out TransformKey() in your ctree
manual.

Good Luck,
mahesh
--

Galacticomm, Inc. (Unix Division)                  Voice: (305) 583-5990 x 130
Fort Lauderdale, Florida                           Fax  : (305) 583-7846

 
 
 

Faircom C-tree Plus?

Post by David Reeve » Thu, 13 Apr 1995 04:00:00



> 1) Fixed length records can't have a binary field (like an int) as the first
>    element. By making the record a variable length record, you can get around
>    this (with a performance penalty of course). We decided to move the
>    offending field below a character string to keep performance.

Are you referring to the first byte of the data record (in which a
-1 is defined as a deleted record)?   I'm not sure what your problem
is.  I've used CTREE+ for about 5 years now and I am basically satisfied with
it when all other factors are considered.    I would like to see more
improved documentation.  I have not used the client server mode yet but
will be trying this soon.  Although I have seen some fairly complex RTREE
reports written I have found that RTREE is best used as a "pure" report
formatter.  For complex output I write C code front-end programs
which output RTREE readable files.  I then end up w/ a high speed
program and an easy to format report script.

I would like to see benchmarks of well written CTREE+ apps vs well
written Codebase, dbase, Foxpro, Oracle, Sybase or Informix apps on a
common hardware/O.S. platform (ie, Intel P5 PCI 16-meg ram and SCO UNIX).

If anyone has such a benchmark will you please share it?

 
 
 

Faircom C-tree Plus?

Post by Andy De » Thu, 13 Apr 1995 04:00:00




>Ctree itself seems to be fairly decent, though.

Our cross-platform ODBMS, OOFILE is based on it.

Quote:> It is missing some key
>features that I've found on other databases, though.  For example, I haven't
>seen any function that lets you search on a range of keys (between "A" and "D"
>for example).  

OOFILE adds such searches, eg:
People[People.LastName.between("A", "D")];
People[People.LastName=="Dent"];
People[People.LastName.startsWith("An")];

It also lets you combine result sets with union, difference, intersection etc.

Quote:>Speed seems to
>be mediocre to me, though that may be related to our crappy application again.

Probably. We've been very impressed (tested on SunOS, Windows & Mac).

Quote:>But, I've found things like MS-Access to have a much quicker database engine.
>(If you get the SQL support for ctree, the "between" is supported.)

>If you're a perl programmer, go get the ctreeperl extensions for perl 4.036.
>I haven't used them yet, but they could be very useful to you.

>I haven't had much experience yet with technical support yet, ... The
contact I've had so
>far has been good.

Likewise

Quote:>In general I would prefer to use something else than ctree.  Part of this is
>because of the poor coding on our application, but the other part is the time
>required to write an application using straight C.  In this world of "visual"
>programming languages, having to write an application completely in C seems
>archaic to me and a waste of time.

Agreed - writing in straight c++ is also somewhat wasteful.

OOFILE was developed to make it very easy to use c-tree with c++
application frameworks and code generators. For example, if you use the
cross-platform zApp framework it takes about 5 minutes to convert a dialog
generated by their designer tool into one that edits data in an OOFILE
database.

I've had a lot of experience with application frameworks and such
generators (I wrote the generators for a Mac product) and I believe they
have a lot to offer - close to 4GL turnaround in application development
but with the speed of compiled c++.

Andy Dent, Snr Developer, A.D. Software Western Australia
Authors of the OOFILE cross-platform ODBMS framework
ftp://perth.highway1.com.au:/pub/adsoftware/
http://www.highway1.com.au/adsoftware/

 
 
 

Faircom C-tree Plus?

Post by Kent Mart » Thu, 20 Apr 1995 04:00:00


A few days ago several people were discussing Faircom's
C-tree Plus.

I recently began working at a place that uses C-tree 4.3B on
SCO Unix.  I guess I've been spoiled by SQL and the like
because this puppy looks UGLY!  I'm talking about how the
ISAM implementation details are scattered throughout all the
source code whenever you want to access the database or
modify a record.  This company has quite a large customer
base using this version of C-tree, so simply upgrading is
not really feasible.

We are beginning to write some new code in C++ to access
several C-tree databases, and I would like to hide as much
of the implementation details as possible.  I was wondering
if anyone has attempted to build a container class around
C-tree.  I imagine third-party packages are available
(something like db-tools.h++, although I don't think it
supports C-tree) but I was hoping for something a little
(read "a lot") cheaper.

If anyone has heard of anything that would fit the bill, or
simply has some ideas or suggestions, I'd certainly like to
hear them.

--

3329 Riveroad Ct. #301             CompuServe: 73141,3406
Ft. Worth, TX  76116-1103         Voice & FAX: (817) 377-0538
U.S.A.

 
 
 

Faircom C-tree Plus?

Post by Dave Plon » Thu, 20 Apr 1995 04:00:00



> A few days ago several people were discussing Faircom's
> C-tree Plus.
> I recently began working at a place that uses C-tree 4.3B on
> SCO Unix.

1st of all, 4.3 is really old.  They're on, at least, 6.4 of c-tree Plus,
now.  They made the code more portable and the calling interface a
_little_ nicer (There's macros for all those ridiculous 6 character name
functions... (It came from the DOS world is why, I assume)).

It wasn't bad to upgrade from 4.3 to the current, IMHO.
To be honest, upgrading won't solve the things you're complaining
about (below)... I would want to do it just to keep current and portable
to other Unix releases/versions.  You might want to ask Faircom if
there are any serious bug-fixes for the OS release you're on, and if
4.3 is still supported.

Quote:> I guess I've been spoiled by SQL and the like
> because this puppy looks UGLY!

To give you an idea of how progressive Faircom is, they now have an SQL
server, and even an embedded SQL pre-processor for C, to access C-Tree
files.  However, this really isn't an easy option to upgrade to;  I
would think you'd want to start with that model from scratch.

Quote:> I'm talking about how the
> ISAM implementation details are scattered throughout all the
> source code whenever you want to access the database or
> modify a record.

This isn't C-Tree's fault, it's whoever wrote that code.  They should
have creaded a mechanism by which the ISAM file definitions are kept
in a central database.  We have a C-Tree file that contains all
the initializers for the IFIL, etc. structures for each file... You
just say you want to access that file and a library routine does the
C-Tree open.  I believe there's also a way to embed that info in
the file itself, but I haven't used that method.

I'm used to using Oracle RDBMS, and I still think C-Tree is a great
product.  Like lots of other C libraries, you can shoot yourself
in the foot if you don't know what you're doing, but they provide
a portable, high-performance interface to keyed files.
You could build an RDBMS-competitive transaction-based system around
C-Tree, for a fraction of the cost.

Dave

--
------------------------------------------------------///--------------------
  Dave Plonka  ARS:N9HZF          Amiga - 68040 -    ///  486DLC-33 running

- Lead Systems Programmer, McHugh Freeman ------- \\X/- Waukesha, Wisconsin -

 
 
 

1. Faircom c-tree Plus

I am shopping for a b-tree/ISAM database management library to be
used under Linux.

One candidate is Faircom's c-tree Plus v6.0 D product. I have been
looking for demos of applications developed with this library, but to
no avail. The 'Demos' file area of the Faircom BBS is empty!

So my questions are:

Is anybody using c-tree Plus with linux? Any noteworthy experiences/
anecdotes/horror stories?

What performance can be expected? I would very much like to play with
a linux binary demo application. Failing that, a DOS demo would also
be very helpful.

Also, suggestions for other DBM libraries are most welcome.

Thanks.

2. term (linecheck and test binary?)

3. Summary: Faircom c-tree Plus - good or bad?

4. NetBSD, FreeBSD or Linux on IBM AMBRA platform?

5. Faircom C-tree Plus?

6. Email help!!!

7. Faircom c-tree Plus - good or bad?

8. ansitape for Unix ...

9. D-ISAM96 or C-TREE PLUS ?

10. ANYONE USING C-TREE

11. record locking in C-tree on bsd unix

12. locking() call in XENIX with c-tree

13. Anybody using C-Tree and C++?