IP Library › Granted Patent US 12,737,297
Granted Patent B2
US 12,737,297 · App. 18/915,185 · Granted Sep 15, 2026

Elastic columnar cache for cloud databases

Inventors: Anjan Kumar Amirishetty (Freemont, CA); Xun Cheng (Dublin, CA); Viral Shah (Mountain View, CA)
Assignee: Google LLC
G06F12/0871G06F9/5016G06F12/0891G06F16/221G06F16/24552G06F16/278
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,737,297
App. No.
18/915,185
Granted
Sep 15, 2026
Kind
B2
Abstract

A method for providing elastic columnar cache includes receiving cache configuration information indicating a maximum size and an incremental size for a cache associated with a user. The cache is configured to store a portion of a table in a row-major format. The method includes caching, in a column-major format, a subset of the plurality of columns of the table in the cache and receiving a plurality of data requests requesting access to the table and associated with a corresponding access pattern requiring access to one or more of the columns. While executing one or more workloads, the method includes, for each column of the table, determining an access frequency indicating a number of times the corresponding column is accessed over a predetermined time period and dynamically adjusting the subset of columns based on the access patterns, the maximum size, and the incremental size.

Claims (30)

1 . A computer-implemented method comprising:

obtaining, from a user device, cache configuration information for cache configured to store a portion of a table stored on memory hardware, the table comprising a plurality of columns and a plurality of rows, the cache configuration information indicating an amount of cache that may be allocated or deallocated from the cache during dynamic adjustment;

caching, in column-major format, a subset of the plurality of columns of the table in the cache associated with the user, the cache comprising a plurality of segments;

receiving a plurality of data requests, each data request of the plurality of data requests requesting access to the table stored on the memory hardware; and

in response to receiving the plurality of data requests, dynamically adjusting the subset of the plurality of columns cached in the column-major format by grouping columns together in segments based on access patterns derived from the plurality of data requests.

2 . The method of claim 1 , further comprising, for each respective column of the plurality of columns of the table, determining an access frequency indicating a number of times the respective column is accessed over a predetermined time period based on a respective access pattern associated with each of the plurality of data requests.

3 . The method of claim 2 , wherein dynamically adjusting the subset of the plurality of columns cached in the column-major format comprises removing one or more columns from the subset of the plurality of columns in the cache, the removed one or more columns associated with access frequencies that satisfy a contraction access frequency threshold.

4 . The method of claim 2 , wherein dynamically adjusting the subset of the plurality of columns cached in the column-major format comprises adding one or more columns to the subset of the plurality of columns in the cache, the added one or more columns associated with access frequencies that satisfy an expansion access frequency threshold.

5 . The method of claim 1 , wherein caching the subset of the plurality of columns comprises generating one or more table fragments each comprising a respective portion of one or more of the plurality of columns of the table.

6 . The method of claim 1 , wherein the cache comprises shared memory accessible by one or more workloads executing on data processing hardware.

7 . The method of claim 6 , wherein dynamically adjusting the subset of the plurality of columns cached in the column-major format comprises dynamically adjusting the subset of the plurality of columns cached in the column-major format without restarting any of the one or more workloads.

8 . The method of claim 1 , wherein grouping the plurality of columns in segments based on the corresponding access patterns comprises grouping infrequently accessed columns together.

9 . The method of claim 1 , wherein grouping the plurality of columns in segments based on the corresponding access patterns comprises grouping frequently accessed columns together.

10 . The method of claim 1 , wherein each segment is a fixed size based on an incremental size defined by the cache configuration information.

11 . A system comprising:

data processing hardware; and

memory hardware in communication with the data processing hardware, the memory hardware storing instructions that when executed on the data processing hardware cause the data processing hardware to:

obtain, from a user device, cache configuration information for cache configured to store a portion of a table stored on memory hardware in communication with the data processing hardware, the table comprising a plurality of columns and a plurality of rows, the cache configuration information indicating an amount of cache that may be allocated or deallocated from the cache during dynamic adjustment;

cache, in column-major format, a subset of the plurality of columns of the table in the cache associated with the user, the cache comprising a plurality of segments;

receive a plurality of data requests, each data request of the plurality of data requests requesting access to the table stored on the memory hardware; and

in response to receiving the plurality of data requests, dynamically adjust the subset of the plurality of columns cached in the column-major format by grouping columns together in segments based on access patterns derived from the plurality of data requests.

12 . The system of claim 11 , wherein the instructions further cause the processing hardware to, for each respective column of the plurality of columns of the table, determine an access frequency indicating a number of times the respective column is accessed over a predetermined time period based on a respective access pattern associated with each of the plurality of data requests.

13 . The system of claim 12 , wherein the instructions that cause the processing hardware to dynamically adjust the subset of the plurality of columns cached in the column-major format further cause the processing hardware to remove one or more columns from the subset of the plurality of columns in the cache, the removed one or more columns associated with access frequencies that satisfy a contraction access frequency threshold.

14 . The system of claim 12 , wherein the instructions that cause the processing hardware to dynamically adjust the subset of the plurality of columns cached in the column-major format further cause the processing hardware to add one or more columns to the subset of the plurality of columns in the cache, the added one or more columns associated with access frequencies that satisfy an expansion access frequency threshold.

15 . The system of claim 11 , wherein the instructions that cause the processing hardware to cache the subset of the plurality of columns further cause the processing hardware to generate one or more table fragments each comprising a respective portion of one or more of the plurality of columns of the table.

16 . The system of claim 11 , wherein the cache comprises shared memory accessible by one or more workloads executing on the data processing hardware.

17 . The system of claim 16 , wherein the instructions that cause the processing hardware to dynamically adjust the subset of the plurality of columns cached in the column-major format further cause the processing hardware to dynamically adjust the subset of the plurality of columns cached in the column-major format without restarting any of the one or more workloads.

18 . The system of claim 11 , wherein the instructions that cause the processing hardware to group the plurality of columns in segments based on the corresponding access patterns further cause the processing hardware to group infrequently accessed columns together.

19 . The system of claim 11 , wherein the instructions that cause the processing hardware to group the plurality of columns in segments based on the corresponding access patterns further cause the processing hardware to group frequently accessed columns together.

20 . The system of claim 11 , wherein each segment is a fixed size based on an incremental size defined by the cache configuration information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2024
From: AMIRISHETTY, ANJAN KUMAR; CHENG, XUN; SHAH, VIRAL
To: GOOGLE LLC
Reel/Frame 068890/0893 →
Continuity (3)
Continuation 17660374 · Apr 22, 2022
Continuation 16932874 · Jul 20, 2020
Related Publication 20250036567A1 · Jan 30, 2025
References Cited (31)
US 9152599B2 · Blinick et al. · 2015 [cited by applicant]
US 10120582B1 · Farhan et al. · 2018 [cited by applicant]
US 10296462B2 · Loaiza et al. · 2019 [cited by applicant]
US 10430349B2 · Moyer · 2019 [cited by applicant]
US 10831654B2 · Li et al. · 2020 [cited by applicant]
US 11334489B2 · Amirishetty et al. · 2022 [cited by applicant]
US 12124376B2 · Amirishetty et al. · 2024 [cited by applicant]
US 20050049992A1 · Gupta · 2005 [cited by applicant]
US 20130138891A1 · Chockler et al. · 2013 [cited by applicant]
US 20140281247A1 · Loaiza et al. · 2014 [cited by applicant]
US 20170031975A1 · Mishra et al. · 2017 [cited by applicant]
US 20170116269A1 · Macnicol et al. · 2017 [cited by applicant]
US 20210224235A1 · Arnaboldi et al. · 2021 [cited by applicant]
CN 103513935A · 2014 [cited by applicant]
CN 105144160A · 2015 [cited by applicant]
CN 109213694A · 2019 [cited by applicant]
CN 109313610A · 2019 [cited by applicant]
JP 2009217688A · 2009 [cited by applicant]
WO 2015105043A1 · 2015 [cited by applicant]
Notice of Intent to Grant, and translation thereof, from counterpart Chinese Application No. 202180049302.6 dated Aug. 4, 2025, 6 pp. [cited by applicant]
Wenqiang et al., “Configurable and Historically Aware Multi-Level Caching Strategy”, Computer Research and Development, Dec. 15, 2015, pp. 163-170. [cited by applicant]
Indian Examination Report for the related Applicaiton No. 202347009659, dated Jul. 27, 2023, 6 pages. [cited by applicant]
Japanese Office Action for the related application No. 2023-175996. [cited by applicant]
Extended Search Report from counterpart European Application No. 24189652.1 dated Oct. 1, 2024, 7 pp. [cited by applicant]
International Search Report and Written Opinion of International Application No. PCT/US2021/030717 dated Sep. 9, 2021, 8 pp. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 16/932,874 dated Jan. 21, 2022, 9 pp. [cited by applicant]
Notice of Intent to Grant from counterpart Japanese Application No. 2023-175996 dated Apr. 22, 2025, 5 pp. Translation Attached. [cited by applicant]
Prosecution History from U.S. Appl. No. 17/660,374, dated Feb. 13, 2023 through Jul. 3, 2024, 62 pp. [cited by applicant]
Response to Communication Pursuant to Rule 69 EPC dated Nov. 5, 2024, from counterpart European Application No. 24189652.1, filed Apr. 29, 2025, 13 pp. [cited by applicant]
Notice of Intent to Grant and Text Intended to Grant from counterpart European Application No. 24189652.1 dated Feb. 26, 2026, 66 pp. [cited by applicant]
Notice of Intent to Grant, and translation thereof, from counterpart Korean Application No. 10-2023-7031663 dated Apr. 21, 2026, 6 pp. [cited by applicant]