On Apr 10, 2009, at 3:13 PM, Ian Hickson wrote:
On Fri, 10 Apr 2009, Nikunj Mehta wrote:
Can someone state the various requirements for Web Storage? I did not
find them enunciated anywhere.
There's only one requirement that I know of:
* Allow Web sites to store structured data on the client.
There are many use cases, e.g. Google is interested in this to
enable its
applications to be taken offline. We recently released offline GMail
using
this SQL backend; one could easily imagine other applications like
Calendar, Reader, Docs&Spreadsheets, etc, supporting offline mode. A
while
back we released a demo of Reader using Gears' SQL database.
Last time I tried this trick I was asked to come back with more
precise use cases [1]. Then I put together more detailed use cases
[2], and even those were not considered to be written precisely
enough. So it looks like the bar for what constitutes a use case or
requirement seems to be quite high.
But we would rather use a standard API than rely on Gears.
I think if we are serious about building a good foundation for local
persistence, then we should have more precise requirements for Web
Storage. Otherwise, we risk prematurely standardizing some dialect of
SQL supported by SQLite as "Web Storage".
Here's a compilation of requirements from what I have read in this
thread and other work I have done in this area:
data items may be small and record like objects or large and document
like.
Must support data items that are hundreds of megabytes or tens of bytes.
Must support data items that are binary or text
Should support sending and receiving large data items directly over
the network without bringing them into memory.
handle large data sets efficiently; in particular, it should not
require that the entire data set fit into memory at one time,
execute queries over the entire dataset,
queries may involve full-text search, parameterized or query by
example search, or a combination
queries provide operators for all JavaScript data types
queries permit user defined functions
integrate well with JavaScript.
to enable offline operation, permit a local view over or update of
data that may be remotely mastered
integrate well with Web - MIME types, URL, and HTTP methods
not require a rigid schema definition and support decentralized schema
evolution
Application data may only be accessed by authorized users
[1] http://lists.w3.org/Archives/Public/public-webapps/2008AprJun/0079.html
[2] http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0104.html