- From: Jeremy Orlow <jorlow@chromium.org>
- Date: Wed, 12 Jan 2011 22:29:58 +0000
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: public-webapps WG <public-webapps@w3.org>
- Message-ID: <AANLkTik9SZy-5v5yxcBPd_cpu5Bs7vXx=0vy0UueZ-bi@mail.gmail.com>
On Wed, Jan 12, 2011 at 10:13 PM, Jonas Sicking <jonas@sicking.cc> wrote: > On Tue, Jan 11, 2011 at 2:22 AM, Jeremy Orlow <jorlow@chromium.org> wrote: > > On Mon, Jan 10, 2011 at 9:40 PM, Jonas Sicking <jonas@sicking.cc> wrote: > >> > >> On Tue, Dec 14, 2010 at 12:13 PM, Jeremy Orlow <jorlow@chromium.org> > >> wrote: > >> > > >> > On Tue, Dec 14, 2010 at 7:50 PM, Jonas Sicking <jonas@sicking.cc> > wrote: > >> >> > >> >> On Tue, Dec 14, 2010 at 8:47 AM, Jeremy Orlow <jorlow@chromium.org> > >> >> wrote: > >> >>> > >> >>> Btw, I forgot to mention IDBDatabase.transaction which I definitely > >> >>> think should take an options object as well. > >> >> > >> >> Hmm.. I think we should make the first argument required, I actually > >> >> thought it was until I looked just now. I don't see what the use case > is for > >> >> opening all tables. > >> > > >> > FWIW I'm finding that the majority of the IndexedDB code I read and > >> > write does indeed need to lock everything. I'm also finding that most > of > >> > the code I'm writing/reading won't be helped at all by defaulting to > >> > READ_ONLY... > >> > > >> >> > >> >> In fact, it seems rather harmful that the syntax which will result in > >> >> more lock contention is simpler than the syntax which is better > optimized. > >> > > >> > But you're right about this. So, if we're trying to force users to > >> > write highly parallelizable code, then yes the first arg probably > should be > >> > required. But if we're trying to make IndexedDB easy to use then > actually > >> > the mode should probably be changed back to defaulting to READ_WRITE. > >> > I know I argued for the mode default change earlier, but I'm having > >> > second thoughts. We've spent so much effort making the rest of the > API easy > >> > to use that having points of abrasion like this seem a bit wrong. > >> > Especially if (at least in my experience) the abrasion is only going > to > >> > help a limited number of cases--and probably ones where the developers > will > >> > pay attention to this without us being heavy-handed. > >> > >> I think "ease of use" is different from "few characters typed". For > >> example it's important that the API discourages bugs, for example by > >> making the code easy and clear to read. Included in that is IMHO to > >> make it easy to make the code fast. > > > > It won't make the cost fast. It'll make it'll allow parallel execution. > > Which will only matter if a developer is trying to do multiple reads at > > once and you have significant latency to your backend and/or it's heavily > > disk bound. Which will only be true in complex web apps--the kind where > a > > developer is going to be more conscious of various performance > bottlenecks. > > In other words, most of the time, defaulting to READ_ONLY will almost > > certainly have no visible impact in speed. > > It also matters for the use cases of having background workers reading > from the same table, Workers are a pretty advanced use case. One where I'd expect the developer to be mindful of something like this. > as well as any time the user opens two tabs to > the same page. The latter is something that I expect every web app > would care about. > A user will generally only be using one page at a time. The few apps that I can think of where this in't true would be fairly advanced use cases where the developer is going to need to consciously optimize their app anyway. I doubt that you're going to save the world more grief than you're going to cause them by defaulting to READ_ONLY. J
Received on Wednesday, 12 January 2011 22:30:50 UTC