W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2007

[whatwg] Asynchronous database API feedback

From: Geoffrey Garen <ggaren@apple.com>
Date: Mon, 10 Dec 2007 12:21:03 -0800
Message-ID: <52172026-EB27-4E1E-A880-615282502CDF@apple.com>
>> Getting back to storage, consider devices with a Flash drive as the
>> primary disk. Most web developers won't test on these (did you?), but
>> they have very different performance characteristics than hard  
>> drives.
>> While there are no seek latencies to content with, and reads can be
>> pretty fast, the write throughput can be quite a bit worse,  
>> especially
>> for scattered small writes. In many cases, such devices have special
>> filesystems that try to spread writes over the entire device, to
>> increase Flash lifetime. But the result can be that write latencies
>> get much worse than usual at unpredictable times.
>
> I still feel that there are many simple use cases for a local database
> for which a developer can assume the read and write latency should
> always be less than five seconds.

Even the fastest desktop hard drives can show greater than 5 seconds  
of latency under heavy load -- for example, while the user is  
compiling, while Spotlight or Google Desktop is indexing the hard  
drive, while many apps are starting up at the same time, etc. As long  
as enough requests are pending in the OS's or the drive's read/write  
queue, the browser has to wait.

Under what conditions can a web developer assume that no other  
processes are using the hard drive?

I'd hate for GMail to mysteriously stop working every couple of days  
just because of some background process that I had no knowledge of. As  
a developer, how would you debug such a problem? As a tech support  
worker, how would you explain it to an end user?

> If we cannot provide this, I feel that localstorage will not be  
> successful, so it won't matter what API it uses.

I think this is a pretty extreme conclusion. My impression is that web  
developers want local storage so badly, they'll use whatever API we  
give them -- even if it's in Haskell :).

Anyway, if an API without synchronous access turns out to be  
unpopular, we can always add synchronous access later. Whereas, if an  
API with synchronous access turns out to hang the browser and make web  
sites unreliable, we can't remove it later. So I think it's more  
prudent to leave synchronous access out, and see what happens.

Geoff
Received on Monday, 10 December 2007 12:21:03 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:38 UTC