US20170235737A1 - Entity database ranking - Google Patents

Entity database ranking Download PDF

Info

Publication number
US20170235737A1
US20170235737A1 US15/423,488 US201715423488A US2017235737A1 US 20170235737 A1 US20170235737 A1 US 20170235737A1 US 201715423488 A US201715423488 A US 201715423488A US 2017235737 A1 US2017235737 A1 US 2017235737A1
Authority
US
United States
Prior art keywords
entity
rank
search results
type
related entity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/423,488
Inventor
Artem Yevgenyevich Livshits
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nutanix Inc
Original Assignee
Nutanix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nutanix Inc filed Critical Nutanix Inc
Priority to US15/423,488 priority Critical patent/US20170235737A1/en
Assigned to Nutanix, Inc. reassignment Nutanix, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LIVSHITS, ARTEM YEVGENYEVICH
Publication of US20170235737A1 publication Critical patent/US20170235737A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • G06F17/3053
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/26Visual data mining; Browsing structured data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • G06F17/30604
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour

Definitions

  • This disclosure relates generally to virtualization environments.
  • a “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the hardware resources of a real computer (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying physical resources just like a real computer.
  • a real computer e.g., CPU, memory, etc.
  • Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system.
  • This layer of software contains a virtual machine monitor or “hypervisor” that allocates hardware resources dynamically and transparently.
  • Multiple operating systems run concurrently on a single physical computer and share hardware resources with each other.
  • a virtual machine is completely compatible with most standard operating systems, applications, and device drivers.
  • Most modern implementations allow several operating systems and applications to safely run at the same time on a single computer, with each having access to the resources it needs when it needs them.
  • Virtualization allows one to run multiple virtual machines on a single physical machine, with each virtual machine sharing the resources of that one physical computer across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical computer.
  • certain virtualization environments may not only utilize the processing power of the physical computing devices but also aggregate storage capacity across the individual physical computing devices to create a logical storage pool, wherein the data is distributed across the physical computing devices, yet appears to the virtual machines to be part of the system that the virtual machine is hosted on.
  • Such systems may utilize metadata, which may be distributed and replicated any number of times across the system, to locate specific data within the logical storage pool.
  • clustered systems wherein the resources of the group are pooled to provide logically combined, but physically separate systems.
  • Embodiments of the present invention introduce a user interface to display information about entities, their relationships, attributes, and stats in a virtualization environment.
  • a virtualization environment may include a plurality of host machines, each of the host machines comprising a hypervisor, one or more user virtual machines (UVMs) and a virtual machine controller.
  • the virtualization environment further includes one or more virtual disks comprising a plurality of storage devices, the one or more virtual disks being accessible by the virtual machine controllers.
  • the virtual machine controllers conduct I/O transactions with the one or more virtual disks.
  • a system for managing the virtualization environment is operable to store an entity-relationship graph representing elements in the virtualization environment. Each of the elements is represented by an entity-type node in the entity-relationship graph, and relationships between the elements are represented by edges between the nodes.
  • FIG. 1A illustrates a clustered virtualization environment according to some embodiments.
  • FIG. 1B illustrates data flow within a clustered virtualization environment according to some embodiments.
  • FIG. 2 illustrates the basic pattern of an entity relationship graph according to some embodiments.
  • FIG. 3A illustrates an example entity-relationship graph for entities associated with a virtualization system according to some embodiments.
  • FIG. 3B illustrates another example entity-relationship graph for entities associated with a virtualization system according to some embodiments.
  • FIG. 4 illustrates an example architecture for an entity database according to some embodiments.
  • FIG. 5 illustrates an example entity trail for a user virtual machine entity associated with a virtualization environment according to some embodiments.
  • FIG. 6 illustrates an example context anchor entity ranking according to some embodiments.
  • FIG. 7 shows an example client user interface illustrating a list of virtual machines in a virtualization environment with associated attribute values according to some embodiments.
  • FIG. 8 shows an example client user interface illustrating selection of virtual machines in a virtualization environment according to some embodiments.
  • FIG. 9 shows an example client user interface illustrating filtering of entities and attributes in a search feature according to some embodiments.
  • FIG. 10 shows an example client user interface illustrating grouping entities and attributes in a search feature according to some embodiments.
  • FIG. 11 illustrates a UI displaying labels applied to the selected VM-type entities.
  • FIG. 12 shows an example client user interface illustrating a statistics display based on grouping and derived metrics according to some embodiments.
  • FIG. 13 illustrates sample statistics for the overall virtualization environment that may be maintained by the entity database according to some embodiments.
  • FIG. 14 illustrates a UI displaying a graphical overview representation of current state and other information for the selected and grouped VM-type entities.
  • FIG. 15 illustrates a UI displaying a graphical overview representation of current state and other information for a filtered subset of the VM-type entities currently existing in the virtualization environment.
  • FIG. 16 illustrates an example of range-based replication according to some embodiments.
  • FIG. 17 illustrates a block diagram of a computing system suitable for implementing particular embodiments.
  • FIG. 1A illustrates a clustered virtualization system 100 according to particular embodiments.
  • the architecture of FIG. 1A can be implemented for a distributed platform that contains multiple host machines 101 a - c that manage multiple tiers of storage.
  • the multiple tiers of storage may include storage that is accessible through network 140 , such as, by way of example and not limitation, cloud storage 126 (e.g., which may be accessible through the Internet), network-attached storage (NAS) 128 (e.g., which may be accessible through a LAN), or a storage area network (SAN).
  • cloud storage 126 e.g., which may be accessible through the Internet
  • NAS network-attached storage
  • SAN storage area network
  • the present embodiment also permits local storage 122 a - c that is incorporated into or directly attached to the host machine and/or appliance to be managed as part of storage pool 160 .
  • SSDs Solid State Drives 125
  • HDDs Hard Disk Drives 127
  • spindle drives optical disk drives
  • external drives e.g., a storage device connected to a host machine via a native drive interface or a serial attached SCSI interface
  • storage pool 160 e.g., a storage device connected to a host machine via a native drive interface or a serial attached SCSI interface
  • Virtual disks may be structured from the physical storage devices in storage pool 160 , as described in more detail below.
  • vDisk refers to the storage abstraction that is exposed by a Controller/Service VM (CVM) 110 to be used by a user VM 105 .
  • CVM Controller/Service VM
  • the vDisk may be exposed via iSCSI (“internet small computer system interface”) or NFS (“network file system”) and is mounted as a virtual disk on the user VM.
  • vDisks may be organized into one or more volume groups (VGs).
  • the virtualization environment may include two or more clusters.
  • Each host machine 101 a - c may run virtualization software, such as VMWARE ESX(I), MICROSOFT HYPER-V, REDHAT KVM, or NUTANIX AHV.
  • the virtualization software includes hypervisor 130 a - c to create, manage, and destroy user VMs 105 , as well as managing the interactions between the underlying hardware and user VMs 105 .
  • User VMs 105 may run one or more applications that may operate as “clients” with respect to other elements within virtualization system 100 .
  • a hypervisor may connect to network 140 .
  • a host machine 101 may be a physical hardware computing device; in particular embodiments, a host machine 101 may be a virtual machine.
  • CVMs 110 a - c are used to manage storage and input/output (“I/O”) activities according to particular embodiments. These special VMs act as the storage controller in the currently described architecture. Multiple such storage controllers may coordinate within a cluster to form a unified storage controller system.
  • CVMs 110 may run as virtual machines on the various host machines 101 , and work together to form a distributed system 110 that manages all the storage resources, including local storage 122 , NAS 128 , and cloud storage 126 .
  • the CVMs may connect to network 140 directly, or via a hypervisor. Since the CVMs run independent of hypervisors 130 a - c , this means that the current approach can be used and implemented within any virtual machine architecture, since the CVMs of particular embodiments can be used in conjunction with any hypervisor from any virtualization vendor.
  • a host machine may be designated as a leader node within a cluster of host machines.
  • host machine 101 b may be a leader node.
  • a leader node may have a software component designated to perform operations of the leader.
  • CVM 110 b on host machine 101 b may be designated to perform such operations.
  • a leader may be responsible for monitoring or handling requests from other host machines or software components on other host machines throughout the virtualized environment. If a leader fails, a new leader may be designated.
  • a management module (e.g., in the form of an agent) may be running on the leader node.
  • Each CVM 110 a - c exports one or more block devices or NFS server targets that appear as disks to user VMs 105 a - c . These disks are virtual, since they are implemented by the software running inside CVMs 110 a - c . Thus, to user VMs 105 a - c , CVMs 110 a - c appear to be exporting a clustered storage appliance that contains some disks. All user data (including the operating system) in the user VMs 105 a - c and reside on these virtual disks.
  • FIG. 1B illustrates data flow within an example clustered virtualization system 100 according to particular embodiments.
  • one or more user VMs and a CVM may run on each host machine 101 along with a hypervisor.
  • I/O operations e.g., a read operation or a write operation
  • the I/O commands of the user VM may be sent to the hypervisor running on the same host machine as the user VM.
  • the hypervisor may present to the virtual machines an emulated storage controller, receive an I/O command and facilitate the performance of the I/O command (e.g., via interfacing with storage that is the object of the command, or passing the command to a service that will perform the I/O command).
  • An emulated storage controller may facilitate I/O operations between a user VM and a vDisk.
  • a vDisk may present to a user VM as one or more discrete storage drives, but each vDisk may correspond to any part of one or more drives within storage pool 160 .
  • CVM 110 a - c may present an emulated storage controller either to the hypervisor or to user VMs to facilitate I/O operations.
  • CVM 110 a - c may be connected to storage within storage pool 160 .
  • CVM 110 a may have the ability to perform I/O operations using local storage 122 a within the same host machine 101 a , by connecting via network 140 to cloud storage 126 or NAS 128 , or by connecting via network 140 to local storage 122 b - c within another host machine 101 b - c (e.g., via connecting to another CVM 110 b or 110 c ).
  • any suitable computing system 1700 may be used to implement a host machine 101 .
  • the clustered virtualization environment may include a distributed entity database for storing datacenter entities and the relationships between them, as represented by an entity-relationship graph.
  • An entity database may support such an entity-relationship model by storing information related to the entity-relationship graph, such as entities, entity relationships, and time series information and statistics.
  • the database may be sharded (a.k.a. distributed) across multiple nodes, and may have a query model optimized for the entity-relationship model that supports querying current and historical data, queries for keyword searches, watches for notifying clients on entity updates, and synchronization of data between database instances.
  • FIG. 2 illustrates the basic pattern of an entity-relationship graph 200 , which may comprise an entity-type node 210 (e.g., a parent entity-type node) connected to a child entity-type node 212 .
  • entity-type node 210 e.g., a parent entity-type node
  • a plurality of activity-type nodes may be connected to entity-type node 210 , including an action-type node 220 , an alert-type node 222 , a metrics-type node 224 , and an attributes-type node 226 .
  • each entity-type node e.g., entity type node 210 , child entity-type node 212 , etc.
  • each node type can comprise one or more nodes of that node type.
  • each entity may have its own properties.
  • each entity may also inherit properties from related entities (e.g., inheriting available actions from a parent).
  • certain properties of an entity may represent the aggregated properties of its child entities (e.g., metrics data for a cluster entity may comprise the aggregated metrics data from its child entity nodes). Values for different attributes and/or metrics data for an entity may be generated by different sources (e.g., different services running in the virtualization environment and/or other entities).
  • Particular entities may retain historical data relating to changes in its properties and/or metrics data (e.g., tracked statistical information). Such historical data may be retained together with timestamp information so that the evolving state of the virtualization environment is captured in an entity trail, as discussed further in relation to FIG. 5 .
  • metrics data e.g., tracked statistical information
  • FIG. 3A illustrates an example entity-relationship graph 300 for entities associated with virtualization system 100 .
  • entity-type nodes may include a multi-cluster-type node 330 , a cluster-type node 332 , a host-type node 334 , a virtual-machine-type node 336 , a virtual-disk-type node 338 , a protection-domain-type node 340 , a container-type node 342 , a network-interface-card-type node 344 , a disk-type node 346 , and a storage-pool-type node 348 .
  • the direction of the edge connecting the nodes indicates a child-parent relationship (e.g., the arrow goes from a child node to a parent node).
  • cluster-type node 332 is a child node of multi-cluster-type node 330 and the parent node of protection-domain-type node 340 and container-type node 342 .
  • virtual-machine-type node 336 is a child node of protection-domain-type node 340 , host type node 334 , and container-type node 342 , and a parent node of virtual-disk-type node 338 .
  • FIG. 3B illustrates another example entity-relationship graph 300 for entities associated with virtualization system 100 , together with example attributes, actions, metrics, alerts, and other information associated with the entities.
  • cluster-type node 332 may be associated with action-type nodes 350 (e.g., settings, etc.), alert-type nodes 360 , attribute-type nodes 370 (e.g., cluster name “C 1 ”) and metric-type nodes 380 (e.g., I/O operations per second (“IOPS”), latency, etc.).
  • action-type nodes 350 e.g., settings, etc.
  • alert-type nodes 360 e.g., attribute-type nodes 370 (e.g., cluster name “C 1 ”)
  • metric-type nodes 380 e.g., I/O operations per second (“IOPS”), latency, etc.
  • virtual-machine-type node 336 may be associated with action-type nodes 350 (e.g., create, poweroff, clone, migrate, etc.), alert-type nodes 360 (e.g., alert types such as cpu, etc.), attribute-type nodes 370 (e.g., num vcpu, IP address, OS type, etc.), and metric-type nodes 380 (e.g., IOPS, latency, CPU utilization, diskspace usage, etc.).
  • action-type nodes 350 e.g., create, poweroff, clone, migrate, etc.
  • alert-type nodes 360 e.g., alert types such as cpu, etc.
  • attribute-type nodes 370 e.g., num vcpu, IP address, OS type, etc.
  • metric-type nodes 380 e.g., IOPS, latency, CPU utilization, diskspace usage, etc.
  • FIG. 4 illustrates an example architecture for the entity database.
  • the architecture may comprise a Cache Layer 430 on top of a Store Layer 420 on top of a Persistence Layer 410 (e.g., underlying data store and/or volume groups in the storage pool).
  • the architecture may support a query processing process 442 , put/delete processing process 444 , and watches/alerts process 446 .
  • the architecture may also expose functionality via an API 450 .
  • Persistence Layer 410 may comprise persistent non-volatile storage of the database information.
  • Cache Layer 430 may comprise storage of information that is expected to be retrieved frequently or in a relatively short time span, or any suitable transitory storage before moving data to persistent storage.
  • the Store Layer 420 handles requests from and responses to API layer 450 to store and retrieve data from Persistence Layer 410 .
  • the Store Layer 420 may handle building and updating database schemas by example, registering entity types and metrics types.
  • Store Layer 420 may register a VM-type entity having an IP Address, Number of Virtual CPUs and OS Type attributes.
  • Store Layer 420 may also handle creation, update and deletion of entities and attributes.
  • Store Layer 420 may create a VM-type and populate the attributes described above.
  • Store Layer 420 may update metrics associated with entities.
  • entity updates and stats updates are treated differently by the database.
  • entity updates may be atomic and write-through, so that a read operations will obtain the most recent values associated with entities.
  • metrics and statistics e.g., cache usage, CPU usage, disk usage, and data transfer rate
  • a read operation on metrics may not yield the most recent data.
  • Each attribute change of an entity is also stored as a metric so that attribute and metric values can be populated together as time series in an entity trail.
  • metrics may be aggregated on hourly basis.
  • the database may store current entity state information as well as an entity trail for some or all entities.
  • an entity trail may include some or all historical values for the entity, along with corresponding timestamps for each value.
  • a Host entity may have one child VM entity at a time 1000 , and then receive an update to initiate a second VM entity at time 1002 , and then a third VM entity at time 1006 .
  • the database may store the first VM entity with associated timestamps 1000 - 1006 and the second VM entity with associated timestamps 1002 - 1006 in the entity trail. In this manner, the database may be able to track every entity's transition over time.
  • the entity database may store statistics indexed by certain dimensions to support efficient querying of stats data; additionally, the statistics can be de-normalized for fast data access. For example, the database may store statistics indexed by entity ID over a longer time range, which allows entity database to efficiently return statistics for a particular entity for long periods of time. Entity database data may also be grouped by entity type and metric, which may enable the database to efficiently return statistics for all entities of a particular type (e.g., all VMs) for a shorter time range.
  • the database may provide mechanisms to query and retrieve a current state of an entity, as well as the state of the entity at a specific point in the past, or the states within a time range.
  • the database may provide mechanisms to query and retrieve past metrics.
  • the database also provide future metrics through extrapolation or any suitable method of predicting future metrics.
  • a user may query the database for the CPU utilization of a Host-type entity from times 900 - 1100 .
  • the database may return a set of values and associated timestamps where values for timestamps 900 - 1000 correspond to observed values and values from 1000-1100 correspond to an extrapolation based on the slope of the observed curve.
  • Metrics may be stored as raw values, or may be stored in buckets by using downsampling.
  • the database may provide a query language interface (e.g., SQL) to retrieve current and historical entity, attributes, and metrics data.
  • a query language interface e.g., SQL
  • the query language interface may support the following types of queries:
  • FIG. 5 illustrates an example entity trail for a UVM entity associated with the virtualization environment.
  • entity trail information captures changes (represented by stars) in configuration and/or state information for the UVM entity.
  • the UVM may have begun serving additional applications previously served by another UVM that failed, until the failed UVM was restarted at time 4000 and the applications were moved back to the restarted UVM.
  • the corresponding changes to the UVM's Power_State and Memory_Size_Bytes entity attributes may also be captured as part of the entity trail information for the UVM.
  • tools for an administrator of the virtualization environment may enable the administrator to view the state of the virtualization environment at different points in time/time periods (e.g., actual past performance or predicted future performance). Such tools may also enable the administrator to easily roll back the state of the virtualization environment to a past point in time (e.g., in order to “reset” the state or perform testing).
  • a user interface for such tools may simply incorporate a slider 510 (e.g., comprising an element 510 A to select a start point of a time period and an element 510 B to select an end point of the time period) to navigate forward and backward in the entity trail.
  • the user interface may provide the ability to select a time period and then display entity trail information in a graphical manner.
  • the database may use a data model where the basic unit is an “entity” identified by entity id. Entities may be atomically updated. Each entity may have a list of key/value pairs called attributes. For example an entity may have an id “VM#3,” a “name” attribute with “Webserver” as its value, and an “ip_address” attribute with “10.4.75.23” as its value.
  • entities may be organized into disjoint sets called shards for the purpose of distributing processing between multiple nodes.
  • an entity may belong to exactly one shard. Processing of a shard (e.g., for caching, concurrency control, etc.) may be handled by a single node.
  • Entity modifications may be recorded to the entity trail.
  • the previous value of the entity may be recorded into the trail.
  • the trail would have the full history of entity modifications. Creations, updates and deletions may be treated the same way.
  • Entity modifications may be stamped with monotonically increasing wall-clock-based timestamps.
  • the timestamps may be guaranteed to be unique within a shard. The guarantee may be implemented by maintaining one integer counter per shard that is atomically updated to the new timestamp with a higher value with every modification.
  • the state of the virtualization environment at a time in the past may be resurrected from the captured entity trail.
  • the unique monotonically increasing timestamps may be used to track replicated changes.
  • Data may be replicated across multiple database instances for various purposes such as, by way of example and not limitation, to provide global views, disaster recovery, run secondary analytics applications, etc.
  • the database may track replicated modifications keeping the “last replicated” timestamp. Modifications may be replicated in the order of their timestamps, and after each modification is replicated, the “last replicated” timestamp may be advanced to account for replicated modifications.
  • the database may track timestamp ranges of replicated modifications, such that when all modifications that have timestamps between the bottom of the range and the top of the range are replicated, then the range is marked as replicated.
  • Replicated ranges may be tracked in a map that contains non-overlapping ranges. If adjacent or overlapping ranges are replicated, the ranges in the map may be merged together, and thus the representation of replication state may be reduced. Assuming a scenario where all modifications are replicated (for example, due to updates at every time), the representation would only take one extra integer compared with an approach of keeping track of the “last replicated” timestamp.
  • Range-based replication state tracking may provide several benefits to the database. For example, independent failure modes: if one modification fails to replicate, other modifications still can be replicated; with “last replicated” timestamp any failure may stall further replication.
  • range-based replication may allow modifications to be sent via multiple channels in any order, without having to serialize communication, while with “last replicated” timestamp ordering may need to be enforced.
  • range-based replication may provide the ability to replicate latest modifications before historical data. This may be beneficial for bootstrapping new replicas, since the current value of an entity may be more important for user scenarios than the entity trail.
  • the database may not provide atomicity across entities, and each entity update may be applied independently from other entities.
  • FIG. 6 illustrates the context anchor entity ranking.
  • the numbers in the bottom right corner of each box show the rankings that the searched entities would get if VM#3 is specified as a context anchor entity.
  • all ranks may be combined into the relevance rank that is used to sort the search results, so that the most relevant results may be at the beginning of the result list.
  • the relevance score calculation algorithm for each entity may be as follows:
  • the present disclosure describes calculating the relevance score for entities in a particular manner, the present disclosure contemplates calculating the relevance score in any suitable manner.
  • Entities in the database may be linked in a hierarchical manner using “parent” links.
  • An entity may have any number of parents. For example, an entity with identifier “VM#3” could have a parent entity with identifier “Node#22,” in which case the “VM#3” entity would have a parent link pointing to “Node#22” entity.
  • Entities of interest may be retrieved using the above described query functionality.
  • Entities of interest may be retrieved using the above described query functionality.
  • a Search may return results in order of relevance (e.g., most relevant first).
  • the relevance order may be determined by a relevance score or rank assigned to entities as a result of a ranking algorithm.
  • the relevance score may be calculated based on several rankings of the following relevance signals:
  • match closeness reflects how similar the resulting value is to the provided search substring.
  • full match the value is equal to the provided substring
  • prefix match the provided substring is the prefix of the value
  • any other match in the case of full match the rank is 3, in the case of prefix match the rank is 2, and in the case of other match the rank is 1.
  • the caller of the search request may specify relevant attributes as one of the ways to specify context for search. For example, the caller might want entities that have a match in “ip_address” attribute to be ranked higher in the search results than entities with matches in other attributes.
  • the rank that is assigned when a relevant attribute matches may be specified by the caller.
  • the caller of search may specify related entities as one of the ways to specify context for search.
  • the caller might want descendants of “node#22” (e.g., VMs, virtual disks, virtual NICs, etc.) to be ranked higher than other entities.
  • the caller specifies the rank that is assigned when an entity is a descendant of a relevant ancestor.
  • the caller of search may provide contextual or “context anchor” entities that are relevant to the search context.
  • the context anchor entities may affect ranking of the search results.
  • context anchor entities are identified from the context under which the search query was generated.
  • a search context may be that a user is looking at a screen that shows VM#3 details and starts typing a search query.
  • the interface may then pass VM#3 as a context anchor entity argument in the search request.
  • the interface may provide auto-complete suggestions (where auto-complete uses search) that include entities that are related to VM#3.
  • a rank calculation may be performed for entities related to “anchor” entities.
  • the rank of an entity is the path length between the ranked entity and the contextual entity in the entity relationship graph.
  • the depth of traversal may be limited to a predetermined length (e.g., 3).
  • the relevance rank calculation algorithm may combine the above ranks.
  • all entities initially have a rank of 0 and a context anchor entity itself may be assigned a predetermined rank (e.g., 3).
  • the parents and children of the context anchor entity are assigned a lesser predetermined rank (e.g., 2) and the parents and children of those an even lesser predetermined rank (e.g., 1).
  • the prior values for the entity are recorded in the entity database, along with associated timestamp that record the time when the entity had the prior values.
  • the entity database may take a snapshot of all entities periodically (e.g., every 30 seconds, every 5 minutes, twice a day, etc.). By taking periodic snapshots, particular embodiments may avoid the burden of reading logs from the beginning of time in order to get the entire list of available entities and their states at a particular timestamp in the past.
  • the entity database may also store the entity's statistics, such as, resource usage (e.g., CPU utilization, memory availability, storage availability, etc.).
  • entity statistics may be downsampled by aggregating the information (e.g., taking the average, sum, minimum, maximum) over a time period. In this manner, instead of storing the prior values, the entity database may record less information where the information is representative of the prior values. In particular embodiments, such downsampling may continually occur as the entity statistics are collected (e.g., in order to reduce the volume of such logged information). In addition, older raw and/or downsampled statistics may be discarded as they expire (e.g., fall out of a rolling window of time, such as six months after the present time). In particular embodiments, certain common aggregation operations may be precomputed prior to receiving a relevant query in order to reduce latency.
  • the entity database may model real world objects as entities.
  • Each entity may be identified by an entity unique identifier, such as a globally unique identifier (GUID).
  • GUID globally unique identifier
  • each entity may have an (entity type, id) pair and contain one or more attributes and metrics, each with a name and values represented as (time, value) pairs.
  • an entity for a VM object may have an id “vm 1 ”, an attribute “vm_name” with a value (t 1 , “controller_vm 1 ”), and metric “cpu_usage_percentage” with a value (t 2 , “60”).
  • the attributes may also be used to express relationship between entities.
  • the VM entity may have a “node” attribute with a value “node 1 ”, which means that node 1 is the parent entity of vm 1 .
  • attribute updates may be fail-safe whereas metric updates may be lossy.
  • the entity database may provide a mechanism for transforming different database schemas into a single, unified schema.
  • one or more database schemas describing portions of the virtualization environment may be combined into a unified schema that contains all information of the environment.
  • rules describing on how to transform database schemas into a unified schema may specified in a template or configuration file and may include the following:
  • the entity database server may receive entity data associated with a portion of the virtualization environment.
  • the entity database server may receive data from multiple registered clusters of computers that user a different database schemas.
  • the entities received by the entity database may have cluster-wide (but not globally) unique IDs.
  • the entity IDs are converted into globally unique identifiers.
  • the entity database makes use of an attribute value that is globally unique.
  • the entity database may derive the entity ID from a “vm_uuid” attribute. The resultant VM entity may then have a “transformed” globally unique entity ID.
  • Attribute/Metric addition, deletion and renaming there may attributes or metrics that do not have significance in the unified data model, and the entity database may ignore them.
  • an older schema may have a “node” entity with a “vm_ids” attribute that specifies a list of VMs attached to the node.
  • the entity database may include attributes that define a parent-child relationship, as explained above, and therefore a list of attached VMs may be redundant. As a result, the entity database may ignore the list.
  • attributes may be renamed to create the parent-child relationship in the entity database.
  • the older schema database may contain a VM entity, vm 1 , that has a “node_uuid” attribute with value “node 1 .”
  • the corresponding attribute would be “node”, so the entity database may rename this attribute name to “node” before adding it to the database.
  • the attribute value may remain unchanged. Therefore, after the rename operation, the entity database may have a “vm” entity that has an implicit reference to a “node” entity with id “node 1 ”.
  • the entity database may provide fail-safe guarantees for attributes, such updates may be more expensive than metric updates.
  • the entity database may convert attributes to metrics. As an example and not by way of limitation, if the entity database receives updates for certain attributes very frequently, those attributes may be converted to metrics in order to reduce the number of fail-safe updates needed.
  • metrics updates in the entity database are not write-through.
  • the schema transformation may be used to suppress entity updates while still allowing metrics data into the entity database.
  • an entity attribute may be transformed into a metrics type attribute when the entity database does not want fail-safe updates for the attribute.
  • Version-specific schema conversion may be driven by a version-specific configuration.
  • the entity database may be configured to suppress entity updates when the data is received from a cluster running a specific version of software (e.g., Nutanix OS).
  • the cluster version may be specified in the configuration file as a regular expression string.
  • a “user interface” (UI) framework may be used for “dynamically” presenting entities in a virtualization environment, to permit relevant information about particular entities to be presented to a particular user or client.
  • the framework may enable presentation of any arbitrary entity or resource or group or combination thereof (homogeneous or heterogeneous).
  • the framework may retrieve or construct an entity schema and an object that describes the entity or entities. Based on the schema, the framework may be able to generate visualizations to present the data.
  • the framework may be also dynamically able to filter, group, sort, rank/order, and color-code the entities and/or resources, as well as providing the functionality to take actions on a selected group of items.
  • the framework may also provide different types of graphical representations of entities and/or resources in the virtualization environment.
  • the framework may provide an API and/or libraries enabling creation of customized versions of the GUI features.
  • the following components may make up the framework:
  • Dynamic Entity Presentation In particular embodiments, arbitrary entity types may be presented into the framework with no hard-coded data for how to present the entity information. Each entity type may be described by its schema, and all the other pieces of the framework may adhere to this schema in determining the presentation method.
  • a framework may be a plugin framework for displaying visualizations of the entity-relationship graph in a user interface so that the full user interface may be created based on the definition of a few content files.
  • the framework may allow a finite number of types of visualizations or user interfaces, with the option to add more.
  • the framework may initially allow three types of visualizations, but more visualizations may be plugged in.
  • each visualization may have a consistent interface and the framework keeps all visualizations synchronized.
  • the framework may provide for grouping of related attributes of an entity type into perspectives.
  • the framework may permit an additional dimension of presenting related information.
  • users may specify groups of attributes of interest to be placed into different perspectives (e.g. layers) and switch between them.
  • the framework may automatically generate and present one-click filtering for the entity type.
  • the one-click filtering may provide a very fast and smooth presentation of data to the users with minimal user input.
  • filter ranges may be dynamically created based on the data available and presented to the user.
  • entities and/or resources may be colored by attributes to distinguish the entities and/or resources for presentation.
  • the use of color may provide a visual data exploratory interface.
  • an interactive legend may be provided to identify each color group to the user and what a particular color signifies.
  • entities may be placed into groups.
  • determination of a grouping for an entity may be based on user input.
  • multiple users may provide input for a particular entity.
  • the UI framework may determine whether the multiple inputs can be reconciled. If not, the UI framework may select a “winning” user input based on information known about each user. As an example and not by way of limitation, two users may provide inputs to define a particular entity, where one user is designated a “premium” user.
  • the UI framework may prioritize the premium user's input over another user.
  • the determine of a group for an entity may be automatically determined by the UI framework.
  • entities may be placed into groups based on common activity-type nodes associated with those entities.
  • one entity may be associated with a plurality of groups.
  • the visual presentation of a group of entities may further include information regarding the children of the entities in the group.
  • each set of data presented in the UI framework for searches and presentation of entities and/or resources may correlate to a point in time or time period.
  • the entity browser may show the latest entity information by default.
  • the browser may present data at any arbitrary time range.
  • the UI framework may provide the user with elements to navigate back and forth through different points in time through the presentation of entity information.
  • Selection Set when browsing or searching for entities and/or resources, the user may select one or more entities or resources and use them for later analysis.
  • the UI frame work may treat the selected set as a dynamic set of entities that may adhere to all filters, group-by, coloring, and visualization features of the entity browser.
  • the UI framework may enable the user to select one or more entities or resources, and further create and apply labels to the selected entities or resources.
  • the user may submit a complex query bringing up search results of the query, and then apply a bulk label to some or all of the entities and/or resources in the search results.
  • the UI framework may subsequently enable provide the ability to display, filter, group, sort, rank/order, color-code, and/or take actions on the entities and/or resources by label.
  • more than one label may be applied to any given entity or resource.
  • Actions when browsing or searching for entities, the user can select entities and apply actions to the selected entities and/or resources.
  • a “shopping-cart” style feature may enable the user to perform multiple rounds of selecting entities and/or resources (e.g., after searching, browsing, grouping, filtering, sorting, etc.), and then perform a single action upon all entities and/or resources in the “shopping-cart.”
  • the UI framework may then execute all designated actions from the shopping-cart on the designated entities and/or resources.
  • FIG. 7 illustrates an example embodiment of the UI framework with a display of all VM-type entities currently existing in the virtualization environment.
  • the list of entities may be sorted by any of several attributes 720 , including, for example, name, host machine/hardware node, storage (total capacity or available), CPU usage, memory usage, status, or available actions.
  • the list of displayed items e.g., attributes, properties, statistical data, etc.
  • a user may also select other entity-types 710 to view the entities of those types in the virtualization environment.
  • the user may select storage pools, containers, hosts, disks, protection domains, remote sites, NICs, virtual disks, or snapshots.
  • FIG. 8 illustrates a query results UI framework enabling selection of certain VM-type entities currently existing in the virtualization environment.
  • a user may click on checkboxes 810 next to each entity displayed in order to select the corresponding entity.
  • the user may then perform actions or apply labels to the checked entities only.
  • FIG. 9 illustrates a UI enabling application of various filters to the selected VM-type entities.
  • the UI may include a window 910 to display various filtering options.
  • Filtering options may include filtering by label 920 , so that a user may select one or more labeled that have already been applied to the entities, and the UI may present only those entities with the selected labels.
  • Another example of a filter may be by cluster 930 .
  • the entities presented in the UI may already be assigned to one or more clusters, and the user may select which clusters he or she would like to view.
  • Another filtering option may be a text search field 940 which may enable a user to search for a particular VM by name, if it is known.
  • Another filter 950 may specify a particular attribute of the entity.
  • filter 950 may differentiate entities based on their disk capacity, so that a user may filter and view only those entities with a certain amount of disk space.
  • any other attribute of the entities may be selected, such as available disk capacity, CPU type or speed, or network bandwidth.
  • a user may view additional filtering options through a user element 960 .
  • FIG. 10 illustrates a UI enabling grouping of the selected VM-type entities by different attributes or properties (e.g., grouping VMs by OS).
  • the grouping of VM-type entities may be based on the application of one or more filters, as discussed in FIG. 9 .
  • Group 1010 includes VM-type entities with the operating system Ubuntu Server 14.X LTS, and includes 409 VM-type entities and eight hosts.
  • Group 1020 includes VM-type entities with the operating system Microsoft Windows Server R 2 , and includes 155 VM-type entities and five hosts.
  • a user may further filter within a group, export the information for the particular group, or perform any other action as he or she would for the overall set of entities in the virtualization environment.
  • FIG. 11 illustrates a UI displaying labels applied to the selected VM-type entities.
  • a corresponding UI may enable creation of labels that may then be applied to one or more selected entities.
  • the UI may present information about each entity in a separate window. A user may select a particular entity and select one or more labels to apply to the selected entity through element 1110 which may appear in response to the user selection of the entity. Once the user has selected one or more labels, the UI framework may apply those labels to the selected entity.
  • FIG. 12 illustrates a UI displaying group-based statistics and other information for the selected and grouped VM-type entities.
  • the selected groups are similar to the groups of entities created in the example of FIG. 10 .
  • the UI displays attributes and metrics-based information about the combined set of entities in each group. For example, for the first group of Ubuntu VM-type entities, the UI displays the total number of hosts and VMs, the status of the VMs (e.g. active, suspended, or off), the amount of storage space being used, the current CPU usage for the group of entities, and memory usage.
  • FIG. 13 illustrates a UI displaying overall statistics and other information for all VM-type entities currently existing in the virtualization environment.
  • the total number of VM-type entities total disk capacity, total memory capacity, minimum, average, and maximum values for IOPs, bandwidth, and latency, etc.
  • a user may select one of the presented elements and view more information about the characteristic, or about the entity representing that value.
  • the UI may switch the display to present information about the particular VM-type entity corresponding to that bandwidth.
  • the UI may switch the display to present an individual breakdown of disk capacity by entity or by group.
  • FIG. 14 illustrates a UI displaying a graphical overview representation of current state and other information for host (machine) entities.
  • a UI may display icons (e.g. a circle) for each of the hosts on which one or more VMs have been established, wherein the icons are sorted by power state.
  • Each of the icons may further be colored or otherwise marked to indicate the corresponding entity's current power status, such as on, suspended, or off.
  • the user may select one or more entities simply by clicking on the corresponding icon, which may be marked with a check to indicate the selection.
  • the user may perform additional actions or apply labels to the selected entities.
  • FIG. 15 illustrates a UI displaying a graphical overview representation of current state and other information for a filtered subset of the VM-type entities currently existing in the virtualization environment. This may be similar to the example of FIG. 14 however the VM-type entities are no longer grouped by an attribute such as host machine.
  • the icons may be differentiated in appearance to indicate that entity's current status. The user may select one or more entities by clicking on the corresponding icons, and perform additional actions or apply labels to the selected entities.
  • the end user may be faced with the problem of performing one or more operations on a large number of entities that are hosted in a remote/distributed environment.
  • particular embodiments may provide a workflow or user interface that allows users to make a single request, which may be internally translated into localized requests that may then be performed on each of the individual nodes in the distributed environment.
  • special logic in the frontend may provide pre-validation feedback before given actions are made available to the user.
  • a user may want to power off three VMs of different cluster versions, but one of the three versions that the user has selected may not support a power-off action.
  • the UI may have special logic to notify the user that such an action cannot be performed on one of those three selected VMs.
  • the workflow may enable the user to track the progress of their action in real time.
  • particular embodiments may provide resiliency for the request from the central location by resuming the request from the point of failure should the central location go down.
  • the workflow may provide a sophisticated visualization of the progress of these tasks by automatically converging the progress of individual tasks into a parent task for easy perception.
  • a task structure may be as follows:
  • users may be enabled to perform bulk operations in a vendor-agnostic, heterogeneous data center without tying the user to a particular hypervisor. In particular embodiments, this may simplify the data center operations with crash resistance and real time progress tracking.
  • users in addition to allowing the user to perform bulk actions from centralized location, users may be enabled to perform heterogeneous actions in the same action flow. As an example and not by way of limitation, the end user may make use of the user interface to both power on and power off thousands of VMs from a centralized location with a single request.
  • the workflow may use only one process thread throughout the process regardless the number of the target entities. Since most of the local jobs are expected done within 1 minute, the process is expected to complete within a short duration. In particular embodiments, the workflow may provide a five-minute maximum for all jobs to be done and synced back to the centralized location. In particular embodiments, if some jobs are not completed within five minutes, failure or error may be presumed, and so the process may be terminated in the centralized location, and the parent task may be marked as “failed” with a detailed reason attached.
  • FIG. 16 illustrates an example of range-based replication according to some embodiments.
  • the replica contained no changes, and then a change with the range [990 . . . 1000) is replicated.
  • the replica may apply the change and account for it in the replication state.
  • the replication state could be described by the map of the following ranges ⁇ 990, 1000 ⁇ .
  • the replica can apply the change and account for it in the replication state.
  • the replication state could be described by the map of the following ranges ⁇ 990, 1000 ⁇ , ⁇ 1100, 1110 ⁇ .
  • the range based replication state can represent replicated changes efficiently, and may be more precise than a “latest” timestamp value.
  • Entities in the database may be linked in a hierarchical manner using “parent” links.
  • An entity may have any number of parents. For example, an entity with identifier “VM#3” could have a parent entity with identifier “Node#22,” in which case the “VM#3” entity would have a parent link pointing to “Node#22” entity.
  • FIG. 17 is a block diagram of an illustrative computing system 1700 suitable for implementing particular embodiments.
  • one or more computer systems 1700 may perform one or more steps of one or more methods described or illustrated herein.
  • one or more computer systems 1700 may provide functionality described or illustrated herein.
  • software running on one or more computer systems 1700 may perform one or more steps of one or more methods described or illustrated herein or provide functionality described or illustrated herein.
  • Particular embodiments include one or more portions of one or more computer systems 1700 .
  • reference to a computer system may encompass a computing device, and vice versa, where appropriate.
  • reference to a computer system may encompass one or more computer systems, where appropriate.
  • computer system 1700 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a mainframe, a mesh of computer systems, a server, a laptop or notebook computer system, a tablet computer system, or a combination of two or more of these.
  • SOC system-on-chip
  • SBC single-board computer system
  • COM computer-on-module
  • SOM system-on-module
  • computer system 1700 may include one or more computer systems 1700 ; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks.
  • one or more computer systems 1700 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein.
  • one or more computer systems 1700 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein.
  • One or more computer systems 1700 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
  • Computer system 1700 may include a bus 1706 (e.g., an address bus and a data bus) or other communication mechanism for communicating information, which interconnects subsystems and devices, such as processor 1707 , system memory 1708 (e.g., RAM), static storage device 1709 (e.g., ROM), disk drive 1710 (e.g., magnetic or optical), communication interface 1714 (e.g., modem, Ethernet card, a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network, a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network), display 1711 (e.g., CRT, LCD, LED), input device 1712 (e.g., keyboard, keypad, mouse, microphone).
  • a bus 1706 e.g., an address bus and a data bus
  • other communication mechanism for communicating information such as processor 1707 , system memory 1708 (e.g., RAM), static storage device 1709 (e.g.
  • computer system 1700 performs specific operations by processor 1707 executing one or more sequences of one or more instructions contained in system memory 1708 .
  • Such instructions may be read into system memory 1708 from another computer readable/usable medium, such as static storage device 1709 or disk drive 1710 .
  • static storage device 1709 or disk drive 1710 may be used in place of or in combination with software instructions to implement the invention.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention.
  • embodiments are not limited to any specific combination of hardware circuitry and/or software.
  • the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the invention.
  • Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 1710 .
  • Volatile media includes dynamic memory, such as system memory 1708 .
  • Computer readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
  • execution of the sequences of instructions to practice the invention is performed by a single computer system 1700 .
  • two or more computer systems 1700 coupled by communication link 1715 may perform the sequence of instructions required to practice the invention in coordination with one another.
  • Computer system 1700 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 1715 and communication interface 1714 .
  • Received program code may be executed by processor 1707 as it is received, and/or stored in disk drive 1710 , or other non-volatile storage for later execution.
  • a database 1732 in a storage medium 1731 may be used to store data accessible by the system 1700 by way of data interface 1733 .
  • an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative.

Abstract

In particular embodiments, a system for managing a virtualization environment includes host machines, each of the host machines including a hypervisor, user virtual machines (UVMs) and a virtual machine controller. The virtualization environment also includes virtual disks comprising a plurality of storage devices, and being accessible by the virtual machine controllers. The virtual machine controllers conduct I/O transactions with the virtual disks. The system stores an entity-relationship graph representing elements in the virtualization environment. Each of the elements is represented by an entity-type node in the entity-relationship graph, and relationships between the elements are represented by edges between the nodes.

Description

    PRIORITY
  • This application claims the benefit, under 35 U.S.C. §119(e), of U.S. Provisional Patent Application No. 62/294,980, filed 12 Feb. 2016, which is incorporated herein by reference.
  • TECHNICAL FIELD
  • This disclosure relates generally to virtualization environments.
  • BACKGROUND
  • A “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the hardware resources of a real computer (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying physical resources just like a real computer.
  • Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system. This layer of software contains a virtual machine monitor or “hypervisor” that allocates hardware resources dynamically and transparently. Multiple operating systems run concurrently on a single physical computer and share hardware resources with each other. By encapsulating an entire machine, including CPU, memory, operating system, and network devices, a virtual machine is completely compatible with most standard operating systems, applications, and device drivers. Most modern implementations allow several operating systems and applications to safely run at the same time on a single computer, with each having access to the resources it needs when it needs them.
  • Virtualization allows one to run multiple virtual machines on a single physical machine, with each virtual machine sharing the resources of that one physical computer across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical computer.
  • One reason for the broad adoption of virtualization in modern business and computing environments is the resource utilization advantages provided by virtual machines. Without virtualization, if a physical machine is limited to a single dedicated operating system, then during periods of inactivity by the dedicated operating system the physical machine is not utilized to perform useful work. This is wasteful and inefficient if there are users on other physical machines which are currently waiting for computing resources. To address this problem, virtualization allows multiple VMs to share the underlying physical resources so that during periods of inactivity by one VM, other VMs can take advantage of the resource availability to process workloads. This can produce great efficiencies for the utilization of physical computing devices, and can result in reduced redundancies and better resource cost management.
  • Furthermore, certain virtualization environments may not only utilize the processing power of the physical computing devices but also aggregate storage capacity across the individual physical computing devices to create a logical storage pool, wherein the data is distributed across the physical computing devices, yet appears to the virtual machines to be part of the system that the virtual machine is hosted on. Such systems may utilize metadata, which may be distributed and replicated any number of times across the system, to locate specific data within the logical storage pool. These systems are commonly referred to as clustered systems, wherein the resources of the group are pooled to provide logically combined, but physically separate systems.
  • SUMMARY OF PARTICULAR EMBODIMENTS
  • Embodiments of the present invention introduce a user interface to display information about entities, their relationships, attributes, and stats in a virtualization environment. A virtualization environment may include a plurality of host machines, each of the host machines comprising a hypervisor, one or more user virtual machines (UVMs) and a virtual machine controller. The virtualization environment further includes one or more virtual disks comprising a plurality of storage devices, the one or more virtual disks being accessible by the virtual machine controllers. The virtual machine controllers conduct I/O transactions with the one or more virtual disks. A system for managing the virtualization environment is operable to store an entity-relationship graph representing elements in the virtualization environment. Each of the elements is represented by an entity-type node in the entity-relationship graph, and relationships between the elements are represented by edges between the nodes.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1A illustrates a clustered virtualization environment according to some embodiments.
  • FIG. 1B illustrates data flow within a clustered virtualization environment according to some embodiments.
  • FIG. 2 illustrates the basic pattern of an entity relationship graph according to some embodiments.
  • FIG. 3A illustrates an example entity-relationship graph for entities associated with a virtualization system according to some embodiments.
  • FIG. 3B illustrates another example entity-relationship graph for entities associated with a virtualization system according to some embodiments.
  • FIG. 4 illustrates an example architecture for an entity database according to some embodiments.
  • FIG. 5 illustrates an example entity trail for a user virtual machine entity associated with a virtualization environment according to some embodiments.
  • FIG. 6 illustrates an example context anchor entity ranking according to some embodiments.
  • FIG. 7 shows an example client user interface illustrating a list of virtual machines in a virtualization environment with associated attribute values according to some embodiments.
  • FIG. 8 shows an example client user interface illustrating selection of virtual machines in a virtualization environment according to some embodiments.
  • FIG. 9 shows an example client user interface illustrating filtering of entities and attributes in a search feature according to some embodiments.
  • FIG. 10 shows an example client user interface illustrating grouping entities and attributes in a search feature according to some embodiments.
  • FIG. 11 illustrates a UI displaying labels applied to the selected VM-type entities.
  • FIG. 12 shows an example client user interface illustrating a statistics display based on grouping and derived metrics according to some embodiments.
  • FIG. 13 illustrates sample statistics for the overall virtualization environment that may be maintained by the entity database according to some embodiments.
  • FIG. 14 illustrates a UI displaying a graphical overview representation of current state and other information for the selected and grouped VM-type entities.
  • FIG. 15 illustrates a UI displaying a graphical overview representation of current state and other information for a filtered subset of the VM-type entities currently existing in the virtualization environment.
  • FIG. 16 illustrates an example of range-based replication according to some embodiments.
  • FIG. 17 illustrates a block diagram of a computing system suitable for implementing particular embodiments.
  • DESCRIPTION OF EXAMPLE EMBODIMENTS
  • FIG. 1A illustrates a clustered virtualization system 100 according to particular embodiments. The architecture of FIG. 1A can be implemented for a distributed platform that contains multiple host machines 101 a-c that manage multiple tiers of storage. The multiple tiers of storage may include storage that is accessible through network 140, such as, by way of example and not limitation, cloud storage 126 (e.g., which may be accessible through the Internet), network-attached storage (NAS) 128 (e.g., which may be accessible through a LAN), or a storage area network (SAN). Unlike the prior art, the present embodiment also permits local storage 122 a-c that is incorporated into or directly attached to the host machine and/or appliance to be managed as part of storage pool 160. Examples of such local storage include Solid State Drives 125 (henceforth “SSDs”), Hard Disk Drives 127 (henceforth “HDDs” or “spindle drives”), optical disk drives, external drives (e.g., a storage device connected to a host machine via a native drive interface or a serial attached SCSI interface), or any other direct-attached storage. These storage devices, both direct-attached and network-accessible, collectively form storage pool 160. Virtual disks (or “vDisks”) may be structured from the physical storage devices in storage pool 160, as described in more detail below. As used herein, the term vDisk refers to the storage abstraction that is exposed by a Controller/Service VM (CVM) 110 to be used by a user VM 105. In particular embodiments, the vDisk may be exposed via iSCSI (“internet small computer system interface”) or NFS (“network file system”) and is mounted as a virtual disk on the user VM. In particular embodiments, vDisks may be organized into one or more volume groups (VGs). In particular embodiments, the virtualization environment may include two or more clusters.
  • Each host machine 101 a-c may run virtualization software, such as VMWARE ESX(I), MICROSOFT HYPER-V, REDHAT KVM, or NUTANIX AHV. The virtualization software includes hypervisor 130 a-c to create, manage, and destroy user VMs 105, as well as managing the interactions between the underlying hardware and user VMs 105. User VMs 105 may run one or more applications that may operate as “clients” with respect to other elements within virtualization system 100. Though not depicted in FIG. 1A, a hypervisor may connect to network 140. In particular embodiments, a host machine 101 may be a physical hardware computing device; in particular embodiments, a host machine 101 may be a virtual machine.
  • CVMs 110 a-c are used to manage storage and input/output (“I/O”) activities according to particular embodiments. These special VMs act as the storage controller in the currently described architecture. Multiple such storage controllers may coordinate within a cluster to form a unified storage controller system. CVMs 110 may run as virtual machines on the various host machines 101, and work together to form a distributed system 110 that manages all the storage resources, including local storage 122, NAS 128, and cloud storage 126. The CVMs may connect to network 140 directly, or via a hypervisor. Since the CVMs run independent of hypervisors 130 a-c, this means that the current approach can be used and implemented within any virtual machine architecture, since the CVMs of particular embodiments can be used in conjunction with any hypervisor from any virtualization vendor.
  • A host machine may be designated as a leader node within a cluster of host machines. For example, host machine 101 b, as indicated by the asterisks, may be a leader node. A leader node may have a software component designated to perform operations of the leader. For example, CVM 110 b on host machine 101 b may be designated to perform such operations. A leader may be responsible for monitoring or handling requests from other host machines or software components on other host machines throughout the virtualized environment. If a leader fails, a new leader may be designated. In particular embodiments, a management module (e.g., in the form of an agent) may be running on the leader node.
  • Each CVM 110 a-c exports one or more block devices or NFS server targets that appear as disks to user VMs 105 a-c. These disks are virtual, since they are implemented by the software running inside CVMs 110 a-c. Thus, to user VMs 105 a-c, CVMs 110 a-c appear to be exporting a clustered storage appliance that contains some disks. All user data (including the operating system) in the user VMs 105 a-c and reside on these virtual disks.
  • Significant performance advantages can be gained by allowing the virtualization system to access and utilize local storage 122 as disclosed herein. This is because I/O performance is typically much faster when performing access to local storage 122 as compared to performing access to NAS 128 across a network 140. This faster performance for locally attached storage 122 can be increased even further by using certain types of optimized local storage devices, such as SSDs. Further details regarding methods and mechanisms for implementing the virtualization environment illustrated in FIG. 1A are described in U.S. Pat. No. 8,601,473, which is hereby incorporated by reference in its entirety.
  • FIG. 1B illustrates data flow within an example clustered virtualization system 100 according to particular embodiments. As described above, one or more user VMs and a CVM may run on each host machine 101 along with a hypervisor. As a user VM performs I/O operations (e.g., a read operation or a write operation), the I/O commands of the user VM may be sent to the hypervisor running on the same host machine as the user VM. For example, the hypervisor may present to the virtual machines an emulated storage controller, receive an I/O command and facilitate the performance of the I/O command (e.g., via interfacing with storage that is the object of the command, or passing the command to a service that will perform the I/O command). An emulated storage controller may facilitate I/O operations between a user VM and a vDisk. A vDisk may present to a user VM as one or more discrete storage drives, but each vDisk may correspond to any part of one or more drives within storage pool 160. Additionally or alternatively, CVM 110 a-c may present an emulated storage controller either to the hypervisor or to user VMs to facilitate I/O operations. CVM 110 a-c may be connected to storage within storage pool 160. CVM 110 a may have the ability to perform I/O operations using local storage 122 a within the same host machine 101 a, by connecting via network 140 to cloud storage 126 or NAS 128, or by connecting via network 140 to local storage 122 b-c within another host machine 101 b-c (e.g., via connecting to another CVM 110 b or 110 c). In particular embodiments, any suitable computing system 1700 may be used to implement a host machine 101.
  • In particular embodiments, the clustered virtualization environment may include a distributed entity database for storing datacenter entities and the relationships between them, as represented by an entity-relationship graph. An entity database may support such an entity-relationship model by storing information related to the entity-relationship graph, such as entities, entity relationships, and time series information and statistics. The database may be sharded (a.k.a. distributed) across multiple nodes, and may have a query model optimized for the entity-relationship model that supports querying current and historical data, queries for keyword searches, watches for notifying clients on entity updates, and synchronization of data between database instances.
  • FIG. 2 illustrates the basic pattern of an entity-relationship graph 200, which may comprise an entity-type node 210 (e.g., a parent entity-type node) connected to a child entity-type node 212. In addition, a plurality of activity-type nodes may be connected to entity-type node 210, including an action-type node 220, an alert-type node 222, a metrics-type node 224, and an attributes-type node 226. As an example and not by way of limitation, each entity-type node (e.g., entity type node 210, child entity-type node 212, etc.) is connected to at least one of the activity-type nodes. For simplicity, only one node is shown in the basic structure of the entity-relationship graph 200, but this disclosure contemplates that each node type can comprise one or more nodes of that node type.
  • The schema of an entity-relationship graph (including relationships between entities) may be defined at runtime, and the entity-relationship graph may dynamically evolve as conditions change. As illustrated, each entity may have its own properties. In particular embodiments, each entity may also inherit properties from related entities (e.g., inheriting available actions from a parent). In particular embodiments, certain properties of an entity may represent the aggregated properties of its child entities (e.g., metrics data for a cluster entity may comprise the aggregated metrics data from its child entity nodes). Values for different attributes and/or metrics data for an entity may be generated by different sources (e.g., different services running in the virtualization environment and/or other entities). Particular entities may retain historical data relating to changes in its properties and/or metrics data (e.g., tracked statistical information). Such historical data may be retained together with timestamp information so that the evolving state of the virtualization environment is captured in an entity trail, as discussed further in relation to FIG. 5.
  • FIG. 3A illustrates an example entity-relationship graph 300 for entities associated with virtualization system 100. As shown in FIG. 3A, entity-type nodes may include a multi-cluster-type node 330, a cluster-type node 332, a host-type node 334, a virtual-machine-type node 336, a virtual-disk-type node 338, a protection-domain-type node 340, a container-type node 342, a network-interface-card-type node 344, a disk-type node 346, and a storage-pool-type node 348. In particular embodiments, the direction of the edge connecting the nodes indicates a child-parent relationship (e.g., the arrow goes from a child node to a parent node). As an example and not by way of limitation, cluster-type node 332 is a child node of multi-cluster-type node 330 and the parent node of protection-domain-type node 340 and container-type node 342. As another example and not by way of limitation, virtual-machine-type node 336 is a child node of protection-domain-type node 340, host type node 334, and container-type node 342, and a parent node of virtual-disk-type node 338.
  • FIG. 3B illustrates another example entity-relationship graph 300 for entities associated with virtualization system 100, together with example attributes, actions, metrics, alerts, and other information associated with the entities. As an example and not by way of limitation, cluster-type node 332 may be associated with action-type nodes 350 (e.g., settings, etc.), alert-type nodes 360, attribute-type nodes 370 (e.g., cluster name “C1”) and metric-type nodes 380 (e.g., I/O operations per second (“IOPS”), latency, etc.). As another example and not by way of limitation, virtual-machine-type node 336 may be associated with action-type nodes 350 (e.g., create, poweroff, clone, migrate, etc.), alert-type nodes 360 (e.g., alert types such as cpu, etc.), attribute-type nodes 370 (e.g., num vcpu, IP address, OS type, etc.), and metric-type nodes 380 (e.g., IOPS, latency, CPU utilization, diskspace usage, etc.).
  • FIG. 4 illustrates an example architecture for the entity database. The architecture may comprise a Cache Layer 430 on top of a Store Layer 420 on top of a Persistence Layer 410 (e.g., underlying data store and/or volume groups in the storage pool). The architecture may support a query processing process 442, put/delete processing process 444, and watches/alerts process 446. The architecture may also expose functionality via an API 450. Persistence Layer 410 may comprise persistent non-volatile storage of the database information. Cache Layer 430 may comprise storage of information that is expected to be retrieved frequently or in a relatively short time span, or any suitable transitory storage before moving data to persistent storage.
  • In particular embodiments, the Store Layer 420 handles requests from and responses to API layer 450 to store and retrieve data from Persistence Layer 410. The Store Layer 420 may handle building and updating database schemas by example, registering entity types and metrics types. As an example and not by way of limitation, Store Layer 420 may register a VM-type entity having an IP Address, Number of Virtual CPUs and OS Type attributes. Store Layer 420 may also handle creation, update and deletion of entities and attributes. As an example and not by way of limitation, Store Layer 420 may create a VM-type and populate the attributes described above. Furthermore, Store Layer 420 may update metrics associated with entities.
  • In particular embodiments, entity updates and stats updates are treated differently by the database. As an example and not by way of limitation, entity updates may be atomic and write-through, so that a read operations will obtain the most recent values associated with entities. However, metrics and statistics (e.g., cache usage, CPU usage, disk usage, and data transfer rate) may be lazily updated in order to improve database performance. Thus, a read operation on metrics may not yield the most recent data. Each attribute change of an entity is also stored as a metric so that attribute and metric values can be populated together as time series in an entity trail. In particular embodiments, metrics may be aggregated on hourly basis.
  • In particular embodiments, the database may store current entity state information as well as an entity trail for some or all entities. In particular embodiments, an entity trail may include some or all historical values for the entity, along with corresponding timestamps for each value. As an example and not by way of limitation, a Host entity may have one child VM entity at a time 1000, and then receive an update to initiate a second VM entity at time 1002, and then a third VM entity at time 1006. The database may store the first VM entity with associated timestamps 1000-1006 and the second VM entity with associated timestamps 1002-1006 in the entity trail. In this manner, the database may be able to track every entity's transition over time. Although this example manner of storing timestamps is described for ease of explanation, other suitable manners of storing timestamps may be used, as will be explained further. The entity database may store statistics indexed by certain dimensions to support efficient querying of stats data; additionally, the statistics can be de-normalized for fast data access. For example, the database may store statistics indexed by entity ID over a longer time range, which allows entity database to efficiently return statistics for a particular entity for long periods of time. Entity database data may also be grouped by entity type and metric, which may enable the database to efficiently return statistics for all entities of a particular type (e.g., all VMs) for a shorter time range.
  • In particular embodiments, the database may provide mechanisms to query and retrieve a current state of an entity, as well as the state of the entity at a specific point in the past, or the states within a time range. In particular embodiments, the database may provide mechanisms to query and retrieve past metrics. In particular embodiments, the database also provide future metrics through extrapolation or any suitable method of predicting future metrics. As an example and not by way of limitation, assuming a present time of 1000, a user may query the database for the CPU utilization of a Host-type entity from times 900-1100. The database may return a set of values and associated timestamps where values for timestamps 900-1000 correspond to observed values and values from 1000-1100 correspond to an extrapolation based on the slope of the observed curve. Metrics may be stored as raw values, or may be stored in buckets by using downsampling.
  • In particular embodiments, the database may provide a query language interface (e.g., SQL) to retrieve current and historical entity, attributes, and metrics data. As an example and not by way of limitation, the query language interface may support the following types of queries:
      • Point queries: retrieves an attribute value for a time range (e.g., fetch num_iops from VM1 for t1 to t2).
      • Filter queries: retrieves entities or attributes based on filtering using expressions on entity attributes and statistics (e.g., fetch num_iops for VMs with cpu_usage>50).
      • Grouping queries: retrieves entities or attributes grouped by entity attributes and statistics (e.g., fetch num_iops for all VMs grouped by cluster).
      • Sorting queries: retrieves entities or attributes sorted by parameters
      • Derived metrics: retrieves metrics based on expressions and rollup.
  • FIG. 5 illustrates an example entity trail for a UVM entity associated with the virtualization environment. As shown in FIG. 5, entity trail information captures changes (represented by stars) in configuration and/or state information for the UVM entity. For example, at time 1875, the UVM may have begun serving additional applications previously served by another UVM that failed, until the failed UVM was restarted at time 4000 and the applications were moved back to the restarted UVM. The corresponding changes to the UVM's Power_State and Memory_Size_Bytes entity attributes (other attributes may include, e.g., replication factor, provisioned CPU, Memory, SSD) may also be captured as part of the entity trail information for the UVM. In particular embodiments, tools for an administrator of the virtualization environment may enable the administrator to view the state of the virtualization environment at different points in time/time periods (e.g., actual past performance or predicted future performance). Such tools may also enable the administrator to easily roll back the state of the virtualization environment to a past point in time (e.g., in order to “reset” the state or perform testing). As an example and not by way of limitation, a user interface for such tools may simply incorporate a slider 510 (e.g., comprising an element 510A to select a start point of a time period and an element 510B to select an end point of the time period) to navigate forward and backward in the entity trail. As shown in FIG. 5, in particular embodiments, the user interface may provide the ability to select a time period and then display entity trail information in a graphical manner.
  • In particular embodiments, the database may use a data model where the basic unit is an “entity” identified by entity id. Entities may be atomically updated. Each entity may have a list of key/value pairs called attributes. For example an entity may have an id “VM#3,” a “name” attribute with “Webserver” as its value, and an “ip_address” attribute with “10.4.75.23” as its value.
  • In particular embodiments, entities may be organized into disjoint sets called shards for the purpose of distributing processing between multiple nodes. In particular embodiments, an entity may belong to exactly one shard. Processing of a shard (e.g., for caching, concurrency control, etc.) may be handled by a single node.
  • Entity modifications may be recorded to the entity trail. When an entity is updated, the previous value of the entity may be recorded into the trail. Thus, the trail would have the full history of entity modifications. Creations, updates and deletions may be treated the same way. In particular embodiments, when an entity is deleted, a “tombstone” record maintained in the DB as historical data. Entity modifications may be stamped with monotonically increasing wall-clock-based timestamps. The timestamps may be guaranteed to be unique within a shard. The guarantee may be implemented by maintaining one integer counter per shard that is atomically updated to the new timestamp with a higher value with every modification. In particular embodiments, the state of the virtualization environment at a time in the past may be resurrected from the captured entity trail.
  • In particular embodiments, the unique monotonically increasing timestamps may be used to track replicated changes. Data may be replicated across multiple database instances for various purposes such as, by way of example and not limitation, to provide global views, disaster recovery, run secondary analytics applications, etc. In particular embodiments, the database may track replicated modifications keeping the “last replicated” timestamp. Modifications may be replicated in the order of their timestamps, and after each modification is replicated, the “last replicated” timestamp may be advanced to account for replicated modifications.
  • In particular embodiments, the database may track timestamp ranges of replicated modifications, such that when all modifications that have timestamps between the bottom of the range and the top of the range are replicated, then the range is marked as replicated. Replicated ranges may be tracked in a map that contains non-overlapping ranges. If adjacent or overlapping ranges are replicated, the ranges in the map may be merged together, and thus the representation of replication state may be reduced. Assuming a scenario where all modifications are replicated (for example, due to updates at every time), the representation would only take one extra integer compared with an approach of keeping track of the “last replicated” timestamp.
  • Range-based replication state tracking may provide several benefits to the database. For example, independent failure modes: if one modification fails to replicate, other modifications still can be replicated; with “last replicated” timestamp any failure may stall further replication. Furthermore, range-based replication may allow modifications to be sent via multiple channels in any order, without having to serialize communication, while with “last replicated” timestamp ordering may need to be enforced. Moreover, range-based replication may provide the ability to replicate latest modifications before historical data. This may be beneficial for bootstrapping new replicas, since the current value of an entity may be more important for user scenarios than the entity trail. In particular embodiments, the database may not provide atomicity across entities, and each entity update may be applied independently from other entities.
  • FIG. 6 illustrates the context anchor entity ranking. As an example and not by way of limitation, the numbers in the bottom right corner of each box show the rankings that the searched entities would get if VM#3 is specified as a context anchor entity.
  • In particular embodiments, all ranks may be combined into the relevance rank that is used to sort the search results, so that the most relevant results may be at the beginning of the result list. In particular embodiments, the relevance score calculation algorithm for each entity may be as follows:
      • for each attribute, an individual attribute rank may be a sum of the match closeness and the relevant attribute rank
      • an entity attribute rank is calculated as the maximum of individual attribute ranks
      • the relevance score may be calculated as the sum of entity attribute rank, related entity rank and context anchor entity rank.
  • Although the present disclosure describes calculating the relevance score for entities in a particular manner, the present disclosure contemplates calculating the relevance score in any suitable manner.
  • Entities in the database may be linked in a hierarchical manner using “parent” links. An entity may have any number of parents. For example, an entity with identifier “VM#3” could have a parent entity with identifier “Node#22,” in which case the “VM#3” entity would have a parent link pointing to “Node#22” entity.
  • Entities of interest may be retrieved using the above described query functionality. In particular embodiments, a caller may pass a search substring and attributes to match. As an example and not by way of limitation, if the caller issued a search request with attribute_to_look_for=“name” and sub_string_to_match=“server”, then the caller may get “VM#3” that has “name” attribute with the “Webserver” value.
  • Entities of interest may be retrieved using the above described query functionality. In particular embodiments, a caller may pass a search substring and attributes to match. As an example and not by way of limitation, if the caller issued a search request with attribute_to_look_for=“name” and substring_to_match=“server”, then the caller may get “VM#3” that has “name” attribute with the “Webserver” value.
  • A Search may return results in order of relevance (e.g., most relevant first). In particular embodiments, the relevance order may be determined by a relevance score or rank assigned to entities as a result of a ranking algorithm. In particular embodiments, the relevance score may be calculated based on several rankings of the following relevance signals:
      • match closeness
      • relevant attributes
      • related entities
      • contextual entities
  • In particular embodiments, match closeness reflects how similar the resulting value is to the provided search substring. As an example and not by way of limitation, there may be three levels of match closeness: full match (the value is equal to the provided substring), prefix match (the provided substring is the prefix of the value), and any other match. As an example and not by way of limitation, in the case of full match the rank is 3, in the case of prefix match the rank is 2, and in the case of other match the rank is 1.
  • The caller of the search request may specify relevant attributes as one of the ways to specify context for search. For example, the caller might want entities that have a match in “ip_address” attribute to be ranked higher in the search results than entities with matches in other attributes. In particular embodiments, the rank that is assigned when a relevant attribute matches may be specified by the caller. As an example and not by way of limitation, the caller may specify relevant_attribute={“ip_address”, 3} to signify that a match in “ip_address” attribute would result in assigning a rank of 3.
  • In particular embodiments, the caller of search may specify related entities as one of the ways to specify context for search. As an example and not by way of limitation, the caller might want descendants of “node#22” (e.g., VMs, virtual disks, virtual NICs, etc.) to be ranked higher than other entities. In particular embodiments, the caller specifies the rank that is assigned when an entity is a descendant of a relevant ancestor. As an example and not by way of limitation, the caller may specify relevant ancestor={“node#22”, 3} to signify descendants of node#22 have a rank of 3).
  • In particular embodiments, the caller of search may provide contextual or “context anchor” entities that are relevant to the search context. The context anchor entities may affect ranking of the search results. In particular embodiments, context anchor entities are identified from the context under which the search query was generated. As an example and not by way of limitation, a search context may be that a user is looking at a screen that shows VM#3 details and starts typing a search query. The interface may then pass VM#3 as a context anchor entity argument in the search request. In particular embodiments, the interface may provide auto-complete suggestions (where auto-complete uses search) that include entities that are related to VM#3.
  • In particular embodiments, a rank calculation may be performed for entities related to “anchor” entities. In particular embodiments, the rank of an entity is the path length between the ranked entity and the contextual entity in the entity relationship graph. In particular embodiments, the depth of traversal may be limited to a predetermined length (e.g., 3).
  • In particular embodiments, the relevance rank calculation algorithm may combine the above ranks. In particular embodiments, all entities initially have a rank of 0 and a context anchor entity itself may be assigned a predetermined rank (e.g., 3). In particular embodiments, the parents and children of the context anchor entity are assigned a lesser predetermined rank (e.g., 2) and the parents and children of those an even lesser predetermined rank (e.g., 1).
  • In particular embodiments, after an entity's information is updated with new information, the prior values for the entity are recorded in the entity database, along with associated timestamp that record the time when the entity had the prior values. In particular embodiments, the entity database may take a snapshot of all entities periodically (e.g., every 30 seconds, every 5 minutes, twice a day, etc.). By taking periodic snapshots, particular embodiments may avoid the burden of reading logs from the beginning of time in order to get the entire list of available entities and their states at a particular timestamp in the past. The entity database may also store the entity's statistics, such as, resource usage (e.g., CPU utilization, memory availability, storage availability, etc.). In particular embodiments, entity statistics may be downsampled by aggregating the information (e.g., taking the average, sum, minimum, maximum) over a time period. In this manner, instead of storing the prior values, the entity database may record less information where the information is representative of the prior values. In particular embodiments, such downsampling may continually occur as the entity statistics are collected (e.g., in order to reduce the volume of such logged information). In addition, older raw and/or downsampled statistics may be discarded as they expire (e.g., fall out of a rolling window of time, such as six months after the present time). In particular embodiments, certain common aggregation operations may be precomputed prior to receiving a relevant query in order to reduce latency.
  • In particular embodiments, the entity database may model real world objects as entities. Each entity may be identified by an entity unique identifier, such as a globally unique identifier (GUID). As an example and not by way of limitation, each entity may have an (entity type, id) pair and contain one or more attributes and metrics, each with a name and values represented as (time, value) pairs. As an example and not by way of limitation, an entity for a VM object may have an id “vm1”, an attribute “vm_name” with a value (t1, “controller_vm1”), and metric “cpu_usage_percentage” with a value (t2, “60”). The attributes may also be used to express relationship between entities. In the above example, the VM entity may have a “node” attribute with a value “node1”, which means that node1 is the parent entity of vm1. In particular embodiments, attribute updates may be fail-safe whereas metric updates may be lossy.
  • In particular embodiments, the entity database may provide a mechanism for transforming different database schemas into a single, unified schema. As an example and not by way of limitation, one or more database schemas describing portions of the virtualization environment may be combined into a unified schema that contains all information of the environment. In particular embodiments, rules describing on how to transform database schemas into a unified schema may specified in a template or configuration file and may include the following:
      • 1. entity id conversion,
      • 2. attribute and metric addition/deletion/renaming,
      • 3. conversion of attributes to metrics,
      • 4. suppression of entity/attribute updates while still supporting addition of metric information, and
      • 5. defining version-specific schema conversion.
  • Entity ID conversion. In particular embodiments, the entity database server may receive entity data associated with a portion of the virtualization environment. As an example and not by way of limitation, the entity database server may receive data from multiple registered clusters of computers that user a different database schemas. The entities received by the entity database may have cluster-wide (but not globally) unique IDs. In particular embodiments, before we add those entities to the entity database, the entity IDs are converted into globally unique identifiers. In particular embodiments, the entity database makes use of an attribute value that is globally unique. In the above VM example, the entity database may derive the entity ID from a “vm_uuid” attribute. The resultant VM entity may then have a “transformed” globally unique entity ID.
  • Attribute/Metric addition, deletion and renaming: In particular embodiments, there may attributes or metrics that do not have significance in the unified data model, and the entity database may ignore them. As an example and not by way of limitation, an older schema may have a “node” entity with a “vm_ids” attribute that specifies a list of VMs attached to the node. However, the entity database may include attributes that define a parent-child relationship, as explained above, and therefore a list of attached VMs may be redundant. As a result, the entity database may ignore the list. Similarly, attributes may be renamed to create the parent-child relationship in the entity database. As an example and not by way of limitation, the older schema database may contain a VM entity, vm1, that has a “node_uuid” attribute with value “node1.” In the entity database, the corresponding attribute would be “node”, so the entity database may rename this attribute name to “node” before adding it to the database. The attribute value may remain unchanged. Therefore, after the rename operation, the entity database may have a “vm” entity that has an implicit reference to a “node” entity with id “node1”.
  • Conversion of attributes to metrics: Since the entity database may provide fail-safe guarantees for attributes, such updates may be more expensive than metric updates. In particular embodiments, the entity database may convert attributes to metrics. As an example and not by way of limitation, if the entity database receives updates for certain attributes very frequently, those attributes may be converted to metrics in order to reduce the number of fail-safe updates needed. In particular embodiments, metrics updates in the entity database are not write-through.
  • Suppression of entity updates: In particular embodiments, the schema transformation may be used to suppress entity updates while still allowing metrics data into the entity database. As an example and not by way of limitation, an entity attribute may be transformed into a metrics type attribute when the entity database does not want fail-safe updates for the attribute.
  • Version-specific schema conversion: In particular embodiments, the schema conversion for the entity database may be driven by a version-specific configuration. As an example and not by way of limitation, the entity database may be configured to suppress entity updates when the data is received from a cluster running a specific version of software (e.g., Nutanix OS). In particular embodiments, the cluster version may be specified in the configuration file as a regular expression string.
  • In particular embodiments, a “user interface” (UI) framework may be used for “dynamically” presenting entities in a virtualization environment, to permit relevant information about particular entities to be presented to a particular user or client. In particular embodiments, the framework may enable presentation of any arbitrary entity or resource or group or combination thereof (homogeneous or heterogeneous). In particular embodiments, the framework may retrieve or construct an entity schema and an object that describes the entity or entities. Based on the schema, the framework may be able to generate visualizations to present the data. In particular embodiments, the framework may be also dynamically able to filter, group, sort, rank/order, and color-code the entities and/or resources, as well as providing the functionality to take actions on a selected group of items. In particular embodiments, the framework may also provide different types of graphical representations of entities and/or resources in the virtualization environment. In particular embodiments, the framework may provide an API and/or libraries enabling creation of customized versions of the GUI features. In particular embodiments, the following components may make up the framework:
  • Dynamic Entity Presentation: In particular embodiments, arbitrary entity types may be presented into the framework with no hard-coded data for how to present the entity information. Each entity type may be described by its schema, and all the other pieces of the framework may adhere to this schema in determining the presentation method.
  • Visualizations: In particular embodiments, a framework may be a plugin framework for displaying visualizations of the entity-relationship graph in a user interface so that the full user interface may be created based on the definition of a few content files. In particular embodiments, the framework may allow a finite number of types of visualizations or user interfaces, with the option to add more. As an example and not by way of limitation, the framework may initially allow three types of visualizations, but more visualizations may be plugged in. In particular embodiments, each visualization may have a consistent interface and the framework keeps all visualizations synchronized.
  • Perspectives: In particular embodiments, the framework may provide for grouping of related attributes of an entity type into perspectives. In particular embodiments, the framework may permit an additional dimension of presenting related information. As an example and not by way of limitation, instead of a flat presentation of all attributes on a single user interface, users may specify groups of attributes of interest to be placed into different perspectives (e.g. layers) and switch between them.
  • Filtering: In particular embodiments, the framework may automatically generate and present one-click filtering for the entity type. In particular embodiments, the one-click filtering may provide a very fast and smooth presentation of data to the users with minimal user input. In particular embodiments, for continuous data, filter ranges may be dynamically created based on the data available and presented to the user.
  • Coloring: In particular embodiments, entities and/or resources may be colored by attributes to distinguish the entities and/or resources for presentation. In particular embodiments, the use of color may provide a visual data exploratory interface. As an example and not by way of limitation, an interactive legend may be provided to identify each color group to the user and what a particular color signifies.
  • Grouping: In particular embodiments, entities may be placed into groups. In particular embodiments, determination of a grouping for an entity may be based on user input. In particular embodiments, multiple users may provide input for a particular entity. The UI framework may determine whether the multiple inputs can be reconciled. If not, the UI framework may select a “winning” user input based on information known about each user. As an example and not by way of limitation, two users may provide inputs to define a particular entity, where one user is designated a “premium” user. The UI framework may prioritize the premium user's input over another user. In particular embodiments, the determine of a group for an entity may be automatically determined by the UI framework. As an example and not by way of limitation, entities may be placed into groups based on common activity-type nodes associated with those entities. In particular embodiments, one entity may be associated with a plurality of groups. In particular embodiments, the visual presentation of a group of entities may further include information regarding the children of the entities in the group.
  • Point in time analysis: In particular embodiments, each set of data presented in the UI framework for searches and presentation of entities and/or resources may correlate to a point in time or time period. In particular embodiments, the entity browser may show the latest entity information by default. In particular embodiments, using UI configuration features, the browser may present data at any arbitrary time range. In particular embodiments, the UI framework may provide the user with elements to navigate back and forth through different points in time through the presentation of entity information.
  • Selection Set: In particular embodiments, when browsing or searching for entities and/or resources, the user may select one or more entities or resources and use them for later analysis. In particular embodiments, the UI frame work may treat the selected set as a dynamic set of entities that may adhere to all filters, group-by, coloring, and visualization features of the entity browser.
  • Labels: In particular embodiments, when browsing or searching for entities and/or resources, the UI framework may enable the user to select one or more entities or resources, and further create and apply labels to the selected entities or resources. As an example and not by way of limitation, the user may submit a complex query bringing up search results of the query, and then apply a bulk label to some or all of the entities and/or resources in the search results. in this example, the UI framework may subsequently enable provide the ability to display, filter, group, sort, rank/order, color-code, and/or take actions on the entities and/or resources by label. In particular embodiments, more than one label may be applied to any given entity or resource.
  • Actions: In particular embodiments, when browsing or searching for entities, the user can select entities and apply actions to the selected entities and/or resources. In particular embodiments, a “shopping-cart” style feature may enable the user to perform multiple rounds of selecting entities and/or resources (e.g., after searching, browsing, grouping, filtering, sorting, etc.), and then perform a single action upon all entities and/or resources in the “shopping-cart.” In particular embodiments, the UI framework may then execute all designated actions from the shopping-cart on the designated entities and/or resources.
  • FIG. 7 illustrates an example embodiment of the UI framework with a display of all VM-type entities currently existing in the virtualization environment. The list of entities may be sorted by any of several attributes 720, including, for example, name, host machine/hardware node, storage (total capacity or available), CPU usage, memory usage, status, or available actions. The list of displayed items (e.g., attributes, properties, statistical data, etc.) may differ between different entity types. In the example of FIG. 7, a user may also select other entity-types 710 to view the entities of those types in the virtualization environment. In this example, the user may select storage pools, containers, hosts, disks, protection domains, remote sites, NICs, virtual disks, or snapshots.
  • FIG. 8 illustrates a query results UI framework enabling selection of certain VM-type entities currently existing in the virtualization environment. In the example of FIG. 8, a user may click on checkboxes 810 next to each entity displayed in order to select the corresponding entity. In particular embodiments, the user may then perform actions or apply labels to the checked entities only.
  • FIG. 9 illustrates a UI enabling application of various filters to the selected VM-type entities. The UI may include a window 910 to display various filtering options. Filtering options may include filtering by label 920, so that a user may select one or more labeled that have already been applied to the entities, and the UI may present only those entities with the selected labels. Another example of a filter may be by cluster 930. The entities presented in the UI may already be assigned to one or more clusters, and the user may select which clusters he or she would like to view. Another filtering option may be a text search field 940 which may enable a user to search for a particular VM by name, if it is known. Another filter 950 may specify a particular attribute of the entity. In the example of FIG. 9, filter 950 may differentiate entities based on their disk capacity, so that a user may filter and view only those entities with a certain amount of disk space. In particular embodiments, any other attribute of the entities may be selected, such as available disk capacity, CPU type or speed, or network bandwidth. In particular embodiments, a user may view additional filtering options through a user element 960.
  • FIG. 10 illustrates a UI enabling grouping of the selected VM-type entities by different attributes or properties (e.g., grouping VMs by OS). In particular embodiments, the grouping of VM-type entities may be based on the application of one or more filters, as discussed in FIG. 9. In the example of FIG. 10, there are two groups 1010 and 1020 presented. Group 1010 includes VM-type entities with the operating system Ubuntu Server 14.X LTS, and includes 409 VM-type entities and eight hosts. Group 1020 includes VM-type entities with the operating system Microsoft Windows Server R2, and includes 155 VM-type entities and five hosts. In particular embodiments, a user may further filter within a group, export the information for the particular group, or perform any other action as he or she would for the overall set of entities in the virtualization environment.
  • FIG. 11 illustrates a UI displaying labels applied to the selected VM-type entities. In particular embodiments, a corresponding UI may enable creation of labels that may then be applied to one or more selected entities. In the example of FIG. 11, the UI may present information about each entity in a separate window. A user may select a particular entity and select one or more labels to apply to the selected entity through element 1110 which may appear in response to the user selection of the entity. Once the user has selected one or more labels, the UI framework may apply those labels to the selected entity.
  • FIG. 12 illustrates a UI displaying group-based statistics and other information for the selected and grouped VM-type entities. In the example of FIG. 12, the selected groups are similar to the groups of entities created in the example of FIG. 10. In the FIG. 12 interface, the UI displays attributes and metrics-based information about the combined set of entities in each group. For example, for the first group of Ubuntu VM-type entities, the UI displays the total number of hosts and VMs, the status of the VMs (e.g. active, suspended, or off), the amount of storage space being used, the current CPU usage for the group of entities, and memory usage.
  • FIG. 13 illustrates a UI displaying overall statistics and other information for all VM-type entities currently existing in the virtualization environment. In the example of FIG. 13, the total number of VM-type entities, total disk capacity, total memory capacity, minimum, average, and maximum values for IOPs, bandwidth, and latency, etc. In particular embodiments, a user may select one of the presented elements and view more information about the characteristic, or about the entity representing that value. As an example and not by way of limitation, if a user selects the element displaying the maximum bandwidth, the UI may switch the display to present information about the particular VM-type entity corresponding to that bandwidth. As another example, if a user selects the element displaying the total disk capacity, the UI may switch the display to present an individual breakdown of disk capacity by entity or by group.
  • FIG. 14 illustrates a UI displaying a graphical overview representation of current state and other information for host (machine) entities. Such a graphical representation may enable manual selection of displayed items. In the example of FIG. 14, a UI may display icons (e.g. a circle) for each of the hosts on which one or more VMs have been established, wherein the icons are sorted by power state. Each of the icons may further be colored or otherwise marked to indicate the corresponding entity's current power status, such as on, suspended, or off. In particular embodiments, the user may select one or more entities simply by clicking on the corresponding icon, which may be marked with a check to indicate the selection. In particular embodiments, once the user has finished selecting one or more entities, he or she may perform additional actions or apply labels to the selected entities.
  • FIG. 15 illustrates a UI displaying a graphical overview representation of current state and other information for a filtered subset of the VM-type entities currently existing in the virtualization environment. This may be similar to the example of FIG. 14 however the VM-type entities are no longer grouped by an attribute such as host machine. The icons may be differentiated in appearance to indicate that entity's current status. The user may select one or more entities by clicking on the corresponding icons, and perform additional actions or apply labels to the selected entities.
  • In particular embodiments, in a hyper-converged scale-out infrastructure, the end user may be faced with the problem of performing one or more operations on a large number of entities that are hosted in a remote/distributed environment. To enable such operations, particular embodiments may provide a workflow or user interface that allows users to make a single request, which may be internally translated into localized requests that may then be performed on each of the individual nodes in the distributed environment.
  • In particular embodiments, to enable taking actions on different type of entities, special logic in the frontend may provide pre-validation feedback before given actions are made available to the user. As an example and not by way of limitation, a user may want to power off three VMs of different cluster versions, but one of the three versions that the user has selected may not support a power-off action. In particular embodiments, the UI may have special logic to notify the user that such an action cannot be performed on one of those three selected VMs. In particular embodiments, the workflow may enable the user to track the progress of their action in real time. In order to support a distributed environment, particular embodiments may provide resiliency for the request from the central location by resuming the request from the point of failure should the central location go down.
  • In particular embodiments, the workflow may provide a sophisticated visualization of the progress of these tasks by automatically converging the progress of individual tasks into a parent task for easy perception. As an example and not by way of limitation, a task structure may be as follows:
  • {
     ″status″: ″kSucceeded″,
     ″internal_task″: false,
     ″cluster_uuid″: ″27f1b89f-8b56-458b-a082-fa8bf6c51452″,
     ″internal_opaque″: ″<bytes represent internal objects>″,
     ″logical_timestamp″: 6,
     ″deleted″: false,
     ″subtask_uuid_list″: [″4af3a50f-a353-47bf-92a1-89431d5c5dab″],
     ″component″: ″kPrismCentral″,
     ″start_time_usecs″: 1455234405731588,
     ″percentage_complete″: 100,
     ″canceled″: false,
     ″sequence_id″: 7,
     ″last_updated_time_usecs″: 1455234408734287,
     ″create_time_usecs″: 1455234405635435,
     ″operation_type″: ″kPrismFanout″,
     ″complete_time_usecs″: 1455234408734299,
     ″message″: ″″,
     ″uuid″: ″afbe1946-fcbe-45df-aa24-2b1693af8333″
    }
  • In particular embodiments, users may be enabled to perform bulk operations in a vendor-agnostic, heterogeneous data center without tying the user to a particular hypervisor. In particular embodiments, this may simplify the data center operations with crash resistance and real time progress tracking. In particular embodiments, in addition to allowing the user to perform bulk actions from centralized location, users may be enabled to perform heterogeneous actions in the same action flow. As an example and not by way of limitation, the end user may make use of the user interface to both power on and power off thousands of VMs from a centralized location with a single request.
  • In particular embodiments, the workflow may use only one process thread throughout the process regardless the number of the target entities. Since most of the local jobs are expected done within 1 minute, the process is expected to complete within a short duration. In particular embodiments, the workflow may provide a five-minute maximum for all jobs to be done and synced back to the centralized location. In particular embodiments, if some jobs are not completed within five minutes, failure or error may be presumed, and so the process may be terminated in the centralized location, and the parent task may be marked as “failed” with a detailed reason attached.
  • FIG. 16 illustrates an example of range-based replication according to some embodiments. Suppose initially the replica contained no changes, and then a change with the range [990 . . . 1000) is replicated. The replica may apply the change and account for it in the replication state. As shown by 1610, the replication state could be described by the map of the following ranges {990, 1000}.
  • Suppose now a change with the range [1100 . . . 1110) is replicated. The replica can apply the change and account for it in the replication state. As shown by 1620, the replication state could be described by the map of the following ranges {990, 1000}, {1100, 1110}.
  • Suppose now a change with the range [1000, 1100) got replicated. As this change is adjacent to the existing ranges, all ranges can now be merged into one range. As shown by 1630, the replication state could be described by the map of the following ranges {990, 1110}.
  • Thus, the range based replication state can represent replicated changes efficiently, and may be more precise than a “latest” timestamp value.
  • Entities in the database may be linked in a hierarchical manner using “parent” links. An entity may have any number of parents. For example, an entity with identifier “VM#3” could have a parent entity with identifier “Node#22,” in which case the “VM#3” entity would have a parent link pointing to “Node#22” entity.
  • FIG. 17 is a block diagram of an illustrative computing system 1700 suitable for implementing particular embodiments. In particular embodiments, one or more computer systems 1700 may perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more computer systems 1700 may provide functionality described or illustrated herein. In particular embodiments, software running on one or more computer systems 1700 may perform one or more steps of one or more methods described or illustrated herein or provide functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems 1700. Herein, reference to a computer system may encompass a computing device, and vice versa, where appropriate. Moreover, reference to a computer system may encompass one or more computer systems, where appropriate.
  • This disclosure contemplates any suitable number of computer systems 1700. This disclosure contemplates computer system 1700 taking any suitable physical form. As example and not by way of limitation, computer system 1700 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a mainframe, a mesh of computer systems, a server, a laptop or notebook computer system, a tablet computer system, or a combination of two or more of these. Where appropriate, computer system 1700 may include one or more computer systems 1700; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 1700 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 1700 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 1700 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
  • Computer system 1700 may include a bus 1706 (e.g., an address bus and a data bus) or other communication mechanism for communicating information, which interconnects subsystems and devices, such as processor 1707, system memory 1708 (e.g., RAM), static storage device 1709 (e.g., ROM), disk drive 1710 (e.g., magnetic or optical), communication interface 1714 (e.g., modem, Ethernet card, a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network, a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network), display 1711 (e.g., CRT, LCD, LED), input device 1712 (e.g., keyboard, keypad, mouse, microphone). In particular embodiments, computer system 1700 may include one or more of any such components.
  • According to particular embodiments, computer system 1700 performs specific operations by processor 1707 executing one or more sequences of one or more instructions contained in system memory 1708. Such instructions may be read into system memory 1708 from another computer readable/usable medium, such as static storage device 1709 or disk drive 1710. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments are not limited to any specific combination of hardware circuitry and/or software. In one embodiment, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the invention.
  • The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 1707 for execution. Such a medium may take many forms, including but not limited to, nonvolatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 1710. Volatile media includes dynamic memory, such as system memory 1708.
  • Common forms of computer readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
  • In particular embodiments, execution of the sequences of instructions to practice the invention is performed by a single computer system 1700. According to other embodiments, two or more computer systems 1700 coupled by communication link 1715 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice the invention in coordination with one another.
  • Computer system 1700 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 1715 and communication interface 1714. Received program code may be executed by processor 1707 as it is received, and/or stored in disk drive 1710, or other non-volatile storage for later execution. A database 1732 in a storage medium 1731 may be used to store data accessible by the system 1700 by way of data interface 1733.
  • Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.
  • The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Furthermore, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative.

Claims (18)

1. A system for managing a virtualization environment, comprising:
a plurality of host machines, wherein each of the host machines comprises a hypervisor, one or more user virtual machines (UVMs) and a virtual machine controller;
one or more virtual disks comprising a plurality of storage devices, the one or more virtual disks being accessible by the virtual machine controllers, wherein the virtual machine controllers conduct I/O transactions with the one or more virtual disks; and
wherein the system is further operable to:
store an entity-relationship graph representing elements in the virtualization environment, wherein each of the elements is represented by an entity-type node in the entity-relationship graph, and wherein relationships between the elements are represented by edges between the nodes;
receive a search query for information in the entity-relationship graph;
determine one or more search results that satisfy the search query, each search result comprising information associated with an entity-type node in the entity-relationship graph;
assign a rank to each of the one or more search results based on one or more related entity-type nodes; and
provide the search results based on the ranks.
2. The system of claim 1, wherein the search query specifies one or more attributes and associated weights, and the system is further operable to:
determine an attribute rank for each of search results based on a match closeness and the associated weight for the one or more attributes,
wherein the assigning the rank to each of the search results is further based on the corresponding attribute ranks.
3. The system of claim 1, wherein the search query specifies one or more of the related entity-type nodes and associated weights, and the system is further operable to:
determine an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding related entity ranks.
4. The system of claim 1, wherein the system is further operable to:
determine a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determine a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding contextual entity ranks.
5. The system of claim 4, wherein the context comprises a user interface displaying information associated with the identified related entity-type node, wherein the search query is initiated through the user interface.
6. The system of claim 1, wherein the search query specifies:
one or more attributes and associated attribute weights,
one or more of the related entity-type nodes and associated entity weights, and the system is further operable to:
determine a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determine an attribute rank for each of search results based on a match closeness and the associated attribute weight for the one or more attributes,
determine an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
determine a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the rank is assigned to each of the search results further based on the corresponding attribute ranks, the corresponding related entity ranks, and the corresponding contextual entity ranks.
7. A computer-implemented method for managing a virtualization environment, comprising:
storing an entity-relationship graph representing elements in the virtualization environment, wherein each of the elements is represented by an entity-type node in the entity-relationship graph, and wherein relationships between the elements are represented by edges between the nodes;
receiving a search query for information in the entity-relationship graph;
determining one or more search results that satisfy the search query, each search result comprising information associated with an entity-type node in the entity-relationship graph;
assigning a rank to each of the one or more search results based on one or more related entity-type nodes; and
providing the search results based on the ranks.
8. The method of claim 7, wherein the search query specifies one or more attributes and associated weights, and the method further comprises:
determining an attribute rank for each of search results based on a match closeness and the associated weight for the one or more attributes,
wherein the assigning the rank to each of the search results is further based on the corresponding attribute ranks.
9. The method of claim 7, wherein the search query specifies one or more of the related entity-type nodes and associated weights, and the method further comprising:
determining an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding related entity ranks.
10. The method of claim 7, further comprising:
determining a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determining a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding contextual entity ranks.
11. The method of claim 10, wherein the context comprises a user interface displaying information associated with the identified related entity-type node, wherein the search query is initiated through the user interface.
12. The method of claim 7, wherein the search query specifies:
one or more attributes and associated attribute weights,
one or more of the related entity-type nodes and associated entity weights, and the method further comprising:
determining a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determining an attribute rank for each of search results based on a match closeness and the associated attribute weight for the one or more attributes,
determining an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
determining a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding attribute ranks, the corresponding related entity ranks, and the corresponding contextual entity ranks.
13. One or more computer-readable non-transitory storage media embodying software for managing a virtualization environment, the software being operable when executed to:
store an entity-relationship graph representing elements in the virtualization environment, wherein each of the elements is represented by an entity-type node in the entity-relationship graph, and wherein relationships between the elements are represented by edges between the nodes;
receive a search query for information in the entity-relationship graph;
determine one or more search results that satisfy the search query, each search result comprising information associated with an entity-type node in the entity-relationship graph;
assign a rank to each of the one or more search results based on one or more related entity-type nodes; and
provide the search results based on the ranks.
14. The storage media of claim 13, wherein the search query specifies one or more attributes and associated weights, and the method further comprises:
determine an attribute rank for each of search results based on a match closeness and the associated weight for the one or more attributes,
wherein the assigning the rank to each of the search results is further based on the corresponding attribute ranks.
15. The storage media of claim 13, wherein the search query specifies one or more of the related entity-type nodes and associated weights, and the method further comprising:
determine an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding related entity ranks.
16. The storage media of claim 13, further comprising:
determine a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determine a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the assigning the rank to each of the search results is further based on the corresponding contextual entity ranks.
17. The storage media of claim 16, wherein the context comprises a user interface displaying information associated with the identified related entity-type node, wherein the search query is initiated through the user interface.
18. The storage media of claim 13, wherein the search query specifies:
one or more attributes and associated attribute weights,
one or more of the related entity-type nodes and associated entity weights, and the software being further operable when executed to:
determine a context under which the search query was generated, wherein one or more of the related entity-type nodes is identified based on the context;
determine an attribute rank for each of search results based on a match closeness and the associated attribute weight for the one or more attributes,
determine an related entity rank for each of search results based on the associated weight and the relationship between the entity-type node and the one or more of the specified related entity-type nodes,
determine a contextual entity rank for each of search results based on the relationship between the entity-type node and the one or more identified related entity-type nodes,
wherein the rank is assigned to each of the search results further based on the corresponding attribute ranks, the corresponding related entity ranks, and the corresponding contextual entity ranks.
US15/423,488 2016-02-12 2017-02-02 Entity database ranking Abandoned US20170235737A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/423,488 US20170235737A1 (en) 2016-02-12 2017-02-02 Entity database ranking

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662294980P 2016-02-12 2016-02-12
US15/423,488 US20170235737A1 (en) 2016-02-12 2017-02-02 Entity database ranking

Publications (1)

Publication Number Publication Date
US20170235737A1 true US20170235737A1 (en) 2017-08-17

Family

ID=59559709

Family Applications (11)

Application Number Title Priority Date Filing Date
US15/423,470 Abandoned US20170235816A1 (en) 2016-02-12 2017-02-02 Entity database data aggregation
US15/423,478 Abandoned US20170235782A1 (en) 2016-02-12 2017-02-02 Entity database notifications
US15/423,461 Active 2037-05-25 US10223150B2 (en) 2016-02-12 2017-02-02 Entity database framework
US15/423,468 Active 2037-05-25 US10489181B2 (en) 2016-02-12 2017-02-02 Entity database browser
US15/423,482 Abandoned US20170235769A1 (en) 2016-02-12 2017-02-02 Entity database schemas
US15/423,491 Active 2039-04-02 US10956192B2 (en) 2016-02-12 2017-02-02 Entity database historical data
US15/423,488 Abandoned US20170235737A1 (en) 2016-02-12 2017-02-02 Entity database ranking
US15/423,472 Active 2038-01-25 US10599459B2 (en) 2016-02-12 2017-02-02 Entity database distributed replication
US15/423,494 Abandoned US20170235817A1 (en) 2016-02-12 2017-02-02 Entity database feedback aggregation
US15/423,476 Active 2037-05-29 US10552192B2 (en) 2016-02-12 2017-02-02 Entity database timestamps
US15/423,477 Active 2039-02-23 US11003476B2 (en) 2016-02-12 2017-02-02 Entity database historical data

Family Applications Before (6)

Application Number Title Priority Date Filing Date
US15/423,470 Abandoned US20170235816A1 (en) 2016-02-12 2017-02-02 Entity database data aggregation
US15/423,478 Abandoned US20170235782A1 (en) 2016-02-12 2017-02-02 Entity database notifications
US15/423,461 Active 2037-05-25 US10223150B2 (en) 2016-02-12 2017-02-02 Entity database framework
US15/423,468 Active 2037-05-25 US10489181B2 (en) 2016-02-12 2017-02-02 Entity database browser
US15/423,482 Abandoned US20170235769A1 (en) 2016-02-12 2017-02-02 Entity database schemas
US15/423,491 Active 2039-04-02 US10956192B2 (en) 2016-02-12 2017-02-02 Entity database historical data

Family Applications After (4)

Application Number Title Priority Date Filing Date
US15/423,472 Active 2038-01-25 US10599459B2 (en) 2016-02-12 2017-02-02 Entity database distributed replication
US15/423,494 Abandoned US20170235817A1 (en) 2016-02-12 2017-02-02 Entity database feedback aggregation
US15/423,476 Active 2037-05-29 US10552192B2 (en) 2016-02-12 2017-02-02 Entity database timestamps
US15/423,477 Active 2039-02-23 US11003476B2 (en) 2016-02-12 2017-02-02 Entity database historical data

Country Status (1)

Country Link
US (11) US20170235816A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003731B2 (en) * 2018-01-17 2021-05-11 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for generating information
US20230350871A1 (en) * 2022-04-28 2023-11-02 Sap Se Efficiently Managing Changes To Master Data

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411327B2 (en) 2012-08-27 2016-08-09 Johnson Controls Technology Company Systems and methods for classifying data in building automation systems
US20140067869A1 (en) 2012-08-30 2014-03-06 Atheer, Inc. Method and apparatus for content association and history tracking in virtual and augmented reality
US10476757B1 (en) 2015-01-27 2019-11-12 Nutanix, Inc. Architecture for implementing centralized management for a computing environment
US10534326B2 (en) 2015-10-21 2020-01-14 Johnson Controls Technology Company Building automation system with integrated building information model
US11947785B2 (en) 2016-01-22 2024-04-02 Johnson Controls Technology Company Building system with a building graph
US11268732B2 (en) 2016-01-22 2022-03-08 Johnson Controls Technology Company Building energy management system with energy analytics
US11281700B2 (en) * 2016-02-01 2022-03-22 Global Software Innovation Pty Ltd Graph-based operations on an entity-relationship database
US20170235816A1 (en) 2016-02-12 2017-08-17 Nutanix, Inc. Entity database data aggregation
US10235782B2 (en) * 2016-03-14 2019-03-19 International Business Machines Corporation Increasing readability of visualization nodes
WO2017173167A1 (en) 2016-03-31 2017-10-05 Johnson Controls Technology Company Hvac device registration in a distributed building management system
US10417451B2 (en) 2017-09-27 2019-09-17 Johnson Controls Technology Company Building system with smart entity personal identifying information (PII) masking
US10901373B2 (en) 2017-06-15 2021-01-26 Johnson Controls Technology Company Building management system with artificial intelligence for unified agent based control of building subsystems
US11774920B2 (en) 2016-05-04 2023-10-03 Johnson Controls Technology Company Building system with user presentation composition based on building context
US10505756B2 (en) 2017-02-10 2019-12-10 Johnson Controls Technology Company Building management system with space graphs
US9558265B1 (en) * 2016-05-12 2017-01-31 Quid, Inc. Facilitating targeted analysis via graph generation based on an influencing parameter
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
KR102199275B1 (en) * 2016-07-13 2021-01-06 후아웨이 테크놀러지 컴퍼니 리미티드 Adaptive resource management in distributed computing systems
US10459939B1 (en) 2016-07-31 2019-10-29 Splunk Inc. Parallel coordinates chart visualization for machine data search and analysis system
US10861202B1 (en) 2016-07-31 2020-12-08 Splunk Inc. Sankey graph visualization for machine data search and analysis system
US10459938B1 (en) 2016-07-31 2019-10-29 Splunk Inc. Punchcard chart visualization for machine data search and analysis system
US11037342B1 (en) * 2016-07-31 2021-06-15 Splunk Inc. Visualization modules for use within a framework for displaying interactive visualizations of event data
US10853380B1 (en) 2016-07-31 2020-12-01 Splunk Inc. Framework for displaying interactive visualizations of event data
CA3035277A1 (en) 2016-09-02 2018-03-08 FutureVault Inc. Real-time document filtering systems and methods
US10684033B2 (en) 2017-01-06 2020-06-16 Johnson Controls Technology Company HVAC system with automated device pairing
US11900287B2 (en) 2017-05-25 2024-02-13 Johnson Controls Tyco IP Holdings LLP Model predictive maintenance system with budgetary constraints
US11764991B2 (en) 2017-02-10 2023-09-19 Johnson Controls Technology Company Building management system with identity management
US10854194B2 (en) 2017-02-10 2020-12-01 Johnson Controls Technology Company Building system with digital twin based data ingestion and processing
US11275348B2 (en) 2017-02-10 2022-03-15 Johnson Controls Technology Company Building system with digital twin based agent processing
US11307538B2 (en) 2017-02-10 2022-04-19 Johnson Controls Technology Company Web services platform with cloud-eased feedback control
US10515098B2 (en) * 2017-02-10 2019-12-24 Johnson Controls Technology Company Building management smart entity creation and maintenance using time series data
US10095756B2 (en) 2017-02-10 2018-10-09 Johnson Controls Technology Company Building management system with declarative views of timeseries data
US11360447B2 (en) 2017-02-10 2022-06-14 Johnson Controls Technology Company Building smart entity system with agent based communication and control
US11042144B2 (en) 2017-03-24 2021-06-22 Johnson Controls Technology Company Building management system with dynamic channel communication
US10788229B2 (en) 2017-05-10 2020-09-29 Johnson Controls Technology Company Building management system with a distributed blockchain database
US11022947B2 (en) 2017-06-07 2021-06-01 Johnson Controls Technology Company Building energy optimization system with economic load demand response (ELDR) optimization and ELDR user interfaces
US10496447B2 (en) * 2017-06-08 2019-12-03 Western Digital Technologies, Inc. Partitioning nodes in a hyper-converged infrastructure
US10474508B2 (en) * 2017-07-04 2019-11-12 Vmware, Inc. Replication management for hyper-converged infrastructures
CN108268580A (en) * 2017-07-14 2018-07-10 广东神马搜索科技有限公司 The answering method and device of knowledge based collection of illustrative plates
WO2019018304A1 (en) 2017-07-17 2019-01-24 Johnson Controls Technology Company Systems and methods for agent based building simulation for optimal control
US11733663B2 (en) 2017-07-21 2023-08-22 Johnson Controls Tyco IP Holdings LLP Building management system with dynamic work order generation with adaptive diagnostic task details
US11726632B2 (en) 2017-07-27 2023-08-15 Johnson Controls Technology Company Building management system with global rule library and crowdsourcing framework
US11314788B2 (en) 2017-09-27 2022-04-26 Johnson Controls Tyco IP Holdings LLP Smart entity management for building management systems
US10962945B2 (en) 2017-09-27 2021-03-30 Johnson Controls Technology Company Building management system with integration of data into smart entities
US20190096214A1 (en) 2017-09-27 2019-03-28 Johnson Controls Technology Company Building risk analysis system with geofencing for threats and assets
US11768826B2 (en) 2017-09-27 2023-09-26 Johnson Controls Tyco IP Holdings LLP Web services for creation and maintenance of smart entities for connected devices
CN109582433B (en) * 2017-09-29 2022-02-01 腾讯科技(深圳)有限公司 Resource scheduling method and device, cloud computing system and storage medium
CN107741875B (en) * 2017-10-20 2020-08-21 北京易思捷信息技术有限公司 Heterogeneous management system
US10809682B2 (en) 2017-11-15 2020-10-20 Johnson Controls Technology Company Building management system with optimized processing of building system data
US11281169B2 (en) 2017-11-15 2022-03-22 Johnson Controls Tyco IP Holdings LLP Building management system with point virtualization for online meters
US11127235B2 (en) 2017-11-22 2021-09-21 Johnson Controls Tyco IP Holdings LLP Building campus with integrated smart environment
US10776331B2 (en) 2017-11-27 2020-09-15 Red Hat, Inc. Normalizing compound artifact dependency data
US10700991B2 (en) 2017-11-27 2020-06-30 Nutanix, Inc. Multi-cluster resource management
CN108279880A (en) * 2018-01-26 2018-07-13 长春玖佰软件技术有限公司 A kind of configuration method of enterprise's application framework
EP3528186A1 (en) * 2018-02-19 2019-08-21 Siemens Aktiengesellschaft Method and system of providing access to time-series data in a cloud computing environment
US11294699B2 (en) 2018-06-29 2022-04-05 Hewlett Packard Enterprise Development Lp Dynamically scaled hyperconverged system establishing minimum supported interoperable communication protocol between clusters in a cluster group
US10904330B2 (en) * 2018-07-10 2021-01-26 Vmware, Inc. Systems, methods and apparatus to manage services in distributed systems
US20200073554A1 (en) * 2018-09-05 2020-03-05 International Business Machines Corporation Applying Percentile Categories to Storage Volumes to Detect Behavioral Movement
CN111083309B (en) * 2018-10-18 2022-04-01 北京魔门塔科技有限公司 Time alignment method of multi-sensor data and data acquisition equipment
US11016648B2 (en) 2018-10-30 2021-05-25 Johnson Controls Technology Company Systems and methods for entity visualization and management with an entity node editor
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US20200162280A1 (en) 2018-11-19 2020-05-21 Johnson Controls Technology Company Building system with performance identification through equipment exercising and entity relationships
CN109522498B (en) * 2018-11-19 2021-06-22 中国船舶重工集团公司第七一六研究所 Digital workshop heterogeneous terminal integrated display billboard method
US11775938B2 (en) 2019-01-18 2023-10-03 Johnson Controls Tyco IP Holdings LLP Lobby management system
US10788798B2 (en) 2019-01-28 2020-09-29 Johnson Controls Technology Company Building management system with hybrid edge-cloud processing
US11604786B2 (en) * 2019-04-26 2023-03-14 EMC IP Holding Company LLC Method and system for processing unstable writes in a clustered file system
US10996975B2 (en) * 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11894944B2 (en) 2019-12-31 2024-02-06 Johnson Controls Tyco IP Holdings LLP Building data platform with an enrichment loop
US11777758B2 (en) 2019-12-31 2023-10-03 Johnson Controls Tyco IP Holdings LLP Building data platform with external twin synchronization
US11442907B2 (en) * 2020-02-03 2022-09-13 Sap Se Automatic conversion of data models using data model annotations
US11537386B2 (en) 2020-04-06 2022-12-27 Johnson Controls Tyco IP Holdings LLP Building system with dynamic configuration of network resources for 5G networks
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11874809B2 (en) 2020-06-08 2024-01-16 Johnson Controls Tyco IP Holdings LLP Building system with naming schema encoding entity type and entity relationships
CN111723296B (en) * 2020-08-21 2020-12-15 浙江口碑网络技术有限公司 Search processing method and device and computer equipment
US11568862B2 (en) * 2020-09-29 2023-01-31 Cisco Technology, Inc. Natural language understanding model with context resolver
US11397773B2 (en) 2020-09-30 2022-07-26 Johnson Controls Tyco IP Holdings LLP Building management system with semantic model integration
US20220137575A1 (en) 2020-10-30 2022-05-05 Johnson Controls Technology Company Building management system with dynamic building model enhanced by digital twins
PT116969A (en) * 2020-12-23 2022-06-23 Altice Labs S A GENERATION OF A COMPUTER PLAN OF MAIN PERFORMANCE INDICATORS
JP2024511974A (en) 2021-03-17 2024-03-18 ジョンソン・コントロールズ・タイコ・アイピー・ホールディングス・エルエルピー System and method for determining equipment energy waste
CN112948063B (en) * 2021-05-17 2021-09-17 北京汇钧科技有限公司 Cloud platform creation method and device, cloud platform and cloud platform implementation system
US11769066B2 (en) 2021-11-17 2023-09-26 Johnson Controls Tyco IP Holdings LLP Building data platform with digital twin triggers and actions
US11899723B2 (en) 2021-06-22 2024-02-13 Johnson Controls Tyco IP Holdings LLP Building data platform with context based twin function processing
US20230076773A1 (en) * 2021-08-27 2023-03-09 Microsoft Technology Licensing, Llc Knowledge base with type discovery
US20230067688A1 (en) * 2021-08-27 2023-03-02 Microsoft Technology Licensing, Llc Knowledge base with type discovery
US11796974B2 (en) 2021-11-16 2023-10-24 Johnson Controls Tyco IP Holdings LLP Building data platform with schema extensibility for properties and tags of a digital twin
US11934966B2 (en) 2021-11-17 2024-03-19 Johnson Controls Tyco IP Holdings LLP Building data platform with digital twin inferences
US11704311B2 (en) 2021-11-24 2023-07-18 Johnson Controls Tyco IP Holdings LLP Building data platform with a distributed digital twin
US11714930B2 (en) 2021-11-29 2023-08-01 Johnson Controls Tyco IP Holdings LLP Building data platform with digital twin based inferences and predictions for a graphical building model
CN114866306B (en) * 2022-04-24 2022-12-23 北京丁牛科技有限公司 Safety protection method, device and storage medium
US11947551B2 (en) * 2022-05-27 2024-04-02 Maplebear Inc. Automated sampling of query results for training of a query engine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595262B1 (en) * 2012-03-29 2013-11-26 Amazon Technologies, Inc. Resource resolution in computing environments using directed graphs
US20140018889A1 (en) * 2012-07-10 2014-01-16 Regear Life Sciences Inc. Diathermy Applicator Garment
US20140188899A1 (en) * 2012-12-31 2014-07-03 Thomas S. Whitnah Modifying Structured Search Queries on Online Social Networks
US20170201851A1 (en) * 2016-01-11 2017-07-13 Facebook, Inc. Identification of Low-Quality Place-Entities on Online Social Networks

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031533A (en) 1996-07-03 2000-02-29 Sun Microsystems, Inc. Graphical user interface for use in a de-centralized network environment
US6011537A (en) 1997-01-27 2000-01-04 Slotznick; Benjamin System for delivering and simultaneously displaying primary and secondary information, and for displaying only the secondary information during interstitial space
US6098157A (en) 1998-04-24 2000-08-01 Shomiti Systems, Inc. Method for storing and updating information describing data traffic on a network
US20020054152A1 (en) 1999-08-23 2002-05-09 Murugan Palaniappan Menu infrastructure apparatus and method
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US7170864B2 (en) 2001-03-08 2007-01-30 Bmc Software, Inc. System and method for WAP server management using a single console
US7200662B2 (en) 2001-07-06 2007-04-03 Juniper Networks, Inc. Integrated rule network management system
US7093259B2 (en) 2001-12-20 2006-08-15 Cadence Design Systems, Inc. Hierarchically structured logging for computer work processing
US7693753B1 (en) 2002-01-31 2010-04-06 Karen Purdy System and method for presenting items and obtaining user selections of those items
EP1504412B1 (en) 2002-04-19 2018-04-11 CA, Inc. Processing mixed numeric and/or non-numeric data
GB2398893A (en) * 2003-02-27 2004-09-01 Cmed Group Ltd Hierarchical database system employing audit nodes
US20050283753A1 (en) 2003-08-07 2005-12-22 Denise Ho Alert triggers and event management in a relationship system
GB2425198B (en) 2003-11-13 2008-04-09 Commvault Systems Inc System and method for performing a snapshot
US8196044B2 (en) 2004-01-05 2012-06-05 Microsoft Corporation Configuration of user interfaces
US20090077623A1 (en) 2005-03-16 2009-03-19 Marc Baum Security Network Integrating Security System and Network Devices
US7595355B2 (en) 2004-06-24 2009-09-29 Agion Technologies, Inc. Antimicrobial coating for erosive environments
JP4756675B2 (en) * 2004-07-08 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション System, method and program for predicting computer resource capacity
US7936863B2 (en) 2004-09-30 2011-05-03 Avaya Inc. Method and apparatus for providing communication tasks in a workflow
CA2608269A1 (en) 2005-05-10 2006-11-16 Brent J. Angeline Internet operating system
US7386662B1 (en) * 2005-06-20 2008-06-10 Symantec Operating Corporation Coordination of caching and I/O management in a multi-layer virtualized storage environment
US7844442B2 (en) 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US8533350B2 (en) 2005-11-01 2013-09-10 Ravenwhite Inc. Method and apparatus for storing information in a browser storage area of a client device
US7711700B2 (en) 2005-11-28 2010-05-04 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US9455955B2 (en) 2006-05-17 2016-09-27 Richard Fetik Customizable storage controller with integrated F+ storage firewall protection
US20080015823A1 (en) 2006-06-16 2008-01-17 Tectonic Network, Inc. Extensible building information model toolset
US20080040661A1 (en) 2006-07-07 2008-02-14 Bryce Allen Curtis Method for inheriting a Wiki page layout for a Wiki page
US7571349B2 (en) 2006-08-18 2009-08-04 Microsoft Corporation Configuration replication for system recovery and migration
US20080091800A1 (en) 2006-10-13 2008-04-17 Xerox Corporation Local user interface support of remote services
US8655914B2 (en) 2006-10-17 2014-02-18 Commvault Systems, Inc. System and method for storage operation access security
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
US7949711B2 (en) 2007-01-24 2011-05-24 Chang Ypaul L Method, system, and program for integrating disjoined but related network components into collaborative communities
US9043391B2 (en) 2007-02-15 2015-05-26 Citrix Systems, Inc. Capturing and restoring session state of a machine without using memory images
US20120011509A1 (en) 2007-02-15 2012-01-12 Syed Mohammad Amir Husain Migrating Session State of a Machine Without Using Memory Images
EP2132629A1 (en) 2007-04-05 2009-12-16 Sentillion, Inc. Augmenting a virtual machine hosting environment from within a virtual machine
US8706976B2 (en) 2007-08-30 2014-04-22 Commvault Systems, Inc. Parallel access virtual tape library and drives
US8543994B2 (en) 2007-12-07 2013-09-24 Sap Ag Developing java server components without restarting the application server
US8601388B2 (en) * 2008-01-09 2013-12-03 International Business Machines Corporation Efficiently adjusting a timeline in a time window
US8175863B1 (en) 2008-02-13 2012-05-08 Quest Software, Inc. Systems and methods for analyzing performance of virtual environments
US9753712B2 (en) 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
WO2009132154A2 (en) 2008-04-22 2009-10-29 Medio Systems, Inc. Server-controlled user interface
US8473594B2 (en) * 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US8869015B2 (en) 2008-05-08 2014-10-21 Dialogic (Us) Inc. System and method to permit language independence for web interfaces
US7958442B2 (en) 2008-05-08 2011-06-07 Dialogic Corporation System and method to permit language independence for web interfaces
US7809833B2 (en) 2008-07-15 2010-10-05 International Business Machines Corporation Asymmetric dynamic server clustering with inter-cluster workload balancing
US8694991B2 (en) 2008-08-22 2014-04-08 Hewlett-Packard Development Company, L.P. Server virtualized using virtualization platform
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
GB0817197D0 (en) 2008-09-19 2008-10-29 Walsh Jason J Process development system
US8751229B2 (en) 2008-11-21 2014-06-10 At&T Intellectual Property I, L.P. System and method for handling missing speech data
US9037692B2 (en) 2008-11-26 2015-05-19 Red Hat, Inc. Multiple cloud marketplace aggregation
US9189284B2 (en) 2008-12-31 2015-11-17 Dell Products L.P. Systems and methods for managing computing resources within a network
US8621569B1 (en) 2009-04-01 2013-12-31 Netapp Inc. Intercluster relationship management
US8863237B2 (en) 2009-04-15 2014-10-14 Wyse Technology L.L.C. Remote-session-to-go method and apparatus
US20100333116A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US20110035802A1 (en) 2009-08-07 2011-02-10 Microsoft Corporation Representing virtual object priority based on relationships
US8402309B2 (en) 2009-10-12 2013-03-19 Vecam Software International Ltd. Item-level restoration and verification of image level backups
US9098834B2 (en) 2009-12-23 2015-08-04 Oracle International Corporation Task management using electronic mail
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
JP5386745B2 (en) * 2010-03-25 2014-01-15 株式会社日立製作所 Network monitoring server and network monitoring system
US20110252117A1 (en) 2010-04-12 2011-10-13 Swee Huat Sng Devices and Methods for Redirecting a Browser to Access Computer Resource Behind a Network Firewall
US9461996B2 (en) 2010-05-07 2016-10-04 Citrix Systems, Inc. Systems and methods for providing a single click access to enterprise, SAAS and cloud hosted application
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US8429203B2 (en) 2010-08-20 2013-04-23 Sap Ag UI driven service composition tool with UI designer feedback
US8699370B2 (en) 2010-08-24 2014-04-15 Euclid, Inc. Method and apparatus for analysis of user traffic within a predefined area
US8639748B2 (en) 2010-09-01 2014-01-28 Edgecast Networks, Inc. Optimized content distribution based on metrics derived from the end user
EP2625591A4 (en) 2010-10-05 2014-04-30 Citrix Systems Inc Touch support for remoted applications
US20130307854A1 (en) 2010-11-08 2013-11-21 Broy Hannah Karin Nora Method and System for Visualising a System Model
US20120117497A1 (en) 2010-11-08 2012-05-10 Nokia Corporation Method and apparatus for applying changes to a user interface
JP5681465B2 (en) 2010-12-02 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Information processing system, information processing apparatus, preparation method, program, and recording medium
US8510267B2 (en) 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
US8634330B2 (en) 2011-04-04 2014-01-21 International Business Machines Corporation Inter-cluster communications technique for event and health status communications
US9384032B2 (en) 2011-04-28 2016-07-05 Clearcenter, Corp. Methods, devices, and systems for establishing, setting-up, and maintaining a virtual computer infrastructure
US8671176B1 (en) 2011-04-29 2014-03-11 Juniper Networks, Inc. Virtual network prototyping environment
US9160630B2 (en) 2011-06-07 2015-10-13 Vmware, Inc. Network connectivity and security visualization
WO2013015696A1 (en) 2011-07-28 2013-01-31 Google Inc. Clustering of feedback reports
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US9927958B2 (en) * 2011-08-25 2018-03-27 Vmware, Inc. User interface for networks including virtual machines
US8898676B2 (en) 2011-08-26 2014-11-25 Vmware, Inc. Management of software updates for software components in a virtualized environment of a datacenter using dependency relationships
US9134992B2 (en) 2011-08-31 2015-09-15 Vmware, Inc. Interactive and visual planning tool for managing installs and upgrades
US8850512B2 (en) 2011-10-13 2014-09-30 Mcafee, Inc. Security assessment of virtual machine environments
US9003141B2 (en) 2011-11-14 2015-04-07 Ca, Inc. Enhanced software application platform
EP2783287A4 (en) 2011-11-23 2014-12-03 Ericsson Telefon Ab L M Method and apparatus for distributed processing tasks
KR101322401B1 (en) 2012-01-31 2013-10-28 주식회사 알티베이스 Apparatus and method for parallel processing in database management system for synchronous replication
US9268590B2 (en) 2012-02-29 2016-02-23 Vmware, Inc. Provisioning a cluster of distributed computing platform based on placement strategy
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US9081597B2 (en) 2012-11-27 2015-07-14 Red Hat Israel, Ltd. Database change compensation after a transaction commit
US9304998B2 (en) 2012-12-19 2016-04-05 Microsoft Technology Licensing, Llc Main-memory database checkpointing
US20140304407A1 (en) 2012-12-21 2014-10-09 Boundary, Inc. Visualizing Ephemeral Traffic
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US9164857B2 (en) 2013-01-30 2015-10-20 Hewlett-Packard Development Company, L.P. Scalable structured data store operations
KR20140098919A (en) 2013-01-31 2014-08-11 한국전자통신연구원 Method of providing virtual machine for real time virtual desktop service and service gateway of the same
US9665088B2 (en) * 2014-01-31 2017-05-30 Fisher-Rosemount Systems, Inc. Managing big data in process control systems
US20140282543A1 (en) 2013-03-15 2014-09-18 Ologn Technologies Ag Secure zone on a virutal machine for digital communications
US9432301B2 (en) 2013-04-29 2016-08-30 Telefonaktiebolaget L M Ericsson (Publ) Defining disjoint node groups for virtual machines with pre-existing placement policies
US20140337834A1 (en) 2013-05-08 2014-11-13 Amazon Technologies, Inc. User-Influenced Placement of Virtual Machine Instances
US9460187B2 (en) 2013-06-07 2016-10-04 Vmware, Inc. Creation of a graph database of a virtualization infrastructure
US9471357B2 (en) 2013-09-13 2016-10-18 American Megatrends, Inc. Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween
WO2015057211A1 (en) 2013-10-16 2015-04-23 Empire Technology Development, Llc Control redistribution among multiple devices
KR102102168B1 (en) 2013-10-21 2020-04-21 한국전자통신연구원 Appratus for a virtual desktop service and method thereof
US9798561B2 (en) 2013-10-31 2017-10-24 Vmware, Inc. Guarded virtual machines
US9397896B2 (en) 2013-11-07 2016-07-19 International Business Machines Corporation Modeling computer network topology based on dynamic usage relationships
US9276959B2 (en) * 2013-11-11 2016-03-01 Amazon Technologies, Inc. Client-configurable security options for data streams
US9317452B1 (en) 2013-11-18 2016-04-19 Amazon Technologies, Inc. Selective restrictions to memory mapped registers using an emulator
US9420004B2 (en) 2013-11-27 2016-08-16 Vmware, Inc. Dynamic expression evaluation based grouping of VM objects for networking and security services in a virtualized computing system
EP3080742A4 (en) 2013-12-11 2017-08-30 Intralinks, Inc. Customizable secure data exchange environment
US9239820B1 (en) 2014-01-08 2016-01-19 Workiva Inc. Method and apparatus for selective visual formatting of an electronic document using a style element lock status
US20150256475A1 (en) 2014-03-05 2015-09-10 Wipro Limited Systems and methods for designing an optimized infrastructure for executing computing processes
US10248618B1 (en) 2014-03-31 2019-04-02 EMC IP Holding Company LLC Scheduling snapshots
CA2950592C (en) 2014-04-18 2020-08-25 Thomas A. CONROY Method and system of a network of diffusers including a liquid level sensor
US9219819B1 (en) 2014-05-29 2015-12-22 CafeX Communications, Ltd. Load balancing and sharing of contextual information in a multi-vendor and/or multiple contact center environment
US9990170B2 (en) 2014-06-09 2018-06-05 Citrix Systems, Inc. Systems and methods for providing virtual monitors
US9804835B2 (en) 2014-06-11 2017-10-31 Microsoft Technology Licensing, Llc Dynamic pacing for service upgrades
US10375024B2 (en) 2014-06-20 2019-08-06 Zscaler, Inc. Cloud-based virtual private access systems and methods
US9767197B1 (en) 2014-08-20 2017-09-19 Vmware, Inc. Datacenter operations using search and analytics
CN105812170B (en) 2014-12-31 2019-01-18 华为技术有限公司 Failure analysis methods and device based on data center
US9424545B1 (en) 2015-01-15 2016-08-23 Hito Management Company Geospatial construction task management system and method
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US10536357B2 (en) 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US11429442B2 (en) 2015-06-29 2022-08-30 Vmware, Inc. Parallel and distributed computing using multiple virtual machines
US10977092B2 (en) 2015-10-16 2021-04-13 Qualcomm Incorporated Method for efficient task scheduling in the presence of conflicts
US10169601B2 (en) 2015-11-18 2019-01-01 American Express Travel Related Services Company, Inc. System and method for reading and writing to big data storage formats
US10455028B2 (en) 2016-01-20 2019-10-22 Hewlett Packard Enterprise Development Lp Allocating edge services with large-scale processing framework clusters
US20170235816A1 (en) 2016-02-12 2017-08-17 Nutanix, Inc. Entity database data aggregation
US10210048B2 (en) 2016-10-25 2019-02-19 Commvault Systems, Inc. Selective snapshot and backup copy operations for individual virtual machines in a shared storage
US20190334778A1 (en) 2016-11-30 2019-10-31 Nutanix, Inc. Generic access to heterogeneous virtualized entities
WO2018125989A2 (en) 2016-12-30 2018-07-05 Intel Corporation The internet of things

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595262B1 (en) * 2012-03-29 2013-11-26 Amazon Technologies, Inc. Resource resolution in computing environments using directed graphs
US20140018889A1 (en) * 2012-07-10 2014-01-16 Regear Life Sciences Inc. Diathermy Applicator Garment
US20140188899A1 (en) * 2012-12-31 2014-07-03 Thomas S. Whitnah Modifying Structured Search Queries on Online Social Networks
US20170201851A1 (en) * 2016-01-11 2017-07-13 Facebook, Inc. Identification of Low-Quality Place-Entities on Online Social Networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003731B2 (en) * 2018-01-17 2021-05-11 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for generating information
US20230350871A1 (en) * 2022-04-28 2023-11-02 Sap Se Efficiently Managing Changes To Master Data

Also Published As

Publication number Publication date
US10599459B2 (en) 2020-03-24
US20170235782A1 (en) 2017-08-17
US20170235817A1 (en) 2017-08-17
US20170235816A1 (en) 2017-08-17
US10489181B2 (en) 2019-11-26
US20170235593A1 (en) 2017-08-17
US20170235815A1 (en) 2017-08-17
US10552192B2 (en) 2020-02-04
US10223150B2 (en) 2019-03-05
US20170235806A1 (en) 2017-08-17
US11003476B2 (en) 2021-05-11
US20170235772A1 (en) 2017-08-17
US20170235773A1 (en) 2017-08-17
US20170235769A1 (en) 2017-08-17
US20170235592A1 (en) 2017-08-17
US10956192B2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
US10489181B2 (en) Entity database browser
US11243981B2 (en) Database replication based on data access scores
US11061777B2 (en) Method and product for implementing application consistent snapshots of a sharded relational database across two or more storage clusters
JP6514306B2 (en) Restore database streaming from backup system
US10942814B2 (en) Method for discovering database backups for a centralized backup system
US10379759B2 (en) Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9286344B1 (en) Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9990265B2 (en) Diagnosing causes of performance issues of virtual machines
US8972405B1 (en) Storage resource management information modeling in a cloud processing environment
US8832498B1 (en) Scalable codebook correlation for cloud scale topology
CN112534419A (en) Automatic query offload to backup databases
US9886443B1 (en) Distributed NFS metadata server
US10528262B1 (en) Replication-based federation of scalable data across multiple sites
US10552427B2 (en) Searching for information relating to virtualization environments
US10469318B1 (en) State tracking in distributed computing systems
EP3425534B1 (en) Selecting backing stores based on data request
US10361917B1 (en) State control in distributed computing systems
Venner et al. Pro apache hadoop
CN114925086A (en) Self-service data platform
US10339011B1 (en) Method and system for implementing data lossless synthetic full backups

Legal Events

Date Code Title Description
AS Assignment

Owner name: NUTANIX, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LIVSHITS, ARTEM YEVGENYEVICH;REEL/FRAME:041202/0968

Effective date: 20170123

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION