W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2010

Re: [IndexedDB] Dynamic Transactions (WAS: Lots of small nits and clarifying questions)

From: Jeremy Orlow <jorlow@chromium.org>
Date: Wed, 21 Apr 2010 17:36:27 -0700
Message-ID: <r2y5dd9e5c51004211736y304d72cn364a3be371a977b9@mail.gmail.com>
To: Nikunj Mehta <nikunj@o-micron.com>
Cc: public-webapps WG <public-webapps@w3.org>
On Wed, Apr 21, 2010 at 5:30 PM, Nikunj Mehta <nikunj@o-micron.com> wrote:

>
> On Apr 21, 2010, at 5:11 PM, Jeremy Orlow wrote:
>
> 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.
>
>
> And why would planning ahead be required? We don't require programmers
> using the IndexedDB or users of libraries built on IndexedDB to be capable
> of planning ahead, do we?
>
>
>
>> 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.
>
>
> If the spec requires three behaviors and you support two, that translates
> to non-compliance of the spec, in my dictionary.
>
>
>
>>
>>
>> 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?
>>
>>
Can you please respond to this?

If you don't have a good answer, then I don't intend on implementing Dynamic
transactions as specced because the feature would clearly not be worth the
implementational effort.  I would simply treat a dynamic transaction as a
static one that wants to lock the world.

It's completely possible that I'm missing something major here.  But in
order for me to know that, you'll need to explain it to me.  Terse,
sarcastic responses don't help anyone.

>
>>
>> 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:37:44 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:38 GMT