US10467218B2 - In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform - Google Patents
In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform Download PDFInfo
- Publication number
- US10467218B2 US10467218B2 US15/271,186 US201615271186A US10467218B2 US 10467218 B2 US10467218 B2 US 10467218B2 US 201615271186 A US201615271186 A US 201615271186A US 10467218 B2 US10467218 B2 US 10467218B2
- Authority
- US
- United States
- Prior art keywords
- data
- key
- item
- dimensional dataset
- map
- 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.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Definitions
- the disclosed teachings generally relate to data processing.
- the disclosed teachings more particularly relate to an in-memory multi-dimensional dataset in a SALESFORCE platform and a mechanism to interrogate the multi-dimensional dataset.
- Cloud platforms such as the SALESFORCE platform allow for sharing processing resources and data in a multi-tenant network that offers computing services on demand to customers. More generally, cloud computing enables ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services), which can be rapidly provisioned and released with minimal management effort.
- the SALESFORCE platform may provide numerous companies with an environment to deploy applications that provide an interface for case management and task management, and a system for automatically handling events.
- the SALESFORCE platform can facilitate processing millions, hundreds of millions, or even billions of records while optimizing the performance of data loads and integration into a company's services.
- manipulation of even moderately large datasets on the SALESFORCE platform is difficult due to governors limiting how many times a process can loop through a dataset in any single context.
- looping operations are necessary when performing complex calculations using multiple dimensions in a dataset. As such, these constraints limit the ability of the SALESFORCE platform to efficiently query datasets to obtain insights and generate useful outputs.
- a method can include obtaining data items in the SALESFORCE platform, where each data item can include key-values for keys common to the data items and can include a data-item value.
- the method can include storing each of the data items in an in-memory multi-dimensional dataset of the SALESFORCE platform.
- the multi-dimensional dataset can have a dimension for each of the keys.
- the method further includes enabling an interrogation process in the SALESFORCE platform to read data included in the multi-dimensional dataset.
- a computer-implemented method performed by a cloud-based platform includes obtaining data items, where each data item can include key-values for keys common to the data items and can include a data-item value.
- the method can include storing each of the data items in an in-memory multi-dimensional dataset having a dimension for each of the keys; creating a composite key for each data item, where each composite key can include all the key-values of the data item; storing the composite key for each data item in a main data map structure mapping each composite key to a data-item value of the same data item; and enabling an interrogation process to read data included in the multi-dimensional dataset and the main data map structure.
- a computer system utilizing a SALESFORCE platform can include a processor and a memory.
- the memory includes instructions that, when executed by the processor, can cause the computer system to obtain data items in the SALESFORCE platform, where each data item can include key-values for keys common to the data items and can include a data-item value.
- the memory can store each of the data items in an in-memory multi-dimensional dataset of the SALESFORCE platform, where the multi-dimensional dataset can have a dimension for each of the plurality of keys, and enable an interrogation process to read data included in the multi-dimensional dataset.
- FIG. 1 is a block diagram of a cloud-based system that implements an in-memory multi-dimensional dataset and interrogation mechanism according to some embodiments of the present disclosure
- FIG. 2 is a block diagram illustrating a process of preparing data for a multi-dimensional dataset according to some embodiments of the disclosure
- FIG. 3 is a block diagram illustrating an initial process for calculating a size of a multi-dimensional dataset and storing data items in the multi-dimensional dataset according to some embodiments of the disclosure
- FIG. 4 is a block diagram illustrating a particular example of implementing a process for creating a multi-dimensional dataset and main data map for subsequent interrogation according to some embodiments of the present disclosure
- FIG. 5 is a flowchart illustrating a process for interrogating the multi-dimensional dataset according to some embodiments of the present disclosure
- FIG. 6 is a block diagram illustrating a two-dimensional table created in accordance with the process of FIG. 5 according to some embodiments of the present disclosure
- FIG. 7 is a flowchart illustrating a method for creating a multi-dimensional dataset according to some embodiments of the present disclosure
- FIG. 8 is a flowchart illustrating a method for interrogating the multi-dimensional dataset according to some embodiments of the present disclosure.
- FIG. 9 is a block diagram illustrating a computing device that is operable to implement the disclosed technology according to some embodiments of the present disclosure.
- terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” “generating,” or the like refer to actions and processes of a computer or similar electronic computing device that manipulates and transforms data represented as physical (electronic) quantities within the computer's memory or registers into other data similarly represented as physical quantities within the computer's memory, registers, or other such storage medium, transmission, or display devices.
- connection refers to any connection or coupling, either direct or indirect, between two or more elements.
- the coupling or connection between the elements can be physical, logical, or a combination thereof.
- An example of a cloud-based platform includes the SALESFORCE platform.
- a cloud-based platform can limit how many times a user can “loop” (e.g., read) through a dataset, which is necessary when performing complex calculations using multiple dimensions in a dataset.
- constraints limit the utility of cloud-based platforms to process large volumes of data, which is required by, for example, applications for payroll, billing, customer relationship management, and the like.
- the disclosed embodiments overcome these drawbacks with a technique for creating an in-memory multi-dimensional dataset in a cloud-based platform.
- the technique can also include a mechanism to interrogate the multi-dimensional dataset, to produce useful insights or generate reports.
- the multi-dimensional dataset can be queried efficiently to retrieve data of interest and eliminate much of the looping that is otherwise required in existing systems to obtain a correct set of data.
- In-memory computing can refer to keeping data in volatile memory (e.g., a server's random access memory (RAM)) as a means of processing at faster speeds.
- volatile memory e.g., a server's random access memory (RAM)
- In-memory computing applies especially to processing problems that require extensive access to data analytics, reporting or data warehousing, and big data applications.
- an in-memory database is a database management system that primarily relies on main memory for computer data storage, in contrast to systems that employ a disk storage mechanism. Accordingly, in-memory processing is used for processing data stored in the in-memory database. Because stored data is accessed much more quickly when it is placed in volatile memory, in-memory processing allows data to be analyzed in real time, enabling faster reporting and decision-making in business.
- a multi-dimensional dataset is an array of data arranged in a number of dimensions, and is sometimes referred to as a “cube” when the multi-dimensional dataset has three dimensions.
- a “hypercube” can refer to a multi-dimensional dataset having more than three dimensions.
- a hypercube that includes financial data may include dimensions corresponding to product, time, country, city, etc.
- a multi-dimensional dataset can be used in online analytical processing, which is a computer-based technique of analyzing data to look for insights.
- the interrogation mechanism may be referred to as a “cursor” used to interrogate the in-memory multi-dimensional dataset to obtain useful insights about the data contained in the multi-dimensional dataset and produce reports of any outputs.
- the interrogation mechanism can be used to obtain a summary of financial data by product, by time-period, and by city to compare actual and budget expenses.
- creating an in-memory multi-dimensional dataset allows selection and manipulation of data, using any number of dimensions, with a degree of efficiency comparable to selection and manipulation of data of much simpler data structures.
- the interrogation mechanism allows an application to efficiently step through (e.g., loop) the data, taking a particular perspective. Accordingly, the combination of an in-memory multi-dimensional dataset and cursor provides data processing functionality that is very efficient for arbitrary datasets, which has a particularly high value in cloud-based platforms such as the SALESFORCE platform.
- a cloud-based platform can obtain data items, including key-values and data-item values.
- the data items can be stored in an in-memory multi-dimensional dataset that has a dimension for each of the keys.
- a composite key can be created for each data item.
- the composite key can include all the key-values of the data item.
- the composite key for each data item can be stored in the multi-dimensional dataset, and in a main data map structure that maps each composite key to a data-item value of the same data item.
- the cloud-based platform can enable an interrogation process to read data included in the multi-dimensional dataset and the main data map structure in response to queries related to the data items.
- the cloud-based platform can receive a query that includes a key and a key-value.
- the cloud-based platform can interrogate the multi-dimensional dataset for a composite key by performing a first look-up operation for the queried key-value in a corresponding dimension, and interrogate the main data map for a data-item value by performing a second look-up based on the composite key.
- the data-item value, or data derived from the data-item value can thus be returned in response to the query.
- the disclosed technique can be described in the context of a billing services add-on application on the SALESFORCE platform because such services typically require processing large volumes of records.
- the disclosed technique has broad applicability to process large volumes of data for any cloud-based services. Further, the disclosed technique could facilitate processing any amount of data to increase throughput and provide useful insights and outputs.
- FIG. 1 is a block diagram of a cloud-based system that implements an in-memory multi-dimensional dataset and interrogation mechanism according to some embodiments of the present disclosure.
- the system 10 includes components, such as a cloud platform 12 (e.g., the SALESFORCE platform), one or more service provider servers 14 that use cloud-based services to provide add-on applications, and one or more client devices 16 that use the add-on applications, all of which are interconnected over a network 18 , such as the Internet, to provide processing of a large volume of data.
- a cloud platform 12 e.g., the SALESFORCE platform
- service provider servers 14 that use cloud-based services to provide add-on applications
- client devices 16 that use the add-on applications
- the network 18 may include any combination of private, public, wired, or wireless portions. Data communicated over the network 18 may be encrypted or unencrypted at various locations or along different portions of the network 18 .
- Each component of the system 10 may include combinations of hardware and/or software to process data, perform functions, communicate over the network 18 , and the like.
- any component of the system 10 may include a processor, memory or storage, a network transceiver, a display, an operating system (OS), and application software (e.g., for providing a user portal), and the like.
- OS operating system
- application software e.g., for providing a user portal
- the cloud platform 12 can provide access to a shared pool of configurable computing resources, including servers, storage, applications, a software platform, networks, services, and the like, accessed by the service provider servers 14 to offer add-on applications to the client devices 16 .
- the cloud platform 12 e.g., SALESFORCE platform
- the PaaS is provided to developers for creating the add-on applications that run on the components of the cloud platform 12 .
- FORCE.COM is an example of a PaaS that hosts applications hosted on SALESFORCE.COM, which is an example of a cloud platform.
- add-on applications can provide subscription billing services to users using the client devices 16 .
- the subscription billing services are provided by the service provider servers 14 and include applications built on the software platform of the cloud platform 12 .
- the service provider servers 14 may include any number of server computers that provide the add-on applications such as subscription billing services, which allow businesses to automatically bill their customers for goods or services on a pre-arranged schedule.
- the billing services may support installment payments, usage-based billing, and multiple charging methods.
- the service provider servers 14 may be included in the cloud platform 12 .
- the service provider servers 14 may provide or administer a user interface (e.g., website) accessible from the client devices 16 .
- the user interface may include features such as dashboard analytics to provide insight into how a business is performing. Examples of businesses that could benefit from subscription billing services range from software as a service (SaaS) providers to energy and utilities companies.
- SaaS software as a service
- the add-on applications provided by the service provider servers 14 are built using a particular programming language.
- FORCE.COM applications are built using APEX (a proprietary Java-like programming language for FORCE.COM) and VISUALFORCE (an XML syntax typically used to generate HTML).
- the code used to build applications may include functions that are accessible by the add-on applications.
- the add-on applications can process volumes of data generated by businesses.
- the service provider servers 14 can provide subscription billing services that process volumes of billing data generated by businesses that have a large number of customers that are billed routinely for ongoing services.
- the data may include sales agreements, usage, and pricing, which are used to generate sales invoices to bill customers. As such, voluminous amounts of data are generated continuously.
- the disclosed in-memory multi-dimensional dataset can be utilized to look for insights in accordance with a number of computer-based techniques implemented on a cloud-based platform.
- the data for the multi-dimensional dataset can be obtained from a data warehouse or data management system that may store the data.
- data can be derived from records stored in tables, and dimensions can be derived from the dimension of tables storing the data.
- the data can be organized as a hierarchy, a set of parent-child relationships, and the like. As such, a user can navigate through different dimensions, navigate among levels of data, summarize data along a dimension, and the like.
- an in-memory multi-dimensional dataset is created on the SALESFORCE platform and an interrogation mechanism is used to efficiently interrogate the multi-dimensional dataset to produce useful insights in the initial-use case to generate formatted reports.
- the multi-dimensional dataset allows selection and manipulation of data, using any number of dimensions, with a degree of efficiency comparable to much simpler data structures.
- the interrogation mechanism allows an application to efficiently loop the data, taking a particular perspective.
- the in-memory multi-dimensional dataset and interrogation mechanism combine to produce data processing functionality that is very efficient for arbitrary datasets, which has a particularly high value on platforms such as the SALESFORCE platform.
- manipulation of even moderately large datasets on the FORCE.COM platform is usually difficult due to process governors limiting how many times you can ‘loop’ through a dataset in any single context, which is necessary to perform complex calculations using a multi-dimensional dataset.
- Embodiments of the multi-dimensional dataset fulfill the aforementioned requirements as a new type of data structure that can be written in APEX on the SALESFORCE platform.
- the multi-dimensional dataset can support interrogation from any dimension and serialization so that the data it contains can be efficiently interrogated and stored in a SALESFORCE attachment or object.
- the multi-dimensional dataset can be N-dimensional, meaning that it can store lists of data by any number of dimensions.
- FIG. 2 is a block diagram illustrating a process for preparing data for a multi-dimensional dataset according to some embodiments of the disclosure.
- the data for a multi-dimensional dataset may be stored in volatile or non-volatile memory.
- the data may include a variety of data objects and data types known to persons skilled in the art.
- an in-memory database may include a variety of data objects accessible by a billing application on the SALESFORCE platform.
- the data objects stored in the database are unstructured.
- In-memory processing can be used for processing data stored in the in-memory database, enabling rapid analysis and reporting.
- the data obtained for the multi-dimensional dataset may include data items that include key-values and data-item values.
- a data item may include a billing credit value associated with customer information.
- the customer information may include values for a first name, last name, country, and city/state. The values correspond to key-values for the first name, last name, country, and city keys.
- the credit value corresponds to a data-item value.
- step 202 of the data preparation process 200 begins by obtaining a data item x that includes n key-values (x) for n keys and a data-item value data (x).
- the data item x is arranged in a sub-map, which maps an i-th key (denoted by a) to an i-th key-value (denoted by b).
- a multi-dimensional dataset may have a size determined by the number of keys for the data items that it stores. That is, a multi-dimensional dataset may have n-dimensions that correspond to n-keys of the data items that it stores. As such, the size of a multi-dimensional dataset can be calculated from the size of data items that it stores. Moreover, the data items can be stored in the multi-dimensional dataset in a manner that facilitates subsequent interrogation for data included in the multi-dimensional dataset.
- FIG. 3 is a block diagram illustrating an initial process 300 for calculating a size of a multi-dimensional dataset and storing data items in the multi-dimensional dataset according to some embodiments of the disclosure.
- the process 300 begins with N sub-maps for N respective data items, each having n key-values b(i) mapped to the same n keys a(i).
- Each of the N sub-maps may be formed in accordance with the process illustrated in FIG. 2 .
- the n key-values b(i) for each of the N sub-maps are processed to calculate a composite key c(b) for the respective data item.
- the composite key c(b) may include some or all the key-values b(i) for the respective data item.
- the key-values b(1) through b(n) can be flattened into the composite key c(b).
- a composite key c(b) can be a data string that includes each of the key-values b(1) through b(n) of a corresponding data item.
- a composite key c(b) for the example introduced above may be “[John, Smith, US, Virginia].”
- a multi-dimensional dataset is created that includes n dimensions corresponding to the n keys common to each data item.
- the dimensionality of the multi-dimensional dataset governs how many [key, key-value] pairs are provided with each data item.
- the multi-dimensional dataset stores the contents of the N sub-maps and respective composite keys c(N) in a manner that facilitates subsequent interrogation for data contained in the multi-dimensional dataset.
- each dimension of the multi-dimensional dataset includes the N key-values b(i) for the respective keys a(i).
- the n key-values b(i) of the respective key a(i) may be represented by fewer key-values when there are duplicates of any key-values b(i).
- n key-values can be represented by m key-values in the multi-dimensional dataset where M ⁇ n because at least some of the n key-values are duplicate values.
- Each key-value b(i) for each dimension of the multi-dimensional dataset is mapped to each composite key c(b) that includes the same key-value b(i).
- a main data map can be created.
- the main data map is structured to include the composite keys c(b) for each of the N data items mapped to a respective data-item value.
- a main data map structure may include N composite keys c(b) mapped to N data-item values for N data items.
- the main data map structure is part of the multi-dimensional dataset.
- the main data map is a data structure that is separate and distinct from the multi-dimensional dataset, and can be stored separate from or along with the multi-dimensional dataset (e.g., in-memory).
- FIG. 4 is a block diagram illustrating a particular example implementing a process 400 for creating a multi-dimensional dataset and main data map, for subsequent interrogation, according to some embodiments of the present disclosure.
- FIG. 4 shows a non-limiting example of a process meant to aid in understanding how data structures are created and how data items are stored to subsequently facilitate data interrogation according to the disclosed embodiments.
- step 402 three data items are shown in respective rows of a table.
- the table has five columns. The first four columns represent four keys common to each data item. The remaining column represents data-item values for the data items. The four keys [first name, last name, country, and city/state] and data item value [credit] have values for each of the three data items.
- the three data items will be stored in an in-memory four-dimensional dataset (e.g., a hypercube).
- a sub-map is created for each of the three data items.
- Each of the three sub-maps maps keys to key-values for a respective data item.
- each sub-map includes [key, key-value] pairs and a data-item value for the respective data item.
- the in-memory hypercube can store the data from the three sub-maps.
- the in-memory hypercube is illustrated with four dimensions [first name, last name, country, city/state]. Each dimension represents a key a(i). Each key is mapped to key-values b(i) for corresponding keys a(i). Lastly, each dimension includes a list of all three composite keys c(b) mapped to corresponding key-values b(i).
- the “first name” key represents one of four dimensions of the hypercube.
- the “first name” dimension is mapped to the “first name” key-values [John, John, Paul] of the three data items.
- the hypercube only shows two “first name” key-values [John, Paul] even though there are three data items. This results because one key-value [John] is the same key-value for two of the three data items.
- the hypercube can consolidate duplicate key-values.
- Each dimension includes all three composite keys [John, Smith, US, Virginia], [John, Jones, UK, London], and [Paul, Smith, US, Leeds] for the data items.
- the composite keys are mapped to key-values for the respective dimension where the key-values are included on the respective composite keys.
- the [John, Smith, US, Virginia] and [John, Jones, UK, London] composite keys include the “first name” key-value “John.” As such, these composite keys are mapped to the key-value “John” of the “first name” dimension.
- a main data map structure is illustrated as including the three composite keys mapped to corresponding data-item values.
- the main data map may be part of the hypercube, or may be separate and distinct from the hypercube. As described below, structuring a hypercube and main data map in this manner facilitates subsequent interrogation of the data included in the hypercube.
- the multi-dimensional dataset (e.g., hypercube) can be interrogated to respond to queries based on an analysis of the data included in the multi-dimensional dataset.
- an interrogation mechanism referred to as a “cursor,” can loop through (i.e., read) the data of the multi-dimensional dataset to respond to the queries.
- the multi-dimensional dataset and cursor combine to provide users with the ability to interrogate complex data within the SALESFORCE platform (in APEX) for the purpose of reporting.
- the results of the query can be returned in a human readable format.
- the cursor can generate a table by looping through a multi-dimensional dataset.
- the cursor can apply a user-defined order to an unordered multi-dimensional dataset, and allow for reading some or all of its data by looping through the multi-dimensional dataset.
- the multi-dimensional dataset can use set theory principles to quickly calculate and return data based on any query, per dimension, passed to it by other processes.
- the returned data can be rendered as a formatted report (e.g., a two-dimensional table).
- a query may ask “What data items exist where the last name is Smith?”.
- a process to respond to this query may include the cursor first performing a look-up operation in the “last name” dimension of the hypercube for the value “Smith.”
- the composite keys [John, Smith, US, Virginia] and [Paul, Smith, UK, Leeds] are returned.
- the process can then continue by performing a look-up operation of [John, Smith, US, Virginia] and [Paul, Smith, UK, Leeds] in the main data map structure.
- the data-item values [10000, 16000] are returned, which is the answer to the query.
- the cursor can perform complex operations to respond to complex queries. For example, a query may be “What is the total credit of people with the last name Smith?” In response, the cursor would proceed in accordance with the process detailed above to retrieve the data-item values [10000, 16000], and perform an additional operation by summing the two data-item values to provide the answer [26,000] to the query. In some embodiments, the cursor can perform any number of operations on retrieved values. For example, retrieved data-item values can be quickly summed, averaged, or the like, to answer a variety of questions.
- the cursor can be used to generate a simple or complex report from the data included in the multi-dimensional dataset.
- the report can be a table or spreadsheet that includes data from the multi-dimensional dataset rendered in human readable form.
- the retrieved data can be readily caste by the cursor into a two-dimensional table (e.g., spreadsheet or pivot table). As such, the retrieved data can then be added to a user interface on a display screen or included in a report.
- FIG. 5 is a flowchart illustrating a process for interrogating the multi-dimensional dataset according to some embodiments of the present disclosure.
- the cursor is separate and distinct from, but operates on, the multi-dimensional dataset and/or the main data map, and a looping operation is said to be performed by the cursor to return results.
- the process 500 commences in step 502 by initiating cursor operations to loop through data of a multi-dimensional dataset.
- the cursor defines dimensions of the multi-dimensional dataset upon which the looping operation is performed (“groups”). For example, the cursor may define [first name, last name, country] as groups for the looping.
- the cursor may also define an order for the dimensions. This may define the order for looping through dimensions or outputting results from dimensions.
- the cursor may define a filter (e.g., “column filter”) that is applied to the groups to output data-item values for the groups in accordance with the column filter.
- a column filter of [city/state] can be defined and applied to the [first name, last name, country] groups to output the key-values for the groups and the data-item values for the groups arranged according to [city/state].
- step 506 the cursor is created in accordance with the defined order and the multi-dimensional dataset (e.g., the hypercube of FIG. 4 ).
- step 508 the interrogation process involves performing a looping operation to read through the multi-dimensional dataset until empty (e.g., until all the contents have been read).
- the results of looping through the cursor can be output in a variety of ways, including being rendered on a display screen or included in reports.
- FIG. 6 illustrates a two-dimensional table created in accordance with the process of FIG. 5 according to some embodiments of the present disclosure.
- the table of FIG. 6 shows a particular example of an output produced by implementing a cursor on a multi-dimensional dataset.
- the table of FIG. 6 illustrates how a cursor can implement an order for the hypercube of FIG. 4 , such that the output of the retrieved data is rendered in accordance with that order in a human-readable manner.
- the table can be used as a report to analyze the cube.
- the three leftmost columns of the table correspond to each of the three groups [first name, last name, country] defined in step 504 of FIG. 5 .
- the rightmost three columns correspond to the filtered column [city/state], also defined in step 504 . That is, the three rightmost columns correspond to the three key-values of each data item [Virginia, London, Leeds].
- the data-item value for a data item is included in the column that matches the [city/state] key-value of that data item.
- each [city/state] column includes a single data-item value for the matching data item.
- FIG. 7 is a flowchart illustrating a method for creating a multi-dimensional dataset according to some embodiments of the present disclosure.
- the method 700 is implemented in a cloud-based platform such as the SALESFORCE platform.
- one or more data items are obtained.
- the data items can be retrieved from a database warehouse in volatile or non-volatile memory.
- the data items can each include a key-value for each of one or more keys that are common to all the data items.
- the data items may each also include a data-item value.
- the data items are stored in sub-maps before being stored in a multi-dimensional dataset.
- a sub-map is created for each of the data items, which can also be kept in-memory.
- the sub-map can include the data-item value and the key-values for the data item.
- a composite key can be created from each sub-map.
- a composite key is created as a data string including all the key-values of the sub-map.
- the composite key can flatten all the key-values of a data item into a single data string, which can subsequently be used to interrogate the data item for a data-item value.
- each of the data items can be stored in an in-memory multi-dimensional dataset such as a hypercube.
- the multi-dimensional dataset has a dimension for each of the keys common to the data items.
- each dimension includes the corresponding key-values for the data items, and each key-value is mapped to a composite key for each sub-map that includes the key-value.
- each dimension can have a minimal number of key-values that represent all the key-values for the key of the dimension. For example, duplicate key-values may be consolidated to minimize the number of key-values in a dimension.
- a main data map structure is created, which includes the composite keys mapped to a data-item value for each data item.
- the composite key of each sub-map is stored in the main data map structure.
- the main data map structure is part of the multi-dimensional dataset.
- the main data map structure is separate and distinct from the multi-dimensional dataset.
- the data-item value of each sub-map can be stored in the main data map structure such that the data-item value is mapped to a composite key for the same sub-map.
- the multi-dimensional dataset is enabled to facilitate an interrogation process to read data included in the multi-dimensional dataset.
- FIG. 8 is a flowchart illustrating a method 800 for interrogating the multi-dimensional dataset according to some embodiments of the present disclosure.
- a query including a key and a key-value is received.
- a query may be submitted by a user of an add-on application operating on the SALESFORCE platform.
- the query may be in a human-readable format such as a question related to data included in the multi-dimensional dataset.
- step 804 a look-up operation is performed on a dimension of the multi-dimensional dataset for the composite key matching the key and key-value included in the query.
- step 806 the matching composite key is used to perform another look-up operation on the main data map structure for the data-item value matching the composite key. As such, a data-item value can be returned in response to the query.
- one or more functions can be performed to obtain data derived from data-item values in response to complex queries.
- a function can be performed on the data-item value to obtain data derived from the data-item value.
- the function may involve a sum or average of multiple data-item values retrieved in response to a complex query.
- the data-item value or data derived from data-item values is returned in response to the query.
- the interrogation mechanism may define one or more groups and/or filters based on any of the keys of the data items.
- the query may include a subset of keys used to define a combination of groups and filters to interrogate the multi-dimensional dataset or main data map structure.
- the interrogation mechanism can operate on the multi-dimensional dataset in accordance with the defined groups and filters. Then, one or more looping processes can be performed to read all the contents associated with the cursor in response to a query, in accordance with the process detailed above.
- a user can instruct the interrogation mechanism to define the groups and filters, and the groups can further be defined to have a sequential order.
- the interrogation mechanism can generate a report that includes the data obtained by interrogating the multi-dimensional dataset and/or main data map structure.
- the report can be rendered as a two-dimensional table (e.g., spreadsheet) that includes a row for each data item, and sequentially-ordered columns corresponding to the sequentially-ordered groups, as well as a column for each key-value of the filter, such that cells for each data item include key-values and a data-item value.
- FIG. 9 is a block diagram illustrating a computing device operable to implement the disclosed technology according to some embodiments of the present disclosure.
- a computing device 20 includes a bus 22 that is operable to transfer data between hardware components. These components include a control 24 (e.g., processing system), a network interface 26 , an input/output (I/O) system 28 , and a clock system 30 .
- the computing device 20 may include other components that are not shown nor further discussed for the sake of brevity.
- One having ordinary skill in the art will understand any hardware and software that is included but not shown in FIG. 9 .
- the control 24 includes one or more processors 32 (e.g., central processing units (CPUs), application-specific integrated circuits (ASICs), and/or field programmable gate arrays (FPGAs)), and memory 34 (which may include software 36 ).
- processors 32 e.g., central processing units (CPUs), application-specific integrated circuits (ASICs), and/or field programmable gate arrays (FPGAs)
- memory 34 which may include software 36 ).
- the memory 34 may include volatile memory (e.g., RAM) and/or non-volatile memory (e.g., read-only memory (ROM)).
- the memory 34 can be local, remote, or distributed.
- a software program when referred to as “implemented in a computer-readable storage medium,” includes computer-readable instructions stored in the memory (e.g., memory 34 ).
- a processor e.g., processor 32
- routines executed to implement the disclosed embodiments may be implemented as part of OS software (e.g., Microsoft Windows® and Linux®) or a specific software application, component, program, object, module, or sequence of instructions referred to as “computer programs.”
- the computer programs typically comprise one or more instructions set at various times in various memory devices of a computer (e.g., computing device 20 ), which, when read and executed by at least one processor (e.g., processor 32 ), will cause the computer to perform operations to execute features involving the various aspects of the disclosed embodiments.
- a carrier containing the aforementioned computer program product is provided.
- the carrier is one of an electronic signal, an optical signal, a radio signal, or a non-transitory computer-readable storage medium (e.g., memory 34 ).
- the network interface 26 may include a modem or other interfaces (not shown) for coupling the computing device 20 to other computers over the network 18 .
- the I/O system 28 may operate to control various other I/O devices 42 , including peripheral devices such as a display system 38 (e.g., a monitor or touch-sensitive display), and one or more input devices 40 (e.g., a keyboard and/or pointing device).
- peripheral devices such as a display system 38 (e.g., a monitor or touch-sensitive display), and one or more input devices 40 (e.g., a keyboard and/or pointing device).
- Other I/O devices 42 may include, for example, a disk drive, printer, scanner, or the like.
- the clock system 30 controls a timer for use by the disclosed embodiments.
- Operation of a memory device may comprise a visually perceptible physical change or transformation.
- the transformation may comprise a physical transformation of an article to a different state or thing.
- a change in state may involve an accumulation and storage of charge or a release of stored charge.
- a change of state may comprise a physical change or transformation in magnetic orientation or a physical change or transformation in molecular structure, such as a change from crystalline to amorphous or vice versa.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
Abstract
Description
| Key | Key-Values | ||
| First name | John | ||
| Last Name | Smith | ||
| Country | US | ||
| City/State | Virginia | ||
Claims (13)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/271,186 US10467218B2 (en) | 2016-09-20 | 2016-09-20 | In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform |
| US16/601,125 US11321293B2 (en) | 2016-09-20 | 2019-10-14 | Multi-dimensional data structure to efficiently search data items |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/271,186 US10467218B2 (en) | 2016-09-20 | 2016-09-20 | In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/601,125 Continuation US11321293B2 (en) | 2016-09-20 | 2019-10-14 | Multi-dimensional data structure to efficiently search data items |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20180081921A1 US20180081921A1 (en) | 2018-03-22 |
| US10467218B2 true US10467218B2 (en) | 2019-11-05 |
Family
ID=61621083
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/271,186 Active 2037-10-25 US10467218B2 (en) | 2016-09-20 | 2016-09-20 | In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform |
| US16/601,125 Active 2037-07-05 US11321293B2 (en) | 2016-09-20 | 2019-10-14 | Multi-dimensional data structure to efficiently search data items |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/601,125 Active 2037-07-05 US11321293B2 (en) | 2016-09-20 | 2019-10-14 | Multi-dimensional data structure to efficiently search data items |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US10467218B2 (en) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10652309B2 (en) * | 2017-09-19 | 2020-05-12 | FinancialForce.com, Inc. | Mechanism to allow a messaging system to automatically switch to asynchronous operation due to high demand |
| US11321293B2 (en) * | 2016-09-20 | 2022-05-03 | FinancialForce.com, Inc. | Multi-dimensional data structure to efficiently search data items |
| US11704744B2 (en) | 2018-09-13 | 2023-07-18 | FinancialForce.com, Inc. | Server-based architecture for automated generation of suggestive data for report input through algorithmic analysis of historical and geographical profile data |
| US11778089B2 (en) | 2017-12-22 | 2023-10-03 | Certinia Inc. | Method and apparatus for generating records from communication data |
| US11837003B2 (en) | 2019-11-04 | 2023-12-05 | Certinia Inc. | Dynamic generation of client-specific feature maps |
| US12229599B2 (en) | 2022-03-29 | 2025-02-18 | Certinia Inc. | Algorithmically optimized determination of resource assignments in machine request analyses |
| US12406287B2 (en) | 2019-04-17 | 2025-09-02 | Certinia Inc. | Object model for proration calculations |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10509805B2 (en) * | 2018-03-13 | 2019-12-17 | deFacto Global, Inc. | Systems, methods, and devices for generation of analytical data reports using dynamically generated queries of a structured tabular cube |
| US11138202B2 (en) | 2019-07-29 | 2021-10-05 | Salesforce.Com, Inc. | Techniques for determining and presenting dataset join candidates |
| USD959476S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
| USD959447S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
| USD959477S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
| US11205296B2 (en) * | 2019-12-20 | 2021-12-21 | Sap Se | 3D data exploration using interactive cuboids |
| US12164869B2 (en) * | 2022-04-22 | 2024-12-10 | Dell Products L.P. | Automated document parsing to determine common component identifiers for consolidation of component orders |
| CN117874036B (en) * | 2024-03-12 | 2024-06-14 | 华南师范大学 | Method, device, computer equipment and storage medium for processing multidimensional data stream |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100088205A1 (en) * | 2008-10-02 | 2010-04-08 | Verizon Business Network Services Inc. | Methods, Systems and Computer Program Products for a Cloud Computing Spot Market Platform |
| US20150195344A1 (en) * | 2014-01-09 | 2015-07-09 | Yahoo! Inc. | Method and System for a Scheduled Map Executor |
| US9262218B2 (en) * | 2010-08-30 | 2016-02-16 | Adobe Systems Incorporated | Methods and apparatus for resource management in cluster computing |
| US20170048339A1 (en) * | 2015-08-10 | 2017-02-16 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6829621B2 (en) * | 2000-10-06 | 2004-12-07 | International Business Machines Corporation | Automatic determination of OLAP cube dimensions |
| US8868611B2 (en) * | 2011-07-28 | 2014-10-21 | Hewlett-Packard Development Company, L.P. | Data management system for efficient storage and retrieval of multi-level/multi-dimensional data |
| US9703833B2 (en) * | 2012-11-30 | 2017-07-11 | Sap Se | Unification of search and analytics |
| US20140236884A1 (en) * | 2013-02-15 | 2014-08-21 | Sap Ag | Analysis of datasets without predefined dimensions |
| US10467218B2 (en) * | 2016-09-20 | 2019-11-05 | FinancialForce.com, Inc. | In-memory multi-dimensional dataset with interrogation mechanism for salesforce platform |
-
2016
- 2016-09-20 US US15/271,186 patent/US10467218B2/en active Active
-
2019
- 2019-10-14 US US16/601,125 patent/US11321293B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100088205A1 (en) * | 2008-10-02 | 2010-04-08 | Verizon Business Network Services Inc. | Methods, Systems and Computer Program Products for a Cloud Computing Spot Market Platform |
| US9262218B2 (en) * | 2010-08-30 | 2016-02-16 | Adobe Systems Incorporated | Methods and apparatus for resource management in cluster computing |
| US20150195344A1 (en) * | 2014-01-09 | 2015-07-09 | Yahoo! Inc. | Method and System for a Scheduled Map Executor |
| US20170048339A1 (en) * | 2015-08-10 | 2017-02-16 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11321293B2 (en) * | 2016-09-20 | 2022-05-03 | FinancialForce.com, Inc. | Multi-dimensional data structure to efficiently search data items |
| US10652309B2 (en) * | 2017-09-19 | 2020-05-12 | FinancialForce.com, Inc. | Mechanism to allow a messaging system to automatically switch to asynchronous operation due to high demand |
| US11778089B2 (en) | 2017-12-22 | 2023-10-03 | Certinia Inc. | Method and apparatus for generating records from communication data |
| US11704744B2 (en) | 2018-09-13 | 2023-07-18 | FinancialForce.com, Inc. | Server-based architecture for automated generation of suggestive data for report input through algorithmic analysis of historical and geographical profile data |
| US12406287B2 (en) | 2019-04-17 | 2025-09-02 | Certinia Inc. | Object model for proration calculations |
| US11837003B2 (en) | 2019-11-04 | 2023-12-05 | Certinia Inc. | Dynamic generation of client-specific feature maps |
| US12229599B2 (en) | 2022-03-29 | 2025-02-18 | Certinia Inc. | Algorithmically optimized determination of resource assignments in machine request analyses |
Also Published As
| Publication number | Publication date |
|---|---|
| US11321293B2 (en) | 2022-05-03 |
| US20180081921A1 (en) | 2018-03-22 |
| US20200057754A1 (en) | 2020-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11321293B2 (en) | Multi-dimensional data structure to efficiently search data items | |
| US11537635B2 (en) | Hadoop OLAP engine | |
| US11042569B2 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
| US10318551B2 (en) | Reporting and summarizing metrics in sparse relationships on an OLTP database | |
| Russom | Big data analytics | |
| Stackowiak et al. | Big data solutions and the Internet of Things | |
| US20190102447A1 (en) | System and method for metadata sandboxing and what-if analysis in a multidimensional database environment | |
| Whitby et al. | Geowave: Utilizing distributed key-value stores for multidimensional data | |
| Golov et al. | Big data normalization for massively parallel processing databases | |
| US9830370B2 (en) | Visualization suggestion application programming interface | |
| Patel et al. | Online analytical processing for business intelligence in big data | |
| US10255345B2 (en) | Multivariate insight discovery approach | |
| Piccialli et al. | S-InTime: A social cloud analytical service oriented system | |
| Dibouliya | Review on: Modern Data Warehouse & how is it accelerating digital transformation | |
| Zhu et al. | Building big data and analytics solutions in the cloud | |
| Islam | A cloud based platform for big data science | |
| Reyes | A systems Thinking approach to business intelligence solutions based on cloud computing | |
| Kumar et al. | Modern Data Warehouses | |
| Wu et al. | [Retracted] Adaptive Integration Algorithm of Sports Event Network Marketing Data Based on Big Data | |
| Singh | Big data: An overview | |
| Machado | Proposal of an Approach for the Design and Implementation of a Data Mesh | |
| Damus Ros | A Business Intelligence Solution, based on a Big Data Architecture, for processing and analyzing the World Bank data | |
| Inamdar et al. | Cloud hosted business-data driven BI platforms | |
| Renganathan | Business Intelligence: An overview | |
| Praveen | Foundations of data engineering: concepts, principles and practices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: TRIPLEPOINT VENTURE GROWTH BDC CORP., CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:FINANCIALFORCE.COM, INC.;REEL/FRAME:040142/0224 Effective date: 20161024 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| AS | Assignment |
Owner name: OBSIDIAN AGENCY SERVICES, INC., CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:FINANCIALFORCE.COM, INC.;REEL/FRAME:048416/0266 Effective date: 20190130 Owner name: FINANCIALFORCE.COM, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:TRIPLEPOINT VENTURE GROWTH BDC CORP.;REEL/FRAME:049535/0815 Effective date: 20190130 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| AS | Assignment |
Owner name: FINANCIALFORCE.COM, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WILLCOCK, STEPHEN PAUL;SLATER, BRADLEY WEST;RUIZ MEDINA, CAROLINA;SIGNING DATES FROM 20100928 TO 20160930;REEL/FRAME:050218/0051 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP, ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| AS | Assignment |
Owner name: FINANCIALFORCE.COM, INC., CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUS APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 049535 FRAME: 0815. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST;ASSIGNOR:TRIPLEPOINT VENTURE GROWTH BDC CORP.;REEL/FRAME:050835/0594 Effective date: 20190130 Owner name: OBSIDIAN AGENCY SERVICES, INC., CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUS APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 048416 FRAME: 0266. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:FINANCIALFORCE.COM, INC.;REEL/FRAME:050836/0001 Effective date: 20190130 |
|
| AS | Assignment |
Owner name: KEYBANK NATIONAL ASSOCIATION, OHIO Free format text: SECURITY INTEREST;ASSIGNOR:FINANCIALFORCE.COM, INC.;REEL/FRAME:059204/0323 Effective date: 20220216 |
|
| AS | Assignment |
Owner name: FINANCIALFORCE.COM, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:OBSIDIAN AGENCY SERVICES, INC.;REEL/FRAME:059389/0501 Effective date: 20220216 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
| AS | Assignment |
Owner name: CERTINIA INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:FINANCIALFORCE.COM, INC.;REEL/FRAME:064042/0206 Effective date: 20230502 |
|
| AS | Assignment |
Owner name: CERTINIA, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST IN UNITED STATES PATENTS;ASSIGNOR:KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT;REEL/FRAME:064502/0117 Effective date: 20230804 |
|
| AS | Assignment |
Owner name: BLUE OWL CREDIT INCOME CORP., AS COLLATERAL AGENT, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:CERTINIA INC.;REEL/FRAME:064510/0495 Effective date: 20230804 |
|
| AS | Assignment |
Owner name: CERTINIA INC., TEXAS Free format text: CHANGE OF ADDRESS;ASSIGNOR:CERTINIA INC.;REEL/FRAME:068948/0361 Effective date: 20240912 |