A computer-implemented method of processing data in a memory comprising: - accessing first data of a hierarchical data structure; - wherein the first data is network configuration data; - generating a directed graph based on the first data, including: - creating a plurality of nodes representing the first data; and - linking first nodes representing data at a particular level of the hierarchical data structure to second nodes representing data at a lower level of the hierarchical data structure; - generating an adjacency table representing the directed graph; - wherein the adjacency table is stored on a disk; - receiving a query requesting information from the hierarchical data structure; - identifying, within the adjacency table representing the directed graph, a particular node that is a starting point for searching the directed graph based on the query; - identifying, based on the adjacency table representing the directed graph, out-links that link the particular node to other nodes of the directed graph; - loading, in memory, only a portion of the adjacency table that represents the particular node and the other nodes to which the particular node is linked by the out-links - processing the query using the portion of the adjacency table loaded in memory, including inspecting each of the other nodes that is connected to the particular node by the out-links to determine which of the other nodes represents responsive data matching the query; - responding to the query with the responsive data matching the query based on the inspecting. - accessing first data of a hierarchical data structure; - wherein the first data is network configuration data; - generating a directed graph based on the first data, including: - creating a plurality of nodes representing the first data; and - linking first nodes representing data at a particular level of the hierarchical data structure to second nodes representing data at a lower level of the hierarchical data structure; - generating an adjacency table representing the directed graph; - wherein the adjacency table is stored on a disk; - creating a plurality of nodes representing the first data; and - linking first nodes representing data at a particular level of the hierarchical data structure to second nodes representing data at a lower level of the hierarchical data structure; - generating an adjacency table representing the directed graph; - wherein the adjacency table is stored on a disk; - receiving a query requesting information from the hierarchical data structure; - identifying, within the adjacency table representing the directed graph, a particular node that is a starting point for searching the directed graph based on the query; - identifying, based on the adjacency table representing the directed graph, out-links that link the particular node to other nodes of the directed graph; - loading, in memory, only a portion of the adjacency table that represents the particular node and the other nodes to which the particular node is linked by the out-links - processing the query using the portion of the adjacency table loaded in memory, including inspecting each of the other nodes that is connected to the particular node by the out-links to determine which of the other nodes represents responsive data matching the query; - responding to the query with the responsive data matching the query based on the inspecting.