DB design document

Derek Atkins warlord@MIT.EDU
20 Dec 2000 17:11:35 -0500


linas@linas.org writes:

> ?
> More accurately
> 
> (sql server) || <- - - - - -> || (sql-client-lib <-> gnc_engine <-> ui)
> 
> at some point or another, gnc-engine must convert whatever its doing
> to plain-old SQL statements.   The standard sql client side libraries

I'm not convinced that "gnc_engine" is the right place to convert to
plain-old SQL.  See below....

> just send these to the server via unix-dmoain sockets or tcp sockets.
> If its tcp sockets, you don't 'care' wheere the sql server is.  Think
> of it like using Xlib & getting xwindows network transparency
> 'automaticaly', with no extra work for the app writer.  Same idea. 

The problem is that using TCP sockets is completely insecure.  This is
also a problem with Xlib (which is why many people tunnel X in SSH :)
We want to avoid over-the-network communications in-the-clear, by
using encryption.  I would also like to see modular network
authentciation (ala SSL certs or Kerberos tickets).  This would imply
we want something like:

 (sql server <-> sql client <-> gnc_server) ||
		<- - -> ||
			(gnc_client <-> gnc_engine <-> gnc_ui)

This way we can encrypt or authenticate the gnc_client to the
gnc_server, and we still gain SQL independence.  The gnc_server can be
implemented to talk to any SQL server, but the gnc_client/engine/ui
need know nothing about the implementation.

This approach also buys us the ability to have a local file storage
(or local DB) without any modifications to the engine or ui; only the
"gnc_client" needs to know.

I've also volunteered to write the gnc_server/gnc_client code,
provided I am given help with providing the APIs that the engine will
need.

> --linas

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord@MIT.EDU                        PGP key available