Dynamic performance tuning based on implicit data features
By categorizing IoT data into identifier, use case, and runtime families and using machine learning, the system optimizes storage and retrieval processes, addressing the limitations of heterogeneous storage mechanisms in big data systems and enhancing performance.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- ORACLE INT CORP
- Filing Date
- 2026-04-08
- Publication Date
- 2026-07-29
AI Technical Summary
Heterogeneous storage mechanisms in big data systems, such as those used by IoT devices, lack support for traditional cost-based query tuning due to the absence of common features like indexes and data cardinality statistics, and their heterogeneous nature hinders cross-storage optimization.
A system that categorizes IoT data into three families - identifier, use case, and runtime data - using implicit data characteristics to infer storage and retrieval patterns, employing machine learning to optimize query execution and storage configurations based on data families.
Enhances system performance by enabling efficient data classification and use case estimation, optimizing storage and retrieval processes, and improving query execution efficiency.
Smart Images

Figure 2026123002000001_ABST
Abstract
Description
Technical Field
[0001] Technical Field The present disclosure relates to data analytics. In particular, the present disclosure relates to techniques for improving system performance based on data characteristics.
Background Art
[0002] Background Internet of Things (IoT) devices generate a dataset that includes three different categories of data: identifier data, use case data, and runtime data. Such data is generated by IoT devices.
Summary of the Invention
Problems to be Solved by the Invention
[0003] Identifier data may include characteristics of the device that generates the data that are human-readable and / or human-understandable. In particular, identifier data may include aspects such as device name, serial number, purchase data, and similar characteristics. Identifier data may include many different identifiers of the device that generates the data. Generally, identifier data includes data that remains constant or changes very rarely. Identifier data has the lowest cardinality (e.g., the fewest different fields or combinations of fields) in the system. Use case data is generally data related to various uses of the device that provides the data. For example, in the case of a thermostat, use case data may include "heating" or "cooling". Like identifier data, use case data is generally represented as one or more strings. Runtime data may include information measured by the device that is used in a field. As an example, in the case of a thermostat, runtime data may include a temperature measurement and a timestamp indicating the time when the temperature was recorded. Runtime data is generally the largest category of data by far in terms of digits.
[0004] The approaches described in this section are desired approaches, but not necessarily approaches that have been conceived or pursued previously. Therefore, unless otherwise indicated, none of the approaches described in this section should be assumed to be prior art simply because they are included in this section.
[0005] Embodiments are shown in the accompanying drawings as examples, not as limitations. References to “a certain” or “one” embodiment in this disclosure mean at least one embodiment, and do not necessarily refer to the same embodiment. [Brief explanation of the drawing]
[0006] [Figure 1] This figure shows a system according to one or more embodiments. [Figure 2] This figure shows an exemplary set of actions for improving system performance based on data features, according to one or more embodiments. [Figure 3A] This figure shows an exemplary system for improving system performance based on data characteristics. [Figure 3B] This figure shows an exemplary system for improving system performance based on data characteristics. [Figure 4] This is a block diagram showing a computer system according to one or more embodiments. [Modes for carrying out the invention]
[0007] Detailed explanation In the following description, numerous specific details are provided for illustrative purposes to ensure thorough understanding. One or more embodiments can be implemented without these specific details. Features described in one embodiment may be combined with features described in a different embodiment. In some examples, well-known structures and devices are described with reference to block diagrams to avoid unnecessarily obscuring the invention.
[0008] 1. Overall Overview 2. Architecture Overview 3. Improving system performance based on data characteristics 4. Exemplary Embodiments 5. Other extensions 6. Hardware Overview 1. Overall Overview One or more embodiments include a system for performance tuning based on data characteristics. Users of big data systems may use heterogeneous storage mechanisms, and these heterogeneous storage mechanisms do not support traditional cost-based query tuning because they are backed up by storage systems that do not provide commonly used features such as indexes, row counts, data cardinality statistics and similar tools, or because the heterogeneous nature of the storage systems hinders cross-storage optimization. However, with time-series based data, inherent aspects of the data, storage patterns, and implicit aspects of the data based on the query itself can be used to infer estimated patterns and help optimize query execution. User-defined metadata about how data sources are related to each other provides insight into what kinds of data are stored in each system, and this metadata can be used to infer missing statistics about the stored data. Similarly, knowing some information about a particular data source allows us to infer the characteristics of other data sources.
[0009] In some embodiments, a system may determine how to store and access data by grouping it. For example, when processing data from one or more Internet of Things (IoT) devices, a system may group the data into one of three families of data that it considers characteristic of Internet of Things data. Using information about which data has been grouped into each family, the system may infer which data should belong to other families and adjust the storage and retrieval processes accordingly.
[0010] Three families of data used in the Internet of Things could be, for example, identifier data, use case data, and runtime data. Systems may use these data families because they enable efficient and definable classification, and such classification, in turn, enables use case estimation.
[0011] Data fields within a dataset can be grouped based on the characteristics of the data. In particular, data fields can be categorized based on one or more characteristics of the data stored in that field, such as cardinality (e.g., the number of items in the data field) and / or update frequency (e.g., how often the data in the field is updated).
[0012] One or more embodiments described herein and / or in the claims may not be included in this overall summary section.
[0013] 2. Architecture Overview Figure 1 shows a system 100 according to one or more embodiments. As shown in Figure 1, the system 100 includes a performance tuning engine 102, a user interface 114, one or more external data sources 118, a data repository 120, and its various components. In one or more embodiments, the system 100 may include more or fewer components than those shown in Figure 1. The components shown in Figure 1 may be local to each other or remote to each other. The components shown in Figure 1 may be implemented in software and / or hardware. Each component may be distributed across multiple applications and / or machines. Multiple components may be combined into a single application and / or machine. An operation described for one component may instead be performed by another component.
[0014] In one or more embodiments, the user interface 114 refers to hardware and / or software configured to facilitate communication between a user and an interface creation engine 102. The user interface 114 may be used by a user accessing the interface (e.g., a dashboard interface) for work and / or personal activities. The user interface 114 may be associated with one or more devices for displaying visual media, such as a display 116, including a monitor, television, or projector. The user interface 114 renders user interface elements and receives input through the user interface elements. Examples of interfaces include graphical user interfaces (GUI), command line interfaces (CLI), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, dropdown lists, list boxes, buttons, toggles, text fields, date and time selectors, command lines, sliders, pages, and formatting.
[0015] In one embodiment, different components of the user interface 114 are specified in different languages. The behavior of the user interface elements is specified in a dynamic programming language such as Java(registered trademark) Script. The content of the user interface elements is specified in a hypertext markup language (HTML). or XML User Interface Language (XUL), etc. It is specified in the markup language. The layout of user interface elements is specified in stylesheet language such as Cascading Style Sheets (CSS). It is specified in a language. Alternatively, the user interface 114 is specified in one or more other languages such as Java, C, or C++.
[0016] In one or more embodiments, the performance tuning engine 102 refers to hardware and / or software configured to perform the operations described herein for dynamic performance tuning based on implicit data characteristics. Examples of operations for dynamic performance tuning based on implicit data characteristics will be described below with reference to FIG. 2.
[0017] In one embodiment, the performance tuning engine 102 includes a data categorization component 104. The data categorization component 104 may refer to hardware and / or software configured to perform the operations described herein (including operations as incorporated by reference) for recognizing input from a user.
[0018] In one embodiment, the performance tuning engine 102 includes a category analysis component 106. The category analysis component 106 may refer to hardware and / or software configured to perform generation and / or identification of query suggestions.
[0019] In one embodiment, the performance tuning engine 102 includes a storage configuration manager 106. The storage configuration manager 106 may refer to hardware and / or software configured to perform a selection of one of the selected queries.
[0020] In one embodiment, one or more components of the performance tuning engine 102 use a machine learning engine 110. Machine learning includes various techniques in the field of artificial intelligence that process user-independent processes executed by a computer to solve problems with variable inputs.
[0021] In some embodiments, the machine learning engine 110 trains the machine learning model 112 to perform one or more operations. In particular, the machine learning engine 110 may train the machine learning model 112 to receive one or more records of a dataset as input and split these one or more records into one or more data fields. One or more machine learning engines 110 may cause the machine learning model 112 to determine one or more features associated with each data field and select a storage configuration for the data field based on these one or more features.
[0022] Training the machine learning model 112 uses training data to generate a function that calculates a corresponding output given one or more inputs to the machine learning model 112. In at least some embodiments, the machine learning model 112 may include a two-stage process, where data is input into an algorithm that outputs the model, and this model is fed data to generate an output. This output may correspond to a prediction based on prior machine learning. In one embodiment, this output includes a label, classification, and / or categorization assigned to the provided input. The machine learning model 112 corresponds to a trained model for performing a desired operation (e.g., labeling, classifying, and / or categorizing the input). The performance tuning engine 102 may use multiple machine learning engines 110 and / or multiple machine learning models 112 for various purposes.
[0023] In one embodiment, the machine learning engine 110 may use supervised learning, semi-supervised learning, unsupervised learning, reinforcement learning and / or other training methods, or a combination thereof. In supervised learning, labeled training data includes input / output pairs in which each input is labeled with a desired output (e.g., label, classification and / or categorization), also referred to as a watch signal. In semi-supervised learning, some inputs are associated with a watch signal, while others are not. In unsupervised learning, the training data does not include a watch signal. Reinforcement learning uses a feedback system in which the machine learning engine 110 receives positive and / or negative reinforcements in the process of attempting to solve a particular problem (e.g., attempting to optimize performance in a particular scenario according to one or more predetermined performance criteria). In one embodiment, the machine learning engine 110 initially uses supervised learning The machine learning model 112 is trained, and then the machine learning model 112 is continuously updated using unsupervised learning.
[0024] In one embodiment, the machine learning engine 110 may use many different techniques to label, classify, and / or categorize inputs. The machine learning engine 110 may convert inputs into feature vectors that describe one or more properties ("features") of these inputs. The machine learning engine 110 may label, classify, and / or categorize inputs based on these feature vectors. Alternatively or additionally, the machine learning engine 110 may use clustering (also referred to as cluster analysis) to identify commonalities in the inputs. The machine learning engine 110 may group (i.e., cluster) the inputs based on their commonalities. The machine learning engine 110 may use hierarchical clustering, k-means clustering, and / or other clustering methods, or a combination thereof. In one embodiment, the machine learning engine 110 includes an artificial neural network. The artificial neural network includes a plurality of nodes (also referred to as artificial neurons) and edges between the nodes. The edges may be associated with corresponding weights, which represent the strength of the connections between the nodes, which the machine learning engine 110 adjusts as machine learning progresses. Alternatively or additionally, the machine learning engine 110 may include a support vector machine, which represents the input as a vector. The machine learning engine 110 may label, classify, and / or categorize the input based on these vectors. Alternatively or additionally, the machine learning engine 110 may use a naive Bayes classifier to label, classify, and / or categorize the input. Alternatively or additionally, given a particular input, the machine learning model may apply a decision tree to predict an output for this given input. Alternatively or additionally, the machine learning engine 110 may apply fuzzy logic in situations where it is impossible or impractical to label, classify, and / or categorize the input within a fixed, mutually exclusive set of options. The machine learning models 112 and techniques described above are for illustrative purposes only and should not be construed as limiting one or more embodiments.
[0025] In one embodiment, the machine learning engine 110 applies various inputs to the machine learning model 112, so the corresponding output is not necessarily accurate. For example, the machine learning engine 110 may train the machine learning model 112 using supervised learning. After training the machine learning model 112, if subsequent inputs are identical to inputs included in the labeled training data and the output is identical to the monitoring signal in the training data, then the output is certainly accurate. If the input is different from inputs included in the labeled training data, the machine learning engine 110 may produce a corresponding output that is inaccurate or whose accuracy is uncertain. In addition to producing a specific output for a given input, the machine learning engine 110 may be configured to produce an indicator representing the confidence (or lack thereof) in terms of the accuracy of the output. The confidence indicator may include a numerical score, a Boolean value, and / or other types of indicators corresponding to the confidence (or lack thereof) in terms of the accuracy of the output.
[0026] In embodiments, machine learning models may be used for anomaly detection. There are three broad categories of anomaly detection techniques. Unsupervised anomaly detection techniques detect anomalies in an unlabeled test dataset, which is done under the assumption that the majority of instances in the dataset are normal by looking for instances that seem to fit the rest of the dataset the least. Supervised anomaly detection techniques provide a first dataset labeled as "normal" and a second dataset labeled as "anomalous" as training inputs, and train a classifier using these first and second datasets to determine whether the unlabeled input should be labeled as "normal" or "anomalous". It is possible to determine whether it should be done. Semi-supervised anomaly detection techniques build a model that represents normal behavior from a given normal training dataset, and then test the likelihood that this model will generate test instances.
[0027] In one embodiment, the performance tuning engine 102 is configured to receive data from one or more external data sources 118. The external data sources 118 refer to hardware and / or software operating independently of the performance tuning engine 102. For example, the hardware and / or software of the external data source 118 may be under the control of an entity different from the entity controlling the query suggestion engine (e.g., a different company or other type of organization). The external data source 118 may supply data associated with one or more Internet of Things (IoT) devices.
[0028] In one embodiment, the performance tuning engine 102 is configured to retrieve data from an external data source 118 by "pulling" the data through the application programming interface (API) of the external data source 118 using user credentials provided by the user to the external data source 118. Alternatively or additionally, the external data source 118 may be configured to "push" data to the performance tuning engine 102 through the API using access keys, passwords, and / or other types of credentials provided by the user to the external data source 118. The performance tuning engine 102 may be configured to receive data from the external data source 118 in many different ways.
[0029] In one or more embodiments, the data repository 120 is any type of storage unit and / or device for storing data (e.g., a file system, database, collection of tables, or other storage mechanism). Furthermore, the data repository 120 may include multiple different storage units and / or devices. These multiple different storage units and / or devices may or may not be of the same type, or may or may not be located in the same physical location. Furthermore, the data repository 120 may be implemented or run on the same computing system as the performance tuning engine 102 and / or external data source 118. Alternatively or additionally, the data repository 120 may be implemented or run on a different computing system than the performance tuning engine 102 and / or external data source 118. The data repository 120 may be communicably coupled to the performance tuning engine 102 and / or external data source 118 via a direct connection or via a network. In some embodiments, the data repository 120 includes one or more data caches that enable the system 100 to store data in persistent but non-persistent locations. Alternatively or additionally, system 100 may use at least a portion of one or more data caches contained in the data repository 120 to store summary statistics related to the dataset.
[0030] A data repository can function as a repository for many types of data. For example, data stored in a data repository may correspond to data received from one or more IoT devices. This data can be categorized based on various criteria. Categorization may be chosen to enable efficient and definable classification of data and to provide use case estimations. If algorithmic classification is not performed, manual declaration by users with expertise in business space and computing technology is required to partition the data on disk, create indexes for efficient searching, and optimize caching strategies. As a typical example, data can be categorized as one of the identifier data 122, use case data 124, or runtime data 126 shown in Figure 1. Identifier data 122 may include data that identifies a specific device providing the data. Use case data 124 may include data associated with a specific function of the device providing the data. Runtime data 126 may include data associated with activities performed by the device providing the data.
[0031] Identifier data 122 can be a human-readable and / or human-understandable feature of the data. Identifier data 122 may include aspects such as device name, serial number, purchase data, and similar features. Identifier data 122 may include many different identifiers of the device providing the data. Generally, identifier data 122 contains data that remains constant or changes very rarely. The system can assume that identifier data 122 has the lowest cardinality in the system (e.g., fewest different items). The system can assume that identifier data 122 is generally the root level of grouping in many forms of reporting and predictive analytics. For example, a machine learning algorithm that predicts the likelihood of a car failure based on mileage may start by grouping data by car manufacturer and model, and then looking for trends within that manufacturer and / or model. From a storage / retrieval perspective, the system can assume that most interactions use operators such as "equals" rather than range operators. Because identifier data 122 is root-level data, it has fewer records than use case data 124 or runtime data 126. Partitioning a dataset for each arbitrary value in identifier data 122 offers little benefit during reading, but will be highly valuable during dataset analysis. Caching identifier data 122 is generally very efficient because identifier data 122 is rarely edited. Identifier data 122 tends to contain string values. Because the records are broad but the collection is not large, memory space can generally be saved by hashing identifier data into a lookup table. When joining data across families, identifier data 122 is generally the right-hand side of the join.
[0032] Use case data 124 generally consists of data about various uses of the device providing the data. For example, in the case of a thermostat, use case data 124 might include "heating" or "cooling." Like identifier data 122, use case data 124 is generally represented as one or more strings. However, use case data is generally not applicable to hashing because each part of the use case record can be an important feature. Furthermore, the analysis of the dataset may focus on drilling down into the use case data 124. Thus, use case data 124 is often accessed in different ways at different points in the analysis. Overall system performance can be improved by sequentially caching the use case data 124 partitioned by each field. This caching procedure caches more data than a single partition, but caching is likely to be expensive. Furthermore, since use case data 124 has a relatively small number of rows, caching use case data is not excessively memory-intensive. Since the system determines that use case data 124 should be cached, storing the use case data on disk does not necessarily need to be particularly read-efficient. Rather, this storage is space-efficient and actively compresses use case data 124.
[0033] Runtime data 126 may contain information about a specific instance of identifier data used in the field. For example, in the case of a thermostat, runtime data may include a temperature measurement and a timestamp indicating the time the temperature was recorded. The system may determine that runtime data 126 is generally the largest family of data. The system may determine that at least one field in runtime data 126 is a timestamp and require that this timestamp be declared or search for it in the data. Regardless of the size of runtime data 126 at setup, the system may determine that runtime data 126 will eventually become too large for any form of in-memory data read. In heterogeneous data environments, such as environments with both relational databases and mass data storage, runtime data 126 may be data that the system determines should be stored in the mass data storage. Since runtime data 126 is generally expected to be very large and contain various reports (often many reports) from the same physical object (e.g., a currently operating device), the system may determine that runtime data 126 is generally accessed by time range scans (e.g., all records over the last week, last month, or last year) or by time range scans combined with specific keys from use case data 124 and / or identifier data 122 (e.g., all records over the last year grouped by heating mode thermostats). The system can algorithmically optimize storage by determining, based on record timestamps, that older data can be moved to less efficient storage at a rate based on the frequency declared by the user-defined analysis behavior (for example, a user performing analysis on data from the last week is less sensitive to the slowness of reading data from five years ago than a user whose analysis is defined by long-term trends).
[0034] In one embodiment, System 100 is implemented on one or more digital devices. The term “digital device” generally refers to any hardware device including a processor. A digital device may refer to a physical device that runs an application or virtual machine. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, specific-function hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translators (NATs), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handsets, smartphones, personal digital assistants ("PDAs"), wireless receivers and / or transmitters, base stations, communication management devices, routers, switches, controllers, access points, and / or client devices.
[0035] 3. Improving system performance based on data characteristics Figure 2 shows an exemplary set of actions for improving system performance based on data features according to one or more embodiments. One or more actions shown in Figure 2 may be modified, rearranged, or omitted entirely. Therefore, a particular sequence of actions shown in Figure 2 should not be construed as limiting the scope of one or more embodiments.
[0036] In one embodiment, the system (for example, one or more components of system 100) receives a dataset (operation 202). In some embodiments, this dataset may be received as a single unit. In other embodiments, this dataset may be received over time (for example, intermittently or periodically). In some aspects, the data may be received from one or more external devices. In particular, the data may be received from connected devices such as Internet of Things (IoT) devices. The Internet of Things (IoT) has unique identifiers and the ability to transfer data over a network without requiring human-to-human interaction or human-to-computer interaction. An IoT is a system of interconnected computing devices, mechanical machines, and digital machines. IoT devices may include, for example, building or home automation devices, medical and / or healthcare devices, transportation devices (e.g., vehicle-to-vehicle and / or in-vehicle communication, traffic control, logistics, vehicle safety and / or control), and agricultural monitoring devices. Many types of devices can utilize the IoT architecture.
[0037] The received data may consist of one or more data fields (also known as datasets). For example, the received data may include a timestamp, one or more identifiers that identify the device sending the data to the system, one or more data items indicating the mode of use of the device, and one or more measurements performed by the device. In some cases, each data item received by the system may consist of items in each data field. In other cases, a data item received by the system may consist only of fields that have changed since the previous data item was received.
[0038] The system may determine how to categorize the data fields within the dataset (operation 204). The categorization method may be used for one or more of the data fields within the dataset. In some embodiments, the same categorization method is used to categorize each data field within the dataset. In other embodiments, different categorization methods may be used to categorize different data fields.
[0039] For example, data fields can be categorized based on how often the data within that field is received or updated. For instance, data can be categorized based on the absolute frequency of data reception or updates (e.g., the number of items corresponding to a particular data field received or updated per second, minute, or hour). Alternatively, data can be categorized based on relative frequency (e.g., the number of items corresponding to a particular data field received or updated compared to other fields in the dataset).
[0040] As another example, data fields can be categorized based on the number of records in the data within that field. For example, data can be categorized based on the absolute number of records (e.g., whether a particular data field has fewer than 100 records, fewer than 1000 records, etc.). Alternatively, data can be categorized based on the relative number of records (e.g., the number of records corresponding to a particular data field compared to other fields in the dataset).
[0041] Each field of the received data may be categorized based on a determined categorization method (operation 206). The categories to which a data field may be assigned may include identifier data, use case data, or runtime data. Identifier data may include data that identifies a specific device providing the data. Use case data may include data associated with a specific function or operating mode of the device providing the data. Runtime data may include data associated with activities and / or measurements performed by the device providing the data.
[0042] In some embodiments, categorizing data may involve selecting a first threshold and a second threshold. The second threshold may be greater than the first threshold. In some embodiments, these thresholds may be selected based on the data contained in the dataset. In other embodiments, these thresholds may be predetermined. In some embodiments, the second threshold is several orders of magnitude larger than the first threshold. The first and second thresholds are used in data fee It can be used to categorize the rud.
[0043] As an example, data fields that do not exceed a first threshold can be categorized as identifier data. Identifier data can be human-level data features. Identifier data may include aspects such as device name, serial number, purchase data, and similar features. Identifier data may include many different identifiers for the device providing the data. In general, identifier data includes data that remains constant or changes only very rarely. Therefore, identifier data has relatively high cardinality in the system (e.g., a relatively large number of different items) but can be updated at the lowest frequency.
[0044] As another example, a data field that exceeds a first threshold but does not exceed a second threshold can be categorized as use case data. Use case data generally concerns various uses of the device providing the data. For example, in the case of a thermostat, the use case data might include "heating" or "cooling." Generally, use case data changes relatively rarely, but more frequently than identifier data. Therefore, use case data has a relatively low cardinality. However, the cardinality of use case data is greater than that of identifier data. Similarly, use case data is updated relatively infrequently, but more frequently than identifier data.
[0045] As a third example, data fields that exceed both the first and second thresholds may be categorized as runtime data. Runtime data may contain information about a specific instance of the identifier data used in the field. For example, in the case of a thermostat, runtime data may include temperature measurements and a timestamp indicating the time the temperature was recorded. The system may determine that runtime data is generally the largest family of data. The system may determine that at least one field in the runtime data is a timestamp and require that this timestamp be declared or searched for in the data. Regardless of the size of the runtime data at setup, the system may determine that the runtime data will eventually become too large for any form of in-memory data to be read.
[0046] The system may determine a storage configuration for storing data fields based on the determined categorization (operation 208). Configuring storage may include selecting a storage medium in which the data fields will be stored. In embodiments, configuring data may further include specifying a particular layout of the data within the selected storage medium. Configuring storage may also include selecting a particular data structure to be used when storing data field items. Furthermore, the storage configuration may specify a particular partitioning of the database to improve database performance.
[0047] In some embodiments, the system may rely on machine learning algorithms to track user input regarding the analysis of a dataset. For example, the system may track data access actions initiated by the user (e.g., join operations, table scan operations, read operations, etc.). The system may rely on machine learning to identify patterns in data access actions and, in part, select a storage configuration based on these patterns. For example, if the majority of data access actions are for data received in the last week, the system may determine that data older than one week can be stored in a space-efficient but read-inefficient manner.
[0048] The storage configuration may be selected, for example, partially based on the size of the data fields. Alternatively, the storage configuration may be selected based on how the data fields are typically accessed. A selection can be made. For example, the frequency with which data is accessed and the type of access performed may influence the selected configuration. The system may associate specific access types and frequencies with specific data categories, enabling the system to select a specific storage configuration for a data field based on the categorization of the data field. In some embodiments, configuring storage may involve selecting a storage configuration from a plurality of storage configurations. The plurality of storage configurations may be predetermined based on the typical use of one or more storage devices.
[0049] As a specific example, in many forms of reporting and predictive analytics, identifier data is generally the root level of grouping. From a storage / retrieval perspective, most interactions with identifier data can be done using operators such as "equals" rather than range operators. Identifier data has fewer records than use case data or runtime data. Therefore, partitioning a dataset for each arbitrary value in identifier data will provide little benefit when reading, but will be highly valuable when analyzing the dataset. Caching identifier data is generally very efficient because identifier data is rarely edited. Because the records are broad but the collections are not large, memory space can generally be saved by hashing identifier data into lookup tables. When joining data across families, identifier data is generally the right-hand side of the join.
[0050] As another example, use case data is generally represented as one or more strings. However, use case data is generally not applicable to hashing because each part of a use case record can be an important feature. Furthermore, the analysis of a dataset may focus on drilling down into the use case data. Therefore, use case data is often accessed in different ways at different points in the analysis. Overall system performance can be improved by sequentially caching use case data partitioned by each field. This caching procedure caches more data than a single partition, but caching is likely to be expensive. Moreover, since use case data has a relatively small number of rows, caching use case data is not prohibitively memory-intensive. Storing use case data on disk does not necessarily have to be particularly read-efficient, as the system decides that use case data should be cached. Rather, this storage is space-efficient and actively compresses the use case data.
[0051] As another example, runtime data may be stored in high-capacity data storage. Since runtime data generally contains large datasets with various reports (often many reports) from the same physical object (e.g., a currently operating device), the system may determine that runtime data is generally accessed by time-range scans (e.g., all records over the past week, month, or year) or by time-range scans combined with partition keys from use case data or identifier data (e.g., all records over the past year grouped by a thermostat in heating mode, all records over the past year grouped by serial number). The system may algorithmically optimize storage by determining, based on record timestamps, that older data can be moved to less efficient storage at a rate based on the frequency declared by the user-defined analytical operation (e.g., a user performing an analysis on data from the past week is not as sensitive to the slowness of reading data from five years ago as a user whose analysis is defined by long-term trends).
[0052] In some embodiments, following the selection of a storage configuration, the system sorts the data To store (operation 210). Storing data may include storing the data on a selected storage device. Storing data may include creating a data structure according to a selected storage configuration. In some embodiments, data storage may include selecting a new data configuration. For example, as data inflow patterns change in response to one or more changes in user access patterns, or as knowledge about those patterns increases, selecting a new storage configuration (and storing data based on the newly selected storage configuration) becomes not only possible but also likely.
[0053] 4. Exemplary Embodiments For the purpose of clarification, detailed examples are provided below. The components and / or operations described below should be understood as a single specific example that may not apply to any particular embodiment. Therefore, the components and / or operations described below should not be construed as limiting the scope of any claim.
[0054] Figure 3A shows a connected thermostat device 302 that transmits data, indicated by arrow 306, to system 304 for collection. In particular, device 302 may transmit identifier data 306a, use case data 306b, and runtime data 306c. As shown in Figure 3A, the thickness of the arrows corresponds to the relative number of updates for each data category.
[0055] As shown in Figure 3B, the dataset includes the data fields "Device Identifier," "Device Mode," "Temperature," and a timestamp. As indicated in the "Timestamp" and "Temperature" data fields, device 302 transmits a temperature measurement to system 304 once every second. Along with each measurement, the device also transmits an identifier (e.g., the "Device Identifier" data field). In addition, the device transmits an indicator of its operating mode (e.g., the "Device Mode" data field). In the example shown in Figure 3B, device "device_01" transitions from "cooling" mode to "heating" mode at time 12:00:00. The mode change may indicate user interaction to change modes, a scheduled mode change, or other reasons for mode transition.
[0056] The system categorizes each data field as either identifier data, use case data, or runtime data. The system sets a first threshold to 1 and a second threshold to 5. The "Device Identifier" field contains one update that does not exceed either the first or second threshold. Therefore, the "Device Identifier" data field is categorized as identifier data. The "Device Mode" field contains two updates that exceed the first threshold but not the second. Therefore, the "Device Mode" data field is categorized as use case data. The "Temperature" and "Timestamp" fields each contain 11 updates that exceed both the first and second thresholds. Therefore, the "Temperature" and "Timestamp" data fields each are categorized as runtime data.
[0057] Following categorization, the system may determine the storage configuration for each category of data. For identifier data (e.g., the "device identifier" data field), the system may select a space-efficient storage configuration, such as a highly compressed storage configuration. The system may also recommend caching identifier data for faster retrieval. For use case data (e.g., the "device mode" data field), the system may select a space-efficient storage configuration, such as a highly compressed storage configuration. Runtime data (e.g., "temperature") Regarding the data fields (and "timestamp" data fields), the system can recognize that these data fields are likely to grow rapidly and determine a storage configuration that allows for the efficient storage of large amounts of data. Furthermore, the system can structure data storage in a way that leads to improved efficiency when reading data. For example, data may be stored chronologically because data analysis is likely to result in searching for data over a specific time range. Data from each field can be stored according to the selected storage configuration.
[0058] 5. Other extensions The embodiments are directed to a system having one or more devices, including a hardware processor, configured to perform any of the operations described herein and / or in any of the following claims.
[0059] In one embodiment, a non-temporary computer-readable storage medium comprises instructions, which, when executed by one or more hardware processors, cause to perform any of the operations described herein and / or any of the claims.
[0060] Any combination of features and functions described herein may be used according to one or more embodiments. In the foregoing specification, embodiments have been described with reference to many specific details that may differ from one embodiment to another. Therefore, the specification and drawings should be considered illustrative rather than restrictive. The sole and exclusive indicator of the scope of the invention, and what the applicant intends to be the scope of the invention, is the literal and equivalent scope of the set of claims arising from this application in any particular form that gives rise to such claims, including any subsequent amendments.
[0061] 6. Hardware Overview In one embodiment, the technology described herein is performed by one or more special-purpose computing devices. These special-purpose computing devices may be physically incorporated to perform the technology, or one or more application-specific integrated circuits (ASICs), field-programmable gates, etc., that are continuously programmed to perform the technology. Ray (FPGA: Field Programmable Gate Array) or network processing unit It may include digital electronic devices such as (NPU: Network Processing Unit). Alternatively, it may include one or more general-purpose hardware processors programmed to execute the technology according to program instructions in firmware, memory, other storage, or a combination thereof. Such a special-purpose computing device may also combine custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming to implement the technology. The special-purpose computing device may be a desktop computer system, a portable computer system, a handheld device, a networking device, or any other device incorporating hardwired and / or program logic to execute the technology.
[0062] For example, Figure 4 is a block diagram showing a computer system 400 in which one embodiment of the present invention may be realized. The computer system 400 includes a bus 402 or other communication mechanism for communicating information, and a hardware processor 404 coupled to the bus 402 for processing information. The hardware processor 404 may be, for example, a general-purpose microprocessor.
[0063] The computer system 400 is coupled to bus 402, and includes information and processor 40 Random access memory (RAM) for storing instructions executed by 4. The main memory 406 also includes other dynamic storage devices such as Access Memory (Access Memory). The main memory 406 may also be used to store temporary variables or other intermediate information while instructions are being executed by the processor 404. When such instructions are stored in a non-temporary storage medium accessible to the processor 404, the computer system 400 becomes a special-purpose machine customized to perform the actions specified in the instructions.
[0064] The computer system 400 further includes a read-only memory (ROM) 408 or other static storage device coupled to the bus 402 for storing static information and instructions for the processor 404. A storage device 410, such as a magnetic disk or optical disk, is provided and coupled to the bus 402 for storing information and instructions.
[0065] The computer system 400 may be coupled to a display 412, such as a cathode ray tube (CRT), via a bus 402, to display information to the computer user. An input device 414, including alphanumeric keys and other keys, is coupled to the bus 402 to communicate information and command selections to the processor 404. Another type of user input device is a cursor control device 416, such as a mouse, trackball, or cursor directional keys, to communicate directional information and command selections to the processor 404 to control cursor movement on the display 412. This input device generally has two degrees of freedom on two axes, namely a first axis (e.g., x) and a second axis (e.g., y), allowing the device to specify a position in a plane.
[0066] The computer system 400 may perform the techniques described herein using customized hardwired logic, one or more ASICs or FPGAs, firmware and / or programmed logic, in combination with the computer system to make or program the computer system 400 to be a special-purpose machine. According to one embodiment, the techniques described herein are performed by the computer system 400 in response to the processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another storage medium, such as a storage device 410. The execution of the sequence of instructions contained in main memory 406 causes the processor 404 to perform the process steps described herein. In alternative embodiments, hardwired circuits may be used instead of, or in combination with, software instructions.
[0067] As used herein, the term “storage medium” refers to any non-temporary medium that stores data and / or instructions causing a machine to operate in a particular manner. Such storage media may comprise non-volatile and / or volatile media. Non-volatile media include, for example, optical or magnetic disks, such as storage device 410. Volatile media include dynamic memory, such as main memory 406. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes, or other magnetic data storage media, CD-ROMs, other optical data storage media, any physical media having a pattern of holes, RAM, PROMs and EPROMs, FLASH®-EPROMs, NVRAMs, other memory chips or cartridges, associative memory (CAM: Content-Addressable Memory), and ternary associative memory (TCAM: Ternary Content-Addressable Memory).
[0068] The storage medium is different from the transmission medium, but may be used in conjunction with the transmission medium. The transmission medium is It is involved in transferring information between storage media. For example, the transmission medium includes coaxial cables, copper wires, and optical fibers, and includes wires equipped with bus 402. The transmission medium may also take the form of sound waves or light waves, such as those generated during radio and infrared data communications.
[0069] Various forms of media may be involved in communicating one or more sequences of one or more instructions to the processor 404 for execution. For example, these instructions may initially be recorded on a magnetic disk or solid-state drive of a remote computer. The remote computer can load these instructions into its dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 400 can receive the data over the telephone line and convert this data into an infrared signal using an infrared transmitter. An infrared detector can receive the data transmitted in the form of an infrared signal, and appropriate circuitry can place this data on bus 402. Bus 402 transmits the data to main memory 406, and the processor 404 retrieves and executes the instructions from main memory 406. Instructions received by main memory 406 may optionally be stored in a storage device 410 before or after execution by the processor 404.
[0070] The computer system 400 also includes a communication interface 418 coupled to bus 402. The communication interface 418 provides a two-way data communication coupling to a network link 420 connected to a local network 422. For example, the communication interface 418 can connect to an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a corresponding type of telephone. It may also be a modem for providing data communication connectivity to a line. As another example, the communication interface 418 is compatible with a local area network (LAN). It may be a LAN card for providing data communication connectivity to a Network. A wireless link may also be implemented. In any such implementation, the communication interface 418 transmits and receives electrical, electromagnetic, or optical signals that convey digital data streams representing various types of information.
[0071] A network link 420 generally provides data communication to other data devices over one or more networks. For example, a network link 420 provides data communication to a host computer 424 or an Internet Service Provider (ISP) 426 over a local network 422. The device can be connected. The ISP 426 then provides data communication services via a worldwide packet data communication network now commonly referred to as the “Internet” 428. Both the local network 422 and the Internet 428 use electrical, electromagnetic, or optical signals to transmit digital data streams. Signals transmitted to and from the computer system 400 via various networks, as well as signals via network links 420 and communication interfaces 418, are exemplary forms of transmission media.
[0072] The computer system 400 can send messages and receive data, including program code, via the network, network link 420, and communication interface 418. In the example of the internet, server 430 can send requested code for an application program via the internet 428, ISP 426, local network 422, and communication interface 418.
[0073] The received code may be executed by processor 404 upon receipt and / or stored in storage device 410 or other non-volatile storage for subsequent execution. It may be stored in
[0074] In the aforementioned specification, embodiments of the present invention have been described with reference to many specific details that may differ from one embodiment to another. Therefore, the specification and drawings should be considered illustrative rather than restrictive. The sole and exclusive indicator of the scope of the present invention, and what the applicant intends to be the scope of the present invention, is the literal and equivalent scope of the set of claims arising from this application in any particular form that gives rise to such claims, including any subsequent amendments.
Claims
1. One or more non-temporary computer-readable media comprising instructions, wherein, when executed by one or more hardware processors, the instructions cause an operation to be performed, and the operation is: Receiving updates to the first dataset at a first frequency, Selecting a first storage configuration from a plurality of storage configurations for storing the first dataset based on the first frequency, The first dataset is stored according to the first storage configuration, Receiving updates to the second dataset at a second frequency, The operation further includes selecting a second storage configuration from the plurality of storage configurations for storing the second dataset based on the second frequency, wherein the second storage configuration is different from the first storage configuration, and the operation further includes A medium comprising storing the second dataset according to the second storage configuration.
2. Selecting the first storage configuration for storing the first dataset based on the first frequency is, For the first dataset based on the first frequency, select a first category from among several categories, The medium according to claim 1, further comprising selecting the first storage configuration corresponding to the first category for storing the first dataset.
3. The aforementioned operation further, The method includes categorizing the first dataset as identifier data based on the first frequency, The selection of the first storage configuration is based on the fact that the first dataset is categorized as identifier data, and the operation further: The method includes categorizing the second dataset as use case data based on the second frequency, The selection of the second storage configuration is based on the fact that the second dataset is categorized as use case data, and the operation further: The third dataset is categorized as runtime data based on a third frequency at which updates to the third dataset are received, The medium according to claim 1, further comprising selecting a third storage configuration for storing the third dataset based on the fact that the third dataset is categorized as runtime data.
4. When the instruction is executed by one or more processors, it further means that To determine the relationship between the first dataset and the second dataset, The medium according to claim 1, wherein, based on the aforementioned relationship, a join operation is pre-calculated using the first dataset and the second dataset.
5. When the instruction is executed by one or more processors, it further means that Receiving additional data corresponding to the first dataset, Selecting a new storage configuration based at least partially on the aforementioned additional data, The medium according to claim 1, which stores the first dataset in accordance with the new storage configuration.
6. When the instruction is executed by one or more processors, it further means that The medium according to claim 1, which causes at least partially the first storage configuration to create an index associated with the first dataset.
7. It is a method, A step of receiving updates to the first dataset at a first frequency, A step of selecting a first storage configuration from a plurality of storage configurations for storing the first dataset based on the first frequency, The steps include storing the first dataset according to the first storage configuration, The steps include receiving updates to the second dataset at a second frequency, The method further comprises the step of selecting a second storage configuration from the plurality of storage configurations for storing the second dataset based on the second frequency, wherein the second storage configuration is different from the first storage configuration, and the method further The process includes the step of storing the second dataset according to the second storage configuration, The method is performed by at least one device including a hardware processor.
8. The step of selecting the first storage configuration for storing the first dataset based on the first frequency is: For the first dataset based on the first frequency, the step of selecting a first category from among multiple categories, The method according to claim 7, further comprising the step of selecting a first storage configuration corresponding to the first category for storing the first dataset.
9. The method further comprises the step of categorizing the first dataset as identifier data based on the first frequency, The step of selecting the first storage configuration is based on the fact that the first dataset is categorized as identifier data. The method further comprises the step of categorizing the second dataset as use case data based on the second frequency, The step of selecting the second storage configuration is based on the fact that the second dataset is categorized as use case data. A step of categorizing the third dataset as runtime data based on a third frequency at which updates to the third dataset are received, The method according to claim 7, further comprising the step of selecting a third storage configuration for storing the third dataset based on the fact that the third dataset is categorized as runtime data.
10. A step of determining the relationship between the first dataset and the second dataset, The method according to claim 7, further comprising the step of pre-calculating a join operation using the first dataset and the second dataset based on the aforementioned relationship.
11. The steps include receiving additional data corresponding to the first dataset, The steps include selecting a new storage configuration based at least partially on the aforementioned additional data, The method according to claim 7, further comprising the step of storing the first dataset according to the new storage configuration.
12. It is a system, A device comprising at least one hardware processor, The system is configured to perform an operation, and the operation is Receiving updates to the first dataset at a first frequency, Selecting a first storage configuration from a plurality of storage configurations for storing the first dataset based on the first frequency, The first dataset is stored according to the first storage configuration, Receiving updates to the second dataset at a second frequency, The operation further includes selecting a second storage configuration from the plurality of storage configurations for storing the second dataset based on the second frequency, wherein the second storage configuration is different from the first storage configuration, and the operation further includes The system includes storing the second dataset according to the second storage configuration described above. The method described above is performed by a system that includes at least one device, which includes a hardware processor.
13. Selecting the first storage configuration for storing the first dataset based on the first frequency is, For the first dataset based on the first frequency, select a first category from among several categories, The system according to claim 11, further comprising selecting the first storage configuration corresponding to the first category for storing the first dataset.
14. The first dataset is further categorized as identifier data based on the first frequency, The selection of the first storage configuration is based on the fact that the first dataset is categorized as identifier data. The method further comprises categorizing the second dataset as use case data based on the second frequency, The selection of the second storage configuration is based on the fact that the second dataset is categorized as use case data. The third dataset is categorized as runtime data based on a third frequency at which updates to the third dataset are received, The system according to claim 11, further comprising selecting a third storage configuration for storing the third dataset based on the fact that the third dataset is categorized as runtime data.
15. To determine the relationship between the first dataset and the second dataset, The system according to claim 11, further comprising pre-calculating a join operation using the first dataset and the second dataset based on the aforementioned relationship.