# US 10,769,160 B2 · Efficient storage and querying of time series metrics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,769,160 B2
- Document ID: US10769160B2
- Status: Granted
- Kind: B2
- Application number: 15/655,608
- Filed: 2017-07-20
- Published: 2019-01-24
- Granted: 2020-09-08
- Earliest claimed: 2017-07-20
- Assignees: AirMagnet, Inc.
- Applicants: AirMagnet, Inc.
- Inventors: Peter Reilly
- Web page: https://patentgrep.com/patent/US10769160B2

## CPC

- H04L 43/067: using time frame reporting
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/3419: {by assessing time}
- G06F 16/2219: {Large Object storage; Management thereof}
- G06F 16/2237: {Vectors, bitmaps or matrices}
- G06F 16/2264: {Multidimensional index structures}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/2477: {Temporal data queries}
- H04L 41/5009: Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
- H04L 43/045: for graphical visualisation of monitoring data
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for processing time series measurement data is provided. Data including a plurality of network performance metrics is received over a plurality of time periods. The received data is written to a plurality of measure data structures. The measure data structures are stored to a two dimensional array having a first dimension and a second dimension. The first dimension represents time and the second dimension represents a plurality of network entities. Elements of the two-dimensional array are compressed into BLOBs. Each one of the BLOBS is associated with a time period and a measure type associated with the data stored within a corresponding BLOB. The BLOBS are stored in a first table and second table. The first table is indexed by a combination of a network entity and a time period. The second table is indexed by a combination of a network performance metric and a network entity.

## Claims

### Claim 1

A method for processing time series measurement data, the method comprising:
receiving time series measurement data comprising a plurality of network performance metrics over a plurality of time periods for a plurality of network entities, wherein each network performance metric measures performance of a network entity of the plurality of network entities;
writing the received time series measurement data for the plurality of network entities to a plurality of measure data structures comprising the plurality of network performance metrics, each one of the plurality of measure data structures stores time series measurement data corresponding to a respective network entity for a respective one of the time periods, each one of the plurality of measure data structures includes a header indicating a type of stored metric values and the time period associated with the time series measurement data stored within a corresponding measure data structure;
storing the plurality of measure data structures to a data structure configured as a two dimensional array having a first dimension and a second dimension, wherein the first dimension represents time and the second dimension represents a plurality of network entities, each element of the two dimensional array comprising a respective measure data structure;
compressing the elements of the two-dimensional array into a first plurality of Binary Large Objects (BLOBs) and a second plurality of BLOBs;
storing the first plurality of BLOBS in a first table, wherein the first table is indexed by a combination of a network entity and a time period and wherein each of the first plurality of BLOBs contains all the metric values collected over a time period for a particular network of the plurality of network entities being monitored; and
storing the second plurality of BLOBs in a second table, wherein the second table is indexed by a combination of a network performance metric and a network entity and wherein each of the second plurality of BLOBs holds the values of a particular performance metric for all of the entities of the plurality of network entities for a particular time period.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the plurality of network performance metrics is associated with a unique integer identifier and is associated with a metric type identifier.

### Claim 3 (depends on 2)

The method of claim 2, wherein the metric type identifier identifies at least one of: maximum, minimum, average, bitmap, and histogram types of performance metrics.

### Claim 4 (depends on 1)

The method of claim 1, wherein each of the plurality of measure data structures is stored in an array of unsigned long integers.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first dimension of the two dimensional array represents a predefined number of minutes and the second dimension of the two dimensional array represents a predefined number of network entities.

### Claim 6

A system for storing and retrieving time series measurement data, the system comprising:
a metric collection engine for acquiring a plurality of network performance metrics and events related to performance of a plurality of network entities in a monitored network;
a storage repository comprising a first table and a second table for storing the plurality of network performance metrics; and
an information processing system comprising a processor and a memory device coupled to the processor in communication with the metric collection engine and with the storage repository, the memory device containing a set of instructions that, when executed by the processor, cause the processor to:
receive, from the metric collection engine, time series measurement data comprising the plurality of network performance metrics for the plurality of network entities over a plurality of time periods, wherein each network performance metric measures performance of a network entity of the plurality of network entities;
write the received time series measurement data for the plurality of network entities to a plurality of measure data structures comprising the plurality of network performance metrics, each one of the plurality of measure data structures stores time series measurement data corresponding to a respective network entity for a respective one of the time periods, each one of the plurality of measure data structures includes a header indicating a type of stored metric values and the time period associated with the time series measurement data stored within a corresponding measure data structure;
store the plurality of measure data structures to a data structure configured as a two dimensional array having a first dimension and a second dimension, wherein the first dimension represents time and the second dimension represents a plurality of network entities, each element of the two dimensional array comprising a respective measure data structure;
compress the elements of the two-dimensional array into a first plurality of Binary Large Objects (BLOBs) and a second plurality of BLOBs;
store the first plurality of BLOBS in the first table, wherein the first table is indexed by a combination of a network entity and a time period and wherein each of the first plurality of BLOBs contains all the metric values collected over a time period for a particular network of the plurality of network entities being monitored; and
store the second plurality of BLOBs in a second table, wherein the second table is indexed by a combination of a network performance metric and a network entity and wherein each of the second plurality of BLOBs holds the values of a particular performance metric for all of the entities of the plurality of network entities for a particular time period.

### Claim 7 (depends on 6)

The system of claim 6, wherein each of the plurality of network performance metrics is associated with a unique integer identifier and is associated with a metric type identifier.

### Claim 8 (depends on 7)

The system of claim 7, wherein the metric type identifier identifies at least one of: maximum, minimum, average, bitmap, and histogram types of performance metrics.

### Claim 9 (depends on 6)

The system of claim 6, wherein each of the plurality of measure data structures is stored in an array of unsigned long integers.

### Claim 10 (depends on 6)

The system of claim 6, wherein the first dimension of the two dimensional array represents a predefined number of minutes and the second dimension of the two dimensional array represents a predefined number of network entities.

### Claim 11 (depends on 6)

The system of claim 6, wherein the set of instructions that, when executed by the processor, further cause the processor to:
receive, from a user, one or more query parameters, the query parameters comprising at least network performance metrics of interest, a time period of interest and network entities of interest;
retrieve elements from the second table based on the received query parameters;
sort the retrieved elements and extract one or more elements corresponding to the network entities of interest; and
retrieve elements from the first table based on the received query parameters.

### Claim 12 (depends on 6)

The system of claim 6 further comprising a graphical user interface (GUI), wherein the user provides the one or more query parameters using the GUI.

### Claim 13 (depends on 6)

The system of claim 6, wherein the two dimensional array stores data accumulated for one hour.
