IP Library Granted Patent US 11,615,142
Granted Patent B2
US 11,615,142 · App. 16/546,198 · Granted Mar 28, 2023

Mapping and query service between object oriented programming objects and deep key-value data stores

Inventor: Michael McCormick (San Francisco, CA)
Assignee: Salesforce, Inc.
G06F16/86G06F16/81
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,615,142
App. No.
16/546,198
Granted
Mar 28, 2023
Kind
B2
Abstract

A mapping and query service for mapping between object-oriented programming objects and deep key-value data stores. The service to implement a store operation for a mapping and query service that supports the storage of a set of one or more objects having classes and fields written in source code of an object-oriented programming language in a deep key-value data store.

Claims (45)

1. A method to implement a store operation for a mapping and query service that supports storage of a set of one or more objects having classes and fields written in source code of an object-oriented programming language in a deep key-value data store, the method comprising:

receiving, by the mapping and query service, a request to store an object in a key-value store;

accessing, by the mapping and query service, class annotations from metadata of source code for a class from which the object was instantiated, wherein the class annotations define a table name, a column family, and a column qualifier;

generating, by the mapping and query service, an in-memory tree that includes the table name, the column family, and the column qualifier defined by the class annotations;

sending, by the mapping and query service, a put command to the key-value data store to store the in-memory tree in a key-value structure in the key-value data store; and

responsive to receiving a request to retrieve the object from the key-value store, sending, by the mapping and query service, a get command to the key value data store to obtain key-value pairs and reconstructing the object using the key-value pairs, the class annotations, and field annotations, wherein the reconstructing includes instantiating the object and filling fields of the object using compaction indexes included in the field annotations.

2. The method of claim 1 , further comprising:

generate a row key to use for the object in the key-value store.

3. The method of claim 1 , further comprising:

generate a column qualifier to for the key-value store.

4. The method of claim 1 , further comprising:

generate a data structure to store at least one scalar field with a compaction index annotation in the key-value store.

5. The method of claim 1 , further comprising:

determining whether at least one field stores another object for which the class includes a persistable interface.

6. The method of claim 5 , further comprising:

adding at least one field that stores another object for which the class includes a persistable interface to the in-memory tree.

7. The method of claim 1 , wherein each field that stores another object is added to in-memory tree in a recursive process.

8. An electronic device to execute a method to implement a store operation for a mapping and query service that supports storage of a set of one or more objects having classes and fields written in source code of an object-oriented programming language in a deep key-value data store, the electronic device comprising:

a non-transitory machine-readable medium to store a store engine; and

a processor coupled to the non-transitory machine-readable medium, the processor to execute the store engine, the store engine to receive a request to store an object in a key-value store, to access class annotations from metadata of source code for a class from which the object was instantiated, wherein the class annotations define a table name, a column family, and a column qualifier, to generate an in-memory tree that includes the table name, the column family, and the column qualifier defined by the class annotations, to send a put command to the key-value data store to store the in-memory tree in a key-value structure in the key-value data store, to receive a request to retrieve the object from the key-value store, to send a get command to the key value data store to obtain key-value pairs, and to reconstruct the object using the key-value pairs, the class annotations, and field annotations, wherein the reconstruction involves instantiating the object of the class and filling fields of the object using compaction indexes included in the field annotations.

9. The electronic device of claim 8 , wherein the store engine is further to generate a row key to use for the object in the key-value store.

10. The electronic device of claim 8 , wherein the store engine is further to generate a column qualifier to for the key-value store.

11. The electronic device of claim 8 , wherein the store engine is further to generate a data structure to store at least one scalar field with a compaction index annotation in the key-value store.

12. The electronic device of claim 8 , wherein the store engine is further to determine whether at least one field stores another object for which the class includes a persistable interface.

13. The electronic device of claim 12 , wherein the store engine is further to add at least one field that stores another object for which the class includes a persistable interface to the in-memory tree.

14. The electronic device of claim 8 , wherein each field that stores another object is added to in-memory tree in a recursive process.

15. An article of manufacture comprising:

a non-transitory machine-readable storage medium that provides instructions that, if executed by an electronic device, will cause the electronic device to perform operations

of a method to implement a store operation for a mapping and query service that supports the storage of a set of one or more objects having classes and fields written in source code of an object-oriented programming language in a deep key-value data store, the operations comprising:

receiving a request to store an object in a key-value store;

accessing class annotations from metadata of source code for a class from which the object was instantiated, wherein the class annotations define a table name, a column family, and a column qualifier;

generating an in-memory tree that includes the table name, the column family, and the column qualifier defined by the class annotations;

sending a put command to the key-value data store to store the in-memory tree in a key-value structure in the key-value data store; and

responsive to receiving a request to retrieve the object from the key-value store, sending, by the mapping and query service, a get command to the key value data store to obtain key-value pairs and reconstructing the object using the key-value pairs, the class annotations, and field annotations, wherein the reconstructing includes instantiating the object of the class and filling fields of the object using compaction indexes included in the field annotations.

16. The article of manufacture of claim 15 , wherein the operations further comprise:

generate a row key to use for the object in the key-value store.

17. The article of manufacture of claim 15 , wherein the operations further comprise:

generate a column qualifier to for the key-value store.

18. The article of manufacture of claim 15 , wherein the operations further comprise:

generate a data structure to store at least one scalar field with a compaction index annotation in the key-value store.

19. The article of manufacture of claim 15 , wherein the operations further comprise:

determining whether at least one field stores another object for which the class includes a persistable interface.

20. The article of manufacture of claim 19 , wherein the operations further comprise:

adding at least one field that stores another object for which the class includes a persistable interface to the in-memory tree.

21. The article of manufacture of claim 15 , wherein each field that stores another object is added to in-memory tree in a recursive process.

Assignments (4)
CHANGE OF NAME Recorded Feb 17, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 062794/0656 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2021
From: SALESFORCE.ORG, LLC
To: SALESFORCE.COM, INC.
Reel/Frame 055555/0276 →
CONVERSION TO LIMITED LIABILITY COMPANY Recorded Mar 10, 2021
From: SALESFORCE.ORG
To: SALESFORCE.ORG, LLC
Reel/Frame 055557/0533 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2019
From: MCCORMICK, MICHAEL
To: SALESFORCE.ORG
Reel/Frame 050193/0472 →
Continuity (2)
Provisional Application 62720064 · Aug 20, 2018
Related Publication 20200057781A1 · Feb 20, 2020