IP Library › Granted Patent US 12,235,876
Granted Patent B2
US 12,235,876 · App. 17/858,794 · Granted Feb 25, 2025

System and method for improved performance in a multidimensional database environment

Inventors: Cloud Walker (Hayward, CA); Vinod Padinjat Menon (San Jose, CA); Kumar Ramaiyer (Cupertino, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F16/283G06F12/0868G06F12/0873G06F12/121G06F2212/1016G06F2212/163G06F2212/206G06F2212/263G06F2212/313G06F2212/401G06F2212/452G06F2212/465
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,235,876
App. No.
17/858,794
Granted
Feb 25, 2025
Kind
B2
Abstract

In accordance with an embodiment, described herein is a system and method for improving performance within a multidimensional database computing environment. A multidimensional database, utilizing a block storage option, performs numerous input/output (I/O) operations when executing calculations. To separate I/O operations from calculations, a background task queue is created to identify data blocks requiring I/O. The background task queue is utilized by background writer threads to execute the I/O operations in parallel with calculations.

Claims (50)

1. A system for performing input/output operations on data blocks with a multidimensional database, comprising:

a multidimensional database for storage of data; and

a computing device having a processor that executes instructions to:

create a background thread pool for the multidimensional database, the background thread pool being associated with a background queue that indicates data blocks in a data cache stored in memory; and

write data blocks indicated by the background queue to one or more memory-mapped page files mapped to respective regions of a data storage via writer threads in the background thread pool,

wherein writing of the data blocks by the writer threads is performed in parallel with other operations performed on data blocks in the data cache.

2. The system of claim 1 , the processor is further configured to execute calculations on data blocks in the data cache via a plurality of calculation threads.

3. The system of claim 2 , wherein, when a calculation thread performs a calculation on a data block, the calculation thread adds the data block to the background queue.

4. The system of claim 1 , wherein a writer thread selects a data block from the background queue, compresses the data block, and writes the compressed data block to a corresponding memory-mapped page file.

5. The system of claim 4 , wherein the memory-mapped page file is stored in memory,

wherein the processor is further configured, by an operating system, to persist the memory-mapped page file in memory to a disk.

6. The system of claim 1 , wherein the processor is further configured to swap data blocks in the data cache, wherein to effect a swap the processor is configured to:

scan the data cache for a first data block having a clean state;

determine whether the first data block is swappable; and

replace the first data block in the data cache with a new data block from the one or more memory-mapped page files when the first block is swappable.

7. The system of claim 1 , wherein the processor is further configured to;

maintain a lock-free queue to track data blocks written to the one or more memory-mapped page files within a predetermined time period;

identify a data block from the queue, which maintains a clean state and is swappable, as a replacement victim; and

swap the data block identified in the data cache with a new data block from the one or more memory-mapped page files.

8. A method for performing input/output operations on data blocks of a multidimensional database, comprising:

creating a background thread pool for the multidimensional database, the background thread pool being associated with a background queue that indicates data blocks in a data cache stored in memory; and

writing data blocks indicated by the background queue to one or more memory-mapped page files in a file system buffer via writer threads in the background thread pool, the one or more memory-mapped page files are mapped to respective regions of a data storage,

wherein writing of the data blocks by the writer threads is performed in parallel with other operations performed on data blocks in the data cache.

9. The method of claim 8 , further comprising executing calculations on data blocks in the data cache via a plurality of calculation threads.

10. The method of claim 9 , further comprising adding a data block to the background queue when a calculation thread completes a calculation on the data block.

11. The method of claim 8 , further comprising:

selecting, by a writer thread, a data block from the background queue;

compressing the data block by the writer thread; and

writing, by the writer thread, the compressed data block to a corresponding memory-mapped page file.

12. The method of claim 8 , wherein the memory-mapped page file is stored in memory,

wherein the method further comprises persisting the memory-mapped page file in memory to a disk by an operating system.

13. The method of claim 8 , further comprising swapping data blocks in the data cache with data blocks from data storage, wherein swapping comprises:

scanning the data cache for a first data block having a clean state;

determining whether the first data block is swappable; and

replacing the first data block in the data cache with a new data block from the one or more memory-mapped page files when the first lock is swappable.

14. The method of claim 13 , further comprising;

retrieving, by an operating system, a new page file from the data storage when the new data block is not stored in the one or more memory-mapped page files in the file system buffer.

15. A non-transitory computer-readable storage medium having instructions stored thereon, which when read and executed by a computer, cause the computer to:

create a background thread pool for a multidimensional database, the background thread pool being associated with a background queue that indicates data blocks in a data cache stored in memory; and

write data blocks indicated by the background queue to one or more memory-mapped page files mapped to respective regions of a data storage via writer threads in the background thread pool,

wherein writing of data blocks by the writer threads the is performed in parallel with other operations performed on data blocks in the data cache.

16. The non-transitory computer-readable medium of claim 15 , wherein the instructions further configure the computer to execute calculations on data blocks in the data cache via a plurality of calculation threads.

17. The non-transitory computer-readable medium of claim 16 , wherein the instructions further cause the computer to add a data block to the background queue when a calculation thread performs a calculation on the data block.

18. The non-transitory computer-readable medium of claim 15 , wherein the instructions further cause the computer to use a writer thread to select a data block from the background queue, compress the data block, and write the compressed data block to a corresponding memory-mapped page file.

19. The non-transitory computer-readable medium of claim 18 , wherein the memory-mapped page file is stored in memory,

wherein the memory-mapped page file in memory is automatically persisted to a disk by an operating system.

20. The non-transitory computer-readable medium of claim 18 , wherein the instructions further cause the computer to swap data blocks in the data cache, wherein to effect a swap the instructions cause the computer to:

scan the data cache for a first data block having a clean state;

determine whether the first data block is swappable; and

replace the first data block in the data cache with a new data block from the one or more memory-mapped page files when the first block is swappable.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2022
From: WALKER, CLOUD; MENON, VINOD PADINJAT; RAMAIYER, KUMAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 060415/0565 →
Continuity (5)
Continuation 16434925 · Jun 7, 2019
Continuation 15332945 · Oct 24, 2016
Provisional Application 62411473 · Oct 21, 2016
Provisional Application 62245883 · Oct 23, 2015
Related Publication 20220350819A1 · Nov 3, 2022
References Cited (68)
US 5574952A · Brady · 1996 [cited by applicant]
US 5915129A · Slivka · 1999 [cited by applicant]
US 6161105A · Keighan · 2000 [cited by applicant]
US 6574720B1 · Hopeman · 2003 [cited by applicant]
US 6629102B1 · Malloy · 2003 [cited by applicant]
US 6766325B1 · Pasumansky · 2004 [cited by applicant]
US 6873994B2 · Kootale · 2005 [cited by applicant]
US 7133876B2 · Roussopoulos · 2006 [cited by applicant]
US 7392242B1 · Baccash · 2008 [cited by applicant]
US 8156083B2 · Banerjee · 2012 [cited by applicant]
US 8386296B2 · Hage · 2013 [cited by applicant]
US 10083195B2 · Zhou · 2018 [cited by applicant]
US 10318498B2 · Tran · 2019 [cited by applicant]
US 10346435B2 · Walker · 2019 [cited by applicant]
US 10360527B2 · Abe · 2019 [cited by applicant]
US 10467251B2 · Menon · 2019 [cited by applicant]
US 11403321B2 · Walker · 2022 [cited by applicant]
US 20020029207A1 · Bakalash · 2002 [cited by applicant]
US 20030005420A1 · Ghosh · 2003 [cited by applicant]
US 20040054858A1 · Chandrasekaran · 2004 [cited by applicant]
US 20050262108A1 · Gupta · 2005 [cited by applicant]
US 20060010159A1 · Mirchandani · 2006 [cited by applicant]
US 20060085742A1 · Harold · 2006 [cited by applicant]
US 20060106769A1 · Gibbs · 2006 [cited by applicant]
US 20060271568A1 · Balkir · 2006 [cited by applicant]
US 20070027674A1 · Parson · 2007 [cited by applicant]
US 20070061344A1 · Dickerman · 2007 [cited by applicant]
US 20070088691A1 · Dickerman · 2007 [cited by applicant]
US 20070094668A1 · Jacquot · 2007 [cited by applicant]
US 20080288524A1 · Dumitru · 2008 [cited by applicant]
US 20090030915A1 · Winter · 2009 [cited by applicant]
US 20090248651A1 · Perry · 2009 [cited by applicant]
US 20090249125A1 · Bhatawdekar · 2009 [cited by applicant]
US 20090276705A1 · Ozdemir · 2009 [cited by applicant]
US 20120216012A1 · Vorbach · 2012 [cited by examiner]
US 20140046920A1 · Shuma · 2014 [cited by applicant]
US 20140122413A1 · Presti · 2014 [cited by applicant]
US 20170116032A1 · Tran · 2017 [cited by applicant]
US 20170116215A1 · Raimaiyer · 2017 [cited by applicant]
US 20170116281A1 · Roytman · 2017 [cited by applicant]
US 20170116290A1 · Reichman · 2017 [cited by applicant]
US 20170116308A1 · Alberg · 2017 [cited by applicant]
US 20170116309A1 · Menon · 2017 [cited by applicant]
US 20170116310A1 · Walker · 2017 [cited by applicant]
US 20170116311A1 · Reichman · 2017 [cited by applicant]
US 20170116312A1 · Reichman · 2017 [cited by applicant]
US 20170116313A1 · Roytman · 2017 [cited by applicant]
US 20190073366A1 · Raimaiyer · 2019 [cited by applicant]
US 20190079959A1 · Raimaiyer · 2019 [cited by applicant]
US 20190102445A1 · Raimaiyer · 2019 [cited by applicant]
US 20190102446A1 · Raimaiyer · 2019 [cited by applicant]
US 20190102447A1 · Raimaiyer · 2019 [cited by applicant]
US 20190258612A1 · Tran · 2019 [cited by applicant]
US 20190286638A1 · Walker · 2019 [cited by applicant]
Russakovsky, Alexander, “Hopping over Big Data: Accelerating Ad-hoc OLAP Queries with Grasshopper Algorithms” published Feb. 26, 2015, 30 pages. [cited by applicant]
Dynamic Flow process definition Nov. 26, 2018, google.com, hllps://www.google.com/search?biw=1920&bih=1076&ei=njv8W_CJD4mizwK_14gCQ&q=%22dynamic+flow+process%22+definition&oq=%22dynamic⋅flow+process%22+definition&gs I=p… [cited by applicant]
Dynamic Flow process OLAP Nov. 26, 2018, google.com, https://www.google.com/search?biw=1920&bih=1076&ei=njv8W_CJD4mizwK_l4gCQ&q=%22dynamic+flow+process%22+definition&oq=%22dynamic⋅flow+process%22+definition&gs I-psy-ab … [cited by applicant]
PerformanceArchHowTo, Aggregate Storage Option ASO vs Block Storage Option BSO Contrast and Comparison Aug. 24, 2011, youtube.com, https://www.youtube.com/watch?v=18AeH5UGT90. [cited by applicant]
Oracle@, Oracle Enterprise Performance Management System Documentation, Release 11.1.2.4/ Essbase, Database Administrator's Guide, Developing Formulas for Block Storage Databases, Copyright © 2019, 28 pages. [cited by applicant]
Larimer, Mike et al., Oracle, OAC Essbase Hybrid Block Storage Option Performance Tuning, White Paper, Oracle ©, Jun. 11, 2018, 24 pages. [cited by applicant]
Oracle, Oracle® Cloud, Oracle Cloud Administering Oracle Essbase Cloud, Copyright © 1996, 2016, 632 pages. [cited by applicant]
Oracle, Oracle® Cloud, Administering Oracle Analytics Cloud—Essbase, Copyright © 1996, 2017, 703 pages. [cited by applicant]
Essbase Information Development Team, Oracle® Cloud, Technical Reference for Oracle Analytics Cloud—Essbase, E70189-04, Sep. 2017, Copyright © 1996, 2017, 1044 pages. [cited by applicant]
EPM Information Development Team, Oracle® Essbase Release 11.1.1, Database Administrator's Guide, Copyright © 1996, 2008, 1182 pages. [cited by applicant]
EPM Information Development Team, Oracle® Essbase, Technical Reference, Release 11.1.2.2.100, Copyright © 1996, 2012, 1402 pages. [cited by applicant]
EPM Information Development Team, Oracle® Essbase Database Administrator's Guide, Release 11.1.2.2.100, Updated Dec. 2013, Copyright © 1996, 2013, 1138 pages. [cited by applicant]
Turrell, Jake, “Introduction to Essbase Hybrid Aggregation Mode”, Mar. 4, 2015, 12 pages, retreived on Jan. 15, 2020 from: <http://turrellconsulting.com/blog/?s=introduction+to+essbase+hybrid+aggregation+mode&searchsubm… [cited by applicant]
Iankovszky, Andra et al., Edgewater Ranzal, Oracle Platinum Consulting Partner, “The Uncharted Territory Ready to be Discovered: Hybrid Essbase”, Hyperion UKOUG, Jun. 18, 2015, 24 pages. [cited by applicant]