- From: Nandana Mihindukulasooriya <nmihindu@fi.upm.es>
- Date: Tue, 25 Mar 2014 10:36:10 +0100
- To: Sandro Hawke <sandro@w3.org>
- Cc: Linked Data Platform WG <public-ldp-wg@w3.org>
- Message-ID: <CAAOEr1nSDySsDv2Z+YrEA8iQVzp5WwejUR0Pqu18hHnKjQv3Ew@mail.gmail.com>
On Mon, Mar 24, 2014 at 4:25 PM, Sandro Hawke <sandro@w3.org> wrote: > (continued from telecon) > > PROPOSED: Change LDP paging to no longer be characterized as "lossy". > Specifically, a client who pages all the way through (forward or backward) > MUST be sent every triple in intersect(g0, g1, ... gn) and MAY be sent any > triples in the union (g0, g1, .. gn), where Gi is the paged graph at the > time client makes request i. Servers MAY refuse to serve any page because > they don't want to implement this kind of paging in certain cases; if they > do so, they MUST return a 410 GONE. > I also tend to agree with Ted that we are conflating of two concepts. From a transaction point of view, what is important is the consistency. So as a client, I would be happy to get either g0 or (may be any of gn) but not mixing triples from different Gis. I agree with Sandro that a single HTTP operation acts like a transaction and HTTP does not allow few triples from a ongoing PUT to be visible in a parallel GET. However, paging involves multiple HTTP GETs and in between there could be PUT operations that finish with success (not partial PUTs), So as soon as we mix triples from different Gi with interactions and unions, I think we don't have isolation anymore. To put in another way, if we consider reading through the complete representation of a resource via paging as a single READ, and PUTs in parallel as WRITEs, those operations can no longer be put to a serializable schedule. So I don't think we can say we have isolation. I think we are in 'Read committed' level. Because PUTs and other write operations act as request-response single operation transactions, any data that the client sees is a result of a committed transaction. I think this fits the description of Read committed, *"**read committed is an isolation level that guarantees that any data read is committed at the moment it is read. It simply restricts the reader from seeing any intermediate, uncommitted, 'dirty' read. It makes no promise whatsoever that if the transaction re-issues the read, it will find the same data; data is free to change after it is read."* IMHO, clients are normally interested in seeing a consistent representation of the whole resource at any given time but not a mix of different times. So I personally prefer if we had a way to get a snapshot of a complete representation to page through. Best Regards, Nandana
Received on Tuesday, 25 March 2014 09:36:55 UTC