IP Library Granted Patent US 10,169,387
Granted Patent B1
US 10,169,387 · App. 15/222,371 · Granted Jan 1, 2019

Self-balancing tree data structure compression

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 10,169,387
App. No.
15/222,371
Granted
Jan 1, 2019
Kind
B1
Abstract

A data element to be inserted into a memory data structure, represented by a key and a value, is received. A target node into which the received data element is to be inserted is determined based on the key of the received data element. A determination is made whether or not the target node is already compressed. An append-write operation to insert the data element into the target node is performed when the target node is already compressed. An evaluation is performed prior to inserting the data element when the target node is not already compressed. An in-place write operation to insert the data element into the uncompressed target node is performed when the evaluation generates a first result. The target node is compressed and then an append-write operation to insert the data element into the compressed target node is performed when the evaluation generates a second result.

Claims (45)

1. A method of managing a memory data structure in a computing environment, comprising:

receiving a data element to be inserted into the memory data structure, wherein the data element is represented by a key and a value;

determining a target node in the memory data structure into which the received data element is to be inserted based on the key of the received data element;

determining whether or not the target node is already compressed;

performing an append-write operation to insert the data element into the target node when the target node is already compressed;

performing an evaluation prior to inserting the data element when the target node is not already compressed;

performing an in-place write operation to insert the data element into the uncompressed target node when the evaluation generates a first result; and

compressing the target node and then performing an append-write operation to insert the data element into the compressed target node when the evaluation generates a second result;

wherein the computing environment is implemented via one or more processing devices operatively coupled via a communication network.

2. The method of claim 1 , wherein the memory data structure is a self-balancing tree data structure.

3. The method of claim 2 , wherein the self-balancing tree data structure is a B-tree type data structure.

4. The method of claim 1 , wherein the data element to be inserted is a key-value type mapping.

5. The method of claim 1 , wherein the evaluation generates a score based on a current memory use efficiency of the target node.

6. The method of claim 1 , wherein the evaluation generates a score based on a current distribution of data elements in the target node.

7. The method of claim 1 , wherein a layout of the memory data structure for the target node comprises a header section, an extent list section, and an append-update section.

8. The method of claim 7 , wherein the header section comprises one or more of: a start key and a start value; version information; a current memory usage value; a compression status indicator; a total data element count; and a total extent count.

9. The method of claim 7 , wherein the extent section comprises at least one extent list representing compressed data elements ordered by start keys.

10. The method of claim 7 , wherein the append-update section comprises uncompressed data elements ordered by start keys.

11. The method of claim 1 , further comprising:

receiving one of a read request and a write request for the target node; and

servicing the request without decompressing data elements in the target node.

12. The method of claim 1 , wherein the step of compressing the target node further comprises applying just-in-time compression.

13. The method of claim 12 , wherein initiation of the just-in-time compression is based on the evaluation.

14. The method of claim 13 , wherein just-in-time compression is initiated when the target node has reached or is near its memory capacity.

15. The method of claim 1 , wherein the target node is the same memory page size as one or more other nodes in the data structure.

16. The method of claim 1 , further comprising splitting the target node into multiple nodes prior to inserting the data element when the evaluation generates a third result.

17. The method of claim 16 , further comprises inserting the data element into one of the multiple nodes.

18. The method of claim 1 , further comprising re-compressing the target node offline to at least one of: compress uncompressed data elements; and merge multiple compressed data elements.

19. A system for managing a memory data structure in a computing environment, the system comprising:

at least one processor, coupled to a memory, and configured to:

receive a data element to be inserted into the memory data structure, wherein the data element is represented by a key and a value;

determine a target node in the memory data structure into which the received data element is to be inserted based on the key of the received data element;

determine whether or not the target node is already compressed;

perform an append-write operation to insert the data element into the target node when the target node is already compressed;

perform an evaluation prior to inserting the data element when the target node is not already compressed;

perform an in-place write operation to insert the data element into the uncompressed target node when the evaluation generates a first result; and

compress the target node and then performing an append-write operation to insert the data element into the compressed target node when the evaluation generates a second result.

20. An article of manufacture for managing a memory data structure in a computing environment, the article of manufacture comprising a processor-readable storage medium having encoded therein executable code of one or more software programs, wherein the one or more software programs when executed by at least one processing device implement the steps of:

receiving a data element to be inserted into the memory data structure, wherein the data element is represented by a key and a value;

determining a target node in the memory data structure into which the received data element is to be inserted based on the key of the received data element;

determining whether or not the target node is already compressed;

performing an append-write operation to insert the data element into the target node when the target node is already compressed;

performing an evaluation prior to inserting the data element when the target node is not already compressed;

performing an in-place write operation to insert the data element into the uncompressed target node when the evaluation generates a first result; and

compressing the target node and then performing an append-write operation to insert the data element into the compressed target node when the evaluation generates a second result.

Assignments (4)
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2016
From: SHAIN, RANDALL
To: EMC CORPORATION
Reel/Frame 040784/0695 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2016
From: ZHAO, JUNPING; XU, KEVIN; SUN, RICKY
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040785/0863 →
Cited By (1)
US 12,518,337