view doc/gadfly.txt @ 1409:8dc60d87ab42

Fixed a backlog of bug reports, and worked on python 2.3 compatibility: - fixed templating filter function arguments [SF#678911] - fixed multiselect in searching [SF#676874] - fixed parsing of content-disposition filenames [SF#675116] - added 'h' to roundup-server optarg list [SF#674070] - fixed doc for db.history in anydbm and rdbms_common [SF#679221] - fixed timelog example so it handles new issues [SF#678908] - handle missing os.fork() [SF#681046] - fixed roundup-reminder [SF#681042] - fixed int assumptions about Number values [SF#677762] - added warning filter for "FutureWarning: hex/oct constants > sys.maxint will return positive values..." (literal 0xffff0000 in portalocker.py) - fixed ZPT code generating SyntaxWarning for assignment to None
author Richard Jones <richard@users.sourceforge.net>
date Thu, 06 Feb 2003 05:43:49 +0000
parents b59b60306914
children
line wrap: on
line source

==============
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.


Roundup Issue Tracker: http://roundup-tracker.org/