The Open Anzo Project

Semantic Application Middleware

Ticket #310 (closed enhancement: fixed)

Opened 8 months ago

Last modified 8 months ago

Improve query performance when finding graphs containing a subject

Reported by: jpbetz Assigned to: jpbetz
Priority: major Milestone: 3.0 milestone2
Component: openanzo-glitter Version: 3.0
Keywords: performance query Cc: lee

Description

In ldap solution generator, don't query for attributes if they are not needed for constraint, projection or statement count.

In Glitter, better identify if a bindable is unused outside a node. Do this by noticing that a variable name used in other graph patterns of a UNION than the one it resides in does not mean the bindable is 'used outside of the node' when deciding if it must be bound.

Change History

05/02/08 01:11:28 changed by jpbetz

(In [2201]) re #310 reviewer: lee

Add Glitter.widenBindableIsolationScope and call from Glitter.isNeededOutsideOfNode. Optimize ldap solution generator list attributes of entries only when they are actually needed.

05/02/08 01:22:49 changed by jpbetz

  • owner changed from jpbetz to lee.

Lee,

Would you review and close? Thanks!

-Joe

05/02/08 16:08:13 changed by jpbetz

(In [2207]) re #310 reviewer: lee

Reduce use of isNeededOutside in favor of isUsedOutside due to bugs in the wild.

05/03/08 15:52:22 changed by jpbetz

(In [2211]) re #310 reviewer: lee

re-activate use of isNeededOutsideNode that was reduced in r2207. The actual issue was #313, not the isNeededOutsideNode method.

05/05/08 18:26:38 changed by lee

  • owner changed from lee to jpbetz.

Joe, I think that the filter check in isNeededOutsideOfNode(...) might need to be done on the original node rather than the widened node. Consider the pathological case of:

{ ... } 
  UNION 
{  -- n2
  { 
    ?s :foo :bar .  -- n1
  }
  FILTER(?s = :qux) .
}

In this case, the original node will be n1 and the widened node will be, n2. The filter is in scope for n1 but out of scope for n2. Yet we need the variable outside of n1 to properly evaluate the filter.

Two possible fixes:

  • do the filter check against the original (unwidened) node
  • check explicitly for filters in while walking up the tree in widenBindableIsolationScope()

Everything else looks good. Feel free to fix or refute and close.

05/05/08 18:27:10 changed by lee

Oops, those are SQL comments, not SPARQL comments :-)

05/05/08 23:32:06 changed by jpbetz

(In [2231]) re #324, #310 reviewer: lee

Don't widen binding isolation scope if a filter is in the chain (re #310) Support textmatch in ldap and relational solution generators (re #324) Introduce 'context' classes to reduce param counts throughout ldap and relational bridge code. Move ldap mapper classes to anzo-server. Modernize naming:

05/22/08 13:16:31 changed by jpbetz

  • status changed from new to closed.
  • resolution set to fixed.

Responded to review in comment 7, thanks for noticing this situation Lee. Marking as fixed.

Copyright © 2007 - 2008 OpenAnzo.org