From: richard Date: Fri, 30 Aug 2002 08:46:07 +0000 (+0000) Subject: gadfly backend docco X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=554105ff6f12e5494cf7530a14c0e42a927c9df5;p=roundup.git gadfly backend docco git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1012 57a73879-2fb5-44c3-a270-3262357dd7e2 --- diff --git a/doc/gadfly.txt b/doc/gadfly.txt new file mode 100644 index 0000000..df77b69 --- /dev/null +++ b/doc/gadfly.txt @@ -0,0 +1,51 @@ +============== +Gadfly Backend +============== + +This document outlines the design and implementation of the Gadfly (relational +database) backend. + + +About Gadfly +============ + +Gadfly is a collection of python modules that provides relational +database functionality entirely implemented in Python. It supports a +subset of the intergalactic standard RDBMS Structured Query Language +SQL. + + +Basic Structure +=============== + +Roundup supports a dynamic schema, something which doesn't map very well to a +relational database table schema (or at least, it's frowned upon :) + +Approaches: + +1. Map roundup classes to relational tables. Automatically detect schema + changes and modify the gadfly table schemas appropriately. Multilinks + (which represent a many-to-many relationship) are handled through + intermediate tables. + Journals are stored adjunct to the per-class tables. +2. Map roundup classes to relational tables. Automatically detect schema + changes and modify the gadfly table schemas appropriately. Multilinks + are handled with string representations of the id lists. + Journals are stored adjunct to the per-class tables. +3. Four tables: + + - classes: class id, name + - properties: class id, property id, name, type, options + - nodes: class id, node id, property id, value (one row per multilink value) + - journals: class id, node id, event, description + + The classes and properties tables will need to be kept in sync with the + roundup schema. +4. Two less efficient tables: + + - nodes: class, property, node id, value (one row per multilink value) + - journals: class, node id, event, description + + The classes and properties tables will need to be kept in sync with the + roundup schema. +