Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

CaseQuery one out of many using descendant cps pathQuery one out of many using absolute cps path
Query//openroadm-device[@device-id="C201-7-1A-14"]/openroadm-devices/openroadm-device[@device-id="C201-7-1A-19"]
Comparison graph

Image Modified

Graph detail

Time complexity of
existing solution

O(N)O(N)
Time complexity of
proposed solution

O(N)

O(1)
Comments

The use of LIKE 'openroadm-device[%' in the query to match candidates
means that all fragments need to be checked, e.g. for 3000 devices,
3000 x 86 ~= 250k fragments need to be scanned.

The use of the absolute path narrows the search space to only direct
children of /openroadm-devices - for 3000 devices, we only need to scan
3000 fragments instead of 250k.

...

Note: if we wish to avoid creating additional database fields, using list/container name field would offer the best balance of performance, e.g.

idparent_idanchor_idxpathcontainer
1NULL3/bookstorebookstore
213/bookstore/categories[@code='1']categories
323/bookstore/categories[@code='1']/books[@title='Matilda']books
423/bookstore/categories[@code='1']/books[@title='The Gruffalo']books

In this case, attributes for any list element path component would need to be looked up (so it would no longer be index-only). My suspicion is that this would have better general performance than using xpath_component alone, but testing is needed to verify.

Work Breakdown for Implementation

...