freecats-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Freecats-Dev] Free CATS server architecture (Berkeley DB, Tcl, Apache..


From: Henri Chorand
Subject: [Freecats-Dev] Free CATS server architecture (Berkeley DB, Tcl, Apache...)
Date: Sat, 25 Jan 2003 17:39:08 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021003

David,

Thanks for your comments - I think I got your point.

To me, they pretty well show me one of the things I lack: the ability to design an accurate server architecture.

I quite like the idea to write modules as much independant from each other as possible. Still, I feel I first need more advice in determining which module does what and how to fit them together.

I also hope my questions will help non-coders to see the issues more clearly.

My intuitive approach mostly tells me to:
- avoid what's not necessary (limit the number of server modules)
- better understand how modules are to communicate within each other (which one is the boss)
- avoid duplicates.


As I see it:

 Client      Free CATS      DB server
requests -> server (Tcl, -> (Berkeley
 (HTTP)     HTTP based)     DB based)


Top-level - Free CATS server
------------ ---------------
Free CATS server's interface needs to provide a set of functions (an API) which can process clients' requests to:
- create/manage/delete translation memory (TM) databases
- create/update/delete/retrieve a TM's translation units (TUs).
- import-export a TM's TUs.
(terminology databases should be similar to TMs and will be taken care of later on, once we know how to deal with TMs)

To me, this top-level server will run routines which interact with our DB server (behave like a dispatcher and let these routines transform each client request into a set of DB-level queries).

As everybody will guess, I suggest to try writing this module with Tcl - unless something else is much more suited.

In turn, Tcl will enable us to call other modules written in whatever language performance issues require. Free CATS server will take care of everything we need to do except the actual DBMS tasks.

This is the component for which I'm asking your advice.

The little I understand from a HTTP server made me believe we would choose an HTTP server for our Free CATS server, if only because:
- Free CATS server will receive HTTP requests (HTTP server access
  requirement)
- It should be a sound basis on which to implement some secure access
  system (for admin & user authentication - advice most welcome)
- An HTTP server knows how to receive and process client requests

So, any stable Apache + Tcl module seems a good idea to me - unless it's oversized for what we need. The simpler to setup, the better.

DB server-level - Berkeley DB
-----------------------------
The actual DB server should (in our implementation) run on the same computer as Free CATS server, and not directly process client requests.

I'm currently working on a draft document on indexing which starts from the simple functions provided by Berkeley DB. I hope it will help all of us assess our needs. I'll try to release a first version this week-end.

As a detailed review of each of these may represent quite some time, but also needs to be done by a better-skilled person than me, I'm merely asking for an intuitive reply from anybody who already has a broad knowledge of each of these Tcl modules and therefore knows their relative strengths, weaknesses and overall complexity.

If I were you, I would try and tie things as little as possible to
> any one server.

Yes. Even though, it may be less important for Free CATS, in that I don't see our TM server ever becoming part of a bigger software. As far as I know CAT, we will only need to build and/or integrate clients, so I don't believe we need to think too much about which major set of features needs to be added to it some day.

The three under active development are Websh, Rivet and mod_tcl.
> I think any of them will work fine.  I think 1.3 is going to be
> with us for a while yet, so I've still been concentrating my
> efforts there.
As soon as some pieces are in place, I will make a 2.0 version
of Rivet.

So, the selection criteria are probably:
- portability
- true ease of setup
- ability and ease to handle reasonably secure connections (whatever
  technology seems fit)
- unrestricted Tcl
- no unneeded features
- small footprint & good performance (like for Berkeley DB)
- widely used (if meaningful) & being a still active project
- truely free software (license)

In a nutshell: what's the simplest and most modular one who looks good enough for us...

I really think your best bet is to concentrate on the server,
> and provide some Tcl commands that can be loaded into any
> Tcl based web server.
> That way you aren't linked to anything, and most importantly,
the people who want to install this aren't tied to anything.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]