Uploaded image for project: 'WINDUP - Red Hat Application Migration Toolkit'
  1. WINDUP - Red Hat Application Migration Toolkit
  2. WINDUP-532

Performance: Change storing of classification to edges instead of vertex property.

    Details

      Description

      Classification is not a value, it's rather assigning nodes to certain class of findings. IOW, it's a relation, and as such, it should be modelled an edge from the classified item into a node representing the particular class.

      Current solution, when we are storing classification "discriminator" as a string to the "ClassificationModel:classification" property, leads to very bad performance:

      03:40:42,170 WARNING [com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx] (AeshProcess: 4) Query requires iterating over all vertices [(ClassificationModel:classification = WSDL Definition)]. For better performance, use indexes
      ...
      Windup execution took 10621 seconds to execute on input: /home/ondra/Desktop/windup-vyzkouset.ear
      

      Even if we add index to that property, IMO using edges will still provide better performance. I could try that.
      The same applies to certain other properties:
      "packageName" could rather be a vertex with a package name.
      RuleProviders should be a vertexes, and Hint's "originatingProvider" should change to an edge to that.

      Also, I think there's something structurally wrong in the XML classification - it queries the same data again and again, rather than iterating over the previous results. Subject to investigation.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  ozizka Ondrej Zizka
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: