IP Library › Granted Patent US 12,682,090
Granted Patent B2
US 12,682,090 · App. 18/073,890 · Granted Jul 14, 2026

Anisotropic compression as applied to columnar storage formats

Inventors: Shrikumar Hariharasubrahmanian (Palo Alto, CA); Jean-Pierre Dijcks (Belmont, CA); Jacco Draaijer (Belmont, CA)
Assignee: Oracle International Corporation
G06F21/6209G06F16/221G06F40/205G06F40/284H04L9/30
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 12,682,090
App. No.
18/073,890
Filed
Dec 2, 2022
Granted
Jul 14, 2026
Kind
B2
Art Unit
2455
USPC
713/165
Abstract

Herein are spatially scalable techniques for anisotropic compression of shared entropy between alternate representations of same data. In an embodiment, a computer compresses an uncompressed independent column into a compressed independent column. Based on the compressed independent column, an uncompressed dependent column is compressed into a compressed dependent column. The compressed independent column and the compressed dependent column are stored in a same file. In an embodiment, a computer stores, in metadata, an encrypted private key for decrypting an encrypted column. The encrypted column and the metadata are stored in a file. A request to read the encrypted column is received. Based on a public key and the file, the encrypted private key is decrypted into a decrypted private key. The public key is contained in the request and/or the file. The request is executed by decrypting, based on the decrypted private key and the file, the encrypted column.

Claims (61)

1 . A method comprising:

storing, by a database server, in a single file as a plurality of pages, both of: an encrypted column and an encrypted private decryption key for decrypting the encrypted column;

modifying, after said storing, said single file without modifying said encrypted column;

receiving a request to read the encrypted column;

decrypting, based on a public key and said single file, the encrypted private decryption key into a decrypted private key, wherein the public key is contained in at least one selected from a group consisting of the request and the single file; and

executing the request by decrypting, based on the decrypted private key and said single file, the encrypted column.

2 . The method of claim 1 further comprising generating, based on the public key, the encrypted column from an unencrypted column.

3 . The method of claim 1 wherein:

the method is performed by a database management system (DBMS);

the method further comprises the DBMS associating the public key with a role in the DBMS.

4 . The method of claim 1 wherein said request does not contain the public key.

5 . The method of claim 1 wherein said modifying said single file comprises adding or removing a column in the single file that is not said encrypted column.

6 . The method of claim 5 wherein said adding or removing comprises adding or removing, in the single file, at least one selected from a group consisting of a user of a DBMS and a role in the DBMS.

7 . The method of claim 1 wherein:

the single file contains a plurality of encrypted columns that includes said encrypted column;

each column in the plurality of encrypted columns corresponds to a respective distinct key in a plurality of encrypted keys.

8 . The method of claim 1 further comprising after said storing, modifying a keystore in said single file without modifying said encrypted column.

9 . The method of claim 1 further comprising decrypting, based on said public key, a second plurality of encrypted keys that is a subset of a first plurality of encrypted keys.

10 . The method of claim 9 further comprising decrypting, based on a second public key, a third plurality of encrypted keys that is a subset of said first plurality of encrypted keys.

11 . The method of claim 10 wherein:

the third plurality of encrypted keys contains at least one key of the second plurality of encrypted keys, or

the third plurality of encrypted keys does not contain at least one key of the second plurality of encrypted keys.

12 . A method comprising:

storing, in metadata, an encrypted private key for decrypting an encrypted column;

storing a file as a plurality of pages that consists of a first plurality of pages and a second plurality of pages, wherein said metadata identifies said second plurality of pages;

storing in the file:

the encrypted column and said metadata,

one or more independent columns in the first plurality of pages,

one or more dependent columns that includes said encrypted column in the second plurality of pages, and

second metadata that identifies said first plurality of pages but not the second plurality of pages;

modifying, after said storing the encrypted column and said metadata in the file, said file without modifying said encrypted column;

receiving a request to read the encrypted column;

decrypting, based on a public key and said file, the encrypted private key into a decrypted private key, wherein the public key is contained in at least one selected from a group consisting of the request and the file; and

executing the request by decrypting, based on the decrypted private key and said file, the encrypted column.

13 . The method of claim 12 wherein said second metadata is located between said metadata in said file and the end of said file.

14 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:

storing, by a database server, in a single file as a plurality of pages, both of: an encrypted column and an encrypted private decryption key for decrypting the encrypted column;

modifying, after said storing, said single file without modifying said encrypted column;

receiving a request to read the encrypted column;

decrypting, based on a public key and said single file, the encrypted private decryption key into a decrypted private key, wherein the public key is contained in at least one selected from a group consisting of the request and the single file; and

executing the request by decrypting, based on the decrypted private key and said single file, the encrypted column.

15 . The one or more non-transitory computer-readable media of claim 14 wherein said request does not contain the public key.

16 . The one or more non-transitory computer-readable media of claim 14 wherein said modifying said single file comprises adding or removing a column in the single file that is not said encrypted column.

17 . The one or more non-transitory computer-readable media of claim 16 wherein said adding or removing comprises adding or removing, in the single file, at least one selected from a group consisting of a user of a DBMS and a role in the DBMS.

18 . The one or more non-transitory computer-readable media of claim 16 wherein:

the one or more processors are in a database management system (DBMS);

the instructions further cause the DBMS associating the public key with a role in the DBMS.

19 . The one or more non-transitory computer-readable media of claim 14 wherein the instructions further cause decrypting, based on said public key, a second plurality of encrypted keys that is a subset of a first plurality of encrypted keys.

20 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:

storing, in metadata, an encrypted private key for decrypting an encrypted column;

storing a file as a plurality of pages that consists of a first plurality of pages and a second plurality of pages, wherein said metadata identifies said second plurality of pages;

storing in the file:

the encrypted column and said metadata,

one or more independent columns in the first plurality of pages,

one or more dependent columns that includes said encrypted column in the second plurality of pages, and

second metadata that identifies said first plurality of pages but not the second plurality of pages;

modifying, after said storing the encrypted column and said metadata in the file, said file without modifying said encrypted column;

receiving a request to read the encrypted column;

decrypting, based on a public key and said file, the encrypted private key into a decrypted private key, wherein the public key is contained in at least one selected from a group consisting of the request and the file; and

executing the request by decrypting, based on the decrypted private key and said file, the encrypted column.

21 . The one or more non-transitory computer-readable media of claim 20 wherein said second metadata is located between said metadata in said file and the end of said file.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2022
From: HARIHARASUBRAHMANIAN, SHRIKUMAR; DIJCKS, JEAN-PIERRE; DRAAIJER, JACCO
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062207/0091 →
Continuity (3)
Division 16656399 · Oct 17, 2019
Provisional Application 62748243 · Oct 19, 2018
Related Publication 20230101153A1 · Mar 30, 2023
References Cited (40)
US 8560854B2 · Gormish · 2013 [cited by examiner]
US 10187347B2 · Moffat · 2019 [cited by applicant]
US 10333981B2 · Lee · 2019 [cited by examiner]
US 11803650B1 · Hocanin · 2023 [cited by examiner]
US 20030046572A1 · Newman · 2003 [cited by examiner]
US 20040139319A1 · Favazza · 2004 [cited by examiner]
US 20040139327A1 · Brown · 2004 [cited by examiner]
US 20050027658A1 · Moore · 2005 [cited by examiner]
US 20050226408A1 · Hotz · 2005 [cited by examiner]
US 20070194884A1 · Didier · 2007 [cited by examiner]
US 20080133934A1 · Gopinath · 2008 [cited by examiner]
US 20090106549A1 · Mohamed · 2009 [cited by examiner]
US 20090110198A1 · Garimella · 2009 [cited by examiner]
US 20100205189A1 · Ebrahimi et al. · 2010 [cited by applicant]
US 20120109830A1 · Vogel · 2012 [cited by examiner]
US 20120239937A1 · Yamanaka · 2012 [cited by examiner]
US 20130254558A1 · Bogorad · 2013 [cited by examiner]
US 20140215574A1 · Erb · 2014 [cited by examiner]
US 20150006908A1 · Mori · 2015 [cited by examiner]
US 20150058522A1 · Armstrong · 2015 [cited by examiner]
US 20160277374A1 · Reid et al. · 2016 [cited by applicant]
US 20170344749A1 · Yang et al. · 2017 [cited by applicant]
US 20180254901A1 · Egorov · 2018 [cited by examiner]
US 20190158594A1 · Shadmon · 2019 [cited by examiner]
US 20190164156A1 · Lindemann · 2019 [cited by examiner]
US 20190340381A1 · Yavuz · 2019 [cited by examiner]
US 20200014691A1 · Ortiz · 2020 [cited by examiner]
US 20200327252A1 · Mcfall · 2020 [cited by examiner]
US 20230101153A1 · Hariharasubrahmanian · 2023 [cited by examiner]
WO WO2017187207A1 · 2017 [cited by applicant]
Zheng et al., “Opaque: An Oblivious and Encrypted Distributed Analytics Platform”, dated Mar. 2017, 17 pages. [cited by applicant]
Twitter Blog, “Dremel Made Simple with Parquet”, dated Sep. 11, 2013, 12 pages. [cited by applicant]
Seiler, Klaus, “Effective data exploration via columnar data formats like Parquet”, last viewed on Oct. 18, 2019, 9 pages. [cited by applicant]
Papadimitriou et al., “Big Data Analytics over Encrypted Datasets with Seabed”, dated 2016, 16 pages. [cited by applicant]
Melnik et al., “Dremel: Interactive Analysis of WebScale Datasets”, Proceedings of the VLDB Endowment, vol. 3, No. 1 Copyright 2010, 10 pages. [cited by applicant]
GITHUB, “Parquet”, https://github.com/apache/parquet-format/blob/f1de77d31936f4d50f1286676a0034b6339918ee/README.md, dated Oct. 16, 2017, 9 pages. [cited by applicant]
Gershinsky et al., “Efficient Spark Analytics on Encrypted Data”, dated Jun. 2018, 30 pages. [cited by applicant]
Gaddam, Ajit, “Securing Your Big Data Environment”, Black Hat USA dated 2015, 8 pages. [cited by applicant]
Dijcks, Jean-Pierre, “Just add Magic-Performance and Security in File Based Systems” dated Nov. 22, 2017, 8 pages. [cited by applicant]
Design Specification Enterprise Parquet, File Wire-Format v0.5, dated Sep. 27, 2018, 23 pages. [cited by applicant]