Code

gadfly backend docco
authorrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Fri, 30 Aug 2002 08:46:07 +0000 (08:46 +0000)
committerrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Fri, 30 Aug 2002 08:46:07 +0000 (08:46 +0000)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1012 57a73879-2fb5-44c3-a270-3262357dd7e2

doc/gadfly.txt [new file with mode: 0644]

diff --git a/doc/gadfly.txt b/doc/gadfly.txt
new file mode 100644 (file)
index 0000000..df77b69
--- /dev/null
@@ -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.
+