Capability to browse and randomly access large hierarchy at near constant times in stateless applications

Through the method of dynamic acquisition and local cache node subsets, the problem of low efficiency of large-scale hierarchical data browsing and random access is solved, and the user experience of fast response and efficient access is achieved.

CN119759465APending Publication Date: 2025-04-04ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411814017.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-03-27
Filing Date
2019-05-13
Publication Date
2025-04-04

AI Technical Summary

Technical Problem

The prior art is difficult to browse and randomly access large hierarchical data maintained by remote machines without significant lag time, especially when the data set size reaches million entries.

Method used

By obtaining and displaying a subset of nodes of the dataset, rather than the entire dataset, the system can quickly respond to user browsing and random access requests. Specific methods include dynamically obtaining the required nodes and their neighbor nodes when the user scrolls or random access, and storing these nodes in the local cache for quick access.

Benefits of technology

The ability to browse and randomly access large-scale hierarchical data in no significant lag time is realized. The user experience is similar to locally stored data, improving the efficiency and response speed of data access.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119759465A_ABST
    Figure CN119759465A_ABST
Patent Text Reader

Abstract

The disclosure relates to the ability to browse and randomly access large hierarchy structures at near constant times in stateless applications. More specifically, a browser is disclosed that provides browsing of a hierarchical data set comprising possibly millions of nodes. The hierarchical data set may be located on a machine remote from the machine hosting the browser. Through selective intelligent acquisition and local cache management of sparse portions of a hierarchical data set, the browser provides consistent and predictable response times for randomly selected nodes displayed in the context of neighboring nodes in the hierarchy.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese patent application 201980041850.7, whose application date is May 13, 2019 and whose invention name is "The ability to browse and randomly access large hierarchical structures in stateless applications with near-constant time". Technical Field

[0002] The present disclosure relates to various techniques for browsing hierarchical data. In particular, the present disclosure relates to efficiently improving the response time for displaying a small, randomly selected subnet of nodes from a very large node hierarchy. Background Art

[0003] There are several methods for browsing data maintained by remote machines. When browsing a small collection of remote data, the browser may be able to download and cache the entire data set at the beginning of the browsing, so that no further data retrieval is required during the browsing session. However, for data sets with entries on the order of millions, the entire data set may be too large to fit in the local cache. Even if the data set can fit in the local cache, retrieving the entire data set when only a small portion of the data set is accessed may be inefficient. The common method of loading data only when the user scrolls down does not allow any area of ​​the hierarchy to be displayed without first loading all previous nodes.

[0004] Acquisition and cache management strategies can be used to access locally stored data that has been retrieved from a remotely stored data set. 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 (such as chronological order, alphabetical order, or numerical order). The relative order indicates which data items are next to other data items. The data list is displayed according to the relative order.

[0005] The approaches described in this section are approaches that could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] In the figures of the accompanying drawings, embodiments are shown by way of example and not limitation. It should be noted that references to "an" or "one" embodiment in the present disclosure are not necessarily references to the same embodiment, and they mean at least one. In the figures:

[0007] Figure 1A is a block diagram illustrating system components according to one or more embodiments;

[0008] Figure 1BThe hierarchical structure 122 of nodes is shown in more detail according to one or more embodiments;

[0009] Figure 1C According to one or more embodiments, Figure 1B A local cache of nodes corresponding to nodes in the hierarchical tree of data shown;

[0010] Figure 2 is a flowchart illustrating retrieving and displaying a target node according to one or more embodiments; and

[0011] Figure 3 A block diagram illustrating a computer system according to one or more embodiments is shown.

[0012] The components in the block diagrams and the operations in the flow charts may be added, removed, modified or combined. The functions described with respect to one component / operation may be implemented by another component / operation instead. Therefore, the specific components / operations shown and / or described herein should not be interpreted as limiting the scope of any claim. DETAILED DESCRIPTION

[0013] In the following description, for the purpose of explanation, many 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 different embodiments. In some examples, known structures and devices are described with reference to block diagram form to avoid unnecessarily obscuring the present invention.

[0014] 1. General Overview

[0015] Large hierarchical data sets may be visually represented by thousands or even millions of nodes. A system that displays visual representations (e.g., nodes) corresponding to the hierarchical data may be implemented remotely from a data repository that includes the hierarchical data. One or more embodiments are directed to presenting requested nodes corresponding to a subset of the hierarchical data without any significant lag time, even if the hierarchical data is stored remotely, as if the hierarchical data were stored locally.

[0016] The system obtains nodes to be displayed, rather than obtaining all nodes representing the hierarchical data as a whole. As an example, the interface displays a portion of a visual representation and allows the user to scroll to a specific undisplayed portion of the visual representation. Based on the scrolling, the specific undisplayed portion corresponds to the node that is now to be displayed. As another example, the interface allows the user (i.e., through random access) to identify a single node in the hierarchy that is not shown in the display and is not within a reasonable scroll distance of the currently displayed data. Upon receiving a user-specified node, the specified node and nodes related to the specified node will be displayed.

[0017] After detecting user input causing currently non-displayed nodes to be displayed, and in response to detecting user input causing currently non-displayed nodes to be displayed, the system retrieves nodes corresponding to the specific non-displayed portion, rather than retrieving nodes corresponding to the hierarchical data as a whole. Identifying and retrieving a subset of nodes to be displayed is faster than retrieving all nodes corresponding to the visual representation of the hierarchical data as a whole. From a user's perspective, the speed of retrieving and displaying a subset of nodes can be substantially similar to the speed of displaying locally stored nodes in response to a user request.

[0018] In addition to fetching nodes to be displayed, one or more embodiments also pre-fetch additional nodes that are related to and / or adjacent to the set of nodes to be displayed.

[0019] Although the initial user input does not result in the display of additional nodes, further user input (e.g., scrolling from the initial display of a particular node and the collection of nodes displayed with the particular node) may result in the display of additional adjacent nodes. Fetching additional adjacent nodes without fetching the entire collection of nodes is efficient while allowing additional adjacent nodes to be quickly represented when requested.

[0020] Some embodiments described in the specification and / or recited in the claims may not be included in this general summary section.

[0021] 2. Architecture for browsing hierarchical data

[0022] The tree browser may allow 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 embodiments, the ordered sequence may be generated by following these rules starting from a particular node A in the hierarchy:

[0023] (a) Start with an empty sequence and start at a specific node in the hierarchy (such as node A).

[0024] (b) Add a specific node to the sequence.

[0025] (c) If the particular node has one or more child nodes, and the particular node is in the expanded state, then:

[0026] (d) Perform steps (b) and (c) for each child of the specific node in the order of the child nodes. (This is a recursive algorithm where the child nodes become the specific node when performing steps b and c).

[0027] The order produced by these rules results in a linearization of the hierarchy, which is similar to the way many file system contents are displayed to users, first with the containing folders or directories, then a listing of the contents within the directories including files and other directories.

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

[0029] In addition to scrolling an ordered list of data representing a hierarchy (tree) of nodes, a tree browser may also allow a user to expand or collapse nodes of the tree. As a user expands a node in the display, the display is changed by inserting child nodes into the ordered list shown in the display. Inserting a node in the middle of a displayed list may push nodes that appear at the bottom of the list away from the bottom of the display. The position of the node displayed to the user relative to other nodes on the screen may change based on the expansion of the node in the hierarchy. Thus, the set of nodes to be displayed depends on the expansion state of the nodes associated with a particular node.

[0030] The hierarchical data browser can obtain data from a remote machine including all nodes in a subtree of a hierarchical structure, and then display only the nodes requested by the user. That is, a fully expanded subtree can be obtained.

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

[0032] The hierarchical structure 122 of nodes represents a very large data set of hierarchical data for browsing. Upon request, the nodes in the hierarchy are sent to the user's local machine 142 hosting the browsing data. The hierarchy contains the nodes but does not necessarily contain additional state information to track which data is being browsed or cached by potentially multiple browsing machines.

[0033] The remote machine 112 manages the hierarchy 122 of nodes. Requests for nodes are received by the remote node 112 to obtain data from the hierarchy 122 of nodes and send the data to the requesting machine, such as the local machine 142. The remote machine 112 can be stateless with respect to the data being requested. That is, the remote machine 112 does not maintain a record of past requests. Data requests to the remote machine 112 are idempotent.

[0034] Display screen 130 is a screen of a display device communicatively coupled to local machine 142. Display area 132 is a display window in 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 certain number of data items according to the number of data rows that can be displayed simultaneously in the display window.

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

[0036] The local machine 142 hosts a browser that the user uses to browse the data in the hierarchical structure 122 of nodes. The user views the nodes in the display area 132 and can navigate by scrolling to other nodes in the ordered list of nodes. When a new node is scrolled into the display window, the local machine can request the remote machine 112 to send the node to be displayed to the local machine 142 so that the node can be displayed in the display area 132. When the target node for viewing is not within a convenient scrolling distance from the node shown in the display area 132, the user can interact with the display area 134 to specify the node. For example, the display area 134 can contain 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 specific target node, the local machine 142 can determine which nodes to display next to the target node, and can obtain these additional nodes from the remote machine 112 as needed.

[0037] The cache 144 of partial hierarchical data is a local cache of the local machine 142 and is managed by the local machine 142. When a node is obtained from a remote machine, the local machine 142 stores a copy of a subset of the node in the hierarchical structure 122 of the node. For each requested node in the local cache, the cache may include a copy of an ancestor, a sibling, a descendant, or other types of related nodes specified in the 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 and all sibling nodes of the requested node up to n levels upward. In addition to the data in the nodes copied in the cache, the cached nodes may also include additional metadata that tracks the browsing state of the data in the browser. This metadata may not be known to the remote machine storing the main hierarchical data set. For example, each internal node (i.e., a node with at least one child node) may have an associated expansion state indicator. The expansion state indicates whether the child nodes of the internal node are to be displayed. In an embodiment, the cache 144 of the partial hierarchical data may also store a list of nodes whose expansion state is expanded. This list of expanded nodes may be separated from the cached nodes, and even when the nodes in the list may be evicted from the cache, the list may be retained in the cache. In an embodiment, the list of expanded nodes may only include those nodes that have been cached at least once during the browsing session and whose expansion state is expanded. Nodes that have not been cached during the browsing session and nodes with a collapsed state may not be in the list. Alternatively, the list of expanded nodes may also be limited to only include nodes that have been evicted from the cache with an expanded state. In such an embodiment, when the expanded node is evicted from the cache, the node may be added to the list of expanded nodes. When a node that has previously been evicted from the cache is reacquired and entered into the cache, if the node appears in the list of nodes with an expanded state, its expansion state may be set to expanded. In an embodiment, when a node is stored in the cache, the node may be removed from the list of expanded nodes because the expansion state of the node is stored in the cached node itself.

[0038] In an embodiment where nodes of a hierarchy are ordered according to the linearization rule described above, the child nodes of a particular expanded internal node may appear in the ordered list of nodes before the sibling nodes of the particular internal node. However, if the expansion state of the particular node is "collapsed", the sibling nodes may appear immediately after the particular node without intervening child nodes.

[0039] Some nodes in the hierarchy of nodes 122 may not have a corresponding copy in the cache. Placeholders may be used to represent a set of consecutive ordered nodes to indicate that the main hierarchy includes nodes that are not represented in the cache. When traversing the cached hierarchy to find nodes to be displayed in an ordered sequence, encountering a placeholder may cause the local machine to request a copy of the missing node and enter the acquired node into the cache.

[0040] Figure 1B A hierarchical structure 122 of nodes according to one or more embodiments is shown in more detail. In the example shown, the labels of the nodes in the hierarchy are selected to facilitate identification of the nodes. The illustrated example should not be interpreted as limiting the scope of any claim. When the label of the ancestor of each node is used as a prefix, each node has a unique identifier. For example, the numbers in the node are indications of the order of the sibling nodes. Therefore, the node with "1" is the first sibling node and the node with "2" is the second sibling node. The letters in the node indicate the level in the hierarchy. Therefore, node 1B is a descendant of node 1A. Node 1A is the root of the hierarchy and has 9999 child nodes in the order of {1B, 2B, ..., 9999B}. The ellipsis in the figure indicates the nodes present in the hierarchy, but due to lack of space, it is omitted from the figure. For example, node 1B has child nodes 4C, 5C, 6C, etc., but child nodes 4C, 5C, 6C, etc. are not shown in the figure. Nodes 1B, 2B and 9999B also each have 9999 child nodes. This hierarchy has a very large number of nodes.

[0041] Figure 1C According to one or more embodiments, Figure 1B The subset of nodes in the hierarchical tree of data shown corresponds to the local cache of nodes. The labeled nodes indicate Figure 1B The corresponding nodes in the hierarchy are copies of , and the rectangles with thick borders represent placeholders. The placeholders identify a set of one or more sibling nodes that are contiguous in the ordered list of sibling nodes and are not cached. For example, the entire subtree 2B is not stored in the cache. Also missing from the cache:

[0042] Node 1B's children: {81C to 898C} and {1000C to 9999C}, and

[0043] Child nodes of 10B: {1C to 19C} and {31C to 9999C}

[0044] Figure 22 is a flow chart illustrating retrieving and displaying data items of a target node according to one or more embodiments. In operation 210, an ordered sequence of nodes that are part of the hierarchy 122 of nodes is displayed in the display area 132. The display window may present a certain number of rows of data items. In an embodiment, before operation 210 is performed, the local machine may pre-fetch some portions of the hierarchy to display in the display area 132 at startup.

[0045] In operation 220, the user may request to view a particular node in the hierarchy that is not shown in the display window and therefore cannot be selected from the display area 132. When the node of interest is not within a reasonable scroll distance of the nodes shown in the display window, the user may select an option to use the display area 134 to select a node for display in the display area 132. In other words, the target node of interest may be located in a subtree in the hierarchy that is far away from the displayed node. The target node may be specified by interacting with the display area 134 to select a bookmark node, a recently viewed node, or by entering a node name in the search bar to navigate directly to the target node without scrolling.

[0046] In operation 230, the local machine may search for the target node in the local cache. If the target node is not stored in the local cache, then in operation 240, 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 the cache. Additionally, ancestors of the target node that are not already in the cache may be obtained and placed in the cache.

[0047] The hierarchical structure of the nodes of the cache is used to determine the data items to be displayed in the display area 132 in response to the user request in operation 250. The data items to be displayed can include an ordered sequence of nodes. In an embodiment, the data items of the target node can be roughly placed in the center of the display window. The number of data items of the node to be displayed together with the target node can be based on the display configuration. The display configuration can include, for example, the size of the display window, the resolution of the display window, the size of each diagram of the node, the amount of space between the nodes. Some nodes in the nodes to be displayed may be missing in the cache, and are represented by placeholders in the cache instead. In the following section entitled "Identifying the Nodes to be Displayed", the data items to be displayed will be further discussed in detail.

[0048] In operation 260, nodes that are determined to need to be displayed but are missing from the cache may be obtained from the remote machine 112. As nodes are received from the remote machine, the nodes may be added to the cache and placeholders may be removed or modified to indicate a smaller set of missing nodes.

[0049] In operation 270, the nodes to be displayed including the target node are displayed in the display area 132. For example, referring to Figure 1C If node 899C is selected for display, information about the node represented by the placeholder may be needed. For example, node 898C is missing from the cache. Node 898C must be obtained from the remote machine. Therefore, when a node from the ordered sequence of nodes to be displayed is missing from the cache, operations 230 to 260 may have to be repeated until the number of nodes in the ordered sequence fills the display window.

[0050] 3. User Interface Considerations

[0051] Browsers may support the ability for users to request a single action to expand or collapse (a) individual nodes or (b) all nodes.

[0052] The expansion state of the node input to the cache can be set to a default value. In an embodiment, the default expansion state is not expanded (also referred to as collapsed in this article). The user can request the expansion of the node by selecting (e.g., clicking) the node in the display window. When the user selects a separate node to be expanded, the expansion state indicator value of the node can be set to expanded, and the child nodes of the selected node can be added to the displayed node list. The expansion state indicator can remain expanded until the user requests to collapse the node.

[0053] Selecting a node that is randomly accessed through a search interface or other means that do not include selecting from within a display window may cause the values ​​of the expansion state indicators of all ancestors of the selected node to be set to an expanded state. The displayed list of nodes appears to the user as if the user manually expanded all ancestor nodes and scrolled to the selected node.

[0054] In an embodiment, a user may request to expand all nodes, which changes the expansion state of all nodes in the hierarchy to expanded. After expanding all nodes in the hierarchy, the browse state may be changed for all nodes, not just the nodes that were being displayed or cached when the request was made. In an embodiment, a global expansion state indicator may indicate whether all nodes are to be displayed as expanded. If the global expansion state indicator indicates expansion mode, each node is displayed as if its state is expanded, regardless of the value of the node's individual expansion state identifier value.

[0055] In an embodiment, a user may request an expand down, which may change the expansion state of all nodes in a subtree rooted at the selected node to expanded. In an embodiment, a subtree expansion indicator may be stored in a cache that identifies the node that is the root of the subtree to be expanded. To determine whether a node to be displayed should be expanded, the system may consult the subtree expansion indicator to determine whether the node is in a subtree of any node identified by the subtree expansion indicator.

[0056] Similarly, a user may request to collapse all nodes, which may result in all nodes becoming collapsed. The expansion state indicator may be set to collapsed, and the list of individual expanded nodes may be cleared. In an embodiment, the subtree expansion indicator may be deleted.

[0057] 4. Identify the nodes to be displayed

[0058] In an embodiment, the system identifies the node to be displayed based on the node requested. The node to be displayed represents a specific portion of the hierarchical tree of the node to be displayed. A portion of the hierarchical tree of the node as referred to herein may include a set of any continuous or discontinuous nodes in the hierarchical tree of the node.

[0059] Typically, the requested node is displayed together with the node directly or indirectly related to the requested node. As an example, in response to a request for a specific node, the specific node can be shown in the center of the display. The system can be configured by default to display up to five ancestors of the requested node, two brothers of the requested node and not display descendants. Five ancestor nodes can be determined by traversing up to five levels from the requested node in the hierarchical tree of the node. Two brothers can be determined based on the position of the requested node in the ordered sequence of brothers. The two nodes after the requested node in the ordered sequence of brothers can be identified as brothers to be displayed. Initially not showing descendants means that the system is configured to initially display the requested node in a folded state. Alternative configurations can display the requested node in an expanded state. As an example, the first x descendants in the ordered sequence of descendants of the requested node can be included in the initial display of the requested node.

[0060] In an embodiment, when a particular displayed node is expanded, the system identifies the node to be displayed. In response to a request to expand a particular node, the system determines the number of descendant nodes to be displayed. As an example, the system can be configured to initially display the first four descendant nodes without displaying other descendant nodes of the expanded node. The user can scroll down the list of descendant nodes to trigger the display of other descendant nodes.

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

[0062] As described above, based on the configuration associated with the display window, the nodes to be displayed are limited to a specific number of nodes. As an example, the number of nodes that can be displayed in the window can be a function of the size and / or resolution of the window, the size of the icon representing each node in the window, the font size of the node identifier, and the spacing between nodes. The system can determine, for example, that ten nodes can be displayed with the requested node. Based on priorities and / or policies, the system can select ten nodes of the nodes related to the requested node as the nodes to be displayed.

[0063] In an embodiment, considering the expansion state of internal nodes in the hierarchy, the method described herein efficiently creates an ordered list of nodes to fill a display window with a specific node in the ordered list. Although any position in the display window can be selected, the specific node can be placed in the center of the display window. The basic method of creating an ordered list of nodes to be displayed will be to express the entire hierarchy as an ordered list based on the expansion state of each node. The entire hierarchy can be searched in a predefined order, and the unexpanded internal nodes are considered to be just like the internal nodes are leaf nodes. In other words, when the node as the root of the subtree is not expanded, the subtree is not searched (and the child nodes of the subtree root are not included in the list). The specific node can be located in the ordered list of the list, and multiple nodes before the specific node in the list and multiple nodes after the specific node in the list can be selected for display. When the specific node is to appear in the center of the display window, the number of nodes before and after the specific node can be approximately half of the maximum number of rows in the display window. However, in a hierarchy of millions of nodes, it may be too time-consuming to create an ordered list for the entire hierarchy, especially if the user has selected "expand all" nodes.

[0064] A more efficient way to create an ordered list is to first search the subtree closest to a particular node in the hierarchy, and then expand the search to other relatives only as needed to fill the display list. In an embodiment, the hierarchy can be searched in an order corresponding to the desired order of data items to start displaying from the immediate parent node of the particular node. As previously described, since a particular node is to be displayed, the parent node can be expanded. If the particular node has enough sibling nodes to fill the ordered list, no additional search is required. If the number of nodes in the ordered list created by exploring the immediate parent node does not fill the display list, a search can be performed on the grandparent node, and so on, until the ordered list includes a sufficient number of nodes to fill the display window.

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

[0066] 5. Work with placeholders

[0067] As described above, creating an ordered list may be performed using a portion of the hierarchy in a local cache. When searching and sorting nodes of a subtree, placeholders may be encountered that indicate a continuous set of child nodes that exist but are not in the cache. In order to complete the search, at least a portion of the nodes represented by the placeholders may be acquired from a remote machine, added to the cache, and the placeholders may be removed or changed before the search continues. In an embodiment, all nodes represented by the placeholders may be acquired, and the placeholders may be completely removed. In an embodiment, a portion of the nodes represented by the placeholders may be acquired, wherein the number of nodes acquired does not exceed: (a) a pre-acquisition limit, or (b) the number of nodes in the ordered list that can be displayed. Placeholders may be updated to represent nodes that have not yet been acquired.

[0068] In an embodiment, if a user selects a node to be displayed by entering an identifier of a selected node in a search interface, the selected node may reside in a subtree that has not yet been cached and / or expanded. Therefore, when a selected node is randomly accessed, the expansion state of each ancestor node can be set to expanded. Child nodes that have recently been expanded but not yet represented in the cache can be obtained and cached, or can be represented by placeholders until it is determined that these child nodes need to be displayed.

[0069] When cache space is insufficient, 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 cache's hierarchy.

[0070] 6. Get nodes from remote machines

[0071] When at least one node needs to be retrieved from a remote machine, the number of nodes to be retrieved may depend on several factors. The minimum number of nodes to be retrieved is the number of nodes required to fill the display list. This minimum number of nodes is the nodes to be displayed as described above in Section 4 entitled "Identifying Nodes to be Displayed". If a group of consecutive nodes is missing, all nodes in the group of consecutive nodes can be obtained in the same request. However, if a group of nodes is needed to fill the display list, and these nodes are not consecutive in the ordered list, the local machine can request multiple consecutive nodes, which include at least one node that needs to be obtained. The number of consecutive nodes to be obtained can be determined as a function of the number of nodes that can be displayed simultaneously in the display window. For display purposes, the number of nodes required in the ordered sequence does not exceed the number of nodes that can be displayed simultaneously in the display window. It may be more efficient to obtain some consecutive nodes that have been cached than to send separate requests for non-continuous placeholders within a common subtree.

[0072] In addition, the number of nodes to be acquired can be determined based on performance considerations. In order to reduce the number of acquisition requests to the remote machine, more nodes than required can be sent in response to each acquisition request. Although the nodes to be displayed can be a continuous set of nodes within an ordered list of nodes of the hierarchy, additional nodes next to the continuous set of nodes to be displayed can be pre-acquired. If the list of nodes in the resulting display window is scrolled, the pre-acquired nodes may already be in the cache. Pre-acquisition can be performed when retrieving additional nodes will not adversely affect performance. The number can be determined experimentally and configured into the system. Alternatively, the number can be based on the current load and can change dynamically over time.

[0073] 7. Computer Networks and Cloud Networks

[0074] In one or more embodiments, a computer network provides connectivity between a set of nodes. The nodes may be local to each other and / or remote from each other. The nodes are connected by a set of links. Examples of links include coaxial cables, unshielded twisted pairs, copper cables, optical fibers, and virtual links.

[0075] 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 referred to as "hosts") can execute client processes and / or server processes. A client process makes a request for a computing service (such as the execution of a specific application and / or the storage of a specific amount of data). The server process responds by performing the requested service and / or returning corresponding data.

[0076] A computer network may be a physical network, comprising physical nodes connected by physical links. A physical node is any digital device. A physical node may be a hardware device of a dedicated function, 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 execute various virtual machines and / or applications that execute corresponding functions. A physical link is a physical medium that connects two or more physical nodes. Examples of links include coaxial cables, unshielded twisted pairs, copper cables, and optical fibers.

[0077] A computer network may be an overlay network. An overlay network is a logical network implemented on top of another network (such as a physical network). Each node in the overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in the overlay network is associated with both an overlay address (for addressing the overlay node) and an underlying address (for addressing the underlying node that implements 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 implemented as tunnels that pass through the underlying network. The overlay nodes at either end of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed by encapsulation and decapsulation.

[0078] In an embodiment, the client may be local to the computer network and / or remote from the computer network. The client may access the computer network through other computer networks, such as a private network or the Internet. The client may transmit requests to the computer network using a communication protocol such as the Hypertext Transfer Protocol (HTTP). The request is transmitted through an interface such as a client interface (such as a web browser), a program interface, or an application programming interface (API).

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

[0080] In an embodiment, a service provider provides a cloud network to one or more end users. The cloud network can implement various service models, 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 provides the end user with the ability to use the service provider's applications executed on network resources. In PaaS, the service provider provides the end user with the ability to deploy custom applications on network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides the end user with the ability to supply processing, storage, network, and other basic computing resources provided by network resources. Any arbitrary application including an operating system can be deployed on network resources.

[0081] In an embodiment, various deployment models can be implemented by a computer network, including but not limited to private cloud, public cloud and hybrid cloud. In a private cloud, network resources are supplied for exclusive use by a specific group of one or more entities (the term "entity" used herein refers to a company, organization, individual or other entity). Network resources can be local to the premises of a specific entity group and / or away from the premises of the specific entity group. In a public cloud, cloud resources are supplied to multiple entities (also referred to as "tenants" or "customers") that are independent of each other. A computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network". Multiple tenants can use the same specific network resource at different times and / or at the same time. Network resources can be local to the premises of a tenant and / or away from the premises of a tenant. In a hybrid cloud, a computer network includes a private cloud and a public cloud. The interface between the private cloud and the public cloud allows portability of data and applications. Data stored at a private cloud and data stored at a public cloud can be exchanged through an interface. Applications implemented at a private cloud and applications implemented at a public cloud may depend on each other. Calls from applications at a private cloud to applications at a public cloud (and vice versa) can be performed through an interface.

[0082] In an embodiment, tenants of a multi-tenant computer network are independent of each other. For example, the business or operation of one tenant can be separated from the business or operation of another tenant. Different tenants may require different network requirements for the computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, elasticity requirements, quality of service (QoS) requirements, tenant isolation and / or consistency. The same computer network may need to implement different network requirements required by different tenants.

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

[0084] In an embodiment, each tenant is associated with a tenant ID. Each network resource of the multi-tenant computer network is marked with the tenant ID. The tenant is allowed to access the specific network resource only if the tenant and the specific network resource are associated with the same tenant ID.

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

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

[0087] In an embodiment, the subscription list indicates which tenants have access to which applications. For each application, a list of tenant IDs of tenants who have access to the application is stored. A tenant is allowed to access a specific application only if the tenant ID of the tenant is included in the subscription list corresponding to the specific application.

[0088] In an embodiment, network resources corresponding to different tenants (such as digital devices, virtual machines, application instances, and threads) 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 can only be sent to other devices within the same tenant overlay network. The encapsulation tunnel is used to prohibit any transmission from a source device on a tenant overlay network to devices in other tenant overlay networks. 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 the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with a destination device in the 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 to a destination device in the same specific overlay network.

[0089] 8. Hardware Overview

[0090] According to an embodiment, the technology described herein is implemented by one or more special-purpose computing devices. The special-purpose computing device may be hardwired to perform these technologies, or may include a digital electronic device permanently programmed to perform these technologies, such as one or more application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or network processing units (NPUs), or may include one or more general-purpose hardware processors programmed to perform these technologies according to program instructions in firmware, memory, other storage devices, or combinations. Such a special-purpose computing device may also combine custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming to implement these technologies. The special-purpose computing device may be a desktop computer system, a portable computer system, a handheld device, a network device, or any other device that combines hardwiring and / or program logic to implement the technology.

[0091] For example, Figure 3 is a block diagram illustrating a computer system 300 upon 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 to bus 302 for processing information. Hardware processor 304 may be, for example, a general purpose microprocessor.

[0092] 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. When stored in a non-transitory storage medium accessible to processor 304, such instructions cause computer system 300 to become a special-purpose machine customized to perform the operations specified in the instructions.

[0093] Computer system 300 also 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 or optical disk, is provided and coupled to bus 302 for storing information and instructions.

[0094] The computer system 300 may be coupled to a display 312, such as a cathode ray tube (CRT), via the bus 302 for displaying information to a computer user. An input device 314, including alphanumeric and other keys, is coupled to the bus 302 for communicating information and command selections to the processor 304. Another type of user input device is a cursor control 316, such as a mouse, trackball, or cursor direction keys, for communicating direction information and command selections to the processor 304 and for controlling cursor movement on the 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), that allow the device to specify a position in a plane.

[0095] Computer system 300 may implement the techniques described herein using custom hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic that is combined with the computer system to make or program the computer system 300 into a special purpose machine. According to one embodiment, the techniques herein are performed by computer system 300 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.

[0096] As used herein, the term "storage medium" 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 tapes or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical medium with a pattern of holes, RAM, PROM and EPROM, FLASH-EPROM, NVRAM, any other memory chip or cassette, content addressable memory (CAM), and ternary content addressable memory (TCAM).

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

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

[0099] The computer system 300 also includes a communication interface 318 coupled to the bus 302. The communication interface 318 provides a bidirectional data communication coupling to a network link 320 connected to a local network 322. For example, the communication interface 318 can be an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem for providing a data communication connection to a corresponding type of telephone line. As another example, the communication interface 318 can be a local area network (LAN) card that provides a data communication connection to a compatible LAN. A wireless link can also be implemented. In any such implementation, the communication interface 318 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.

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

[0101] 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, server 330 can send the request code for an application through Internet 328, ISP 326, local network 322, and communication interface 318.

[0102] 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.

[0103] Embodiments are directed to a system having one or more devices comprising a hardware processor and configured to perform any of the operations described herein and / or in any of the following claims.

[0104] 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 in any of the claims to be performed.

[0105] According to one or more embodiments, any combination of the features and functions described herein may be used. In the foregoing description, embodiments have been described with reference to many specific details that may vary with implementation. Therefore, the description and drawings should be considered illustrative rather than restrictive. The sole and exclusive indicator of the scope of the invention and what the applicant intends to be the scope of the invention is the literal and equivalent scope of the set of claims issued from this application in the specific form in which the claims are issued, including any subsequent amendments.

Claims

1. One or more non-transitory computer-readable media storing instructions that, when executed by one or more hardware processors, cause operations to be performed, the operations comprising: receiving a request to display 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; Determining that a first node set is related to the target node, the first node set including a first node subset and a second node subset; requesting the target node, the first subset of nodes, and the second subset of nodes from the remote machine; receiving the target node and the first subset of nodes from the remote machine; Before receiving the second node subset: displaying the target node, the first node subset, and a first placeholder representing the second node subset; After receiving the second node subset, the first placeholder is replaced with the second node subset by displaying the target node, the first node subset, and the second node subset without displaying the first placeholder.

2. The medium of claim 1, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third node subset and before receiving the fourth node subset: displaying the third node subset and a third placeholder representing the fourth node subset without displaying the second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the third placeholder.

3. The medium of claim 1, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third subset of nodes and before receiving the fourth subset of nodes: modifying the second placeholder from (a) representing the third node subset and the fourth node subset to (b) representing the fourth node subset without representing the third node subset; displaying the third node subset and the modified second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the modified second placeholder.

4. The medium of claim 1, wherein the nodes of the second subset of nodes represented by the first placeholder are adjacent to each other.

5. The medium of claim 1, wherein the target node, the first subset of nodes, and the first placeholder are displayed as part of the hierarchical node tree.

6. A method comprising: receiving a request to display 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; Determining that a first node set is related to the target node, the first node set including a first node subset and a second node subset; requesting the target node, the first subset of nodes, and the second subset of nodes from the remote machine; receiving the target node and the first subset of nodes from the remote machine; Before receiving the second node subset: displaying the target node, the first node subset, and a first placeholder representing the second node subset; as well as After receiving the second node subset, the first placeholder is replaced with the second node subset by displaying the target node, the first node subset, and the second node subset without displaying the first placeholder.

7. The method according to claim 6, further comprising: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third node subset and before receiving the fourth node subset: displaying the third node subset and a third placeholder representing the fourth node subset without displaying the second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the third placeholder.

8. The method according to claim 6, further comprising: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third subset of nodes and before receiving the fourth subset of nodes: modifying the second placeholder from (a) representing the third node subset and the fourth node subset to (b) representing the fourth node subset without representing the third node subset; displaying the third node subset and the modified second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the modified second placeholder.

9. The method of claim 6, wherein the nodes of the second subset of nodes represented by the first placeholder are adjacent to each other.

10. The method of claim 6, wherein the target node, the first subset of nodes, and the first placeholder are displayed as part of the hierarchical node tree.

11. A system comprising: at least one device, the at least one device comprising a hardware processor; The system is configured to perform operations including: receiving a request to display 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; Determining that a first node set is related to the target node, the first node set including a first node subset and a second node subset; requesting the target node, the first subset of nodes, and the second subset of nodes from the remote machine; receiving the target node and the first subset of nodes from the remote machine; Before receiving the second node subset: displaying the target node, the first node subset, and a first placeholder representing the second node subset; and After receiving the second node subset, the first placeholder is replaced with the second node subset by displaying the target node, the first node subset, and the second node subset without displaying the first placeholder.

12. The system of claim 11, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third node subset and before receiving the fourth node subset: displaying the third node subset and a third placeholder representing the fourth node subset without displaying the second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the third placeholder.

13. The system of claim 11, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third subset of nodes and before receiving the fourth subset of nodes: modifying the second placeholder from (a) representing the third node subset and the fourth node subset to (b) representing the fourth node subset without representing the third node subset; displaying the third node subset and the modified second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the modified second placeholder. The system of claim 11 , wherein nodes of the second subset of nodes represented by the first placeholder are adjacent to each other.

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

16. One or more non-transitory computer-readable media storing instructions that, when executed by one or more hardware processors, cause operations to be performed, the operations comprising: receiving a request to display 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; Determining that a first node set is related to the target node, the first node set including a first node subset and a second node subset; requesting the target node, the first subset of nodes, and the second subset of nodes from the remote machine; receiving the target node, the first subset of nodes, and the second subset of nodes from the remote machine; displaying the target node, the first node subset, and a first placeholder representing the second node subset without displaying the second node subset; as well as After receiving a command to display the second subset of nodes, the first placeholder is replaced 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.

17. The medium of claim 16, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third node subset and before receiving the fourth node subset: displaying the third node subset and a third placeholder representing the fourth node subset without displaying the second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the third placeholder.

18. The medium of claim 16, wherein the operations further comprise: Determining that a second node set is related to the target node, the second node set including a third node subset and a fourth node subset; requesting the third subset of nodes and the fourth subset of nodes from the remote machine; Prior to receiving the third node subset and the fourth node subset: displaying a second placeholder representing both the third node subset and the fourth node subset; After receiving the third subset of nodes and before receiving the fourth subset of nodes: modifying the second placeholder from (a) representing the third node subset and the fourth node subset to (b) representing the fourth node subset without representing the third node subset; displaying the third node subset and the modified second placeholder; as well as After receiving the fourth node subset: displaying the third node subset and the fourth node subset without displaying the modified second placeholder.

19. The medium of claim 16, wherein nodes of the second subset of nodes represented by the first placeholder are adjacent to each other.

20. The medium of claim 16, wherein the target node, the first subset of nodes, and the first placeholder are displayed as part of the hierarchical node tree.