Soft references in paged queries

From: yvind Harboe (oyvind.harbo..ylin.com)
Date: Mon Jun 23 2008 - 08:19:23 EDT

  • Next message: Andrey Razumovsky: "RefreshQuery not supports insert/delete?"

    I'm wondering if I should implement this as a utility function or try
    to fit it into DataContext.performQuery() via setPageSize().

    I'm going to take a stab at implementing it as a helper function.

    Perhaps it can be retrofitted into IncrementalFaultList
    once it has matured.

    The advantage of doing it as a helper function is that it can easily
    be copy & pasted into the application for modification & adaptation
    to application access patterns. A helper function should be much
    more straightforward as opposed to the current implementation which
    is a bit messy in terms of the number of concepts that it introduces.

    Cayenne can try to come up with a good heuristic for generic access
    patterns when setPageSize() is used, but of course the application
    has special knowledge + at some point the application has to be
    adapted to fit an access pattern that gives reasonble memory
    usage & performance tradeofs. The current IncrementalFaultList is
    nice in that it stores everything in memory, it just fetches stuff
    one page at the time as is pretty clear from the documentation.

    The attached implementation goes in a very different direction, it does not
    try to keep things in memory, but is rather optimized for a single
    iteration in a linear fashion. Taking handling of large tables a step
    further, support could be added for iterating over queries where even
    the pk's won't fit into memory(heap could be limited or tables could be
    large).

    -- 
    yvind Harboe
    http://www.zylin.com/zy1000.html
    ARM7 ARM9 XScale Cortex
    JTAG debugger and flash programmer
    



    This archive was generated by hypermail 2.0.0 : Mon Jun 23 2008 - 08:19:58 EDT