Near-constant browsing and random access of large hierarchies in stateless applications

The system addresses inefficiencies in browsing large hierarchical datasets by fetching and caching a subset of nodes on demand, enhancing user interaction and reducing latency through local caching and metadata management.

JP7828321B2Active Publication Date: 2026-03-11ORACLE INT CORP
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-12-13
Publication Date
2026-03-11

AI Technical Summary

Technical Problem

Existing methods for browsing large hierarchical datasets are inefficient, as they either require downloading the entire dataset, which is too large for local caching, or loading all preceding nodes before displaying any part of the hierarchy, leading to latency issues.

Method used

A system that fetches and displays a subset of nodes from a large hierarchy on demand, using a local cache to store pre-fetched nodes and their metadata, allowing users to scroll and expand nodes efficiently without fetching the entire dataset.

Benefits of technology

Enables fast and efficient display of hierarchical data by fetching only the necessary nodes, reducing latency and improving response times, similar to local storage, while supporting user interactions like scrolling and node expansion.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007828321000001
    Figure 0007828321000001
  • Figure 0007828321000002
    Figure 0007828321000002
  • Figure 0007828321000003
    Figure 0007828321000003
Patent Text Reader

Abstract

To provide one or more non-temporary computer-readable media, a method and a system that efficiently improve response time for displaying a small sub-net of nodes random selected from an extremely-large hierarchy of nodes.SOLUTION: A browser is configured to provide browsing of a hierarchical data set including potentially millions of nodes. The hierarchical data set may be positioned on a machine remote to a machine hosting the browser. Through selective, intelligent fetching and local cache management of sparse portions of the hierarchical data set and local cache, the browser provides a consistent and predictable response times for displaying a randomly-selected node in a viewpoint of proximate nodes within a hierarchy.SELECTED DRAWING: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Technical Field This disclosure relates to various techniques for browsing hierarchical data, and is particularly directed to efficiently improving response times for displaying a small subset of randomly selected nodes from a very large hierarchy of nodes. [Background technology]

[0002] background There are several approaches for browsing data held by remote machines. When browsing a small set of remote data, the browser can download and cache the entire dataset at the beginning of browsing, avoiding the need to retrieve further data during the browsing session. However, because the dataset has approximately one million entries, the entire dataset may be too large to fit into the local cache. Even if the dataset does fit into the local cache, retrieving the entire dataset may be inefficient when only a small portion of the dataset is accessed. The common approach of loading data only as the user scrolls down does not allow any area of ​​the hierarchy to be displayed without first loading all of the preceding nodes. Summary of the Invention [Means for solving the problem]

[0003] Fetching and cache management strategies can be used to access locally stored data retrieved from remotely stored datasets. In one example, a browser provides a scrolling interface for browsing "linear" data. "Linear data," as used herein, refers to data items that have a relative order (e.g., chronological, alphabetical, or numerical). The relative order indicates which data items are immediately adjacent to other data items. A list of data is displayed according to the relative order.

[0004] The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been conceived or pursued, and therefore, unless otherwise indicated, it should not be assumed that any approach described in this section constitutes prior art merely by virtue of its inclusion in this section.

[0005] In the figures of the accompanying drawings, embodiments are illustrated by way of example, and not by way of limitation, and references to "an" or "one" embodiment in this disclosure do not necessarily refer to the same embodiment, but rather to at least one. [Brief explanation of the drawings]

[0006] [Figure 1A] FIG. 1 is a block diagram illustrating components of a system according to one or more embodiments. [Figure 1B] FIG. 2 illustrates a hierarchy of nodes 122 in more detail, according to one or more embodiments. [Figure 1C] FIG. 1C illustrates a local cache of nodes corresponding to nodes in the hierarchical tree of data shown in FIG. 1B, according to one or more embodiments. [Figure 2] 1 is a flowchart illustrating retrieval and display of a goal node according to one or more embodiments. [Figure 3]FIG. 1 is a block diagram illustrating a computer system according to one or more embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0007] Block diagram components and flowchart operations may be added, deleted, modified, or combined. Functionality described with respect to one component / operation may instead be achieved by other components / operations. Therefore, the specific components / operations illustrated and / or described herein should not be construed as limiting the scope of any of the claims.

[0008] Detailed Description In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in a different embodiment. In some instances, well-known structures and devices are described with reference to block diagram form in order to avoid unnecessarily obscuring the present invention.

[0009] 1.Overview Large hierarchical data sets can be visually represented by thousands or even millions of nodes. A system for displaying a visual display (e.g., nodes) corresponding to hierarchical data can be implemented remotely from a data store containing the hierarchical data. One or more embodiments aim to present a requested node corresponding to a subset of the hierarchical data without significant latency, as if the hierarchical data were stored locally, even though the hierarchical data is stored remotely.

[0010] The system fetches the nodes to be displayed rather than fetching all nodes representing the entire hierarchical data. As one example, the interface displays a section of a visual representation and allows the user to scroll to a particular hidden section of the visual representation. Based on the scrolling, the particular hidden section corresponds to a node that should now be displayed. As another example, the interface allows the user to identify (i.e., by random access) individual nodes in the hierarchy that are not visible on the display and that are not within an appropriate scrolling distance of the currently displayed data. Upon receiving a user-specified node, the specified node and any nodes related to the specified node are displayed.

[0011] Following and in response to detecting a user input that causes a node that is not currently displayed to be displayed, the system fetches the node that corresponds to the particular hidden section without fetching the nodes that correspond to the entire hierarchical data. Identifying and fetching the subset of nodes to be displayed is fast compared to fetching all nodes in the visual display that correspond to the entire hierarchical data. The speed at which the subset of nodes is fetched and displayed may be sufficiently similar, from a user's perspective, to the speed at which locally stored nodes are displayed in response to a user request.

[0012] In addition to fetching the nodes to be displayed, in one or more embodiments, further nodes that are related to and / or adjacent to the set of nodes to be displayed are pre-fetched.

[0013] While initial user input may not display further nodes, further user input (e.g., initial display of a particular node and the set of nodes that are displayed with that particular node) may Further adjacent nodes may be displayed by scrolling from the current display (scrolling from the current display). If requested, further adjacent nodes may be displayed quickly, while fetching further adjacent nodes efficiently without fetching the entire set of nodes.

[0014] There may be multiple embodiments described and / or claimed herein that are not included in this general summary section.

[0015] 2. Architecture for browsing hierarchical data A tree browser allows a user to browse hierarchical data. In embodiments where nodes from a hierarchy are displayed in an ordered sequence in a display window, the ordered sequence is determined by traversing the hierarchy in a particular search order. For example, in one embodiment, the ordered sequence can be generated by following the following rules, starting from a particular node A in the hierarchy:

[0016] (a) Starting with an empty sequence and starting at a particular node in the hierarchy, such as node A.

[0017] (b) Adding a specific node to a sequence. (c) When a specific node has one or more child nodes and the specific node is in an expanded state, (d) Perform steps (b) and (c) for each of the child nodes of the particular node, in child node order. (This is a recursive algorithm where performing steps (b) and (c) results in the child node being the particular node.) The order resulting from these rules results in a linear hierarchy, similar to how many file system contents are displayed to a user, with folders or directories first, followed by a list of the contents within the directories, including files and other directories.

[0018] The ordered sequence of nodes may be affected by the expansion state of the node: when a parent node is expanded, its child nodes appear in the ordered sequence of nodes, and when a parent node is collapsed, its child nodes do not appear.

[0019] In addition to scrolling through an ordered list of data representing a hierarchy (tree) of nodes, a tree browser allows the user to expand or collapse nodes of the tree. When the user expands a node in the display, the display changes by inserting child nodes into the ordered list shown in the display. By inserting a node in the middle of the displayed list, nodes that appear toward the bottom of the list can be pushed away from the bottom of the display. The position of a node displayed to the user relative to other nodes on the screen can change based on the node's expansion in the hierarchy. Thus, the set of nodes to be displayed depends on the expansion state of the nodes associated with a particular node.

[0020] A hierarchical data browser can fetch data from a remote machine containing all the nodes in a subtree of a hierarchy and then display only the nodes requested by the user, i.e., it can fetch the fully expanded subtree.

[0021] 1A is a block diagram illustrating components of a system according to one or more embodiments, which components may be omitted, modified, rearranged, combined, or otherwise modified.

[0022] The hierarchy of nodes 122 represents a very large data set of hierarchical data that can be browsed. Nodes in this hierarchy are sent, upon request, to the local machine 142 hosting the user browsing the data. Although the hierarchy contains nodes, they do not necessarily require additional state information to track what data is being browsed or cached, possibly by multiple browsing machines.

[0023] Remote machine 112 manages a hierarchy of nodes 122. Node requests are received by remote machine 112 to fetch data from hierarchy of nodes 122 and transmit the data to the requesting machine, such as local machine 142. Remote machine 112 may be stateless with respect to the data being requested; that is, remote machine 112 does not keep a record of past requests. Requests for data to remote machine 112 are idempotent.

[0024] Display screen 130 is the screen of a display device communicatively coupled to local machine 142. Display area 132 is a display window within the area of ​​display screen 130 in which an ordered list of data items of hierarchical tree nodes is displayed and browsed. The ordered list of data items includes a number of data items according to the number of lines of data that can be simultaneously displayed in the display window.

[0025] Display area 134 is another portion of the screen that may display metadata about the node displayed in display area 132. Examples of metadata that may be displayed in display area B include an ordered list of ancestor nodes in the hierarchy for the selected node. Other information that may be displayed in display area B includes attributes of the selected node, such as value and type, creation time, and owner. A search interface may be displayed in display area 134.

[0026] The local machine 142 hosts a browser used by a user to browse the data in the hierarchy of nodes 122. The user may navigate by viewing nodes in the display area 132 and scrolling to other nodes in the ordered list of nodes. As a new node is scrolled into the display window, the local machine may request that the remote machine 112 transmit the node to be displayed to the local machine 142 so that the node can be displayed in the display area 132. The user may interact with the display area 134 to specify a target node for viewing if the node is not within an appropriate scrolling distance from the node shown in the display area 132. For example, the display area 134 may include a list of bookmarked nodes, recently viewed nodes, or a search bar in which the name of the target node can be specified. In response to a user request to view a particular target node, the local machine 142 may determine which nodes should be displayed next to the target node and fetch those further nodes from the remote machine 112 as needed.

[0027] The partial hierarchy data cache 144 is a cache local to and managed by the local machine 142. The local machine 142 stores copies of a subset of nodes in the node's hierarchy 122 as the nodes are fetched from a remote machine. For each requested node in the local cache, the cache may include copies of ancestors, siblings, descendants, or other types of related nodes as specified by policy. As an example, for each requested node in the local cache, the cache may include all ancestors of the requested node, but the cache may not necessarily include all sibling nodes of the requested node. In another example, for each requested node in the local cache, the cache may include ancestor nodes up to n levels and all sibling nodes of the requested node. In addition to the data in the node copied to the cache, the cached node may also include other metadata that tracks the browser state of the data in the browser. This The metadata may not be known to a remote machine storing the master hierarchy data set. For example, each internal node (i.e., a node that has at least one child node) may have an associated expansion state indicator. The expansion state indicates whether the internal node's child nodes are displayed. In some embodiments, the partial hierarchy data cache 144 may also store a list of nodes whose expansion state is expanded. The list of expanded nodes may be separate from the cached nodes, and the list may persist even if nodes in the list are evicted from the cache. In some embodiments, the list of expanded nodes may include only nodes that were cached at least once during a browsing session and have an expansion state of expanded. Nodes that have not been cached during a browsing session and nodes that are in a collapsed state may not be included in the list. Alternatively, the list of expanded nodes may be further limited to include only nodes that have been evicted from the expansion state cache. In such embodiments, when an expanded node is evicted from the cache, the node may be added to the list of expanded nodes. When a node that was previously evicted from the cache is refetched and entered into the cache, its expansion state may be set to expanded if the node appears in the list of expanded nodes. In some embodiments, a node's expansion state is stored within the cached node itself, so that the node may be removed from the list of expanded nodes once it has been cached.

[0028] In embodiments in which the nodes of a hierarchy are ordered according to the linearization rules described above, the child nodes of a particular expanded internal node may appear before the sibling nodes of the particular internal node in the ordered list of nodes. However, if a particular node is in the "collapsed" expanded state, the sibling nodes may appear immediately after the particular node without being interposed between the child nodes.

[0029] Some of the nodes in the hierarchy of nodes 122 may not have a corresponding copy in the cache. Placeholders may be used to represent a contiguous, ordered set of nodes to indicate that the master hierarchy includes nodes not represented in the cache. When traversing the hierarchy of cached nodes to display the nodes in an ordered sequence, encountering a placeholder may cause the local machine to request a copy of the missing node and enter the fetched node into the cache.

[0030] FIG. 1B is a diagram illustrating a hierarchy of nodes 122 in more detail, according to one or more embodiments. The labels of the nodes in the hierarchy are selected in the illustrated example to facilitate identification of the nodes. The illustrated example should not be construed to limit the scope of any of the claims. Each node has an individual identity when prefixed with the label of its ancestor. For example, numbers within a node indicate the order of sibling nodes. Thus, a node with a "1" is the first sibling node, a node with a "2" is the second sibling node, and so on. Letters within a node indicate the level in the hierarchy. Thus, node 1B is a descendant of node 1A. Node 1A is the root of the hierarchy, and so on, with {1B, 2B, ... 9999}. A}, and has 9999 child nodes in the order A and B. The circles in the figure represent the nodes in the hierarchy. The hierarchy is shown, but omitted from the diagram due to lack of space. For example, node 1B has child nodes 4C, 5C, 6C, etc., but child nodes 4C, 5C, 6C, etc. are not shown in the diagram. Nodes 1B, 2B, and 9999B also each have 9999 child nodes. This hierarchy has a very large number of nodes.

[0031] 1C is a diagram illustrating a local cache of nodes corresponding to a subset of nodes in the hierarchical tree of data shown in FIG. 1B, according to one or more embodiments. Labeled nodes indicate copies of corresponding nodes in the hierarchy of FIG. 1B, and bold-bordered rectangles represent placeholders. The placeholders identify a set of one or more sibling nodes that are contiguous in the ordered list of sibling nodes and that are not cached. For example, 2 The entire subtree of B is not stored in the cache. Also, missing from the cache are Child nodes of node 1B: {81C~898C} and {1000C~9999C}, and Child nodes of 10B: {1C~19C} and {31C~9999C} is.

[0032] 2 is a flowchart illustrating retrieval and display of data items for a target node, according to one or more embodiments. At operation 210, an ordered sequence of nodes that are part of hierarchy 122 of nodes is displayed in display area 132. The display window is capable of presenting a certain number of lines of data items. In one embodiment, the local machine may prefetch a portion of the hierarchy for display in display area 132 at startup time, before operation 210 occurs.

[0033] At operation 220, a user may request to view a particular node in the hierarchy that is not displayed in the display window and therefore cannot be selected from display area 132. The user may select an option using display area 134 to select a node for display in display area 132 once the node of interest is within reasonable scrolling distance of the nodes shown in the display window. That is, the target node of interest may be located in a subtree distant in the hierarchy from the displayed node. The target node may be specified by interacting with display area 134 to select a bookmarked node, a recently viewed node, or by entering the node name in the search bar to navigate directly to the target node without having to scroll.

[0034] The local machine may search for the target node in its local cache at operation 230. If the target node is not stored in the local cache, the local machine may request a copy of the target node from the remote machine 112 and store the copy of the target node in its cache at operation 240. Additionally, any ancestors of the target node that are not already in the cache may be fetched and placed in the cache.

[0035] The cached hierarchy of nodes is used to determine the data items to display in the display area 132 in operation 250 in response to a user request. The data items to be displayed may include an ordered sequence of nodes. In some embodiments, the data items for the target node may be placed near the center of the display window. The number of data items for nodes to be displayed with the target node may be based on the display configuration. The display configuration may include, for example, the size of the display window, the resolution of the display window, the size of each illustration of the node, and the amount of space between the nodes. Some of the nodes to be displayed may be missing from the cache and instead be represented by placeholders in the cache. Identifying the data items to be displayed is described in more detail below in the section titled "Identifying Nodes to be Displayed."

[0036] In operation 260, nodes determined to be needed for display but missing from the cache may be fetched from the remote machine 112. As nodes are received from the remote machine, they may be added to the cache and placeholders may be removed or revised to indicate a smaller set of missing nodes.

[0037] In operation 270, the nodes to be displayed, including the target node, are displayed in the display area 132. For example, referring to FIG. 1C, if node 899C is selected for display, information about the node indicated by the placeholder may be required. For example, node 898C is missing from the cache. Node 898C may be selected from the remote master. Therefore, if a node from the ordered sequence of nodes to display is missing from the cache, operations 230-260 may have to be repeated until the number of nodes in the ordered sequence fills the display window.

[0038] 3. User Interface Notes Browsers may support users requesting a single action to expand or collapse (a) an individual node or (b) all nodes.

[0039] The expansion state of nodes to be cached may be set to a default value. In some embodiments, the default expansion state is not expanded (also referred to herein as collapsed). A user may request expansion of a node by selecting (e.g., clicking) the node in the display window. When a user selects an individual node to be expanded, the node's expansion state indicator value is set to expanded, and the selected node's child nodes may be added to the displayed list of nodes. The expansion state indicator may remain expanded until the user requests that the node be collapsed.

[0040] Selection of a node accessed randomly through a search interface, or other means not involving selection from within a display window, may cause the values ​​of the expansion state indicators for all ancestors of the selected node to be set to expanded, and the displayed list of nodes will appear to the user as if the user had manually expanded all of the ancestor nodes and scrolled to the selected node.

[0041] In some embodiments, the user requests to expand all, which changes the expansion state of all nodes in the hierarchy to expanded. Expanding all nodes in the hierarchy may change the browsing state for all nodes, not just those that are displayed or cached at the time of the request. In some embodiments, a global expansion state indicator may indicate whether all nodes should be displayed as expanded. If the global expansion state indicator indicates expanded mode, all nodes are displayed as if their state is expanded, regardless of the values ​​of their individual expansion state identifiers.

[0042] In some embodiments, a user may request to expand downward, which may change the expansion state of all nodes in the subtree rooted at the selected node to expanded. In some embodiments, a subtree expansion identification may be stored in a cache that identifies the node that is the root of the subtree to be expanded. To determine whether to expand a node to be displayed, the system may examine the subtree expansion identification to determine whether the node is in any subtree of the node identified by the subtree expansion indicator.

[0043] Similarly, the user may request collapse all, which may cause all nodes to begin collapsing. The expansion state indicator may be set to collapsed, and the list of individual expanded nodes may be emptied. In some embodiments, the subtree expansion indicator may be removed.

[0044] 4. Identifying the nodes that should be displayed In some embodiments, the system identifies nodes to be displayed based on the requested nodes. The nodes to be displayed represent a particular section of the hierarchical tree of nodes to be displayed. The section of the hierarchical tree of nodes referred to herein may include a contiguous or non-contiguous set within the hierarchical tree of nodes.

[0045] A requested node is typically displayed along with nodes directly or indirectly related to the requested node. As an example, upon request of a particular node, the particular node may be shown in the center of the display. The system may be configured by default to display up to five ancestors of the requested node, two siblings of the requested node, and zero descendants. The five ancestor nodes may be determined by traversing up to five levels from the requested node in the node's hierarchical tree. The two siblings may be determined based on the position of the requested node in an ordered sequence of siblings. The two nodes following the requested node in the ordered sequence of siblings may be identified as siblings to be displayed. Not displaying descendants initially means that the system is configured to initially display the requested node in a collapsed state. An alternative configuration is possible to display the requested node in an expanded state. As an example, the first x descendants of the requested node's ordered sequence of descendants may be included along with the initial display of the requested node.

[0046] In one embodiment, the system identifies nodes that should be displayed when a particular displayed node is expanded. In response to a request to expand a particular node, the system determines the number of descendant nodes that should be displayed. As an example, the system may be configured to initially display the first four descendant nodes of the expanded node without displaying other descendant nodes. Display of other descendant nodes may be triggered by a user scrolling down the list of descendant nodes.

[0047] In one embodiment, each node in a hierarchical tree of nodes may be displayed on a separate horizontal line of the display. The user may scroll down to an earlier node in the ordered list of nodes that has not been previously displayed, or may scroll up to view a later node in the ordered list that has not been previously displayed. In response to detecting scrolling, the system may identify one or more nodes that should be added to the display and one or more nodes that should be removed from the display because they no longer fit on the display.

[0048] As described above, the nodes to be displayed are limited to a certain number of nodes based on the configuration associated with the display window. As an example, the number of nodes that can be displayed in a window may be a function of the size and / or resolution of the window, the size of the icons representing each node in the window, the font size of the node identifiers, and the spacing between nodes. For example, the system may determine that 10 nodes can be displayed along with the requested node. Based on priorities and / or policies, the system may select 10 of the nodes related to the requested node as the nodes to be displayed.

[0049] In one embodiment, the approach described herein efficiently creates an ordered list of nodes to fill a display window with a particular node in the ordered list, taking into account the expansion state of internal nodes in the hierarchy. The particular node may be centered in the display window, although any location within the display window can be selected. A basic approach to creating an ordered list of nodes to be displayed may be to represent the entire hierarchy as an ordered list based on the expansion state of each node. The entire hierarchy may be searched in a predefined order, treating unexpanded internal nodes as if they were leaf nodes. That is, if a node that is the root of a subtree is not expanded, the subtree is not searched (and the child nodes of the subtree root are not included in the list). A particular node may be located in an ordered list, and the number of nodes before the particular node in the list and the number of nodes after the particular node in the list may be selected for display. If a particular node is displayed, If a particular node appears in the center of the display window, the number of nodes before and after it may be approximately half the maximum number of lines in the display window. However, for hierarchies of millions of nodes, creating an ordered list for the entire hierarchy may take too long, especially if the user has selected "Expand all nodes."

[0050] A more efficient approach to creating an ordered list is to first search the subtree closest to a particular node in the hierarchy, and then extend the search to as many further relatives as needed to fill the display list. In one embodiment, the hierarchy may be searched in an order corresponding to the desired order of the data items for display, starting with the parent node of a particular node. As described above, as a particular node is displayed, the parent node may be expanded. If there are enough sibling nodes of a particular node to fill the ordered list, no further searching is necessary. If the number of nodes in the ordered list created by searching the parent node does not fill the display list, a search may be performed on grandparent nodes, and so on, until the ordered list contains a sufficient number of nodes to fill the display window.

[0051] In one embodiment, two separate ordered lists may be created: one list to display before a particular node, and one list to display after a particular node. Each list may be formed by searching a different subtree. For example, if a particular node is the last of a set of ordered sibling nodes, the list of nodes to display after the particular node may result from searching a different (aunt / uncle) subtree rather than searching the parent node of the particular node.

[0052] 5. Working with placeholders The creation of the ordered list as described above may be performed using portions of the hierarchy in a local cache. During the search and ordering of the nodes of the subtree, placeholders may be encountered that point to a contiguous set of child nodes that exist but are not in the cache. To complete the search, at least a portion of the nodes pointed to by the placeholders may be fetched from a remote machine and added to the cache, and the placeholders may be deleted or modified before the search continues. In some embodiments, all nodes pointed to by the placeholders may be fetched, or the placeholders may be removed entirely. In some embodiments, a portion of the nodes pointed to by the placeholders may be fetched, with the number of fetched nodes not exceeding (a) the prefetch limit or (b) the number of nodes in the visible ordered list. The placeholders may be updated to point to nodes that have not yet been fetched.

[0053] In some embodiments, when a user selects a node to display by entering the identifier of the selected node in a search interface, the selected node may be in a subtree that is not yet cached and / or expanded. Therefore, if the selected node is accessed randomly, the expansion state of each of its ancestor nodes may be set to expanded. Child nodes that were recently expanded but not shown in the cache may be fetched and cached, or may be shown by a placeholder until the child node is determined to be needed for display.

[0054] When the cache runs out of space, nodes in the cache may be selected for eviction according to a cache management policy, and the nodes selected for eviction may be replaced by placeholders in the cached hierarchy.

[0055] 6. Fetching nodes from a remote machine If at least one node must be retrieved from a remote machine, the number of nodes to fetch may depend on several factors. The minimum number of nodes to retrieve is determined by the number of nodes in the display list. The minimum number of nodes required to fill the display list is the number of nodes needed to fill the list. This minimum number of nodes is the nodes that should be displayed, as described in Section 4 titled "Identifying Nodes to be Displayed." If a group of consecutive nodes is missing, all of the nodes in the group of consecutive nodes may be fetched in the same request. However, if a group of nodes is needed to fill the display list and the nodes are not consecutive in the ordered list, the local machine may request multiple consecutive nodes that contain at least one node that needs to be fetched. The number of consecutive nodes may be determined as a function of the number of nodes that can be simultaneously displayed in the display window. For display purposes, the number of nodes needed in an ordered sequence does not exceed the number of nodes that can be simultaneously displayed in the display window. Fetching consecutive nodes, some of which are already cached, may be more efficient than sending separate requests for non-consecutive placeholders in a common subtree.

[0056] Furthermore, the number of nodes to be fetched may be determined based on performance considerations. To reduce the number of fetch requests to the remote machine, more nodes than necessary may be sent in response to each fetch request. The nodes to be displayed may be a contiguous set of nodes in an ordered list of nodes in the hierarchy, but additional nodes may be prefetched next to the contiguous set of nodes to be displayed. When the list of nodes in the resulting display window is scrolled, the prefetched nodes may already be in the cache. Prefetching may occur when retrieving additional nodes would not adversely affect performance. The number may be determined experimentally and configured into the system. Alternatively, the number may be based on the current load and may change dynamically over time.

[0057] 7. Computer Networks and Cloud Networks In one or more embodiments, a computer network provides connectivity between a set of nodes. The nodes may be local and / or remote with respect to one another. The nodes are connected by a set of links. Examples of links include coaxial cable, unshielded twisted cable, copper cable, optical fiber, and virtual links.

[0058] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and network address translators (NATs). Another subset of nodes uses a computer network. Such nodes (also called "hosts") may execute client processes and / or server processes. A client process requests a computing service (such as running a particular application and / or storing a particular amount of data). A server process responds by performing the requested service and / or returning corresponding data.

[0059] A computer network may be a physical network including physical nodes connected by physical links. A physical node is any digital device. A physical node may be a function-specific hardware device such as a hardware switch, a hardware router, a hardware firewall, and a hardware NAT. Additionally or alternatively, a physical node may be a general-purpose machine configured to run various virtual machines and / or applications that perform respective functions. A physical link is a physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded twisted cable, copper cable, and optical fiber.

[0060] A computer network may be an overlay network. An overlay network is a logical network that is implemented on top of another network (such as a physical network). Each node in the overlay network corresponds to a respective node in the underlying network. Thus, each node in the overlay network is associated with both an overlay address (destined for the overlay node) and an underlay address (destined for the underlay node that realizes the overlay node). Overlay nodes may be digital devices and / or software processes (such as virtual machines, application instances, or threads). The links connecting overlay nodes are realized as tunnels through the underlay network. Overlay nodes on both sides of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is achieved through encapsulation and decapsulation.

[0061] In some embodiments, a client may be local and / or remote to a computer network. A client may access a computer network over a private network or another computer network, such as the Internet. A client may communicate requests to a computer network using a communication protocol, such as the Hypertext Transfer Protocol (HTTP). The request is communicated through an interface, such as a client interface (e.g., a web browser), a program interface, or an application programming interface (API).

[0062] In one embodiment, a computer network provides connectivity between clients and network resources. The network resources include hardware and / or software configured to perform server processing. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. The network resources are shared among multiple clients. The clients request computing services from the computer network independently of each other. The network resources are dynamically allocated to requests and / or clients on demand. The network resources allocated to each request and / or client may be scaled up or down based on, for example, (a) the computing services requested by a particular client, (b) the aggregate computing services requested by a particular tenant, and / or (c) the aggregate computing services requested by the computer network. Such a computer network may be referred to as a "cloud network."

[0063] In one embodiment, a service provider offers a cloud network to one or more end users. Various service models can be enabled by the cloud network, including, but not limited to, Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In SaaS, the service provider gives end users the ability to use the service provider's applications running on the network resources. In PaaS, the service provider gives end users the ability to deploy custom applications on the network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider gives end users the ability to supply processing, storage, network, and other basic computing resources provided by the network resources. Any application, including an operating system, may be deployed on the network resources.

[0064] In some embodiments, various deployment models, including but not limited to private clouds, public clouds, and hybrid clouds, are used to deploy computer networks. In a private cloud, network resources are provided for exclusive use by a specific group of one or more entities (as used herein, the term "entity" refers to a business, organization, person, or other entity). The network resources may be local and / or remote to the premises of the specific group of entities. In a public cloud, cloud resources are provided for multiple entities (also called "tenants" or "customers") that are independent of each other. The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network is sometimes called a "multi-tenant computer network." Multiple tenants may use the same specific network resources at different times and / or the same time. The network resources may be local and / or remote to the tenant's premises. In a hybrid cloud, the computer network includes a private cloud and a public cloud. An interface between the private cloud and the public cloud provides data and application portability. Data stored in the private cloud and data stored in the public cloud can be exchanged via the interface. Applications implemented in the private cloud and the public cloud may depend on each other. Calls from applications in the private cloud to applications in the public cloud (and vice versa) can be made through an interface.

[0065] In some embodiments, tenants of a multi-tenant computer network are independent of one another. For example, the business or operations of one tenant may be separate from the business or operations of other tenants. Different tenants may require different network requirements for the computer network. Examples of network requirements include processing speed, data storage, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may have to accommodate different network requirements required by different tenants.

[0066] In one or more embodiments, in a multi-tenant computer network, tenant isolation is achieved to ensure that applications and / or data of different tenants are not shared with each other. Various tenant isolation approaches can be used.

[0067] In one embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with a tenant ID. A tenant is granted access to a particular network resource only if the tenant and the particular network resource are associated with the same tenant ID.

[0068] In one embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged with a tenant ID. Additionally or alternatively, each data structure and / or dataset stored by the computer network is tagged with a tenant ID. A tenant is granted access to a particular application, data structure, and / or dataset only if the tenant and the particular application, data structure, and / or dataset are associated with the same tenant ID.

[0069] As an example, each database implemented by a multi-tenant computer network may be tagged with a tenant ID. Only a specific tenant can access the data in a particular database. As another example, each entry in a database implemented by a multi-tenant computer network may be tagged with a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a particular entry. However, a database may be shared by multiple tenants.

[0070] In one embodiment, the subscription list indicates which tenants have permission to access which applications. For each application, a list of tenant IDs of tenants authorized to access the application is stored. A tenant is authorized to access a particular application only if the tenant's tenant ID is included in the subscription list corresponding to the particular application.

[0071] In one embodiment, network resources (such as digital devices, virtual machines, application instances, and threads) corresponding to different tenants are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, packets from any source device in a tenant overlay network may only be sent to other devices in the same tenant overlay network. An encapsulation tunnel is used to prohibit any transmission from a source device on a tenant overlay network to a device in another tenant overlay network. Specifically, a packet received from a source device is encapsulated in an outer packet. The outer packet is sent from a first encapsulation tunnel endpoint (communicating with a source device in a tenant overlay network) to a second encapsulation tunnel endpoint (communicating with a destination device in a tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to obtain the original packet sent by the source device. The original packet is sent from the second encapsulation tunnel endpoint in the same specific overlay network to the destination device.

[0072] 8. Hardware Overview According to an embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hardwired to perform these techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or network processing units (NPUs) permanently programmed to perform these techniques, or may include one or more general-purpose hardware processors programmed to perform these techniques according to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming to achieve these techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices, or other devices incorporating hardwired and / or program logic to implement these techniques.

[0073] For example, Figure 3 is a block diagram illustrating a computer system 300 in which embodiments of the present invention may be implemented. Computer system 300 includes a bus 302 or other communication mechanism for communicating information, and a hardware processor 304 coupled with bus 302 for processing information. Hardware processor 304 may be, for example, a general-purpose microprocessor.

[0074] Computer system 300 also includes a main memory 306, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 302 for storing information and instructions to be executed by processor 304. Main memory 306 may also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 304. Such instructions, when stored on a non-transitory storage medium accessible to processor 304, render computer system 300 into a special-purpose machine customized to perform the operations specified in the instructions.

[0075] Computer system 300 further includes a read-only memory (ROM) 308 or other static storage device coupled to bus 302 for storing static information and instructions for processor 304. A storage device 310, such as a magnetic disk or optical disk, is provided and coupled to bus 302 for storing information and instructions.

[0076] Computer system 300 may be coupled via bus 302 to a display 312, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 314, including alphanumeric and other keys, is coupled to bus 302 for communicating information and command selections to processor 304. Another type of user input device is a cursor control 316, such as a mouse, trackball, or cursor direction keys, for communicating directional information and command selections to processor 304 and for controlling cursor movement on display 312. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), along which the device can specify a position in a plane.

[0077] Computer system 300 can implement the techniques described herein using customized hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic that combines with the computer system to configure or program computer system 300 as a special-purpose machine. According to one embodiment, the techniques described herein are performed in response to processor 304 executing one or more sequences of one or more instructions contained in main memory 306. Such instructions may be read into main memory 306 from another storage medium, such as storage device 310. Execution of the sequences of instructions contained in main memory 306 causes processor 304 to perform the process steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.

[0078] The term "storage medium" as used herein refers to any non-transitory medium that stores data and / or instructions that cause a machine to operate in a specific manner. Such storage media may include non-volatile media and / or volatile media. Non-volatile media include, for example, optical or magnetic disks, such as storage device 310. Volatile media include dynamic memory, such as main memory 306. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape, or any other magnetic data storage medium, CD-ROMs, any other optical data storage medium, any physical medium with a pattern of holes, RAM, PROMs, and EPROMs, FLASH-EPROMs, NVRAMs, any other memory chips or cartridges, content addressable memories (CAMs), and ternary content addressable memories (TCAMs).

[0079] Storage media is distinct from but can be used in conjunction with transmission media. Transmission media involves transferring information between storage media. For example, transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise bus 302. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.

[0080] Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 304 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 300 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector can receive the data carried in the infrared signal and suitable circuitry can place the data on bus 302. Bus 302 carries the data to main memory 306, where processor 304 retrieves and executes the instructions. The instructions received by main memory 306 may optionally be stored on storage device 310 either before or after execution by processor 304.

[0081] Computer system 300 also includes a communication interface 318 coupled to bus 302. Communication interface 318 provides a two-way data communication coupling to a network link 320 that is connected to a local network 322. For example, communication interface 318 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 318 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links are also possible. In such implementations, communication interface 318 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

[0082] Network link 320 typically provides data communication through one or more networks to other data devices. For example, network link 320 may provide a connection through local network 322 to a host computer 324 or to data equipment operated by an Internet Service Provider (ISP) 326. ISP 326 in turn provides data communication services through the world-wide packet data communication network now commonly referred to as the "Internet" 328. Local network 322 and Internet 328 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 320 and through communication interface 318, which carry the digital data to and from computer system 300, are exemplary forms of transmission media.

[0083] Computer system 300 can send messages and receive data, including program code, through the network(s), network link 320 and communication interface 318. In the Internet example, a server 330 might transmit a requested code for an application program through Internet 328, ISP 326, local network 322 and communication interface 318.

[0084] The received code may be executed by processor 304 as it is received, and / or stored in storage device 310, or other non-volatile storage for later execution.

[0085] Embodiments are directed to systems having one or more devices that include a hardware processor and are configured to perform any of the operations described herein and / or recited in any of the claims below.

[0086] In an embodiment, a non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause any of the operations described herein and / or recited in any of the claims to be performed.

[0087] Any combination of features and functionality described herein may be used in accordance with one or more embodiments. In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary depending on the implementation. Accordingly, the specification and drawings should be considered in an illustrative rather than a restrictive sense. The sole and exclusive indication of the scope of this invention, and the scope of this invention as intended by the applicant, is the literal and equivalent scope of the set of claims issuing from this application, in the specific form from which such claims arise, including any subsequent amendments.

Claims

1. A hardware processor-executed method, the method comprising: receiving a request to display in a display window a target node of a hierarchical tree of nodes stored on a remote machine, the target node not being displayed when the request is received, the method further comprising: analyzing the hierarchical tree of nodes to determine relationships between the target node and one or more other nodes in the hierarchical tree of nodes; determining, based on the relationship and a configuration corresponding to the display window, including a size and resolution of the display window, a size of an illustration of the nodes, and an amount of spacing between the nodes, that a first set of nodes including a first subset of nodes and a second subset of nodes are related to the target node when displaying the target node; requesting the target node, a first subset of the nodes, and a second subset of the nodes from the remote machine; receiving the target node and a first subset of the nodes from the remote machine; displaying the target node, the first subset of nodes, and a first placeholder representing the second subset of nodes before receiving the second subset of nodes; after receiving the second subset of nodes, replacing the first placeholder with the second subset of nodes by displaying the target node, the first subset of nodes, and the second subset of nodes without displaying the first placeholder.

2. A hardware processor-executed method, the method comprising: receiving a request to display in a display window a target node of a hierarchical tree of nodes stored on a remote machine, the target node not being displayed when the request is received, the method further comprising: analyzing the hierarchical tree of nodes to determine relationships between the target node and one or more other nodes in the hierarchical tree of nodes; determining, based on the relationship and a configuration corresponding to the display window, including a size and resolution of the display window, a size of an illustration of the nodes, and an amount of spacing between the nodes, that a first set of nodes including a first subset of nodes and a second subset of nodes are related to the target node when displaying the target node; requesting the target node, a first subset of the nodes, and a second subset of the nodes from the remote machine; receiving the target node, a first subset of the nodes, and a second subset of the nodes from the remote machine; displaying the target node, the first subset of nodes, and a first placeholder representing the second subset of nodes without displaying the second subset of nodes; after receiving a command to display the second subset of nodes, replacing the first placeholder with the second subset of nodes by displaying the target node, the first subset of nodes, and the second subset of nodes without displaying the first placeholder.

3. The method further comprises: determining, based on the relationship and the configuration corresponding to the display window, that a second set of nodes including a third subset of nodes and a fourth subset of nodes are associated with the target node when displaying the target node; requesting a third subset of the nodes and a fourth subset of the nodes from the remote machine; displaying a second placeholder representing both the third subset of nodes and the fourth subset of nodes before receiving the third subset of nodes and the fourth subset of nodes; after receiving the third subset of nodes and before receiving the fourth subset of nodes, displaying the third subset of nodes and a third placeholder representing the fourth subset of nodes without displaying the second placeholder; and after receiving the fourth subset of nodes, displaying the third subset of nodes and the fourth subset of nodes without displaying the third placeholder.

4. The method further comprises: determining, based on the relationship and the configuration corresponding to the display window, that a second set of nodes including a third subset of nodes and a fourth subset of nodes are associated with the target node when displaying the target node; requesting a third subset of the nodes and a fourth subset of the nodes from the remote machine; displaying a second placeholder representing both the third subset of nodes and the fourth subset of nodes before receiving the third subset of nodes and the fourth subset of nodes; after receiving the third subset of nodes and before receiving the fourth subset of nodes; modifying the second placeholder from (a) representing the third subset of nodes and the fourth subset of nodes to (b) representing the fourth subset of nodes without representing the third subset of nodes; displaying a third subset of the nodes and the modified second placeholder; and after receiving the fourth subset of nodes, displaying the third subset of nodes and the fourth subset of nodes without displaying the modified second placeholder.

5. The method of claim 1 or 2, wherein the nodes of the second subset of nodes represented by the first placeholders are adjacent to each other.

6. The method of claim 1 or 2, wherein the goal node, the first subset of nodes, and the first placeholder are displayed as part of the hierarchical tree of nodes.

7. 1. A system comprising: at least one device including a hardware processor; The system is configured to perform an operation, the operation comprising: receiving a request to display in a display window a target node of a hierarchical tree of nodes stored on a remote machine, said target node not being displayed when said request is received, said operations further comprising: analyzing the hierarchical tree of nodes to determine relationships between the target node and one or more other nodes in the hierarchical tree of nodes; determining, based on the relationship and a configuration corresponding to the display window, including a size and resolution of the display window, a size of an illustration of the nodes, and an amount of spacing between the nodes, that a first set of nodes including a first subset of nodes and a second subset of nodes are related to the target node when displaying the target node; requesting the target node, a first subset of the nodes, and a second subset of the nodes from the remote machine; receiving the target node and a first subset of the nodes from the remote machine; displaying the target node, the first subset of nodes, and a first placeholder representing the second subset of nodes before receiving the second subset of nodes; after receiving the second subset of nodes, replacing the first placeholder with the second subset of nodes by displaying the target node, the first subset of nodes, and the second subset of nodes without displaying the first placeholder.

8. The operation is determining, based on the relationship and the configuration corresponding to the display window, that a second set of nodes including a third subset of nodes and a fourth subset of nodes are associated with the target node when displaying the target node; requesting a third subset of the nodes and a fourth subset of the nodes from the remote machine; displaying a second placeholder representing both the third subset of nodes and the fourth subset of nodes before receiving the third subset of nodes and the fourth subset of nodes; after receiving the third subset of nodes and before receiving the fourth subset of nodes, displaying the third subset of nodes and a third placeholder representing the fourth subset of nodes without displaying the second placeholder; 8. The system of claim 7, further comprising: after receiving the fourth subset of nodes, displaying the third subset of nodes and the fourth subset of nodes without displaying the third placeholder.

9. The operation further comprises: determining, based on the relationship and the configuration corresponding to the display window, that a second set of nodes including a third subset of nodes and a fourth subset of nodes are associated with the target node when displaying the target node; requesting a third subset of the nodes and a fourth subset of the nodes from the remote machine; displaying a second placeholder representing both the third subset of nodes and the fourth subset of nodes before receiving the third subset of nodes and the fourth subset of nodes; after receiving the third subset of nodes and before receiving the fourth subset of nodes; modifying the second placeholder from (a) representing the third subset of nodes and the fourth subset of nodes to (b) representing the fourth subset of nodes without representing the third subset of nodes; displaying a third subset of the nodes and the modified second placeholder; and after receiving the fourth subset of nodes, displaying the third subset of nodes and the fourth subset of nodes without displaying the modified second placeholder.

10. The system of claim 7 , wherein the nodes of the second subset of nodes represented by the first placeholder are adjacent to one another.

11. The system of claim 7 , wherein the goal node, the first subset of nodes, and the first placeholder are displayed as part of the hierarchical tree of nodes.

12. A program for causing a computer to execute the method according to any one of claims 1 to 6.

Citation Information

Patent Citations

  • Content delivery within an application

    US20130111506A1

  • File tree streaming in a virtual file system for cloud-based shared content

    US20160321287A1

  • Asynchronous tree navigator graphical user interface and associated methods

    US6559871B1