- From: Jeremy Orlow <jorlow@chromium.org>
- Date: Wed, 21 Apr 2010 17:11:36 -0700
- To: Nikunj Mehta <nikunj@o-micron.com>
- Cc: public-webapps WG <public-webapps@w3.org>
- Message-ID: <l2l5dd9e5c51004211711i764fc5ey4306035eb2ac2412@mail.gmail.com>
On Mon, Apr 19, 2010 at 11:44 PM, Nikunj Mehta <nikunj@o-micron.com> wrote: > > On Mar 15, 2010, at 10:45 AM, Jeremy Orlow wrote: > > On Mon, Mar 15, 2010 at 3:14 PM, Jeremy Orlow <jorlow@chromium.org> wrote: > >> On Sat, Mar 13, 2010 at 9:02 AM, Nikunj Mehta <nikunj@o-micron.com>wrote: >>> >>> On Feb 18, 2010, at 9:08 AM, Jeremy Orlow wrote: >>> >> 2) In the spec, dynamic transactions and the difference between static >>> and dynamic are not very well explained. >>> >>> >>> Can you propose spec text? >>> >> >> In 3.1.8 of http://dev.w3.org/2006/webapi/WebSimpleDB/ in the first >> paragraph, adding a sentence would probably be good enough. "If the scope >> is dynamic, the transaction may use any object stores or indexes in the >> database, but if another transaction touches any of the resources in a >> manner that could not be serialized by the implementation, a RECOVERABLE_ERR >> exception will be thrown on commit." maybe? >> > > By the way, are there strong use cases for Dynamic transactions? The more > that I think about them, the more out of place they seem. > > > Dynamic transactions are in common place use in server applications. It > follows naturally that client applications would want to use them. > There are a LOT of things that are common place in server applications that are not in v1 of IndexedDB. > Consider the use case where you want to view records in entityStore A, > while, at the same time, modifying another entityStore B using the records > in entityStore A. Unless you use dynamic transactions, you will not be able > to perform the two together. > ...unless you plan ahead. The only thing dynamic transactions buy you is not needing to plan ahead about using resources. > The dynamic transaction case is particularly important when dealing with > asynchronous update processing while keeping the UI updated with data. > > > > Background: Dynamic and static are the two types of transactions in the > IndexedDB spec. Static declare what resources they want access to before > they begin, which means that they can be implemented via objectStore level > locks. Dynamic decide at commit time whether the transaction was > serializable. This leaves implementations with two options: > > 1) Treat Dynamic transactions as "lock everything". > > > This is not consistent with the spec behavior. Locking everything is the > static global scope. > I don't understand what you're trying to say in the second sentence. And I don't understand how this is inconsistent with spec behavior--it's simply more conservative. > > > 2) Implement MVCC so that dynamic transactions can operate on > a consistent view of data. (At times, we'll know a transaction is doomed > long before commit, but we'll need to let it keep running since only > .commit() can raise the proper error.) > > Am I missing something here? > > > If we really expect UAs to implement MVCC (or something else along those > lines), I would expect other more advanced transaction concepts to be > exposed. If we expect most v1 implementations to just use objectStore locks > and thus use option 1, then is there any reason to include Dynamic > transactions? > > J > > Can you please respond to the rest? I really don't see the point of dynamic transactions for v1.
Received on Thursday, 22 April 2010 00:12:32 UTC