Re: Storing partial responses

From: Alex Rousskov <rousskov@dont-contact.us>
Date: Tue, 12 Dec 2000 21:22:18 -0700 (MST)

On Wed, 13 Dec 2000, Robert Collins wrote:

> What about a mixed approach?

> - meta level support for the global cases, the logic on caching,
> deciding what's needed upstream, and what downstream format to
> send the response in (specifically a Content-Range or
> multipart/byteranges).

> - register callbacks into the FS to perform FS routines such as
> storing the actual partial ranges. Then the FS can daisy chain
> them, use sparse files, whatever takes the FS implementors fancy.

Looks like I need to improve my classification:

        (0) FSs assume that an object key corresponds to a single,
            complete response (object). A FS is a database of
            blobs, known to be complete objects, with a
                store(key, object)
                object = load(key)
            interface. This is the current approach. It makes
            impossible to support partial objects.

        (1) FSs know absolutely nothing about partial objects
            (or complete objects for that matter). A FS is a
            database of blobs with unique keys, with a
                store(key, blob)
                blob = load(key)
            interface. FS optimizations are limited because the
            semantics of a key is not known (its just a unique opaque
            string). Meta-level code assembles blobs into complete
            or partial objects.

        (2) FSs know what a "part of an object" is. A FS is a database
        of partial and complete objects with a
                store(key, part_description, part)
                part = load(key, part_description)
        interface (where a part can be an entire object, of course)

          (2a) Optional support: FSs can refuse to store partial
               objects, leaving it to meta level to handle the
               "refused-to-cache" request/response appropriately.
               This approach gives shortest time-to-stable, but
               will likely to leave some FSs behind for a long time.
               It also makes introduction of new FSs easier.

          (2b) All FSs must implement the above methods. This approach
               is fair but slow, compared to (2a).

In either case, a meta level that knows how to handle partial objects
will be required. For example, HTTP "ranges" logic will reside on that
level.

Alex.
Received on Tue Dec 12 2000 - 21:22:24 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:13:03 MST