On 23/08/2012, at 5:23 PM, Alan M. Carroll <a...@network-geographics.com> wrote:

> Since this has been a topic for a while, I will just throw out an idea to see 
> how fast you guys can shoot it down.
> 
> A cache object is stored as a series of fragments. If we subdivided each 
> fragment in to "chunks", we could have 64 chunks / fragment and represent 
> them with a bitmap in a single uint64_t. A set bit would indicate valid data 
> in that chunk. Partial content would be written only in chunk units and only 
> for chunks that are complete in the data. For the default size of 1M 
> fragments, each chunk would be 16K which seems a reasonable value. The 
> bitmaps would be stored along with the fragment offset table in the alternate 
> info header. This would keep it out of the directory while making it 
> available when serving because the alternate data is loaded before that 
> point. Range validity checks could also be done without additional disk I/O 
> because you can't detect if a range is valid for an object before the 
> alternate is determined. We could only serve if the request range was 
> completely covered, or generate a synthetic range request to cover parts that 
> were not already in the cache.
> 
> This would mean that files less than one fragment would not have partial 
> content cached but I think that's acceptable as the advantages of partial 
> caching are only for larger objects.

If 1 of N fragments is cached, can we currently serve ranges out of that?

J

Reply via email to