IP Library Granted Patent US 11,734,092
Granted Patent B2
US 11,734,092 · App. 17/884,407 · Granted Aug 22, 2023

Systems and methods for extending the data model of a monolithic database through a microservice for a multi-tenant platform

Inventors: Alexander Vasilevskiy (Palo Alto, CA); Henning Schmiedehausen (Los Altos, CA); Suryatej Mukkamalla (San Mateo, CA); Rui Zhang (Sunnyvale, CA)
Assignee: Zuora, Inc.
G06F9/547G06F16/24554G06F16/27G06F16/288
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,734,092
App. No.
17/884,407
Granted
Aug 22, 2023
Kind
B2
Abstract

A multi-tenant system comprises a monolithic database storing global records, each including global fields common for all tenants; a custom field database storing custom records, each including custom fields for a tenant; a custom field record service processing a custom record storage request by instructing the custom field database to store custom field values of the custom record for the tenant, and processing a custom record fetch request by instructing the custom field database to retrieve the custom field values; a monolithic application configured to receive a record storage or fetch request, configured to partition the record storage request into the global record storage request and the custom record storage request, configured to send the custom record storage request to the custom field record service, configured to partition the record fetch request into the global record fetch request and the custom record fetch request, and configured to send the custom record fetch request to the custom field record service.

Claims (39)

1. A multi-tenant system, comprising:

one or more hardware processors;

a monolithic database configured to store global records, each global record of the global records including global fields common for all tenants of the multi-tenant system, the monolithic database configured to store a particular global record in response to a particular global record storage request and to retrieve the particular global record in response to a particular global record fetch request;

a custom field database configured to store custom records, each custom record of the custom records including one or more custom fields for a tenant of the tenants of the multi-tenant system, the custom database configured to store a particular custom record including one or more particular custom fields in association with the particular global record in response to a particular custom record storage request and to retrieve the particular custom record in response to a particular custom record fetch request;

a custom field record service configured to process the particular custom record storage request by instructing the custom field database to store one or more particular custom field values of the particular custom record for the particular tenant, and to process the particular custom record fetch request by instructing the custom field database to retrieve the one or more particular custom field values of the particular custom record for the particular tenant; and

a monolithic application configured to receive a record storage request or a record fetch request, the monolithic application configured to partition the record storage request into the particular global record storage request and the particular custom record storage request, the monolithic application configured to send the particular custom record storage request to the custom field record service, the monolithic application configured to partition the record fetch request into the particular global record fetch request and the particular custom record fetch request, the monolithic application configured to send the particular custom record fetch request to the custom field record service.

2. The multi-tenant system of claim 1 , wherein each global record includes a tenant identifier and a record identifier.

3. The multi-tenant system of claim 1 , wherein each custom record includes a tenant identifier and a record identifier.

4. The multi-tenant system of claim 1 , wherein the monolithic application partitions the record storage request into the particular global record storage request and the particular custom record storage request using a custom field map.

5. The multi-tenant system of claim 1 , wherein the monolithic application partitions the record fetch request into the particular global record fetch request and the particular custom record fetch request using a custom field map.

6. The multi-tenant system of claim 1 , further comprising a work Application Programming Interface (API) configured to receive the particular custom record storage request or the particular custom record fetch request and to communicate the particular custom record storage request or the particular custom record fetch request to the custom field record service, wherein the work API is accessible only internally.

7. The multi-tenant system of claim 6 , further comprising a main service API configured to receive the particular custom record storage request or the particular custom record fetch request from the monolithic application and to communicate the particular custom record storage request or the particular custom record fetch request to the work API.

8. The multi-tenant system of claim 1 , further comprising a custom field metadata service configured to generate the one or more particular custom fields for the particular tenant for the particular record.

9. The multi-tenant system of claim 8 , further comprising a provision API configured to receive a particular custom field generation request to generate the one or more particular custom fields for the particular tenant for the particular record.

10. The multi-tenant system of claim 8 , wherein the custom field metadata service is configured to generate a custom field map for the monolithic database to use to partition the record storage request or the record fetch request.

11. The multi-tenant system of claim 1 , further comprising a second custom database and a second custom field record service.

12. A method implemented by a multi-tenant system, the method comprising:

storing global records in a monolithic database, each global record of the global records including global fields common for all tenants of the multi-tenant system;

storing custom records in a custom field database, each custom record of the custom records including one or more custom fields for a tenant of the tenants of the multi-tenant system;

receiving a record storage request associated with a particular tenant of the tenants of the multi-tenant system;

partitioning the record storage request into a particular global record storage request and a particular custom record storage request;

storing in the monolithic database for the particular tenant a particular global record including particular global field values in response to the global record storage request;

sending the particular custom record storage request to a custom field record service; and

storing in the custom field database for the particular tenant a particular custom record including one or more particular custom fields in association with the particular global record in response to the custom record storage request.

13. The method of claim 12 , wherein each global record includes a tenant identifier and a record identifier.

14. The method of claim 12 , wherein each custom record includes a tenant identifier and a record identifier.

15. The method of claim 12 , wherein the partitioning the record storage request into a particular global record storage request and a particular custom record storage request includes using a custom field map.

16. The method of claim 12 , further comprising sending the particular custom record storage request to a main service Application Programming Interface (API), the main service API accessible only by the monolithic application.

17. The method of claim 16 , further comprising sending the particular custom record storage request by the main service API to a work API, the work API being accessible only internally.

18. The method of claim 12 , further comprising generating the one or more particular custom fields for the particular tenant using a custom field metadata service.

19. The method of claim 18 , further comprising receiving a custom field creation request by a provision API to generate the one or more particular custom fields for the particular tenant for the particular record.

20. The method of claim 18 , further comprising generating a custom field map for the monolithic database to use to partition the record storage request.

21. The method of claim 12 , further comprising:

receiving a record fetch request;

partitioning by the monolithic application the record fetch request into a particular global record fetch request and a particular custom record fetch request;

sending the particular global record fetch request to the monolithic database to retrieve the particular global field values;

sending the particular custom record fetch request to the custom field record service to retrieve the one or more particular custom field values;

aggregating the particular global field values and the one or more particular custom field values to generate a full record; and

sending the full record to a computer device.

Assignments (2)
SECURITY INTEREST Recorded Feb 14, 2025
From: ZUORA, INC.
To: ROYAL BANK OF CANADA, AS COLLATERAL AGENT
Reel/Frame 070236/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2022
From: VASILEVSKIY, ALEXANDER; SCHMIEDEHAUSEN, HENNING; MUKKAMALLA, SURYATEJ; ZHANG, RUI
To: ZUORA, INC.
Reel/Frame 060774/0098 →
Continuity (3)
Continuation 16892142 · Jun 3, 2020
Provisional Application 62856670 · Jun 3, 2019
Related Publication 20220382607A1 · Dec 1, 2022