7. A system for optimizing pattern query searches in a graph database, the system being implemented by a computer having a memory and at least one processor; comprising: a pattern query optimizer designed and arranged to: identify a complex configuration in a first pattern query, the complex configuration including at least one branch or cycle; and generate two or more subpattern queries by decomposing each branch and cycle into equivalent straight line nodes joined by edges to be converted to search query language (SQL) expressions; wherein the pattern query optimizer is implemented in a plurality of lines of computer code maintained in the memory for execution by the at least one processor and, wherein the pattern query optimizer: forms subgraphs by removing nodes that are adjacent to more than two other nodes in the first pattern query; separates the subgraphs into connected components; searches for and locates nodes in any of the connected components that are connected to less than two other nodes in a same connected component; adds nodes in the first pattern query that are adjacent to the located nodes into the connected components along with connecting edges; and when a cycle is found, splits the cycle into two or more separate paths.
7. A system for optimizing pattern query searches in a graph database, the system being implemented by a computer having a memory and at least one processor; comprising: a pattern query optimizer designed and arranged to: identify a complex configuration in a first pattern query, the complex configuration including at least one branch or cycle; and generate two or more subpattern queries by decomposing each branch and cycle into equivalent straight line nodes joined by edges to be converted to search query language (SQL) expressions; wherein the pattern query optimizer is implemented in a plurality of lines of computer code maintained in the memory for execution by the at least one processor and, wherein the pattern query optimizer: forms subgraphs by removing nodes that are adjacent to more than two other nodes in the first pattern query; separates the subgraphs into connected components; searches for and locates nodes in any of the connected components that are connected to less than two other nodes in a same connected component; adds nodes in the first pattern query that are adjacent to the located nodes into the connected components along with connecting edges; and when a cycle is found, splits the cycle into two or more separate paths. 9. The system of claim 7 , wherein the pattern query optimizer uses a final SQL expression to join the two or more subpattern queries.