- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 03 Oct 2007 05:25:00 +0000
- To: public-sml@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4656 kumarp@microsoft.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |hasProposal ------- Comment #4 from kumarp@microsoft.com 2007-10-03 05:25 ------- Proposal: Support for references pointing to elements other than root elements should be optional. Reasons: 1. In a large scale SML store, if references are allowed to point to elements other than the root element of a document, the size of the ref table becomes an order of magnitude larger than the size of the document table. This introduces perf problems that are hard to overcome. a. Ref targets must be identified by their xpath. This can be a very long string which makes it expensive/inefficient to index on it. b. If a document is updated, all incoming and outgoing references must be rechecked to verify that the at-most-one-target rule is not violated. This is expensive when there are a large number of documents in the store. It harms insert performance. c. Checking target* constraints requires that the entire SML document be indexed. This is very expensive. 2. If references can only target the root of a document, the above problems go away. a. Ref target can simply be a document-id which can be an int. Indexing on this is a lot more efficient compared to indexing on an unlimited length string. b. If document is updated, we do not need to check any ref to see if the at-most-one-target rule is violated since there can only be 1 root element. Thus, that rule is never violated. c. It is far more efficient to store the type/element info of a root element of a document than it is to store that info for all elements in the document. This means that we do not need to index the entire document for the purpose of checking target* constraints. This provides a significant perf boost on insert.
Received on Wednesday, 3 October 2007 05:25:07 UTC