IP Library › Granted Patent US 12,373,403
Granted Patent B2
US 12,373,403 · App. 18/113,707 · Granted Jul 29, 2025

Shared cross-session dictionary using direct data access in a DBMS

Inventors: Altin Alickaj (Zurich, CH); Alexander Ulrich (Freiburg, DE); Eric Sedlar (Portola Valley, CA)
Assignee: Oracle International Corporation
G06F16/212G06F16/2282G06F16/2379G06F16/245G06F16/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 12,373,403
App. No.
18/113,707
Granted
Jul 29, 2025
Kind
B2
Abstract

Herein, a guest language is a programing language that is not the native data access language (e.g. structured query language, SQL) of a database server. When instantiated in the database server, a guest language runtime environment provides any mechanisms needed to execute the guest language. In an embodiment contained entirely within the database server, multiple guest language runtime environments for same or different guest languages use respective database sessions to share a key-value store in RAM that stores rows from a persistent relational table. Consumption of computer resources such as time and memory space is decreased because the persistent relational table's operation by the key-value store does not generate a database statement, does not parse a database statement, does not query plan, and does not execute a database statement.

Claims (46)

1. A method comprising:

first requesting, from a key-value store in a random access memory (RAM) in a computer, in a first database session in a first guest language runtime environment in a polyglot database server in the computer, retrieval of first one or more rows of a plurality of rows in a relational table;

the polyglot database server dynamically generating and invoking logic to access, in the key-value store, an array that contains a plurality of elements that are persisted in a plurality of projection columns of the relational table;

second requesting, from said key-value store in said RAM, in a second database session in a second guest language runtime environment in the polyglot database server, retrieval of second one or more rows of the plurality of rows in the relational table; and

accessing, by the polyglot database server, a database index of the relational table to load the plurality of rows into the key-value store in the RAM from one selected from a group consisting of the relational table and a row cache for the relational table in said RAM;

wherein said first requesting, said second requesting, and said accessing the database index do not execute a database statement;

wherein the method is performed by the computer.

2. The method of claim 1 further comprising third requesting, in a database transaction that contains a database statement and said first requesting, retrieval of third one or more rows of the plurality of rows in the relational table from said key-value store in said RAM.

3. The method of claim 1 further comprising allocating, to the key-value store, a database cursor.

4. The method of claim 3 further comprising in response to said second requesting:

detecting that the database cursor is invalid, and

reinitializing or replacing the database cursor.

5. The method of claim 4 further comprising causing the database cursor to become invalid by altering a definition of the relational table.

6. The method of claim 1 further comprising locking, without executing a database statement, a definition of the relational table for said accessing the database index to load the plurality of rows.

7. The method of claim 1 further comprising:

generating the key-value store in the RAM from a specification that identifies: a key column of the relational table that persists keys for the key-value store and the plurality of projection columns of the relational table;

using a lookup key to access, in the key-value store, the array.

8. The method of claim 7 further comprising the polyglot database server dynamically generating respective logic to access each element in the plurality of elements in the array in the key-value store, wherein the dynamically generating the respective logic of said each element is based on at least one selected from the group consisting of: a definition of the relational table, one or more values stored in a column of the plurality of projection columns, and a datatype of a column of the plurality of projection columns.

9. The method of claim 1 wherein:

a row in the plurality of rows contains a plurality of fields;

said accessing the database index to load the plurality of rows into the key-value store in the RAM comprises loading the row into the key-value store without extracting field(s) from the row;

the first guest language runtime environment and the second guest language runtime environment in the polyglot database server do not manage a first region of the RAM that contains the key-value store;

the method further comprises in response to said first requesting, copying a subset plurality of the plurality of fields of the row from the key-value store into a second region of the RAM that is managed by the first guest language runtime environment in the polyglot database server.

10. The method of claim 1 further comprising in response to said first requesting, without executing a database statement, performing at least one activity selected from the group consisting of: parsing the database statement, authorizing the database statement, and dynamically generating the database statement.

11. The method of claim 1 wherein the first guest language runtime environment is for a first guest language, and the second guest language runtime environment is for a second guest language.

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

first requesting, from a key-value store in a random access memory (RAM) in the computer, in a first database session in a first guest language runtime environment in a polyglot database server in the computer, retrieval of first one or more rows of a plurality of rows in a relational table;

the polyglot database server dynamically generating and invoking logic to access, in the key-value store, an array that contains a plurality of elements that are persisted in a plurality of projection columns of the relational table;

second requesting, from said key-value store in said RAM, in a second database session in a second guest language runtime environment in the polyglot database server, retrieval of second one or more rows of the plurality of rows in the relational table; and

accessing, by the polyglot database server, a database index of the relational table to load the plurality of rows into the key-value store in the RAM from one selected from a group consisting of the relational table and a row cache for the relational table in said RAM;

wherein said first requesting, said second requesting, and said accessing the database index do not execute a database statement.

13. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause third requesting, in a database transaction that contains a database statement and said first requesting, retrieval of third one or more rows of the plurality of rows in the relational table from said key-value store in said RAM.

14. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause allocating, to the key-value store, a database cursor.

15. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause locking, without executing a database statement, a definition of the relational table for said accessing the database index to load the plurality of rows.

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

generating the key-value store in the RAM from a specification that identifies: a key column of the relational table that persists keys for the key-value store and the plurality of projection columns of the relational table;

using a lookup key to access, in the key-value store, the array.

17. The one or more non-transitory computer-readable media of claim 16 wherein the instructions further cause the polyglot database server dynamically generating respective logic to access each element in the plurality of elements in the array in the key-value store, wherein the dynamically generating the respective logic of said each element is based on at least one selected from the group consisting of: a definition of the relational table, one or more values stored in a column of the plurality of projection columns, and a datatype of a column of the plurality of projection columns.

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

a row in the plurality of rows contains a plurality of fields;

said accessing the database index to load the plurality of rows into the key-value store in the RAM comprises loading the row into the key-value store without extracting field(s) from the row;

the first guest language runtime environment and the second guest language runtime environment in the polyglot database server do not manage a first region of the RAM that contains the key-value store;

the instructions further cause in response to said first requesting, copying a subset plurality of the plurality of fields of the row from the key-value store into a second region of the RAM that is managed by the first guest language runtime environment in the polyglot database server.

19. The one or more non-transitory computer-readable media of claim 12 wherein the instructions further cause in response to said first requesting, without executing a database statement, performing at least one activity selected from the group consisting of: parsing the database statement, authorizing the database statement, and dynamically generating the database statement.

20. The one or more non-transitory computer-readable media of claim 12 wherein the first guest language runtime environment is for a first guest language, and the second guest language runtime environment is for a second guest language.

21. The method of claim 1 wherein said first requesting, said second requesting, and said accessing the database index do not use relational algebra.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2023
From: ORACLE GLOBAL SERVICES GERMANY GMBH
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 063215/0711 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2023
From: ALICKAJ, ALTIN; SEDLAR, ERIC
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062815/0165 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2023
From: ULRICH, ALEXANDER
To: ORACLE GLOBAL SERVICES GERMANY GMBH
Reel/Frame 062815/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2023
From: ALICKAJ, ALTIN; ULRICH, ALEXANDER; SEDLAR, ERIC
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062799/0583 →
Continuity (1)
Related Publication 20240289306A1 · Aug 29, 2024
References Cited (25)
US 20130054649A1 · Potapov et al. · 2013 [cited by applicant]
US 20160055191A1 · Joshi · 2016 [cited by examiner]
US 20170147664A1 · Bussler · 2017 [cited by applicant]
US 20180232459A1 · Park · 2018 [cited by examiner]
US 20210064619A1 · Fender et al. · 2021 [cited by applicant]
CN 104750809A · 2015 [cited by applicant]
WO WO2015041967A1 · 2015 [cited by applicant]
Cristofer Zdepski; PDDM: A Database Design Method for Polyglot Persistence; American Scientific Research Journal for Engineering, Technology, and Sciences (ASRJETS); 2020; p. 136-152. [cited by examiner]
Pwint Khine; A Review of Polyglot Persistence in the Big DataWorld; 2016;MDPI; pp. 1-24. [cited by examiner]
Wurthinger et al., “Practical Partial Evaluation for High-Performance Dynamic Language Runtimes”, PLDI'17, Jun. 18-23, 2017, Barcelona, Spain, 15 pages. [cited by applicant]
Wanderman-Milne, Skye, “Building a Modern Database Using LLVM”, dated Nov. 6, 2013, 27 pages. [cited by applicant]
Sipek M. et al., “Exploring Aspects of Polyglot High-Performance Virtual Machine GraalVM”, dated 2019 42nd International Convention on Information Technology, dated May 20, 2019, pp. 1671-1676. [cited by applicant]
Marr, Stefan, “Tracing vs. Partial Evaluation”, OOPSLA '15 Oct. 25-30, 2015, Pittsburgh, PA, USA, 20 pages. [cited by applicant]
Github, “Writing a Language in Truffle. Part 1: A Simple, Slow Interpreter”, dated Oct. 13, 2014, 17 pages. [cited by applicant]
Yurenko, Alina ‘Multilingual Engine: Executing JavaScript in Oracle Database’, https://medium.com/graalvm/mle-executing-javascript-in-oracle-database-c545feb1a010, Jan. 28, 2021, accessed on Jan. 17, 2023, 12pgs. [cited by applicant]
Wurthinger, Thomas, et al., ‘One VM to Rule Them All’, 2013 ACM Intl symp on new ideas, new paradigms, and reflectns on programming and software, pp. 187-204, https://dl.acm.org/doi/10.1145/2509578.2509581, Oct. 29, 201… [cited by applicant]
Rivenes, Andy, ‘Memoptimized Rowstore—Fast Lookup’, Oracle Database In-Memory, https://blogs.oracle.com/in-memory/post/memoptimized-rowstore-fast-lookup, Apr. 7, 2021, 9pgs. [cited by applicant]
Oracle Labs, ‘TruffleString.FromNativePointerNode’, (GraalVM Truffle Java API Reference), https://www.graalvm.org/truffle/javadoc/com/oracle/truffle/api/strings/TruffleString.FromNativePointerNode.html, accessed Jan. 22… [cited by applicant]
Oracle Labs, ‘TruffleString. FromByteArrayNode’, (GraalVM Truffle Java API Reference), https://www.graalvm.org/truffle/javadoc/com/oracle/truffle/api/strings/TruffleString.FromByteArrayNode.html, accessed Jan. 22, 2023,… [cited by applicant]
Oracle Labs, ‘Trufflestring.AsmanagedNode’, (GraalVM Truffle Java API Reference), https://www.graalvm.org/truffle/javadoc/com/oracle/truffle/api/strings/TruffleString.AsManagedNode.html, accessed Jan. 24, 2023, 3pgs. [cited by applicant]
Oracle Labs, ‘MLE Bindings for Oracle Database DBMS_MLE (mle-js-bindings)’, https://oracle-samples.github.io/mle-modules/docs/mle-js-bindings/21c/, accessed Jan. 24, 2023, 2pgs. [cited by applicant]
Oracle Corporation, ‘Oracle Database Multilingual Engine’. Https://labs.oracle.com/pls/apex/f?p=94065:12:32018698560791:1,. Accessed Jan. 7, 2023, 2pgs. [cited by applicant]
‘Getting Started with Instruments in GraalVM’, Jul. 26, 2022, https://www.graalvm.org/22.2/graalvm-as-a-platform/implement-instrument, printed on Mar. 9, 2023, 16pgs. [cited by applicant]
Diaconu, Cristian, et al., ‘Hekaton: SQL Server's Memory-Optimized OLTP Engine’, 2013 ACM SIGMOD International Conference on Management of Data, SIGMOD'13, https://doi.org/10.1145/2463676.2463710,, pp. 1243-1254, Jun. 2… [cited by applicant]
Briggs, Preston, et al., ‘Rematerialization’, PLDI '92: Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation, Jul. 1992 pp. 311-321, https://doi.org/10.1145/143095.143143, pub… [cited by applicant]