How to handle twikidraw stuff

Twikidraw stores 3 files, not only 1.

We usually have 1 revisioned file in item storage.

Then the item storage is not general enough. If we want to keep revisions for drawings,a and each one contain 3 files, we need to keep 3 files for each revision. The simplest way to do this would be to have a directory for each revision, containing all files. This can also work for regular pages, which have 2 files per page, the page text and the page meta data.

Here is a general structure:

Item
    current - current state
    revisions/
        00000001/
            meta
            data
            more-files-as-needed
        00000002/

It will use more directories, but it's simple and can handle anything, and also easy to purge any amount of revisions by deleting the directories. For example, keep only last 10 revisions.

-- NirSoffer 2005-02-15 22:54:26

I just realised that it TWikiDraw will not combine well with such a structure ... TWikiDraw mainly issues 3 transactions. And we do not really want to have some of them without meta data in the system. So my next suggestion: either we store 3 different items and implement additional delete, modify, rename logic (this should be easy in the new model, at least I hope so) or we modify TWikiDraw to submit a compound file that stores the 3 data domains and has to be unpacked on page view etc.

That way we loose the capability to provide direct access to the image + map. It would be possible to store the map and the draw file within the image png (using non-critical private chunks -- png is a very open an extensible format). This won't break viewer compability and we could still provide direct access to the image itself. The map is integrated into the page, so there is no need for a direct access here. The draw file is not accessed that often, so its no issue. -- OliverGraf 2005-02-16 06:49:26

Even if we can solve the problem for TwikiDraw by saving custom png format, we still have the problem of separate data and meta files for any other items, which the solution of revisions and revisions_meta directories is quite ugly. We need a generic way that works with everything we will ever need. -- NirSoffer 2005-02-16 12:27:24

New stuff

ItemName
    current/
        meta
        data
        more-files-as-needed

    revisions/
        00000001/
            meta
            data
            more-files-as-needed
        00000002/
            meta
            data
            more-files-as-needed

    sub/
        SubItemName/
            ...

/!\ Problem: if you have a bigger file item and change meta-data multiple times, it would have to store the same data file multiple time.

Solutions:

Using separate metadata and data revisioning

ItemName
    itemmeta (contains item level metadata, including pointer to current meta rev)
    metarevs/
        00000001
        00000002
        00000003 (contains revision level metadata, including pointer to current data rev)
    datarevs/
        00000001
        00000002

MoinMoin: MoinMoin2.0/OpenProblems (last edited 2009-09-04 07:48:23 by ThomasWaldmann)