main logo
Subject: Re: [C++] FairCom
Author: Andreas Grosam
Posted: 2002/11/28 09:20:57
 
View Entire Thread
New Search


On Mittwoch, 20. November 2002, Ruslan Zasukhin <sunshine AT public .D.O.T kherson.=
ua> wrote:
>on 11/20/02 7:16 PM, Charles Yeomans at yeomans@desuetude.com
>wrote:
>
>>> Hi guys,
>>>=20
>>> Anybody have use FairCom in his development ?
>>> Any words about it?
>>>=20
>>> As I see no demo download at all.
>>> Only after purchase.
>>>=20
>>=20
>> Well, you could always purchase a license for your own fun.
>
>:-) thank you Charles!
>
>If I will buy each db in the world I will go down.
>=20
>> It's not much, but here's a link to a review in Linux Journal
>> <http://www.linuxjournal.com/article.php?sid=3D0126>.
>
>I will read, thank you.
>
>But I am interested is somebody have touch it by hands?


OK, here I am.
We have purchased a license and I have some experience with it.
What do you want to know exactly?

FairCom, aka ctree, comes with source and a good documentation. It has =
strong pros and strong cons.=20
It is written in " '70 style traditional C" - (means, max eight chars per =
identifier, tons of defines, dozends of globals vars, hundreds of =
functions, dozends of compile time switches, using tricks like double =
including of headers, etc. [means, "if you don't have to look at it - don'=
t do it!"]). =20
On the otherhand, it also has remarkable flexibility and several =
surprising features!

The lib compiles in seconds on various systems (make files included for =
most systems, otherwise you need to manage to create a project yourself, =
ugh!).

Basically, you have several choices (namely four) of what "strategy" the =
DBMS will use to manage your data:
Firstly, the ctree Plus is either an "embedded" DBMS - as in contrast to =
a server client - or is a true client-server system (no source available =
for the server).
The choices (or "modes" in FairCom terminologie) are as followes:
SingleUser (embedded) - with Transactions
SingleUser (embedded) - without Transactions
a so called "MultiUser (embedded) - without Transactions"
And true Multi-User with Client/Server and transactions.
=20
DBMS: based on ISAM (invented by IBM in the '60?? or was it Knuth??) - =
means separate b-tree index files and associated data file, no relational =
DBMS;=20
may have record locking, may have transactions (two phase commit), may =
have transaction log, may have rollbacks and save points, may have =
recovery; may be threaded (proprietary thread implementation);=20

The embedded system can be compiled as a "single" or "multi user" mode - =
but it is not a client-server in that case - means, there are limitations =
in transaction and performance (file locking, sync writes, no data buffers =
at all!). Thus, true server-client is recommended for "multi user".
No query language; very proprietary "DDL" - defined as C structs or in =
MacResources;=20
has several limitations and peculiarities; very hard to debug.

If you want, its a basis for "making any DBMS".

Looks a little bit outdated (may run suboptimal in a Mac - Carbon =
environment!!). Our last version, (one year old) uses MacTCP - which is =
not available on Carbon anymore - but FairCom promised to make it run on =
Carbon too (which requires to port it to OpenTransport, and this requires =
to re-design *quite a lot*. I=B4ve never looked at the newer version.


Using the "raw interface" is quite roundabout - no standard (except ISAM); =
A more convenient "shell" at top of this set of functions is strongly =
recommended. Requires a lot of effort to become familiar with it - if you =
have more complex tasks.
Very small footprint, probably fast (guess so, if compiled carefully and =
using the right mode).
However, even since this is a comercial product, I can't see very mutch =
advantages compared to similar OpenSource DBMS, eg. Berkley DB.=20

If you have special questions, please ask.


Andreas
 
©2002 Andreas Grosam
<-- Prior Message New Search Next Message -->