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 |