Various database applications exist, such as data warehouses used for reporting and analysis. In a database application, an aggregation of a data states may be generated, and may need to be updated from time to time. When the aggregated data is a snapshot of the final state of some detailed data, the detailed data is updated in an on-going manner, and a detailed log of changes to the detailed data is not fully available, typical techniques calculate the aggregation of the data states from scratch, which is a waste of resources. As the volume of detailed data grows larger and larger, this calculation takes more and more time to be performed. In some cases, servers performing the calculation may encounter a lack of memory resources, and the calculation fails.
Another technique for determining the aggregation of data states is to periodically update the aggregation data state by some delta values. For instance, delta values may be determined by counting data state changes (e.g., −10, 8, 5, etc.) that occur during some time period, and the counted data state changes may be added an older version of the aggregation of data states to generate the final version of the aggregation of data states. However, this technique applies to a situation where a complete log of data changes is available. Such a complete log maintains full track of every change that the user(s) made, including new events, deleted events, and updated events. However, in some situations, such a complete log cannot be maintained, or is not accessible, and therefore cannot be used to determine the aggregation of data states.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Methods, systems, and computer program products are provided for generating and updating an aggregation of data states. The aggregation of data states may be initially generated based on final state information for the data during a time period and on change of state information for the data during the time period. The aggregation of data states may be selectively updated by updating an affected slice of the aggregation of data states. The aggregation of data states is replaced by a new aggregation of data states created from a selective subset of detailed data state data, by adding new aggregations and deleting existing aggregations.
In one implementation, a method for generating and/or updating an aggregation of data states is provided. For a first time period, a last data dataset (U) is received that includes a plurality of last data states vectors. Each last data state vector includes a data state value indicating a set state, a time at which the set state was indicated, and a dimension vector that identifies a user and a target object that was tagged with the set state by the user. A detailed data dataset (V) is generated that includes all of the last data state vectors of the last data dataset as detailed data vectors. A final aggregated data dataset (A) is generated that includes one or more final aggregated data vectors corresponding to any detailed data vectors included in the detailed data dataset. Each final aggregated data vector includes a dimension vector that matched the dimension vector of a corresponding detailed data vector and a counted number of occurrences of set states for the dimension vector in the detailed data dataset.
Furthermore, in a next time period, the last data dataset (U) is received. The last data dataset includes a plurality of last data states vectors corresponding to the next time period. A deleted data dataset (L) is received that includes a plurality of deleted data states vectors. Each deleted data state vector includes a data state value indicating a deleted state, a time at which the deleted state was indicated, and a dimension vector that identifies a user and a target object that was tagged with the deleted state by the user. Any detailed data vectors that include a dimension vector matching a dimension vector of the deleted data dataset is/are deleted from the detailed data dataset (V). Any last data state vectors of the last data dataset that do not include a dimension vector matching a dimension vector already included in the detailed data dataset is/are added to the detailed data dataset (V) as detailed data vectors. A dimension vector set (D) is generated to include all dimension vectors of the last data dataset and all dimension vectors of the deleted data dataset. A non-final aggregated data dataset (G) is generated to include one or more non-final aggregated data vectors corresponding to any detailed data vectors included in the detailed data dataset that have a dimension vector that matches a dimension vector in the dimension vector set. Each non-final aggregated data vector includes a dimension vector that matched a dimension vector in the dimension vector set and a counted number of occurrences of set states for the dimension vector in the detailed data dataset. Any final aggregated data vectors that do not include a dimension vector that matches a dimension vector of a non-final aggregated data vector in the non-final aggregated data dataset is/are deleted from the final aggregated data dataset (A). The counted number of occurrences of set states in a final aggregated data vector of the final aggregated data dataset (A) is replaced by the counted number of occurrences of set states in a corresponding non-final aggregated data vector of the non-final aggregated data dataset (G) when the final aggregated data vector includes a dimension vector that matches a dimension vector of the corresponding non-final aggregated data vector. Any non-final aggregated data vectors of the non-final aggregated data dataset (G) that do not include a dimension vector that matches a dimension vector of a final aggregated data vector in the final aggregated data dataset is/are added to the final aggregated data dataset (A).
In another implementation, a system for generating and/or updating an aggregation of data states is provided. The system includes a first vector inserter and a dataset aggregator. For a first time period, the first vector inserter receives a last data dataset (U) that includes a plurality of last data states vectors. Each last data state vector includes a data state value indicating a set state, a time at which the set state was indicated, and a dimension vector that identifies a user and a target object that was tagged with the set state by the user. The first vector inserter generates a detailed data dataset (V) that includes all of the last data state vectors of the last data dataset as detailed data vectors. The dataset aggregator generates a final aggregated data dataset (A) that includes one or more final aggregated data vectors corresponding to any detailed data vectors included in the detailed data dataset. Each final aggregated data vector includes the dimension vector of a corresponding detailed data vector and a counted number of occurrences of set states for the dimension vector in the detailed data dataset.
Furthermore, the system may include a first vector remover, a dimension set generator, a second vector remover, a count value replacer, and a second vector inserter. For a next time period, the first vector inserter receives the last data dataset (U) that includes a plurality of last data states vectors corresponding to the next time period. The first vector remover receives a deleted data dataset (L) that includes a plurality of deleted data states vectors. Each deleted data state vector including a data state value indicating a deleted state, a time at which the deleted state was indicated, and a dimension vector that identifies a user and a target object that was tagged with the deleted state by the user. The first vector remover deletes from the detailed data dataset (V) any detailed data vectors that include a dimension vector matching a dimension vector of the deleted data dataset. The first vector inserter adds to the detailed data dataset (V) as detailed data vectors any last data state vectors of the last data dataset that do not include a dimension vector matching a dimension vector already included in the detailed data dataset. The dimension set generator generates the dimension vector set (D) to include all dimension vectors of the last data dataset and all dimension vectors of the deleted data dataset. The dataset aggregator generates a non-final aggregated data dataset (G) to include one or more non-final aggregated data vectors corresponding to any detailed data vectors included in the detailed data dataset that have a dimension vector that matches a dimension vector in the dimension vector set. Each non-final aggregated data vector including a dimension vector that matched a dimension vector in the dimension vector set and a counted number of occurrences of set states for the dimension vector in the detailed data dataset. The second vector remover deletes from the final aggregated data dataset (A) any final aggregated data vectors that do not include a dimension vector that matches a dimension vector of a non-final aggregated data vector in the non-final aggregated data dataset. The count value replacer replaces the counted number of occurrences of set states in a final aggregated data vector of the final aggregated data dataset (A) by the counted number of occurrences of set states in a corresponding non-final aggregated data vector of the non-final aggregated data dataset (G) when the final aggregated data vector includes a dimension vector that matches a dimension vector of the corresponding non-final aggregated data vector. The second vector inserter adds to the final aggregated data dataset (A) any non-final aggregated data vectors of the non-final aggregated data dataset (G) that do not include a dimension vector that matches a dimension vector of a final aggregated data vector in the final aggregated data dataset.
Computer program products containing computer readable storage media are also described herein for generating and updating an aggregation of data states, as well as for additional embodiments.
Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the pertinent art to make and use the invention.
The features and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
The present specification discloses one or more embodiments that incorporate the features of the invention. The disclosed embodiment(s) merely exemplify the invention. The scope of the invention is not limited to the disclosed embodiment(s). The invention is defined by the claims appended hereto.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Numerous exemplary embodiments of the present invention are described as follows. It noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection.
In database applications, an aggregation of data states may be generated, and may need to be updated from time to time. For example, a social network or other entity may track “like” indications on online objects, such as links (e.g., URLs (uniform resource locators)), images (e.g., image files), video objects, audio objects, person objects, textual objects, etc. A user that likes an online object may click on a “like” button or other user interface element associated with the online object to indicate that the user likes the object. Any number of users may indicate that they “like” a particular online object, and any number of online objects may have “like” buttons (or other user interface elements) associated with them. After a user indicates that the user “likes” an online object, the user may subsequently decide that they no longer like the online object, and may click on an “unlike” button or other user interface element to withdraw (e.g., delete) their “like” indication for the online object. Entities associated with online objects may be interested in receiving the numbers of users that “like” and/or “unlike” their online objects for marketing research and/or other purposes. This like/unlike numbers/statistics may be used by the entities to better design, market, and/or advertise their products and services to customers, among other uses.
Because the data states may change over time (e.g., new “likes” and/or “dislikes” for an online object), an aggregation of the data states for online objects may need to be updated from time to time to track these changes. One technique for determining the aggregation of the data states is to periodically recalculate the aggregation of the data states from scratch, which is a waste of resources, and becomes more burdensome as the volume of detailed data grows larger and larger. Another technique for determining the aggregation of data states is to periodically update the aggregated data state by some delta values. However, this technique only applies to a situation where a complete log of data changes is available that maintains a full track of every change that the user(s) made, including new events, deleted events, and updated events
In embodiments, techniques for generating and updating an aggregation of data states are provided. The aggregation of data states may be selectively updated by updating an affected slice of the aggregation of data states. The aggregation of data states may be replaced by a new aggregation of data states created from a selective subset of detailed data state data, by adding new aggregations and deleting existing aggregations.
For example, in an embodiment, two sets of data states may be obtained: (a) a final subset of the data states that includes the final state values of data states that changed during a last time period, and (b) a deletion subset of all of the data states the indicates all of the data state changes to a deleted state occurring in the last time period. For instance, a data state for an online object may have started in a state A, then switched to a state B, then switched back to state A, and then switched back to state B. In such an example, the final subset of the data states (a) may include the final state B for the online object, and the deletion subset of the data states (b) may include the intermediate data state changes of state A, state B, and state A, or may just include the intermediate data state changes that are deletions/removals of the second state B—the state change from state B to state A. Embodiments may determine an updated aggregation of data states based on these final and deletion subsets, while conventional techniques are not capable of determining an updated aggregation of data states based on just these final and deletion subsets.
As such, when a full change log of states is not available, embodiments can update the data state aggregation selectively by updating the affected slice of aggregation of data states. Such an embodiment performs much better than the aggregating-all-over-again from scratch technique that is very common in practice. A data state aggregation is replaced by a new aggregation created from a selective subset of detailed data, adding new aggregations, and deleting aggregations. As such, in embodiments, it is not necessary to maintain a full change log
Embodiments may be implemented in a variety of environments. For instance,
Data state updater 102 may be configured to perform its functions in various ways. For instance,
Flowchart 200 begins with step 202. In step 202, a last data dataset and a deleted data dataset are received for a first time period. For example, as shown in
In step 204, a final aggregated data dataset is generated for the first time period based on the received datasets. In a first time period of data state aggregation, data state updater 102 may process last data dataset 106 and/or deleted data dataset 108 to generate a first version of final aggregated data dataset 110. For example, in one embodiment, data state updater 102 may generate final aggregated data dataset 110 based just on last data dataset 106. In such an embodiment, deleted data dataset 108 may not be received in step 202, or if received, may be ignored.
In step 206, the final aggregated data dataset is updated for subsequent time periods based at least on subsequently received versions of the datasets. In embodiments, during subsequent iterations of last data dataset 106 and deleted data dataset 108 (following the first time period), data state updater 102 processes last data dataset 106 and deleted data dataset 108 to generate an updated version of final aggregated data dataset 110.
System 100 of
Storage 304 may include one or more of any type of storage mechanism to store data and/or code, including a magnetic disk (e.g., in a hard disk drive), an optical disc (e.g., in an optical disk drive), a magnetic tape (e.g., in a tape drive), a memory device such as a RAM device, a ROM device, etc., and/or any other suitable type of storage medium. Computer system 300 may be any type of stationary or mobile computing device, including a desktop computer (e.g., a personal computer, etc.), a mobile computer or computing device (e.g., a Palm® device, a RIM Blackberry® device, a personal digital assistant (PDA), a laptop computer, a notebook computer, a tablet computer (e.g., an Apple iPad™), a netbook, etc.), a smart phone (e.g., an Apple iPhone, a Google Android™ phone, a Microsoft Windows® phone, etc.), or other type of computing device.
Note that
As described above, various applications may generate data state information that may be updated periodically according to embodiments described herein. Examples of such applications include social networks (e.g., Facebook® operated by Facebook, Inc. of Palo Alto, Calif., Google+ operated by Google, Inc. of Mountain View, Calif.), electronic commerce websites (e.g., amazon.com, provided by Amazon.com, Inc. of Seattle, Wash., and ebay.com, provided by eBay Inc. of San Jose, Calif.), and/or any other types of websites or online properties that enable users to apply “like” and “unlike” indications, and/or other types of two-state data indications, to target objects. For example,
Data state updater 102 may be configured in various ways, and flowchart 200 may be performed in various ways, in embodiments. For instance,
Flowcharts 500 and 600 are described as follows with reference to
As mentioned above, flowchart 500 of
In an embodiment, last data dataset 106 may be represented as a dataset U that contains a number r of last data state vectors u, shown as follows:
where
Furthermore, deleted data dataset 108 may be represented as a dataset L that contains a number k of last data state vectors 1, shown as follows:
where
For purposes of illustration, flowcharts 500 (
For this above example of user activity, last data dataset 106 may contain the following last data state vectors u1 to u4 in the vector form of (time, dimension (user and target object), data state value):
Also note that for this above example of user activity, deleted data dataset 108 may contain the following deleted data state vectors l1 to l4 in the vector form of (time, dimension (user and target object), data state value):
Referring back to
In an embodiment, detailed data dataset 716 may be represented as a dataset V that contains a number n of last data state vectors u, shown as follows:
where
Continuing the example from above, detailed data dataset 716 may contain the following detailed data vectors v1 to v4 in the vector form of (time, dimension (user and target object), data state value):
Referring back to
In an embodiment, non-final aggregated data dataset 720 may be represented as a set G that contains a number m of non-final aggregated data vectors “g”, which each include a dimension vector E (user, target object) and a count value c, shown as follows:
where
Continuing the example from above, non-final aggregated data dataset 720 may contain the following non-final aggregated data vectors g1 to g4 in the vector form of ((user and target object), count number):
Thus, dataset aggregator 706 generates non-final aggregated data dataset 720 in
In an embodiment, final aggregated data dataset 110 may be represented as a set A that contains a number m of final aggregated data vectors “a”, which each include a dimension vector E (user, target object) and a count value c, shown as follows:
where
Continuing the example from above, final aggregated data dataset 110 may contain the following final aggregated data vectors a1 to a4 in the vector form of ((user and target object), count number):
As mentioned above, after performing flowchart 500, flowchart 600 of
Flowchart 600 begins with step 602. In step 602, the last data dataset is received that includes a plurality of last data states vectors corresponding to the next time period. For example, as described above with respect to step 502 (
To continue and further illustrate the example from above, the following user activity may have been performed during the next (second) time period of 10-19:
For this above example of user activity, last data dataset 106 may contain the following last data state vectors u1 to u3 in the vector form of (time, dimension (user and target object), data state value):
Referring back to
Continuing the above example, deleted data dataset 108 may contain the following deleted data state vectors l1 and l2 in the vector form of (time, dimension (user and target object), data state value):
In step 606, any detailed data vectors that include a dimension vector matching a dimension vector of the deleted data dataset is/are deleted from the detailed data dataset. In an embodiment, first vector remover 708 may perform step 606. As shown in
For instance, continuing the above example, detailed data dataset 716 was last generated in step 504 of
In step 608, any last data state vectors of the last data dataset that do not include a dimension vector matching a dimension vector already included in the detailed data dataset is/are added to the detailed data dataset as detailed data vectors. In an embodiment, first vector inserter 702 may perform step 608. As shown in
For instance, continuing the above example, first vector inserter 702 may insert into reduced detailed data dataset 726 any last data state vectors of last data dataset 106 that do not include a dimension vector matching a dimension vector already included in a detailed data vector of reduced detailed data dataset 726, which include u1 (dimension vector of User 1 and URL 2 not matching) and u2 (dimension vector of User 2 and URL 1 not matching). As such, detailed data dataset 716 may contain detailed data vectors v3 and v4 from before, and new detailed data vectors v5 and v6 (representing last data state vectors u1 and u2):
In step 610, the dimension vector set is generated to include all dimension vectors of the last data dataset and all dimension vectors of the deleted data dataset. As shown in
In an embodiment, dimension vector set 718 may be represented as a set D that contains a number r of dimension vectors d, shown as follows:
where
For instance, continuing the example from above, dimension vector set 718 be generated by dimension set generator 704 to contain the following dimension vectors d1 to d5 in the vector form of (user and target object):
In step 612, a non-final aggregated data dataset is generated to include one or more non-final aggregated data vectors corresponding to any detailed data vectors included in the detailed data dataset that have a dimension vector that matches a dimension vector in the dimension vector set. In an embodiment, dataset aggregator 706 of
Continuing the example from above, non-final aggregated data dataset 720 may contain the following non-final aggregated data vectors g1 to g4 in the vector form of ((user and target object), count number):
In step 614, any final aggregated data vectors that do not include a dimension vector that matches a dimension vector of a non-final aggregated data vector in the non-final aggregated data dataset is/are deleted from the final aggregated data dataset. In an embodiment, second vector remover 710 receives non-final aggregated data dataset 720 and final aggregated data dataset 110. Final aggregated data dataset 110 is a version of final aggregated data dataset 110 generated during the prior time period iteration (e.g., prior iteration of flowchart 500 or flowchart 600). As such, second vector remover 710 may receive final aggregated data dataset 110 directly from second vector inserter 714 (as shown in
As shown in
For instance, continuing the above example, final aggregated data dataset 110 was last generated in step 508 of
In step 616, the counted number of occurrences of set states in a final aggregated data vector of the final aggregated data dataset is replaced by the counted number of occurrences of set states in a corresponding non-final aggregated data vector of the non-final aggregated data dataset when the final aggregated data vector includes a dimension vector that matches a dimension vector of the corresponding non-final aggregated data vector. In an embodiment, as shown in
As shown in
For instance, continuing the above example, count value replacer 712 may compare the above examples of non-final aggregated data dataset 720 and reduced final aggregated data dataset 722 to determine that the dimension vectors of non-final aggregated data vector g1 and final aggregated data vector a2 match, and that the dimension vectors of non-final aggregated data vector g2 and final aggregated data vector a4 match. As such, count value replacer 712 may replace the count value of final aggregated data vector a2 (“1”) with the count value of non-final aggregated data vector g1 (“1”), and may replace the count value of final aggregated data vector a4 (“1”) with the count value of non-final aggregated data vector g2 (“1”). This may result in the following reduced final aggregated data dataset 722:
In embodiments where dimension vectors include user and target object, and where no user can “like” a target object more than one time, the count values of numbers of likes have a maximum value of one. It is noted that in other embodiments, users may “like” a target object more than one time, and in such case, the count values of numbers of likes may have values greater than one. Furthermore, in other embodiments, dimension vectors may not include a user (e.g., may just include the target object) and/or may have alternative contents, and in such embodiments, the count values of numbers of “likes” may have values greater than one.
In step 618, any non-final aggregated data vectors of the non-final aggregated data dataset that do not include a dimension vector that matches a dimension vector of a final aggregated data vector in the final aggregated data dataset is/are added to the final aggregated data dataset. In an embodiment, as shown in
As shown in
For instance, continuing the above example, second vector inserter 714 may compare the above examples of non-final aggregated data dataset 720 and modified final aggregated data dataset 724 to determine that the dimension vectors of non-final aggregated data vector g3 and g4 do not have matches in modified final aggregated data dataset 724. As such, second vector inserter 714 may add non-final aggregated data vectors g3 and g4 to and modified final aggregated data dataset 724 as new final aggregated data vectors a5 and a6. This may result in the following final aggregated data dataset 110:
It is noted that flowchart 500 may be considered to be a special case of flowchart 600. For instance, where detailed data dataset 716 (V) is empty and final aggregated data dataset 110 (A) has not yet been generated (e.g., during a first time period, when flowchart 600 is being first performed), flowchart 600 may be performed by clearing (setting to empty) deleted data dataset 108. In such case, steps 604 and 606 of flowchart 600 are not performed (because deleted data dataset 108 is empty) and steps 614-618 are not performed (because detailed data dataset 716 is empty), resulting in final aggregated data dataset 110 being set to non-final aggregated data dataset 720 (G) generated in step 612.
Furthermore, note that flowcharts 500 and 600 may be re-written in terms of the dataset and vector labels described above (e.g., last data dataset U, etc.). For instance, flowcharts 500/600 may be performed in a combined manner according to the following process for user activity during a first time period:
Furthermore, this process may be repeated one or more times for user activity in subsequent time periods.
Data state updater 102, social network 402, data state updater 700, first vector inserter 702, dimension set generator 704, dataset aggregator 706, first vector remover 708, second vector remover 710, count value replacer 712, second vector inserter 714, flowchart 200, flowchart 500, and flowchart 600 may be implemented in hardware, software, firmware, or any combination thereof. For example, data state updater 102, social network 402, data state updater 700, first vector inserter 702, dimension set generator 704, dataset aggregator 706, first vector remover 708, second vector remover 710, count value replacer 712, second vector inserter 714, flowchart 200, flowchart 500, and/or flowchart 600 may be implemented as computer program code configured to be executed in one or more processors. Alternatively, data state updater 102, social network 402, data state updater 700, first vector inserter 702, dimension set generator 704, dataset aggregator 706, first vector remover 708, second vector remover 710, count value replacer 712, second vector inserter 714, flowchart 200, flowchart 500, and/or flowchart 600 may be implemented as hardware logic/electrical circuitry. For instance, in an embodiment, one or more of data state updater 102, social network 402, data state updater 700, first vector inserter 702, dimension set generator 704, dataset aggregator 706, first vector remover 708, second vector remover 710, count value replacer 712, second vector inserter 714, flowchart 200, flowchart 500, and/or flowchart 600 may be implemented together in a system-on-chip (SoC). The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits and/or embedded firmware to perform its functions.
As shown in
Computer 800 also has one or more of the following drives: a hard disk drive 814 for reading from and writing to a hard disk, a magnetic disk drive 816 for reading from or writing to a removable magnetic disk 818, and an optical disk drive 820 for reading from or writing to a removable optical disk 822 such as a CD ROM, DVD ROM, or other optical media. Hard disk drive 814, magnetic disk drive 816, and optical disk drive 820 are connected to bus 806 by a hard disk drive interface 824, a magnetic disk drive interface 826, and an optical drive interface 828, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable storage media can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.
A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include an operating system 830, one or more application programs 832, other program modules 834, and program data 836. Application programs 832 or program modules 834 may include, for example, computer program logic (e.g., computer program code) for implementing data state updater 102, social network 402, data state updater 700, first vector inserter 702, dimension set generator 704, dataset aggregator 706, first vector remover 708, second vector remover 710, count value replacer 712, second vector inserter 714, flowchart 200, flowchart 500, and/or flowchart 600 (including any step of flowcharts 200, 500, and 600), and/or further embodiments described herein.
A user may enter commands and information into the computer 800 through input devices such as keyboard 838 and pointing device 840. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to processor 802 through a serial port interface 842 that is coupled to bus 806, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).
A display device 844 is also connected to bus 806 via an interface, such as a video adapter 846. In addition to the monitor, computer 800 may include other peripheral output devices (not shown) such as speakers and printers.
Computer 800 is connected to a network 848 (e.g., the Internet) through an adaptor or network interface 850, a modem 852, or other means for establishing communications over the network. Modem 852, which may be internal or external, may be connected to bus 806 via serial port interface 842, as shown in
As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to media such as the hard disk associated with hard disk drive 814, removable magnetic disk 818, removable optical disk 822, as well as other media such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media.
As noted above, computer programs and modules (including application programs 832 and other program modules 834) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface 850, serial port interface 842, or any other interface type. Such computer programs, when executed or loaded by an application, enable computer 800 to implement features of embodiments of the present invention discussed herein. Accordingly, such computer programs represent controllers of the computer 800.
The invention is also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes a data processing device(s) to operate as described herein. Embodiments of the present invention employ any computer-useable or computer-readable medium, known now or in the future. Examples of computer-readable mediums include, but are not limited to storage devices such as RAM, hard drives, floppy disks, CD ROMs, DVD ROMs, zip disks, tapes, magnetic storage devices, optical storage devices, MEMs, nanotechnology-based storage devices, and the like.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
5832519 | Bowen et al. | Nov 1998 | A |
6438538 | Goldring | Aug 2002 | B1 |
7882087 | Johnson | Feb 2011 | B2 |
20040193626 | Colby et al. | Sep 2004 | A1 |
20060294129 | Stanfill et al. | Dec 2006 | A1 |
20070094384 | Matsumura et al. | Apr 2007 | A1 |
20080126856 | Levidow et al. | May 2008 | A1 |
20110137875 | Ziauddin et al. | Jun 2011 | A1 |
Entry |
---|
Ahmed, How to Find and Track Your Past Likes on Facebook, May 4, 2011, www.oxhow.com/how-to-find-and-track-your-past-likes-on-facebook. |
Chaudhuri, et al., “An Overview of Data Warehousing and OLAP Technology”, Retrieved at <<http://www.cs.sfu.ca/cc/459/han/papers/chaudhuri97.pdf>>, ACM SIGMOD International Conference on Management of Data, vol. 26, Issue 1, Mar. 1997, pp. 64-74. |
Agarwal, et al., “Materialization and Incremental Update of Path Information”, Retrieved at <<http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=47238>>, Fifth International Conference on Data Engineering, Feb. 6-10, 1989, pp. 374-383. |
Ester, et al., “Incremental Clustering for Mining in a Data Warehousing Environment”, Retrieved at <<http://www.dbs.informatik.uni-muenchen.de/Publikationen/Papers/VLDB-98-IncDBSCAN.pdf>>, Proceedings of the 24rd International Conference on Very Large Data Bases, Aug. 24-27, 1998, pp. 323-333. |
Number | Date | Country | |
---|---|---|---|
20130138602 A1 | May 2013 | US |