IP Library › Granted Patent US 9,852,141
Granted Patent B2
US 9,852,141 · App. 15/229,277 · Granted Dec 26, 2017

Method for storing a dataset

Inventors: Thomas F. Boehme (Boeblingen, DE); Andreas Brodt (Gerlingen, DE); Namik Hrle (Boeblingen, DE); Oliver Schiller (Dettingen unter Teck, DE)
Assignee: International Business Machines Corporation
G06F17/30117G06F17/30312G06F17/30424
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 9,852,141
App. No.
15/229,277
Filed
Aug 5, 2016
Granted
Dec 26, 2017
Kind
B2
Art Unit
2163
USPC
707/812
Abstract

Sorting and storing a dataset, the dataset comprising at least one attribute. The method includes defining a set of data blocks and assigning to each data block a predefined maximum number of entries or a predefined maximum amount of storage, dividing the dataset into a sequence of multiple sub-datasets each having one value or a range of values of the attribute, wherein each pair of successive sub-datasets of the sequence are non-overlapping or overlapping at their respective extremum value of the attribute, for each sub-dataset of the multiple sub-datasets: in case the sub-dataset fully or partially fits into a data block of the defined data blocks storing the sub-dataset into at least the data block, the sub-dataset that partially fits into the data block comprising a number of entries that is smaller than a predefined maximum threshold.

Claims (33)

1. A computer program product for sorting and storing a dataset, the dataset comprising rows, each row comprising a value associated with an attribute, the computer program product comprising:

one or more computer-readable storage media and program instructions stored on the one or more computer-readable storage media, the program instructions comprising:

program instructions to define a set of data blocks, each data block of the set of data blocks having a predefined maximum number of entries;

program instructions to define a backup data block having a backup predefined maximum number of entries which is greater than the predefined maximum number of entries;

program instructions to randomly divide the dataset into a sequence of multiple equally sized sub datasets each comprising a different range of values associated with the attribute, wherein each pair of successive sub-datasets overlap at their respective extremum value of the attribute, and wherein each of the multiple sub-datasets comprises fewer rows than each of the predefined maximum number of entries;

program instructions to store the values of each sub-dataset on a respective data block in an undefined order, wherein each value of each row is stored as a single entry on the respective data block;

program instructions to store the values of each sub-dataset on the backup data block;

program instructions to store subsequent sub-datasets on a subsequent data block, an attribute associated with each subsequent sub-dataset having a respective range of values overlapping at their respective extremum value immediately preceding or succeeding the previous range of values associated with the attribute of the sub-dataset; and

program instructions to create for each data block an attribute value information indicating the range of values of the attribute stored on the data block for selectively processing at least part of the set of data blocks using the attribute value information.

2. The computer program product of claim 1 , wherein the program instructions to store the values of each sub-dataset further comprises:

program instructions to select a next sub-dataset from the sequence of sub datasets, the next sub dataset having a respective range of values that is immediately preceding or succeeding the range of values of the sub-dataset.

3. The computer program product of claim 1 , further comprising:

program instructions to remove from the data block, data of the sub dataset that is stored on the data block.

4. The computer program product of claim 1 , wherein the dataset further comprises compressed data.

5. The computer program product of claim 1 , wherein the program instructions to randomly divide the dataset further comprises:

program instructions to use a recursive divide and conquer process.

6. A computer program product for sorting and storing a dataset, the dataset comprising rows, each row comprising a value associated with an attribute, the computer program product comprising:

one or more computer-readable storage media and program instructions stored on the one or more computer-readable storage media, the program instructions comprising:

program instructions to define a set of data blocks, each data block of the set of data blocks having a predefined maximum number of entries;

program instructions to define a backup data block having a backup predefined maximum number of entries which is greater than the predefined maximum number of entries;

program instructions to randomly divide the dataset into a sequence of multiple equally sized sub datasets each comprising a different range of values associated with the attribute, wherein each pair of successive sub-datasets overlap at their respective extremum value of the attribute, and wherein each of the multiple sub-datasets comprises fewer rows than each of the predefined maximum number of entries;

program instructions to store the values of each sub-dataset on a respective data block in an undefined order, wherein each value of each row is stored as a single entry on the respective data block;

program instructions to receive a storage failure notification in response to storing one of the sub-datasets on one of the data blocks and the number of rows of the one sub dataset is greater than the number of predefined maximum number of entries;

program instructions to replace content of the one sub-dataset with a previous content of the one sub-dataset from the backup data block; and

program instructions to create for each data block an attribute value information indicating the range of values of the attribute stored on the data block for selectively processing at least part of the set of data blocks using the attribute value information.

7. The computer program product of claim 6 , wherein the program instructions to store the values of each sub-dataset further comprises:

program instructions to select a next sub-dataset, the next sub-dataset having a respective range of values that is immediately preceding or succeeding the range of values of the sub-dataset.

8. The computer program product of claim 6 , further comprising:

removing from the data block, data of the sub dataset that is stored on the data block.

9. The computer program product of claim 6 , wherein program instructions to randomly dividing the dataset into a sequence of multiple sub-datasets further comprises:

program instructions to use a recursive divide and conquer process; and

program instructions to control the recursive divide and conquer process to define the set of the data blocks.

10. The computer program product of claim 9 , wherein the divide and conquer process comprising Quicksort process, radix sorting process, insertion sort process or a combination thereof.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2016
From: BOEHME, THOMAS F.; BRODT, ANDREAS; HRLE, NAMIK; SCHILLER, OLIVER
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039351/0836 →
Continuity (2)
Continuation 14944256 · Nov 18, 2015
Related Publication 20170139943A1 · May 18, 2017