IP Library › Granted Patent US 11,593,357
Granted Patent B2
US 11,593,357 · App. 14/217,348 · Granted Feb 28, 2023

Databases and methods of storing, retrieving, and processing data

Inventor: Kenneth Michael Halpern (Cambridge, MA)
G06F16/24G06F16/22
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,593,357
App. No.
14/217,348
Granted
Feb 28, 2023
Kind
B2
Abstract

A non-transitory computer-readable medium having computer-readable instructions stored thereon which, when executed by a computer, cause the computer to perform a method of processing data comprising the steps of: receiving data associated with event instances; and for each of a plurality of iteration methods: partitioning the incoming event instances into logical data partitions; assigning an identifier to each event instance such that events classified in the same logical data partition receive the same identifier and a given event instance is always assigned the same identifier; and inserting each event instance into a doubly-linked list associated with the identifier in an appropriate location.

Claims (40)

1. A non-transitory computer-readable medium having computer-readable instructions stored thereon which, when executed by a computer, cause the computer to perform a method of processing data comprising the steps of:

a. receiving data associated with event instances; and

b. for each of a plurality of iteration methods, performing the following three steps in sequence:

i. partitioning the incoming event instances into logical data partitions;

ii. assigning an identifier to each event instance such that events classified in the same logical data partition receive the same identifier and a given event instance is always assigned the same identifier; and

iii. inserting each event instance into a doubly-linked list associated with the identifier in an appropriate location.

2. The non-transitory computer-readable medium of claim 1 , wherein new partitions in at least one iteration method may be dynamically added as needed during execution.

3. The non-transitory computer readable medium of claim 1 , further comprising instructions that cause the computer to perform the step of associating a sequence value with each event instance wherein a given event instance is always assigned the same sequence value.

4. The non-transitory computer readable medium of claim 3 , further comprising instructions that cause the computer to perform the step of dividing each doubly-linked list into a set of slices wherein each slice in the set of slices refers to an individual entry in the doubly-linked list.

5. The non-transitory computer readable medium of claim 4 , wherein the slices occur at a regular sequence value interval.

6. The non-transitory computer readable medium of claim 4 , wherein new slices occur after a designated number of event instances have been received.

7. The non-transitory computer readable medium of claim 4 , further comprising instructions that cause the computer to perform the step of creating an index designed to store, for each doubly-linked list, sequence values associated with each slice and references to the individual entries.

8. The non-transitory computer readable medium of claim 7 , wherein the index further includes for each doubly linked list: 1.) a reference to a first entry; 2.) a reference to a last entry; and 3) the number of linked entries.

9. The non-transitory computer readable medium of claim 1 , further comprising instructions that cause the computer to perform the step of assigning a reference to the last event instance in each partition of each iteration method.

10. The non-transitory computer readable medium of claim 9 , further comprising instructions that cause the computer to dynamically accommodate new data partitions from the iteration methods.

11. The non-transitory computer readable medium of claim 1 , wherein the data constituting an event instance is user defined.

12. The non-transitory computer readable medium of claim 1 , wherein the event instances are different sizes and have different data compositions.

13. The non-transitory computer readable medium of claim 1 , further comprising instructions that cause the computer to perform the step of associating an index with a plurality of event instances.

14. The non-transitory computer readable medium of claim 13 , further comprising a find algorithm that uses the index and the doubly linked lists assigned to partitions to locate an event instance subject to a specific set of conditions in a minimal number of steps.

15. The non-transitory computer readable medium of claim 1 , further comprising instructions to cause the computer to store each event instance in non-volatile memory in only a single location.

16. The non-transitory computer readable medium of claim 1 , wherein at least one iteration method of the plurality of iteration methods has a single logical data partition that is associated with a doubly linked list over all the event instances.

17. The non-transitory computer readable medium of claim 1 , wherein at least one iteration method of the plurality of iteration methods is user defined.

18. The non-transitory computer readable medium of claim 17 , wherein the number of iteration methods is user defined.

19. The non-transitory computer readable medium of claim 1 , wherein the data constituting an event instance is parsed from a serial data stream.

20. A database comprising:

a plurality of data structures stored in non-volatile memory, wherein each data structure contains data representing an event instance;

a plurality of event wrappers stored in non-volatile memory, wherein each event wrapper is associated with a single event instance; and

wherein each event wrapper comprises a sequence value and a plurality of partition ID's wherein each partition ID is assigned by an iteration method and represents a logical data partition of the iteration method that assigned the partition ID and wherein an event wrapper contains, for each iteration method, a reference to the previous and next event wrapper with the same partition ID.

21. The database of claim 20 , wherein each event wrapper further comprises the information necessary to decode and deserialize the associated event instance.

22. The database of claim 21 , wherein the information necessary to decode and deserialize the associated event instance includes an event type ID and an encoder ID.

23. The database of claim 20 , wherein the data representing each event instance is only stored once in the non-volatile memory.

24. The database of claim 20 , wherein each event wrapper is stored only once in the non-volatile memory.

25. The database of claim 20 , wherein each event instance is a member of one and only one logical data partition for each iteration method.

26. The database of claim 20 , wherein the sequence value gives a sequential order to any single event instance.

27. A non-transitory computer-readable medium having computer-readable instructions stored thereon which, when executed by a computer, cause the computer to perform a method of processing data comprising the steps of:

a. receiving data associated with event instances; and

b. for each of a plurality of iteration methods performing the following three steps in sequence:

i. partitioning the incoming event instances into logical data partitions such that each event instance is assigned to one, and only one, logical data partition for each given iteration method;

ii. assigning an identifier to each event instance such that events classified in the same logical data partition for a given iteration method receive the same identifier and a given event instance is always assigned the same identifier for a given iteration method; and

iii. inserting each event instance into a doubly-linked list associated with the identifier in an appropriate location, each event instance thereby being inserted into a doubly-linked list associated with one logical data partition for each iteration method.

Continuity (2)
Provisional Application 61802002 · Mar 15, 2013
Related Publication 20140280162A1 · Sep 18, 2014