- Use of SQL means that it will be next to impossible to get agreement on the exact dialect supported by independent implementations.
- The API is extraordinarily complex that an ordinary programmer would have a hugely difficult time using it. This means more bugs will remain hidden for longer in the spec, and more bugs would be found in code using the API. The complexity arises out of a need to prevent delays when accessing a database from affecting the user interface. As a result, practically every call to the API results in an asynchronous callback.
- The API requires a lock acquisition scheme that does allows extremely limited parallelism in data access. As a result, superior implementations cannot do well. Even though the intention is noble - avoid producing exceptions as a result of deadlocks - the result is delays and timeouts as well as higher level deadlocks, which the programmer still has to deal with.
- The API has chosen to use SQL due to its well developed relational model. However, it doesn't want to provide an API that the typical database developer will be able to program against. This mythical "Web database" programmer receives undue importance in the design of the API.
- Overly reliant on SQL, when the data model in browsers is that of objects. This forces everyone to develop layers to translate between rowsets and objects.
This editor's draft of WebSimpleDB is now available from W3C. I am inviting feedback on this draft so that I can incorporate it before it goes to FPWD.


2 comments:
Hi
I like the proposal and have been interested in making applications / frameworks that work on levels lower than SQL.
Can you explain some of rationale behind the interface you have proposed? Is it taken from a certain existing package (I'd like to play with that package if possible)? What kind of frameworks are you expecting will be built on top of it?
@Tim,
The rationale for this interface is Oracle Berkeley DB. Berekeley DB has been in use from 1986 and its APIs have been offered in various languages such as PHP, Python, C, and Java.
ISAM is a general concept used in every kind of database. Some people find WebSimpleDB good for a JavaScript CouchDB. I expect to see a JavaScript SQL compiler on top of WebSimpleDB some day. I think an XQuery compiler could also be written in JavaScript to read/write from WebSimpleDB.
I hope that answers your question.
Post a Comment