IP Library › Granted Patent US 11,157,478
Granted Patent B2
US 11,157,478 · App. 16/690,817 · Granted Oct 26, 2021

Technique of comprehensively support autonomous JSON document object (AJD) cloud service

Inventors: Zhen Hua Liu (San Mateo, CA); Vikas Arora (Burlingame, CA); Ying Lu (Sunnyvale, CA); Sriram Krishnamurthy (San Francisco, CA); Hui Joe Chang (San Jose, CA); Beda Christoph Hammerschmidt (Los Gatos, CA); Joshua Jeffrey Spiegel (St. Louis, MO)
Assignee: Oracle International Corporation
G06F16/2272G06F16/2246G06F16/2255G06F16/24552G06F16/24558G06F16/282G06F16/284
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 11,157,478
App. No.
16/690,817
Granted
Oct 26, 2021
Kind
B2
Abstract

The present invention relates to autonomous tuning of a data grid of documents in a database. Herein are techniques for storage cells to autonomously maintain local indices and other optimization metadata and algorithms to accelerate selective access into a distributed collection of documents. In an embodiment, each storage cell persists a respective subset of documents. Each storage cell stores, in memory, respective index(s) that map each item to location(s), in one or more documents of the respective subset of documents, where the item occurs. One or more computers execute, based on at least a subset of the indices of the storage cells, a data access request from a database management system. In an embodiment, a cloud of JSON document services provides an easy-to-use, fully autonomous JSON document database that horizontally and elastically scales to deliver fast execution of document transactions and queries without needing tuning by a database administrator.

Claims (69)

1. A method comprising:

each storage cell of a plurality of storage cells persisting a respective subset of hierarchical data objects of a plurality of hierarchical data objects that reside in a database of a database management system (DBMS) that is connected to the plurality of storage cells, wherein said persisting the respective subset of hierarchical data objects comprises at least one selected from the group consisting of:

persisting the respective subset of hierarchical data objects in a relational database, and

persisting the respective subset of hierarchical data objects in a binary format;

a particular storage cell of the plurality of storage cells performing:

automatically deciding, based on a usage statistic of the particular storage cell, to create a particular storage-side index-that maps each item of a respective plurality of items to one or more locations where the item occurs in one or more hierarchical data objects of the respective subset of hierarchical data objects persisted by the particular storage cell, and

storing, in random access memory (RAM) in said particular storage cell, the particular storage-side index, wherein the particular storage-side index is not stored outside of the RAM in said particular storage cell;

executing, based on a plurality of storage-side indices in the RAM of the plurality of storage cells, including the particular storage-side index, a data access request from the DBMS.

2. The method of claim 1 further comprising, based on usage statistics, dynamically adding or removing a particular item to the particular storage-side index in the RAM in the particular storage cell of the plurality of storage cells.

3. The method of claim 1 further comprising, based on usage statistics, the particular storage cell of the plurality of storage cells dynamically adding or removing at least one selected from the group consisting of:

a B+ tree functional index,

a JSON search index that comprises: path-subsetting and/or asynchronous mode, and

a functional spatial index.

4. The method of claim 1 wherein:

the data access request comprises at least one expression of a plurality of expressions;

the particular storage-side index of the plurality of storage-side indices comprises a hash index that comprises a hash value for each expression of the plurality of expressions;

said executing the data access request comprises using, based on the at least one expression, the hash index.

5. The method of claim 1 further comprising the particular storage cell creating, in the RAM in the particular storage cell, a storage-side index and/or an IMCU in response to a threshold frequency of at least one selected from the group consisting of:

equality path queries and/or range path queries exceeding a threshold selectivity,

queries not exceeding the threshold selectivity,

full-text searches, and

spatial queries.

6. The method of claim 1 wherein:

the plurality of storage cells comprises a first storage cell and a second storage cell;

the respective subset of hierarchical data objects of the first storage cell comprises the respective subset of hierarchical data objects of the second storage cell;

executing the data access request comprises selecting, based on the data access request, only one storage cell of the first storage cell and the second storage cell to execute the data access request.

7. The method of claim 6 wherein said selecting said only one storage cell comprises dynamically:

selecting the first storage cell when the DBMS sends the data access request in response to an online analytical processing (OLAP) query;

selecting the second storage cell when the DBMS sends the data access request in response to an online transaction processing (OLTP) write.

8. The method of claim 1 wherein:

said respective plurality of items comprises a plurality of item datatypes;

said automatically deciding to create said particular storage-side index comprises selecting a kind of storage-side index of a plurality of kinds of storage-side indices based on a datatype of the item.

9. The method of claim 1 wherein said executing the data access request comprises at least one selected from the group consisting of:

obtaining identifiers of at least one of the respective subset of hierarchical data objects from the RAM of the plurality of storage cells,

updating at least one of the respective subset of hierarchical data objects, and

returning, in a binary format to a client, at least one hierarchical data object of the plurality of hierarchical data objects.

10. The method of claim 1 wherein at least one selected from the group consisting of:

the data access request comprises a path query,

said executing the data access request comprises using a hierarchy index that indicates containment relationships amongst the respective plurality of items, and

the plurality of hierarchical data objects comprises at least one selected from the group consisting of: a document, JavaScript object notation (JSON), extensible markup language (XML), and key-value pairs.

11. The method of claim 1 further comprising the DBMS generating a relational view in said database that is based on the plurality of hierarchical data objects and comprises at least one selected from the group consisting of: statement refreshing and materialization.

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

each storage cell of a plurality of storage cells persisting a respective subset of hierarchical data objects of a plurality of hierarchical data objects that reside in a database of a database management system (DBMS) that is connected to the plurality of storage cells, wherein said persisting the respective subset of hierarchical data objects comprises at least one selected from the group consisting of:

persisting the respective subset of hierarchical data objects in a relational database, and

persisting the respective subset of hierarchical data objects in a binary format;

a particular storage cell of the plurality of storage cells performing:

automatically deciding, based on a usage statistic of the particular storage cell, to create a particular storage-side index that maps each item of a respective plurality of items to one or more locations where the item occurs in one or more hierarchical data objects of the respective subset of hierarchical data objects persisted by the particular storage cell, and

storing, in random access memory (RAM) in said particular storage cell, the particular storage-side index, wherein the particular storage-side index is not stored outside of the RAM in said particular storage cell;

executing, based on a plurality of storage-side indices in the RAM of the plurality of storage cells, including the particular storage-side index, a data access request from the DBMS.

13. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause, based on usage statistics, dynamically adding or removing a particular item to the particular storage-side index in the RAM in the particular storage cell of the plurality of storage cells.

14. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause, based on usage statistics, the particular storage cell of the plurality of storage cells dynamically adding or removing at least one selected from the group consisting of:

a B+ tree functional index,

a JSON search index that comprises: path-subsetting and/or asynchronous mode, and

a functional spatial index.

15. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause the particular storage cell creating a storage-side index and/or an IMCU in response to a threshold frequency of at least one selected from the group consisting of:

equality path queries and/or range path queries exceeding a threshold selectivity,

queries not exceeding the threshold selectivity,

full-text searches, and

spatial queries.

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

the plurality of storage cells comprises a first storage cell and a second storage cell;

the respective subset of hierarchical data objects of the first storage cell comprises the respective subset of hierarchical data objects of the second storage cell;

executing the data access request comprises selecting, based on the data access request, only one storage cell of the first storage cell and the second storage cell to execute the data access request.

17. The one or more non-transitory computer-readable media of claim 16 wherein said selecting said only one storage cell comprises dynamically:

selecting the first storage cell when the DBMS sends the data access request in response to an online analytical processing (OLAP) query;

selecting the second storage cell when the DBMS sends the data access request in response to an online transaction processing (OLTP) write.

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

said respective plurality of items comprises a plurality of item datatypes;

said automatically deciding to create said particular storage-side index comprises selecting a kind of storage-side index of a plurality of kinds of storage-side indices based on a datatype of the item.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: LIU, ZHEN HUA; ARORA, VIKAS; LU, YING; KRISHNAMURTHY, SRIRAM; CHANG, HUI JOE; HAMMERSCHMIDT, BEDA CHRISTOPH; SPIEGEL, JOSHUA JEFFREY
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 051079/0870 →
Continuity (2)
Provisional Application 62786170 · Dec 28, 2018
Related Publication 20200210398A1 · Jul 2, 2020