EP4684334A1 - Real-time window enrichment for machine learning - Google Patents
Real-time window enrichment for machine learningInfo
- Publication number
- EP4684334A1 EP4684334A1 EP24775806.3A EP24775806A EP4684334A1 EP 4684334 A1 EP4684334 A1 EP 4684334A1 EP 24775806 A EP24775806 A EP 24775806A EP 4684334 A1 EP4684334 A1 EP 4684334A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- event
- window
- events
- store
- timestamp
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/212—Monitoring or handling of messages using filtering or selective blocking
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
- G06Q20/4016—Transaction verification involving fraud or risk level assessment in transaction processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
Definitions
- At least some aspects of the present disclosure are directed generally to machine learning models, and more particularly, to real-time window enrichment for machine learning.
- the present disclosure provides a computer-implemented method.
- the method can include defining a window based on a time range, adding an operator to the window, and adding a new event from a data stream into a series store.
- the series store can store events from the data stream.
- the events can include values and timestamps.
- the events can be sorted in the series store based on the timestamps.
- the method can further include sliding the window along the series store based on the timestamps to capture the new event and the events preceding the new event up to a limit of the time range.
- the method can further include updating a state of the operator based on the values of the events captured by the window, modifying the new event based on the state of the operator to generate a modified event, and outputting the modified event.
- the present disclosure provides a server.
- the server can include a processor and a memory.
- the memory can include instructions executable by the processor to implement an enrichment model for modifying a data stream.
- the enrichment model can include a series store, a window, and an operator.
- the series store can be configured to store events received by the enrichment model from the data stream.
- the events can include values and timestamps.
- the events can be sorted in the series store based on the timestamps.
- the window can be configured to capture at least a portion of the events stored by the series store.
- the window can be defined by a predetermined range.
- the window can be slidable along the series store to an updated position based on receiving a new event.
- the operator can correspond to the window.
- the operator can be configured to change state based on the values of the events captured by the window.
- the enrichment model can be configured to modify the new event based on the state of the operator at the updated position of the window.
- the present disclosure provides a computer-implemented method.
- the method can include receiving a first new event from a data stream.
- the first new event can include a first timestamp.
- the method can further include sorting the first new event into a series store based on the first timestamp.
- the series store can store events from the data stream.
- the method can further include setting a window along the series store at a first position to capture the first new event and the events preceding the first new event up to a predetermined time range.
- the method can further include computing a function based on the events captured by the window in the first position to generate a first modified event.
- the method can further include receiving a second new event from the data stream after receiving the first new event.
- the second new event can include a second timestamp.
- the second timestamp can be earlier than the first timestamp.
- the method can further include sorting the second new event into the series store based on the second timestamp, setting the window along the series store at a second position to capture the second new event and the events preceding the second new event up to the predetermined time range, and invertibly computing the function based on the events captured by the window in the second position to generate a second modified event.
- FIG. 1 is a table illustrating an example of windowed analytic feature enrichment for a machine learning (ML)-based spam-email detector, according to at least one aspect of the present disclosure.
- FIG. 2 illustrates an architecture for scalable windowed analytic feature enrichment in real time (SWAT-RT) and an example life cycle of a windowed analytic feature enrichment task, according to at least one aspect of the present disclosure.
- SWAT-RT real time
- FIG. 3 illustrates an invertible-incremental analytic function triggered by window slides to process an in-order event, according to at least one aspect of the present disclosure.
- FIG. 4 illustrates an invertible-incremental analytic function triggered by window slides to process an out-of-order event, according to at least one aspect of the present disclosure.
- FIG. 5 illustrates a graph showing enrichment latency with out-of-order events for different window sizes used in an example implementation of SWAT-RT, according to at least one aspect of the present disclosure.
- FIG. 6 is a table illustrating an example data stream for an ML-based spam-email detector, according to at least one aspect of the present disclosure.
- FIG. 7 illustrates windows in sliding window aggregation, according to at least one aspect of the present disclosure.
- FIG. 8 illustrates windows in analytical functions, according to at least one aspect of the present disclosure.
- FIG. 9 illustrates a window enrichment process, according to at least one aspect of the present disclosure.
- FIG. 10 illustrates a model for real time window enrichment (RT-WinE), according to at least one aspect of the present disclosure.
- FIG. 11 illustrates a window orbital buffer (WOB) processing an in-order event, according to at least one aspect of the present disclosure.
- WB window orbital buffer
- FIG. 12 illustrates a WOB processing an out-of-order event, according to at least one aspect of the present disclosure.
- FIG. 13 illustrates a WOB implementing a row store, where records are stored consecutively in a node, according to at least one aspect of the present disclosure.
- FIG. 14 illustrates record and a directory record, according to at least one aspect of the present disclosure.
- FIG. 17 illustrates an example implementation of RT-WinE in RedisTimeSeries as a Redis Module, according to at least one aspect of the present disclosure.
- FIG. 18 illustrates a graph showing an insertion time comparison for different experimental data processing implementations, according to at least one aspect of the present disclosure.
- FIG. 19 illustrates a graph showing the total time to scan through an entire data structure in the forward direction for different experimental data processing implementations, according to at least one aspect of the present disclosure.
- FIG. 20 illustrates a graph showing the total time to scan through an entire data structure in the reverse direction for different experimental data processing implementations, according to at least one aspect of the present disclosure.
- FIG. 21 illustrates a graph showing the memory allocated to insert 2 16 items into the data structure for different experimental data processing implementations, according to at least one aspect of the present disclosure.
- FIG. 22 is a block diagram of a computer apparatus with data processing subsystems or components, according to at least one aspect of the present disclosure.
- FIG. 23 is a diagrammatic representation of an example system that includes a host machine within which a set of instructions to perform any one or more of the methodologies discussed herein may be executed, according to at least one aspect of the present disclosure.
- the following disclosure may provide exemplary systems, devices, and methods for conducting a financial transaction and related activities. Although reference may be made to such financial transactions in the examples provided below, aspects are not so limited. That is, the systems, methods, and apparatuses may be utilized for any suitable purpose.
- Scalable Windowed Analytic Feature Enrichment in Real Time (SWAT-RT): Low Latency Windowed Analytic Feature Enrichment on Time Series Data with Out-of-order Support
- Machine learning data pipelines can be used for applications that process realtime data streams.
- the data pipelines can enrich data streams in real time before applying the data stream to a machine learning model.
- analytical features can be derived from portions of a data stream that are defined over sliding windows to capture the data stream’s historical behaviors and signals.
- the process of deriving analytical features from a window of a data stream is sometimes referred to as feature enrichment.
- feature enrichment the latency of the feature enrichment process may need to be as low as a few milliseconds to meet the requirements of various time-sensitive applications, such as network threat and anomaly detection.
- machine learning models can be used in real-time systems, such as network intrusion detection, to generate low-latency decisions on every transaction.
- Windowed analytic features on time series e.g., transaction count in the last minute
- time series can be an important class of features used by machine learning models to model historical patterns and identify whether the current transaction deviates from the history.
- enriching the source stream with windowed analytic features can be a beneficial step to technologically enhance machine learning pipelines that analyze time series data.
- FIG. 1 is a table 100 illustrating an example of windowed analytic feature enrichment for an ML-based spam-email detector, according to at least one aspect of the present disclosure.
- the data pipeline for the ML-based spam email detector includes a raw stream of emails 102 that is augmented with a feature that measures an email frequency 110 for the corresponding sender 104 over the past 10 seconds.
- each of the emails 102 includes corresponding timestamps (e.g., send time 106, receive time 108) that are represented by integers values.
- Each of the emails 102 is received from a corresponding sender 104 (e.g., sender A, sender B).
- the sender’s email frequency can be an important input analyzed by the detector’s ML model.
- the number of emails received from this sender in the previous 10 seconds e.g., frequency 110
- can be a useful windowed analytic feature which can be computed before feeding emails (e.g., the data stream) to the ML model.
- the event e h (e.g., the email e h ) includes a positive spam flag 112 (e.g., marked as T or true), due to sender A’s frequency 110 count over e h ’s 10-second range (determined by the send time 106 t s ) being higher that a predetermined threshold of 3 emails per 10 seconds.
- the data pipeline for the ML- based spam email detector can be modified (e.g., enriched) with a 10-s email frequency 110 and/or a spam flag 112 corresponding to each of the emails 102.
- Adding an enrichment step to a real-time ML pipeline can be challenging and present various technical problems. For example, first, generating features for each window in a time series can be computationally expensive, especially for high-frequency data with large windows, which can therefore increase processing time. Time-sensitive applications with demanding latency requirements, such as network intrusion detection often cannot afford the additional delay of feature generation. Second, time series events can arrive out of order, meaning that an event may arrive in a different order than the generation order. In the example illustrated by FIG.
- email e k is sent before email e 7 (send time 106 of email e k is 13, earlier than the send time 106 of 15 for email e 7 ) but received after email ej due to network delays (receive time 108 of email e k is 17, later than the receive time 108 of 16 for email e 7 ). Processing these out-of-order events may require additional time and storage space for feature enrichment. Accordingly, there exists a need for approaches to windowed analytic feature enrichment that account for out-of-order data.
- SWAT-RT can process one thousand events per second on a single core while achieving a sub 200 micro-second latency and allowing for around 80 second lateness. Accordingly, various aspects of SWAT-RT (and RT-WinE) disclosed herein can improve the functioning of a computer. Furthermore, as discussed in detail herein, SWAT-RT (and RT-WinE) can provide a technical solution to technical challenges related to enriching data streams in real time.
- SWAT-RT can provide a framework for low-latency windowed analytical feature enrichment on time series data with out-of-order support.
- SWAT-RT can employ various techniques. First, by performing incremental computation to amortize the time required for enriching a single event, the latency of every event can be reduced, and the enrichment process can be made more effective. Second, by introducing the concept of invertible computation, the state of an operator can be inverted to enrich out-of-order events effectively.
- the present disclosure demonstrates how feature enrichment can be achieved with low latency, high throughput, and out-of-order data support. Accordingly, various aspects of SWAT-RT disclosed herein can improve the functioning of a computer.
- a user can define a window 204 based on a “range” argument, which can define the window’s size, for example, in terms of a time range or a number of events.
- the user can then add one or more operators 206 (e.g., operator 206a, operator 206b) to the window.
- the one or more operators 206 can include an analytic function and its associated arguments.
- an upstream application can push events 208 from a data stream into the model 200 (e.g., apply a data stream to the model 200), and the enrichment life cycle can begin.
- Each event 208 can include a timestamp 210 and a value 212.
- a new event 208a can be ingested and sorted into a series store 202 based on timestamp 210.
- Each of the events 208 in the series store 202 can be associated with a different window 204.
- Each window 204 can slide (b) according to the timestamp 210 of the new event 208a to capture all the events 208 that occurred before the new event 208a, within the range of the window 204.
- the state of each of the operators 206 can be updated (c) based on their corresponding window 204 sliding to include or exclude an event 208.
- the new event 208a can be modified (e.g. enriched) (d) with analytic results determined based on the corresponding window 204 and operators 206.
- the model 200 can output (e) the modified event (e.g., enriched event 210a).
- the model 200 can first slide the windows 204 to trigger updates on the operators 206, and then enrich the results on and output the enriched event 210a.
- the new event 208a is enriched to include the maximum value (e.g., 7) of the events 208 in its corresponding window 204 and the sum of the values in its corresponding window 204, thereby resulting in the enriched event 210a.
- the above enrichment process (a-e) can repeat for every incoming event 208 into the model 200.
- the series store 202 can expire (f) and delete a stored event 208b if the event 208b is no longer referenced by any window 204.
- the series store can be responsible for storing values from the raw events in a manner that enables efficient sequential scan and maintains a low memory footprint.
- the series store can store its timestamp with the raw fields that are to be used in the operators for calculation. For example, to enrich the running average of prices of shopping orders, the series store can store the timestamp and the price of each order.
- the series store can include an unrolled linked list as a base.
- the underlying data structure of series store can be an unrolled linked list with adaptive sized chunks. For example, initially, the size can start at 16 bytes and double each time, up to a maximum of 4KB.
- Unrolled linked lists can be more memory-efficient than vectors (e.g., dynamic growing arrays) and may not require data movement when the list size reaches its allocated memory limit.
- an unrolled linked list can include pointers only between chunks, not between each value, making it smaller and faster to scan.
- the series store can employ compression with support of bi-directional scans.
- the series store can compress its values to conserve memory while maintaining the capability to perform sequential forward and backward scans. This can be done by recognizing that some numerical fields may have a large domain, but a majority of their values may be small. For example, in a social media platforms like Twitter, where the number of likes on a post can range up to millions, but the majority values are often below 256 (28).
- the series store can employ a compression algorithm using variable-length storage based on the value distribution, storing values using the smallest possible data type in size (byte, short, int, or long). Two additional encoding bytes, one at the beginning and one at the end, can be used to decode the values in both directions.
- An encoding byte can include bits for null values, sign, and length. For example, an integer value -23 can be stored using only three bytes 41-17-41 in hex.
- the series store can employ timestamp optimization.
- the storage of timestamps in the series store can be further optimized.
- the full timestamp may be stored.
- the difference between current event’s and previous event’s timestamp can be stored.
- the full timestamps can be reconstructed by summing the stored differences.
- Windows can be represented or otherwise defined by “start” and “end” pointers, which can be iterators that point to an element of a series store.
- start and end pointers can be iterators that point to an element of a series store.
- start and end pointers can always point right behind the event being enriched, as the start of a window.
- end pointer can point to the end of the window determined by the size.
- a window can be considered to have captured the events between the two pointers.
- Windows can employ incremental and invertible slides, as described further herein.
- the pointers can be incremented or decremented to slide a window on a series store across the stored data. These movements of the pointers can enable incremental computation by triggering the operators each time they move.
- incremental and/or invertible slides can facilitate invertible computation.
- Windows can employ awareness and management of iterators. According to the present disclosure, the idea of iterator-awareness is introduced, where the series store handles iterators in a way that ensures they remain valid whenever it is updated, for example, when an element is inserted, appended, or removed.
- An operator can maintain several states in addition to the raw events in series store to compute the most recent analytic feature of its corresponding window. Each operator can update its state incrementally as events enter and leave the window. For example, a sum operator can maintain the most recent summation of the associated window and can update the summation incrementally by adding each new value entering the window and subtracting each value leaving the window. This can ensure that the state of each operator is synchronized with its corresponding window.
- FIGS. 3 and 4 illustrate invertible-incremental analytic functions that can be triggered by window slides, enabling the processing of in order and out-of-order events, where FIG. 3 illustrates processing an in-order event and FIG. 4 illustrates processing an out-of-order event, according to at least one aspect of the present disclosure.
- An incremental computation (e.g. analytic function) can distribute the computation to each event and can therefore aid in decreasing latency.
- Incremental interfaces provided by the present disclosure can include:
- FIG. 3 illustrates a snapshot of a series store 302 while processing events 308.
- Each event can include a timestamp 310 and a value 312.
- Invertible interface provided by the present disclosure can include:
- the processing out-of-order events can be achieved with invertible APIs.
- FIG. 4 illustrates a snapshot of a series store 402 while processing events 408.
- the model can move the start pointer and scan backward during a first scan until it points to an event 408
- analytical operators can include sum, count, and/or average operators. These operators can represent examples of invertible functions.
- the invlnsert can be equivalent to evict; and the invEvict can be equivalent to insert.
- analytical operators can include min, max, lead, and/or lag operators. These can be examples of functions that do not have a naive invertible implementation.
- min max
- lead lag operators.
- MIN a naive invertible implementation
- analytical operators can include a distinct count operator.
- a hashmap of (event value, count) can be maintained.
- an insert operation can increment the count and an evict operation can reduce the count.
- the entry can be deleted.
- the hashmap’s size can be returned as the result of the operator.
- Each hashmap, which is one partial aggregate takes O(N) space, thus the algorithms which store O(N) aggregates can result in a O(n 2 ) of space.
- the operations on the hashmap can be 0(1) and naturally invertible.
- the inventors have developed a fully functional prototype employing an example SWAT-RT framework as a Redis module using C++.
- Redis can provide flexible extension API, enterprise support, and the fine-grained memory management.
- This non-limiting example SWAT-RT implementation uses custom data types and commands that are fully compatible with standard Redis clients, enabling easy adoption of SWAT-RT in a production data pipeline for feature enrichment. For instance, commands SWAT. DEFINE were added to configure a new enrichment task.
- the present disclosure provides a collection of analytic operators that supports invertible-incremental API, including SUM, AVG, MIN, MAX, COUNT, DISTINCT COUNT, LEAD, LAG.
- the example SWAT-RT was evaluated using a sample dataset of financial transactions that includes anonymized cardholder and merchant IDs, along with a timestamp and transaction amount for each transaction.
- the machine used for timings was a MacBook Pro with 2.3 GHz 8-Core Intel Core i9 processor with 16GB memory. Data was ingested at a rate of 1000 records per second, with some transactions arriving late.
- FIG. 5 illustrates a graph 500 showing enrichment latency with out-of-order events (e.g., the processing time for late events) for different window sizes used in this example implementation of SWAT-RT, according to at least one aspect of the present disclosure. Events with lateness greater than the window size were ignored since they were not within the sliding window. This can explain why the time required to process late events increases and then drops to near zero after the lateness exceeds the window size.
- out-of-order events e.g., the processing time for late events
- the present disclosure now provides various non-limiting example demonstration scenarios that can illustrate how a user can interact with various SWAT-RT implementations processing various data sets and executing analytic-window feature enrichment tasks.
- CIC-DDoS2019 dataset can be processed.
- CIC- DDoS2019 is a public dataset that can include network traffic logs that can resemble traffic logs generated true real-world PCAPs.
- the dataset can include benign and common DDoS attacks (distributed denial-of-service attaches) such as PortMap, NetBIOS, LDAP, MSSQL, UDP, UDP-Lag, SYN, NTP, DNS and/or SNMP.
- Example Scenario #1 Creating enrichment tasks.
- the user of a system implementing SWAT-RT can define new windows and add analytic operators to create new enrichment tasks and observe the enriched output stream.
- the user can execute a SWAT. DEFINE to define analytical functions along with the corresponding window definitions.
- the stream events can be pushed into SWAT-RT by invoking SWAT. PUSH [*
- the user can observe the output stream with the new enriched field by invoking a SWAT.AGG key command.
- Example Scenario #2 Monitoring SWAT-RT status. Users can monitor and examine the status of the SWAT-RT, such as, for example, total memory, latency and throughput, at the desired time using standard Redis commands. For example, to obtain latency information, users can invoke redis-cli info latency stats for SWAT-RT operators. The user also may add/remove windows as well as analytic operators to compare the status of SWAT-RT under different loads.
- Example Scenario #3 Handling of out-of-order events.
- the present disclosure provides streams with simulated out-of-order events. To do so, some events’ ingestion order can be arbitrarily modified so they are emitted later than their assigned event time. The user can observe how an out-of-order condition is handled by a series store, as well as any changes in latency that occur as a consequence. The user can adjust the frequency, the lateness of out-of-order events, and the stream’s ingestion rate to observe the effect on the latency of analytical functions.
- RT-WinE Low Latency Analytical Window Feature Generation on Real-time Streams with Out-of-order Support
- Features can be signals that are given to a machine learning model as input. For example, in addition to individual raw data points applied to a machine learning model, aggregated features can be derived from the raw data and applied to the model, providing contextual information related to the raw data.
- a common way to generate contextual features is to use time window aggregation. These contextual features can be significant for models that are sensitive to the latest data trend until the prediction moment. For example, the performance of fraud detection models for credit card fraud can be improved based on receiving the count of transactions and average price of transactions during a window of time prior to the transaction being analyzed (e.g., the 30 minutes prior to the transaction).
- the present disclosure provides devices, systems, and methods that that can generate analytical window features.
- Devices, systems, and methods provided herein can enable out-of-order analytical function support via real time window enrichment, which is sometimes referred to RT-WinE, and which can be similar in many respects to SWAT-RT as described above.
- RT-WinE can enable devices, systems, and methods to generate analytical window features with low-latency and high-throughput, while addressing of out-of-order events.
- the inventors have shown that an example implementation of RT-WinE can uses 32% of space compared to baseline methods, which achieving a low P99 latency.
- the devices, systems, and methods provided herein can improve the functioning of a computer.
- Analytical functions can run over a real-time stream of events to modify (e.g., enrich) the events with features.
- the features can be used by downstream AI/ML models for inference.
- stock prediction models may benefit from features such as the running average of prices, volume of trade for the past 10 minutes.
- anomaly detection models can utilize features such as min or max signal in the recent 20 signals.
- AI/ML models that inference on real-time data stream can generally only see the past data, various aspects of the present disclosure are related to solving the technical problem of enriching an event with analytical features based on a set of events that are processed before the event in time.
- FIG. 6 shows a table 600 illustrating an example data stream for an ML-based spam-email detector, according to at least one aspect of the present disclosure.
- the data stream is modified (e.g., enriched) using the email frequency 610 of the senders 604 of emails 602.
- Email e h is considered to be spam (e.g., marked with T or true under the spam 612 column), as there are more than 3 emails received from sender 604 A within 10 seconds range before receiving e h .
- Email e k is received out-of-order because there is an event e, with a send time 606 later than ek but a received time 608 earlier than e k .
- One of the features used by the example detector’s ML model is the email frequency 610 of a sender 604.
- the detector calculates the email frequency 610 of the sender 604 frequency by counting how many emails 602 have been received from this sender in the past 10 seconds. For the context of this example, it is assumed that if the count (frequency 610) is more than 3, the emails from the sender are considered by the model as spam, as shown with T (true) or F (false) tags in the spam 612 column of table 600.
- FIG. 6 illustrates a snapshot of the stream along with the generated features of the spam-email detector.
- e h is labeled as spam because the email frequency 610 of its sender A is 4, which satisfies the predetermined spam threshold limit of greater than 3.
- the email frequency is counted over events in the 10-s range [ea, eg), which is measured based on either send time 606 Ts or receive time 608 Tr.
- An event can be a set of values denoted as e (values).
- a running example is enriching an input stream Si by adding analytical features onto each event, result in an output stream So. For simplicity, consider input stream Si with events of a single input value et (vin), where the events in the output stream are added with a single output value et (yin, vout).
- each email is an event with the input value being its sender 604, and the output value is the 10-second email frequency 610 of the sender.
- event-time and processing-time are used as two different notions for timestamps as they can have different implications for analytical functions.
- the event-time (denoted as te e) marks when the event is generated from the end devices
- the processing-time (denoted as tp e) marks when the event is being processed. Due to hardware latency and network, the event-time and the processing-time often naturally have some gap and may not be in the same order.
- the analytical engine may receive events out of order. For instance, in the running example, a particular email may be sent earlier but received later than other emails by the detector. An event e x can be out-of-order if there exists another event with a later event-time but with an earlier processing time.
- the set of out-of-order events of a stream Si can be defined as follows:
- email e k is an out-of-order event because it is sent before ej but received by the detector after ej.
- a window frame can capture or otherwise define a set of events that are to be aggregated.
- a time-based window frame can define a set of events before a target event in terms of event time.
- the range can be described with an inclusive start timestamp and an exclusive end timestamp.
- the time window frame of length s regarding an event e can be defined as followed:
- the 10-second window for email e h in the running example can be denoted as We h (10), which aggregates all emails from e a to e g .
- a count-based window frame can be a special case of time-based window frame.
- a count-based window frame can calculate the range based on the count of elements in the set.
- a series of analytical functions can perform on a window frame.
- An analytical function can be a function that takes in a window frame and outputs a single value.
- An analytical function of a window frame can be denoted as ⁇ p (VF), where ⁇ p can be one of SUM, COUNT, AVG, MIN, and MAX, as well as their distinct version of them.
- the result of analytical functions can include one or more than one contextual feature that can be added to a current event as its feature for downstream processing.
- FIG. 9 illustrates a window enrichment process 900, according to at least one aspect of the present disclosure.
- Events 902 can be ingested as inputs.
- window frames 904 can define a set of the events 902 occurring within a predetermined window frame size of the corresponding event 902.
- An analytical function can take action on the window frame 904 and output a feature 906 for the event that corresponds to the window frame 904, thereby generating a modified event (e.g., an enriched event 908).
- the enriched events 908 can be output and, for example, fed to a machine learning model.
- a system that supports real-time window analytical feature generation can have the following requirements, which add many technical challenges, as discussed below.
- out-of-order events When applying analytical window functions based on eventtimes, out-of-order events may occur, which can add a hard requirement on systems to support them.
- Out-of-order events add pressure to both latency and memory space.
- the window frames of two adjacent events could be similar and have some overlaps, which can provide an opportunity for the two window frames to share common storage and calculation.
- an out-of-order event’s window frame can be very different from that of the event processed right before it, which can require additional storage and calculation to handle the difference in a window frame.
- Analytical window frames can have an extremely fine granularity of event level, and thus could have an extremely high density of window frames when event frequency is high. For example, when employing an analytical window with a size of 10 minutes with a data stream having the event frequency of 10Hz, as shown in FIG. 8, the window frame’s granularity is at each individual event, and each event is in a maximum of 1000 window frames that are densely packed.
- a naive method could configure a window frame and collect events for each event before performing the aggregation. Collecting and calculating the events can be slow when the window frame is large in size and dense in frequency.
- the two window frames for two consecutive events could have the majority of prior events to be repeated, and only differ on a few events.
- Many windows frames could have overlaps, for example, a time window with size of 20 minutes contains the entire window frame of a time window with size of 10 minutes.
- the storage could be repeated which adds burden to memory constrain, and the computation could also be repeated which adds burden to latency and throughput.
- FIGS. 7 and 8 illustrate window granularity comparison, where FIG. 7 illustrates a chart 700 of windows 702 in sliding window aggregation, according to at least one aspect of the present disclosure, and FIG. 8 illustrates a chart 800 of windows 802 in analytical functions, according to at least one aspect of the present disclosure.
- FIG. 10 shows a model 1000 for RT-WinE, according to at least one aspect of the present disclosure.
- the model 1000 can be similar in many respects to the model 200 (FIG. 2). Any of the features disclosed herein with respect to the model 1000 can apply to or otherwise be implemented by the model 200, and vice versa.
- the model 1000 can include a window orbit buffer (WOB) 1002.
- Raw events 1008 can be received and added to the WOB 1002.
- the model 1000 can further include windows 1004 and one or more corresponding operators 1006.
- the windows 1004 can shift on the WOB 1002, triggering analytical function results to be calculated by operators 1006, thereby generating modified events (e.g., enriched events 1010).
- Raw events 1008 are stored in the WOB 1002 for future windows 1004 to use and are expired and removed from WOB 1002 when no longer used by any window 1004.
- the WOB 1002 can be similar to the series store 202 (FIG. 2).
- an event 1008 (e) from the stream is received (a) and pushed into the system.
- the model 1000 can align (b) (e.g., shift) windows 1004 according to te e.
- the model 1000 can modify (e.g., enrich) (c) the events 1008 e by calculating or otherwise executing the analytical functions (e.g., operators 1006) on windows 1004, resulting in an enriched event e'.
- the model 1000 can insert (d) a copy of the raw event 1008 e into the WOB 1002.
- the model can yield (e) an output of the enriched event 1010 e' with the aggregates.
- the model 1000 can expire (f) an event 1008 and evict (e.g., delete) it from the WOB 1002 when no window 1004 frame is using the event 1008.
- the model 1000 can handle events 1008 received out of order and events 1008 received in order differently.
- the model 1000 can execute the align (b) and insert (d) processes differently for out-of-order events and in-order events.
- the corresponding window 1004 may be far away in the middle part of WOB 1002, thus it can require more window shifts to update the position of the window 1004.
- the out-of-order event is also inserted in the middle of WOB 1002 rather than appended at the end of WOB 1002.
- the present disclosure turns to the various components that can be included in the model 1000 to implement RT-WinE.
- the model 1000 can include a window orbit buffer (WOB) 1002.
- the WOB 1002 can provide a core data structure.
- the WOB 1002 can store raw events 1008.
- Many analytical function algorithms can require a copy of raw events to work.
- some algorithms also require storage of partial results.
- the WOB 1002 can be configured to store the raw events to satisfy these storage requirements, thereby allowing for fast calculation and modifications.
- the WOB 1002 (e.g., portions of the WOB 1002) can be captured by the windows 1004.
- the windows 1004 can therefore include a cheap and flexible representation to accommodate high data density.
- the WOB 1002 can record the event-time sequence. For example, to support out-of-order events, the WOB 1002 can store the events with respect to their event-time (e.g., timestamp). The sequence of the historical events can help the operators 1006 retrieve correct analytical results for out-of-order events.
- event-time e.g., timestamp
- the WOB 1002 can include or otherwise implement any of the following features:
- the events stored in the WOB 1002 can be sorted with respect to their eventtimestamp
- In-order events can be appended at the tail (e.g., of the WOB 1002) when being inserted, and popped from the head (e.g., of the WOB 1002) when they are no longer needed by any windows 1004;
- Out-of-order events can be inserted in the middle (e.g., of the WOB 1002);
- the windows 1004 can shift forward and backward by using the WOB 1002 as an orbit.
- the model 1000 can include windows 1004.
- the windows 1004 can keep a reference to which events are being calculated by the operators 1006.
- the window 1004 frames can be represented in RTWinE by using a start and an end pointer to the events 1008 in the WOB 1002.
- the two pointers naturally define a range which is the content of the window frame. Regardless of the frame size, the representation only requires the size of two pointers, which can be small in size and easy to modify.
- Each window 1004 can maintain a list of operators 1006.
- a window 1004 can shift along the WOB 1002, either forward or backward, which updates the window frame it represents.
- the minimal granularity of the shift is an event 1008.
- its callback API can trigger the associated operators 1006 to update their computation accordingly (e.g., to include or exclude a value associated with an even 1008 added or removed from the window 1004).
- the model 1000 can include operators 1006.
- An operator 1006 can maintain some additional states besides the raw events 1008, to compute the latest analytical feature of its corresponding window 1004. The operator can listen to callbacks triggered by the window shifts to update its state. For example, when a new event 1008 enters the window 1004, the operator 1006 can include the event’s field value into its state by calling insert(ele). When an event 1008 exits the window 1004, the operator 1006 can exclude the event’s field value by calling evict(ele).
- a sum operator can maintain the latest summation of the window it is associated, wherein insert(ele) adds the value to the latest summation and evict(ele) subtracts the value from the latest summation (e.g., thereby incrementally computing the function).
- insert(ele) adds the value to the latest summation
- evict(ele) subtracts the value from the latest summation (e.g., thereby incrementally computing the function).
- the states of the operator 1006 states can maintain a synced configuration with their corresponding window 1004.
- invertible incremental analytical functions can be performed on window frames, as window frames move forward and backward on the WOB, event by event.
- RT-WinE When RT-WinE receives an event whose timestamp is newer than the latest event’s timestamp, the event can be considered to be in-order.
- FIG. 11 illustrates a WOB 1102 processing an in-order event, according to at least one aspect of the present disclosure.
- the WOB 1102 has multiple events 1108 stored already and the latest event 1108b has a timestamp of 10-second.
- a new event 1008a tj is received.
- As its timestamp is larger than the latest event 1108b in the WOB 1102, which is tH, it is an inorder event.
- RT-WinE shifts the window 1104 forward (e.g., to the tail of the WOB) to perform the query action. To do so, RT-WinE first shifts the end pointer forward until it is pointing to an event whose timestamp is smaller than tj. For all the events scanned by the end pointer, the insert(ptr) callbacks are triggered. Then RT-WinE shifts the start pointer forward until it is pointing to an event whose timestamp is equal to or bigger than tG's timestamp. For all the events scanned by the start pointer, the evict() callbacks are triggered. After finishing querying, RT-WinE inserts the event tj at the location pointed by the end pointer, ready for the next event.
- RT-WinE When RT-WinE receives an event whose timestamp is older than the latest event’s timestamp, the event can be considered to be out-of-order.
- FIG. 12 illustrates a WOB 1202 processing an out-of-order event, according to at least one aspect of the present disclosure.
- the WOB 1202 has multiple events 1208 stored already and the latest event is event 1208b.
- a new event 1208a tE is received.
- As the timestamp for event 1208a tE is larger than that of the latest event 1208b in the WOB 1202, which is t H , it is an out-of-order event.
- the analytical window frame of event tE is supposed to be [A, E), thus RT-WinE shifts the window 1204 backward (e.g., to the head of the WOB 1202) to perform the query action.
- RT-WinE first shifts the start pointer backward until it is pointing to an event whose timestamp is smaller than or equal to tA. For all the events scanned by the start pointer, the inv_evict(ptr) callbacks are triggered. Then RT-WinE shifts the end pointer backward until it is pointing to an event whose timestamp is smaller than or equal to tE's timestamp. For all the events 1208 scanned by the end pointer, the inv_insert() callbacks are triggered. After finishing querying, RT-WinE inserts the event tE at the location pointed by the end pointer, ready for the next event.
- RT-WinE can employ an invertible Subtract-on-Evict (SoE) technique.
- SoE invertible Subtract-on-Evict
- the invertible SoE as disclosed herein, can expand and/or modify on the Subtract-on-Evict (SoE) discussed in the publication by Martin Hirzel et al, titled Sliding- Window Aggregation Algorithms: Tutorial, published in Proceedings of the 11th ACM International Conference on Distributed and Event-Based Systems (Barcelona, Spain) (DEBS ’17), the disclosure of which is incorporated by reference herein in its entirety.
- invertible SoE can employ an operator to define the following functions:
- inv_insert() Invert adding of an element, to decrement the current state.
- inv_evict(e: Iterator) Invert removing an element, to increment the current state.
- the above interfaces can support implementations of invertible operators. It also can fall back to Recalculate from Scratch when the window frame is small enough or the function is not invertible.
- the operators can process events in a first-in-first-out (FIFO) order.
- the operators do not need to be commutative, because events can be processed in the FIFO order on the timestamp.
- the model can invert the operator back to a previous state, process the out-of-order in its correct order, and then reprocess events in FIFO order.
- the operators may not be aware of the event timestamp(s) in their implementations. Each operator may only process the events in the given order with the interface invoked by the window pointers.
- the WOB can serve as main event storage.
- the WOB can be designed to be space efficient while maintaining 0(1) complexity of push and pop.
- the WOB storage can support the window frames to move forward and backward on it efficiently.
- the WOB can have the following properties:
- a list can be used. This can be implemented, for example, in either doubly linked list or arraybased list.
- Array-based Lists have 0(1)+ (Amortized) complexity for push, because can need to re-allocate a bigger array and perform memory copy when space is not enough. When inserting an element, it can also need to shift elements after the insertion position.
- Doubly Linked Lists can have exact 0(1) for push but a much higher constant since it requires finegrained memory allocation for each element. The overhead of scanning linked lists can also be high due to random memory access by pointers, comparing to sequential access in arraybased lists.
- An unrolled linked list is a hybrid of doubly linked lists and array-based lists, which can store multiple elements in a list node.
- An example implementation of the unrolled linked list would be a doubly linked list with an array as its list node payload. Comparing to the doubly linked list, to store the same quantity of elements, the unrolled version can have fewer list nodes and thus acquire fewer node pointers. Additionally, due to fewer pointers and more adjacent memory access, a sequential scan on an unrolled linked list would be significantly faster that on a doubly linked list.
- variable length numerical types can be employed.
- a standard unrolled linked list can take an array of a certain data type, e.g., long integers, which can waste space.
- Many numerical fields can be within a certain domain and with a certain distribution.
- the domain of a person’s age is roughly the integral numbers within the range of 0 to 150
- the domain of a car’s price is roughly the decimal numbers within the range of 0.00 to 3,000,000,000.00.
- Systems often use a numerical type that is larger than the cap of the domain to store a field. In this case, all ages can be stored as 2 bytes shorts, and the car prices can be stored as 8-bytes decimals, just to accommodate the largest value in the domain. Additionally, values may not be evenly distributed in the domain, but can fit in a certain probabilistic distribution. Storing all values as a fixed sized value can waste on space in the majority of the applications.
- RT-WinE can store numerical types in a variable length manner. For example, the following techniques can be employed:
- PadLong Depending on value, the closest data type in size (e.g., byte, short, int, or long) can be used to physically store it and use 1 byte to describe the encoding.
- the 1-byte encoding can include a 1 -bit flag for null values, a 1 -bit flag for the sign, and a 4-bit to differentiate the actual length. For example, -23 in decimal can be stored as 01000001- 00010111 in binary, or 41-17 in hex. This format can only support forward reading but not backward reading.
- BiPadLong can be similar to PadLong, but saving the 1-byte encoding twice, before and after the value. This can support reading the value from both directions, by using a little more space. See TABLE 2 for detailed comparison between different encodings, where TABLE 2 shows variable-length Long encodings, displayed in HEX.
- variable length string types can be employed.
- the variable length strings could be stored similarly.
- the 1-bit flag can be used for null values, 1-bit flag for encoding continuity (e.g., if set to true, the next byte is also an encoding byte, to support arbitrary length), and 6-bit to describe length of the string.
- the actual string value can be followed after all the encoding bytes.
- Timestamp compression can be employed. Timestamp can be a top citizen of the ULL since each element in the list may need to have an associated timestamp stored for sorting.
- WOB can store timestamp in ISO format which is a standard Long type. Since Timestamps can be relatively long numbers, but can also occur frequently real-time applications, two timestamps may have only a small delta in difference. The small delta can be relatively smaller (e.g., in terms of storage), and can be represented with a few bytes or even bits. Based on that, a full timestamp of a list node’s first event can be stored, and for each further occurrence of timestamps in this node, only the delta to the full timestamp may be stored.
- this timestamp compression technique can further benefit extremely frequent event streams. For example, when the event frequency is too high, it is possible to have two events having the same timestamp.
- the WOB can accept duplicate timestamps and the compressed timestamp can simply have the value 0 as the delta, which only takes 1 byte.
- an events collapse technique can be employed.
- incoming events have a high frequency, it can be common for two events to have same Unix timestamp, since the granularity of most timestamp is millisecond.
- There are some techniques to differentiate them such as, for example, assigning a sequence number for repeated timestamp (e.g., 1662661100813-1 and 1662661100813- 2). This can present in issue because the granularity of the timestamp may not be the same as the granularity of the application.
- a typical window size can often be larger than millisecond level, and the granularity can be seconds, minutes, hours or even days.
- Events can be collapsed if their timestamps fall under the same unit of the granularity. For example, when the required granularity is at second level, the WOB can collapse events within the same second and store only the aggregates instead of the raw events. This can greatly reduce the memory consumption. In some aspects, this technique can cost the opportunity of operator computation sharing.
- many data can share the same timestamp.
- a 10-field event has 10 values that share the same timestamp.
- Two events that have the same Unix timestamp can often be collapsed together in a record.
- the record can be used to store those fields in a space-efficient way in the WOB.
- the arrangements can be categorized as row-store based and columns-store based. In some aspects, those arrangements are discussed with the assumption that all events have a fixed schema, e.g., each event has same number of fields and the same sequence of field types.
- FIG. 13 illustrates a WOB 1302 implementing a row store, where records 1312 are stored consecutively in a node, according to at least one aspect of the present disclosure.
- an event e.g., record
- FIG. 13 illustrates a WOB 1302 implementing a row store, where records 1312 are stored consecutively in a node, according to at least one aspect of the present disclosure.
- an event e.g., record
- FIG. 14 illustrates record 1412a vs. directory record 1412b, according to at least one aspect of the present disclosure. As shown in FIG. 14, at least two kinds of row-store designs are disclosed:
- a timestamp and a count can describe how many values are following, which all share the same timestamp. All the field values can be stored in PadLong encoding, with one record length in the end to allow reading the entire record backwards (e.g., jump back to the head of the record and read).
- Directory Record 1412b Directory Records can share the same space usage as the Record 1412a, but data can be rearranged internally. Each field’s encoding (1-byte) can be stored consecutively, followed by the values. This can allow for better pipelining when reading record sequentially.
- FIG. 15 illustrates a WOB 1502 implementing a column store, comprising a TS sub-WOB 1514, and one or more than one fields sub-WOB(s) 1516 (e.g., Field 1 sub-WOB 1516a, Field 2 sub-WOB 1516b), according to at least one aspect of the present disclosure.
- iterators can be synced on all the sub-WOB(s). Records also can be stored in column-store fashion. This can require multiple WOB instances working together as a logical WOB.
- the TS sub-WOB 1514 can stores only timestamps (denoted as TS).
- the WOB 1502 can include the field sub-WOB(s) for each field of an event. Iterator movements can be done on the TS sub-WOB 1514 only, and after measuring the distance of the movement, the same on field sub-WOB(s) can be applied accordingly.
- column store can provide various benefits compared to row store. For example, column store can provide better compression opportunity since each of the WOBs saves same type and domain of values.
- the timestamp WOB can contain compress more timestamps in a node.
- moving on the timestamp’s WOB can determine out how many steps the iterator needs to shift.
- a for-loop can be used to enable better pipelining.
- a hybrid column/row store can be employed. For example, depending on the count of fields, operator numbers on each field, and/or event frequency, row-store and column-store may have different benefits. As event frequency could change on the fly, the decision may not be well-made ahead of time.
- a hybrid solution can make WOB adaptively changes from using row-store and column store. The interface of WOB can allow some nodes to be row-store while some nodes are in column-store, which can provide a better storage solution.
- the present disclosure now turns to discuss various aspects of iterator awareness and management.
- the access to the WOB can be managed by iterators.
- iterators are often not respected when the data structure is altered or updated, e.g., when elements are added or removed from the data structure.
- std vector as one example, when an element is erased, iterators that are pointing to and beyond the element may all be invalidated.
- the WOB can be aware of iterators on it and manage them correctly as it changes. Iterators can be used extensively in the WOB. For example:
- Each window frame can include two iterators representing the range, and shifting window frames can substantially include just incrementing and decrementing the corresponding iterators.
- An insertion iterator can be used to push or insert an element on the WOB at the correct position.
- An expiration iterator can be used to pop element from the head of the WOB.
- an operator itself is invertible, such as SUM and COUNT, then implementation can be straightforward.
- operators may not be invertible, such as MIN, MAX.
- the present disclosure mainly discusses invertible algorithms for non-invertible operators. Operators are discussed group by group, where the operators in a group share similar properties.
- SUM, COUNT, and AVERAGE are examples of invertible and associative operators. It can be quite simple to implement these operators with RT-WinE framework.
- the invjnsert can be equivalent to evict; while the inv_evict can be equivalent to insert.
- MIN is an example of non-invertible operator. For instance, suppose a window frame of 10 events has a min value of 2. In a naive algorithm, a min operator would store a state of the current min value, which is 2. When a new event with value 1 is added to this window frame, the operator compares 1 with 2 and updates the state to 1. However, if then the event with 1 is removed from the window frame (e.g., inv_insert(1)), the operator cannot arrive at 2 based on the updated state of 1. Thus, the operator itself is non-invertible.
- FIG. 16 illustrates a method 1600 of implementing a MIN operator with Invertible Two Stack, according to at least one aspect of the present disclosure.
- steps (A) - (H) of the method 1600 illustrate insertion of 4, 2, 5, 3 and then evicts 4, finally inserts 7.
- steps (I) - (L) of the method 1600 illustrate inversion of the state of Two Stack back to equivalent to (D), and step (M) inserts the new value 1.
- Another way to implement a MIN/MAX operator can be using algorithm DABA.
- DISTINCT COUNT An operator for Two Stack and DABA that can be challenging to implement is DISTINCT COUNT, for example, due to its heavy partial aggregates in space.
- a naive but effective method to implement DISTINCT COUNT can be to maintain a hashmap of (event value, count).
- Each a hashmap, which can be one partial aggregate, can takes O(N) space.
- the algorithms which store O(N) aggregates can result in a O(n2) of space.
- the operations on the hashmap are 0(1) and naturally invertible, since maintaining the count is invertible.
- FIG. 17 illustrates an example implementation of RT-WinE model 1700 in RedisTimeSeries as a Redis Module for experiments, according to at least one aspect of the present disclosure.
- the model 1700 can include a partitioner 1720 that partitions to a plurality of Redis modules (e.g. Redis module 1720i, Redis module 1720 2 , . . . Redis module 1720m)
- employing a RedisTimeSeries can provide the following benefits:
- a user can define enrichment metadata to describe the enrichment field, enrichment window properties, and aggregation operations.
- RTWinE can construct empty WOB(s), window(s), and/or operator(s) and await inputs.
- a user can then connect streams (or keyed streams with a partitioner) to the corresponding WOB.
- User can also to specify the consumers of the output stream. With the input and output configured, RT-WinE can start, and outputs can be observed.
- a WOB may expect only type of long integer and strings to be stored internally.
- conversions for other data types can done.
- data types can include:
- Float & Double Due to the nature of floating-point types, having incremental calculations may result in rounding issues. To prevent from round issues, for all floating-point types, RT-WinE can store it as decimal types to support incremental aggregation operations.
- Date-related types can be stored as longs directly.
- the present disclosure now turns to discuss various aspects related to event expiration.
- the event can be added to an expiration list.
- a callback or a busy check loop can check if an event is no longer needed by RT-WinE and then initiate the expiration of the event.
- the event can be evicted (e.g., deleted) from the corresponding WOB and no longer visible to the RT-WinE.
- adaptive tuning can be implemented. For example, many knobs can be tuned in practice for WOB and different configurations can benefit in different scenarios. Being able to adaptively tune those knobs makes the WOB flexible to handle different sorts of workloads.
- adaptive node size can be implemented. For example, for an unrolled linked list, depending on the frequency of input events and their size, node size can be increased and decreased adaptively.
- an adaptive node fill rate can be implemented. For example, in addition to the size of capacity on each node, a node fill rate can be introduced to preallocate spaces for potential out-of-order events to be inserted.
- an adaptive collapse can be implemented.
- the collapse technique discussed herein also can be done adaptively.
- storing aggregations can save on space but may introduce compression and decompression overhead, which could eventually affect the overall throughput and latency.
- less-frequently-used nodes can be spilled.
- a long run window enrichment pipeline supporting many window configurations could consume a lot of memory.
- the WOB may need to store 31 days events in total to support enrichment of all possible events.
- the majority of insertions can happen in-order on the last node, and eviction can happen on the first node only.
- the middle nodes which are storing events for day 8 to day 29 are therefore not changing very frequently, thus they can be viewed as cold data. Those cold data can be store onto a disk and can be pre-loaded back in memory before they need to be used.
- a hybrid recalculate and invertible incremental enrichment technique can be employed. For example, when event frequency is not that high and aggregation states are not big, it may be beneficial to re-calculate instead of maintaining events in memory for invertible incremental enrichment. Each operator which supports invertible incremental enrichment can fallback to re-calculate.
- the present disclosure provides a system that can allow low latency and high throughput computation of windowed aggregates, which can then be fed to machine learning models.
- the present disclosure describes different data structures and methods for window aggregates that can provide space-savings, low- latency, and high throughput to increase machine efficiency, thereby improving the functioning of a computer.
- the devices, systems, and methods provided herein can implement improved data structures, incremental computation, and invertible algorithms to reduce latency, memory usage and data storage, and improve computational throughput.
- the devices, systems, and methods provided herein can provide window-aggregate-based features to capture historical behaviors and thus can provide a signal for machine learning models such as fraud detection, object detection, and product suggestion/recommendation.
- These devices, systems, and methods can enable the enrichment of raw events using the windowed aggregate features, in real time using a low- latency and high-throughput approach, before feeding the raw data to a machine learning model.
- RT- WinE real-time window enrichment
- Baseline 1 Flat Vector based Buffer is implemented with a std::vector ⁇ long>. For each event, the timestamp is pushed into the vector, followed by the number of fields of this event, then followed by each field.
- Baseline 2 Vector of Vectors Buffer is implemented with a std::vector ⁇ std::vector ⁇ long». Each event is represented by an inner std::vector ⁇ long> to store timestamp, and all the fields. Then the inner vector is pushed onto the outer vector.
- Baseline 3 Link List of Vectors Buffer is implemented with a std::list ⁇ std::vector>. Each event is represented by an inner std::vector ⁇ long> to store timestamp, and all the fields. Then the inner vector is appended to the outer list.
- Example method 2 Aulist (Directory Record & binarypad) (Low priority) Y-axis -> Throughput/Latency, and Size X-axis -> length of the list
- FIG. 18 illustrates a graph 1800 showing an insertion time comparison for the experimental implementations, according to at least one aspect of the present disclosure.
- graph 1800 when the number of insertions is small, a similar insertion time of roughly 160ns is observed for baseline2 (vector of vector) and baselines (linked list of vectors), the WOB insertion time takes about 50ns, and baselinel (flat vector) performs the best with roughly 25ns.
- baseline methods vector of vector, linked list of vectors, flat vector
- the WOB implementation also inclines as the number of insertions scales up, but much more linearly.
- FIG. 19 illustrates a graph 1900 showing total time (in ms) to scan through an entire data structure in the forward direction for the different experimental implementations, according to at least one aspect of the present disclosure.
- FIG. 20 illustrates a graph 2000 showing the total time (in ms) to scan through an entire data structure in the reverse direction for the different experimental implementations, according to at least one aspect of the present disclosure.
- FIG. 21 illustrates a graph 2100 showing the memory allocated to insert 2 16 items into the data structure for the different experimental implementations, according to at least one aspect of the present disclosure.
- WOB can support inserting compressed data, which can allow for a smaller memory footprint.
- serial port 3024 or external interface 3030 can be used to connect the computer apparatus to a wide area network such as the Internet, a mouse input device, or a scanner.
- the interconnection via system bus allows the central processor 3016 to communicate with each subsystem and to control the execution of instructions from system memory 3014 or the fixed disk 3028, as well as the exchange of information between subsystems.
- the system memory 3014 and/or the fixed disk 3028 may embody a computer readable medium.
- FIG. 23 is a diagrammatic representation of an example system 4000 that includes a host machine 4002 within which a set of instructions to perform any one or more of the methodologies discussed herein may be executed, according to at least one aspect of the present disclosure.
- the host machine 4002 operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the host machine 4002 may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the host machine 4002 may be a computer or computing device, a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a portable music player (e.g., a portable hard drive audio device such as an Moving Picture Experts Group Audio Layer 3 (MP3) player), a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA personal digital assistant
- MP3 Moving Picture Experts Group Audio Layer 3
- MP3 Moving Picture Experts Group Audio Layer 3
- machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- the example system 4000 includes the host machine 4002, running a host operating system (OS) 4004 on a processor or multiple processor(s)/processor core(s) 4006 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), and various memory nodes 4008.
- the host OS 4004 may include a hypervisor 4010 which is able to control the functions and/or communicate with a virtual machine (“VM”) 4012 running on machine readable media.
- the VM 4012 also may include a virtual CPU or vCPU 4014.
- the memory nodes 4008 may be linked or pinned to virtual memory nodes or vNodes 4016. When the memory node 4008 is linked or pinned to a corresponding vNode 4016, then data may be mapped directly from the memory nodes 4008 to their corresponding vNodes 4016.
- All the various components shown in host machine 4002 may be connected with and to each other or communicate to each other via a bus (not shown) or via other coupling or communication channels or mechanisms.
- the host machine 4002 may further include a video display, audio device or other peripherals 4018 (e.g., a liquid crystal display (LCD), alpha-numeric input device(s) including, e.g., a keyboard, a cursor control device, e.g., a mouse, a voice recognition or biometric verification unit, an external drive, a signal generation device, e.g., a speaker,) a persistent storage device 4020 (also referred to as disk drive unit), and a network interface device 4022.
- a video display e.g., a liquid crystal display (LCD), alpha-numeric input device(s) including, e.g., a keyboard, a cursor control device, e.g., a mouse, a voice recognition or biometric verification unit, an external drive, a
- the host machine 4002 may further include a data encryption module (not shown) to encrypt data.
- the components provided in the host machine 4002 are those typically found in computer systems that may be suitable for use with aspects of the present disclosure and are intended to represent a broad category of such computer components that are known in the art.
- the system 4000 can be a server, minicomputer, mainframe computer, or any other computer system.
- the computer also may include different bus configurations, networked platforms, multiprocessor platforms, and the like.
- Various operating systems may be used including UNIX, LINUX, WINDOWS, QNX ANDROID, IOS, CHROME, TIZEN, and other suitable operating systems.
- the disk drive unit 4024 also may be a Solid-state Drive (SSD), a hard disk drive (HDD) or other includes a computer or machine-readable medium on which is stored one or more sets of instructions and data structures (e.g., data/instructions 4026) embodying or utilizing any one or more of the methodologies or functions described herein.
- the data/instructions 4026 also may reside, completely or at least partially, within the main memory node 4008 and/or within the processor(s) 4006 during execution thereof by the host machine 4002.
- the data/instructions 4026 may further be transmitted or received over a network 4028 via the network interface device 4022 utilizing any one of several well-known transfer protocols (e.g., Hyper Text Transfer Protocol (HTTP)).
- HTTP Hyper Text Transfer Protocol
- the processor(s) 4006 and memory nodes 4008 also may comprise machine- readable media.
- the term "computer-readable medium” or “machine-readable medium” should be taken to include a single medium or multiple medium (e.g., a centralized or distributed database and/or associated caches and servers) that store the one or more sets of instructions.
- the term "computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the host machine 4002 and that causes the host machine 4002 to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding, or carrying data structures utilized by or associated with such a set of instructions.
- computer-readable medium shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals. Such media also may include, without limitation, hard disks, floppy disks, flash memory cards, digital video disks, random access memory (RAM), read only memory (ROM), and the like.
- RAM random access memory
- ROM read only memory
- the example aspects described herein may be implemented in an operating environment comprising software installed on a computer, in hardware, or in a combination of software and hardware.
- Internet service may be configured to provide Internet access to one or more computing devices that are coupled to the Internet service, and that the computing devices may include one or more processors, buses, memory devices, display devices, input/output devices, and the like.
- the Internet service may be coupled to one or more databases, repositories, servers, and the like, which may be utilized to implement any of the various aspects of the disclosure as described herein.
- the computer program instructions also may be loaded onto a computer, a server, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- Suitable networks may include or interface with any one or more of, for instance, a local intranet, a PAN (Personal Area Network), a LAN (Local Area Network), a WAN (Wide Area Network), a MAN (Metropolitan Area Network), a virtual private network (VPN), a storage area network (SAN), a frame relay connection, an Advanced Intelligent Network (AIN) connection, a synchronous optical network (SONET) connection, a digital T1, T3, E1 or E3 line, Digital Data Service (DDS) connection, DSL (Digital Subscriber Line) connection, an Ethernet connection, an ISDN (Integrated Services Digital Network) line, a dial-up port such as a V.90, V.34 or V.34bis analog modem connection, a cable modem, an ATM (Asynchronous Transfer Mode) connection, or an FDDI (Fiber Distributed Data Interface) or CDDI (Copper Distributed Data Interface) connection.
- PAN Personal Area Network
- LAN Local Area Network
- WAN Wide Area Network
- communications also may include links to any of a variety of wireless networks, including WAP (Wireless Application Protocol), GPRS (General Packet Radio Service), GSM (Global System for Mobile Communication), CDMA (Code Division Multiple Access) or TDMA (Time Division Multiple Access), cellular phone networks, GPS (Global Positioning System), CDPD (cellular digital packet data), RIM (Research in Motion, Limited) duplex paging network, Bluetooth radio, or an IEEE 802.11 -based radio frequency network.
- WAP Wireless Application Protocol
- GPRS General Packet Radio Service
- GSM Global System for Mobile Communication
- CDMA Code Division Multiple Access
- TDMA Time Division Multiple Access
- cellular phone networks GPS (Global Positioning System)
- CDPD cellular digital packet data
- RIM Research in Motion, Limited
- Bluetooth radio or an IEEE 802.11 -based radio frequency network.
- the server 4030 can further include or interface with any one or more of an RS-232 serial connection, an IEEE-1394 (Firewire) connection, a Fiber Channel connection, an IrDA (infrared) port, a SCSI (Small Computer Systems Interface) connection, a USB (Universal Serial Bus) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking.
- an RS-232 serial connection an IEEE-1394 (Firewire) connection, a Fiber Channel connection, an IrDA (infrared) port, a SCSI (Small Computer Systems Interface) connection, a USB (Universal Serial Bus) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking.
- a cloud-based computing environment is a resource that typically combines the computational power of a large grouping of processors (such as within web servers) and/or that combines the storage capacity of a large grouping of computer memories or storage devices.
- Systems that provide cloud-based resources may be utilized exclusively by their owners or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources.
- the cloud is formed, for example, by a network of web servers that comprise a plurality of computing devices, such as the host machine 4002, with each server 4030 (or at least a plurality thereof) providing processor and/or storage resources.
- These servers manage workloads provided by multiple users (e.g., cloud resource customers or other users).
- users e.g., cloud resource customers or other users.
- each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depends on the type of business associated with the user.
- Non-volatile media include, for example, optical or magnetic disks, such as a fixed disk.
- Volatile media include dynamic memory, such as system RAM.
- Transmission media include coaxial cables, copper wire and fiber optics, among others, including the wires that comprise one aspect of a bus.
- Transmission media also can take the form of acoustic or light waves, such as those generated during radio frequency (RF) and infrared (IR) data communications.
- RF radio frequency
- IR infrared
- Common forms of computer-readable media include, for example, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, any other physical medium with patterns of marks or holes, a RAM, a PROM, an EPROM, an EEPROM, a FLASH EPROM, any other memory chip or data exchange adapter, a carrier wave, or any other medium from which a computer can read.
- Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution.
- a bus carries the data to system RAM, from which a CPU retrieves and executes the instructions.
- the instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU.
- Computer program code for carrying out operations for aspects of the present technology may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, or the like and conventional procedural programming languages, such as the "C" programming language, Go, Python, or other programming languages, including assembly languages.
- the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider an Internet Service Provider
- a computer-implemented method comprising: defining a window based on a time range; adding an operator to the window; adding a new event from a data stream into a series store, wherein the series store stores events, wherein the events from the data stream comprise values and timestamps, and wherein the events are sorted in the series store based on the timestamps; sliding the window along the series store based on the timestamps to capture the new event and the events preceding the new event up to a limit of the time range; updating a state of the operator based on the values of the events captured by the window; modifying the new event based on the state of the operator to generate a modified event; and outputting the modified event.
- Clause 2 The computer-implemented method of Clause 1 , comprising: adding a subsequent new event into the series store after additing the new event, wherein the new event comprises a first timestamp, and wherein the subsequent new event comprises a second timestamp that is not newer than the first timestamp; sliding the window along the series store based on the timestamps to capture the subsequent new event and the events preceding the subsequent new event up to the limit of the time range, wherein the window does not capture the new event; and updating the state of the operator based on the values of the events captured by the window.
- Clause 3 The computer-implemented method of any of Clauses 1-2, comprising expiring and deleting from the series store an event that is not captured by the window.
- Clause 4 The computer-implemented method of any of Clauses 1-4, comprising compressing the values stored in the series store.
- Clause 5 The computer-implemented method of any of Clauses 1-4, comprising optimizing storage of the timestamps in the series store, wherein the optimizing comprises: storing a full timestamp for a first added event; storing a difference between a timestamp of a current event and a timestamp of a previous event for events added into the series store subsequent to the first added event; and reconstructing a full timestamp for the events added to the series store subsequent to the first added event by summing the stored differences.
- Clause 6 The computer-implemented method of any of Clauses 1-5, wherein the window comprises a start pointer to point to a first one of the events stored in the series store and an end pointer to point to a second one of the events stored in the series store.
- Clause 7 The computer-implemented method of Clause 6, wherein the sliding the window along the series store comprises incrementing or decrementing at least one of the start pointer or the end pointer.
- Clause 8 The computer-implemented method of Clause 7, wherein the updating the state of the operator based on the values of the events captured by the window comprises incrementally updating the state of the operator based on the incrementing or of the decrementing at least one of the start pointer or the end pointer.
- Clause 9 The computer-implemented method of any of Clauses 1-8, wherein the operator defines a function, and wherein the updating the state of the operator based on the values of the events captured by the window comprises computing the function using the values captured by the window.
- Clause 10 The computer-implemented method of Clause 9, wherein the new event is an in-order event, and wherein the in-order event comprises a timestamp that is newer than the timestamps of the other events stored in the series store, the method further comprising incrementally computing the function based on sliding the window along the series store.
- Clause 12 The computer-implemented method of any of Clauses 1-11 , wherein an underlying data structure of the series store is an unrolled linked list with adaptive sized memory portions.
- a server comprising a processor and a memory, wherein the memory comprises instructions executable by the processor to implement an enrichment model for modifying a data stream for use with a machine learning model, the enrichment model comprising: a series store configured to store events received by the enrichment model from the data stream, wherein the events comprise values and timestamps, and wherein the events are sorted in the series store based on the timestamps; a window configured to capture at least a portion of the events stored by the series store, wherein the window is defined by a predetermined range, and wherein the window is slidable along the series store to an updated position based on the receiving new event; and an operator corresponding to the window, wherein the operator is configured to change state based on the values of the events captured by the window, and wherein the enrichment model is configured to modify the new event based on the state of the operator at the updated position of the window.
- Clause 14 The server of Clause 13, wherein the series store is configured to delete an event that is not captured by the window in the updated position.
- Clause 15 The server of any of Clause 13-14, wherein the series store is configured to: store a full timestamp for a first received event of the events; store differences between timestamps associated with events received by the enrichment model subsequent to the first received event; and reconstruct full timestamps for the events received by the enrichment model subsequent to the first received event based on the stored differences.
- Clause 16 The server of any of Clauses 13-15, wherein the window comprises a start pointer to point to a first one of the events stored in the series store and an end pointer to point to a second one of the events stored in the series store.
- Clause 17 The server of any of Clauses 13-16, wherein the operator defines a function, and wherein the operator is configured to change state by computing the function using the values of the events captured by the window.
- Clause 18 The server of Clause 17, wherein the operator is configured to incrementally compute the function for the updated position of the window based on the new event being an in-order event, and wherein the in-order event comprises a timestamp that is newer than the timestamps of the other events stored in the series store.
- Clause 19 The server of Clause 17, wherein the operator is configured to invertibly compute the function for the updated position of the window based on the new event being an out-of-order event, and wherein the out-of-order event comprises a timestamp that is not newer than at least one of the timestamps of the other events stored in the series store.
- a computer-implemented method comprising: receiving a first new event from a data stream, wherein the first new event comprises a first timestamp; sorting the first new event into a series store based on the first timestamp, wherein the series store stores events from the data stream; setting a window along the series store at a first position to capture the first new event and the events preceding the first new event up to a predetermined time range; computing a function based on the events captured by the window in the first position to generate a first modified event; receiving a second new event from the data stream after receiving the first new event, wherein the second new event comprises a second timestamp, and wherein the second timestamp is earlier than the first timestamp; sorting the second new event into the series store based on the second timestamp; setting the window along the series store at a second position to capture the second new event and the events preceding the second new event up to the predetermined time range; and invertibly computing the function based on the events captured by
- a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), but is not limited to, floppy diskettes, optical disks, compact disc, read-only memory (CD-ROMs), and magneto-optical disks, read-only memory (ROMs), random access memory (RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic or optical cards, flash memory, or a tangible, machine-readable storage used in the transmission of information over the Internet via electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.).
- the non- transitory computer-readable medium includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
- Any of the software components or functions described in this application may be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Python, Java, C++ or Perl using, for example, conventional or object-oriented techniques.
- the software code may be stored as a series of instructions, or commands on a computer readable medium, such as RAM, ROM, a magnetic medium such as a hard-drive or a floppy disk, or an optical medium such as a CD- ROM. Any such computer readable medium may reside on or within a single computational apparatus and may be present on or within different computational apparatuses within a system or network.
- logic may refer to an app, software, firmware and/or circuitry configured to perform any of the aforementioned operations.
- Software may be embodied as a software package, code, instructions, instruction sets and/or data recorded on non-transitory computer readable storage medium.
- Firmware may be embodied as code, instructions or instruction sets and/or data that are hard-coded (e.g., nonvolatile) in memory devices.
- the terms “component,” “system,” “module” and the like can refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution.
- an “algorithm” refers to a self-consistent sequence of steps leading to a desired result, where a “step” refers to a manipulation of physical quantities and/or logic states which may, though need not necessarily, take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is common usage to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. These and similar terms may be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities and/or states.
- the communication devices may be capable of communicating with each other using a frame relay communications protocol.
- the frame relay communications protocol may comply or be compatible with a standard promulgated by Consultative Committee for International Circuit and Telephone (CCITT) and/or the American National Standards Institute (ANSI).
- the transceivers may be capable of communicating with each other using an Asynchronous Transfer Mode (ATM) communications protocol.
- ATM Asynchronous Transfer Mode
- the ATM communications protocol may comply or be compatible with an ATM standard published by the ATM Forum titled “ATM-MPLS Network Interworking 2.0” published August 2001, and/or later versions of this standard.
- ATM-MPLS Network Interworking 2.0 published August 2001
- any reference to “one aspect,” “an aspect,” “an exemplification,” “one exemplification,” and the like means that a particular feature, structure, or characteristic described in connection with the aspect is included in at least one aspect.
- appearances of the phrases “in one aspect,” “in an aspect,” “in an exemplification,” and “in one exemplification” in various places throughout the specification are not necessarily all referring to the same aspect.
- the particular features, structures or characteristics may be combined in any suitable manner in one or more aspects.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363491855P | 2023-03-23 | 2023-03-23 | |
| PCT/US2024/021267 WO2024197293A1 (en) | 2023-03-23 | 2024-03-25 | Real-time window enrichment for machine learning |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| EP4684334A1 true EP4684334A1 (en) | 2026-01-28 |
| EP4684334A4 EP4684334A4 (en) | 2026-02-18 |
Family
ID=92842563
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP24775806.3A Pending EP4684334A4 (en) | 2023-03-23 | 2024-03-25 | Real-time window enrichment for machine learning |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP4684334A4 (en) |
| CN (1) | CN120712579A (en) |
| WO (1) | WO2024197293A1 (en) |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB0228447D0 (en) * | 2002-12-06 | 2003-01-08 | Nicholls Charles M | System for detecting and interpreting transactions events or changes in computer systems |
| US6987883B2 (en) * | 2002-12-31 | 2006-01-17 | Objectvideo, Inc. | Video scene background maintenance using statistical pixel modeling |
| CN101867489A (en) * | 2010-06-11 | 2010-10-20 | 北京邮电大学 | Social network visualization method and system for realizing real-time display |
| US9141723B2 (en) * | 2013-03-14 | 2015-09-22 | Facebook, Inc. | Caching sliding window data |
| US20140324530A1 (en) * | 2013-04-30 | 2014-10-30 | Liveops, Inc. | Method and system for detecting patters in data streams |
| US11062334B2 (en) * | 2017-06-05 | 2021-07-13 | International Business Machines Corporation | Predicting ledger revenue change behavior of clients receiving services |
| EP3665544A4 (en) * | 2017-09-14 | 2021-05-05 | Savizar, Inc. | Database engine |
| US20190164164A1 (en) * | 2017-10-02 | 2019-05-30 | Krishna Pasupathy Karambakkam | Collaborative pattern recognition system |
| US10715393B1 (en) * | 2019-01-18 | 2020-07-14 | Goldman Sachs & Co. LLC | Capacity management of computing resources based on time series analysis |
| US11226725B1 (en) * | 2020-08-04 | 2022-01-18 | Kaskada, Inc. | User interface for machine learning feature engineering studio |
| US12184670B2 (en) * | 2021-02-01 | 2024-12-31 | Alert Logic, Inc. | Dynamic computer threat alert system and method |
| CN114866175B (en) * | 2021-02-03 | 2024-07-05 | 华为技术有限公司 | Communication method and device |
| US11782771B2 (en) * | 2021-05-20 | 2023-10-10 | Vmware, Inc. | Method and subsystem within a distributed log-analytics system that automatically determines and enforces log-retention periods for received log-event messages |
-
2024
- 2024-03-25 CN CN202480013159.9A patent/CN120712579A/en active Pending
- 2024-03-25 EP EP24775806.3A patent/EP4684334A4/en active Pending
- 2024-03-25 WO PCT/US2024/021267 patent/WO2024197293A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| EP4684334A4 (en) | 2026-02-18 |
| CN120712579A (en) | 2025-09-26 |
| WO2024197293A1 (en) | 2024-09-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10803016B2 (en) | Predictive models of file access patterns by application and file type | |
| US11436065B2 (en) | System for efficient large-scale data distribution in distributed and parallel processing environment | |
| EP2542979B1 (en) | Mechanism for supporting user content feeds | |
| US20200142887A1 (en) | Message Personalization Over Multiple Internet Messaging Campaigns | |
| US9773011B2 (en) | On-demand caching in a WAN separated distributed file system or clustered file system cache | |
| US9934260B2 (en) | Streamlined analytic model training and scoring system | |
| US20160179919A1 (en) | Asynchronous data replication using an external buffer table | |
| US20210117384A1 (en) | Prefetching based on historical use and real-time signals | |
| US10249070B2 (en) | Dynamic interaction graphs with probabilistic edge decay | |
| CN110019062A (en) | Method of data synchronization and system | |
| US10990598B2 (en) | Aggregating quantile metrics in multidimensional data sets | |
| US20220374404A1 (en) | Data Storage Using Roaring Binary-Tree Format | |
| CN110019087A (en) | Data processing method and its system | |
| CN107451266A (en) | For processing data method and its equipment | |
| CN114780564A (en) | Data processing method, data processing apparatus, electronic device and storage medium | |
| CN110704000A (en) | Data processing method and device, electronic equipment and storage medium | |
| Sallinen et al. | Real-time pagerank on dynamic graphs | |
| WO2023000785A1 (en) | Data processing method, device and system, and server and medium | |
| CN113590322A (en) | Data processing method and device | |
| CN115640333A (en) | Common divisor based time sequence substructure multi-mode matching query method and device | |
| CN116029731A (en) | A method, device and electronic equipment for processing market data | |
| EP4684334A1 (en) | Real-time window enrichment for machine learning | |
| Miao et al. | Efficient and scalable huge embedding model training via distributed cache management | |
| CN109558376A (en) | A kind of effective calculating towards MapReduce frame and data transmission Overlapped Execution method | |
| CN117407407B (en) | Method, device, equipment and computer medium for updating multi-heterogeneous data source data set |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| REG | Reference to a national code |
Ref country code: DE Ref legal event code: R079 Free format text: PREVIOUS MAIN CLASS: G06N0020000000 Ipc: G06Q0020400000 |
|
| 17P | Request for examination filed |
Effective date: 20251023 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| A4 | Supplementary search report drawn up and despatched |
Effective date: 20260121 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06Q 20/40 20120101AFI20260115BHEP Ipc: H04L 51/04 20220101ALI20260115BHEP Ipc: G06N 20/00 20190101ALI20260115BHEP Ipc: H04L 51/212 20220101ALI20260115BHEP Ipc: H04L 43/106 20220101ALI20260115BHEP |