IP Library Granted Patent US 9,317,558
Granted Patent B2
US 9,317,558 · App. 14/276,643 · Granted Apr 19, 2016

Intelligent unmasking in an in-memory database

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,317,558
App. No.
14/276,643
Granted
Apr 19, 2016
Kind
B2
Abstract

Database data is unmasked in order to facilitate its efficient handling by a database engine. In response to a request for data of a masked table including a masked element, an engine identifies a mask interval, and then performs a first join with unmasked elements sharing a common key. The table resulting from this first join is then grouped according to a highest level location of the mask. A second join is then performed between the results of this grouping and the mask interval, to produce a corresponding unmasked table including a plurality of unmasked elements corresponding to the masked element. Unmasking according to embodiments may be particularly useful in leveraging processing power of an in-memory database engine, allowing it to efficiently perform batch processing of requests for masked data received from software of an overlying application layer.

Claims (41)

1. A computer-implemented method comprising:

causing an engine to receive a request for data stored in a first table comprising a masked element including a key and a mask, the masked element corresponding to a plurality of unmasked elements in a database;

causing the engine to process the first table to create a second table converting the masked element into an element interval indicating a highest level position of the mask;

causing the engine to create a third table selecting the plurality of unmasked elements sharing the key;

causing the engine to perform a first join operation of the second table and the third table to create a fourth table including the plurality of unmasked elements sharing the key and falling within the element interval;

causing the engine to perform a grouping operation of the fourth table to create a fifth table locating a maximum position of the mask with the plurality of the unmasked elements;

causing the engine to perform a second join operation of the fifth table and the first table to create a sixth table including the plurality of unmasked elements and the key; and

causing the engine to process the request on the sixth table.

2. A method as in claim 1 wherein the engine comprises a database engine.

3. A method as in claim 2 wherein the database engine comprises an in-memory database engine receiving instructions from an overlying application layer.

4. A method as in claim 1 wherein the masked element comprises a string of characters including a mask symbol.

5. A method as in claim 4 wherein a location of the mask symbol in the string indicates a level position of the mask.

6. A method as in claim 1 wherein the engine is configured to retrieve data from the database according to the request utilizing batch processing.

7. A non-transitory computer readable storage medium embodying a computer program for performing a method, said method comprising:

causing an engine to receive a request for data stored in a first table comprising a masked element including a key and a mask, the masked element corresponding to a plurality of unmasked elements in a database;

causing the engine to process the first table to create a second table converting the masked element into an element interval indicating a highest level position of the mask;

causing the engine to create a third table selecting the plurality of unmasked elements sharing the key;

causing the engine to perform a first join operation of the second table and the third table to create a fourth table including the plurality of unmasked elements sharing the key and falling within the element interval;

causing the engine to perform a grouping operation of the fourth table to create a fifth table locating a maximum position of the mask with the plurality of the unmasked elements;

causing the engine to perform a second join operation of the fifth table and the first table to create a sixth table including the plurality of unmasked elements and the key; and

causing the engine to process the request on the sixth table.

8. A non-transitory computer readable storage medium as in claim 7 wherein the engine comprises a database engine.

9. A non-transitory computer readable storage medium as in claim 8 wherein the database engine comprises an in-memory database engine receiving instructions from an overlying application layer.

10. A non-transitory computer readable storage medium as in claim 7 wherein the masked element comprises a string of characters including a mask symbol.

11. A non-transitory computer readable storage medium as in claim 10 wherein a location of the mask symbol in the string indicates a level position of the mask.

12. A non-transitory computer readable storage medium as in claim 7 wherein the engine is configured to retrieve data from the database according to the request utilizing batch processing.

13. A computer system comprising:

one or more processors;

a software program, executable on said computer system and embodied upon a non-transitory computer readable storage medium, the software program configured to:

cause an engine to receive a request for data stored in a first table comprising a masked element including a key and a mask, the masked element corresponding to a plurality of unmasked elements in a database;

cause the engine to process the first table to create a second table converting the masked element into an element interval indicating a highest level position of the mask;

cause the engine to create a third table selecting the plurality of unmasked elements sharing the key;

cause the engine to perform a first join operation of the second table and the third table to create a fourth table including the plurality of unmasked elements sharing the key and falling within the element interval;

cause the engine to perform a grouping operation of the fourth table to create a fifth table locating a maximum position of the mask with the plurality of the unmasked elements;

cause the engine to perform a second join operation of the fifth table and the first table to create a sixth table including the plurality of unmasked elements and the key; and

cause the engine to process the request on the sixth table.

14. A computer system as in claim 13 wherein the engine comprises a database engine.

15. A computer system as in claim 14 wherein the database engine comprises an in-memory database engine receiving instructions from an overlying application layer.

16. A computer system as in claim 13 wherein the masked element comprises a string of characters including a mask symbol.

17. A computer system as in claim 16 wherein a location of the mask symbol in the string indicates a level position of the mask.

18. A computer system as in claim 13 wherein the engine is configured to retrieve data from the database according to the request utilizing batch processing.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2014
From: WU, ZHIQIANG
To: SAP AG
Reel/Frame 032881/0647 →