IP Library Granted Patent US 12699685
Granted Patent B2
US 12699685 · App. 18/201,883 · Granted Aug 4, 2026

Tenantification of database management systems

Inventors: Ashish Dhar (Bangalore, IN); Nishanth Janugani (Bangalore, IN); Akshay Chandak (Bangalore, IN)
Assignee: Nutanix, Inc.
G06F16/235G06F9/45533G06F9/4887G06F16/2365G06F16/252G06F16/258G06F16/27G06F21/6218H04L67/60
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 12699685
App. No.
18/201,883
Granted
Aug 4, 2026
Kind
B2
Abstract

A system may include a memory having computer-readable instructions stored thereon and a processor of a control plane that executes the computer-readable instructions to receive a request from a tenant to update a portion of a database, determine an individual tenant identifier of the tenant, determine whether the portion of the database is associated with the individual tenant identifier or a global tenant identifier, and allow the tenant to update the portion of the database in response to determining that the portion of the database is associated with the global tenant identifier or the individual tenant identifier or restrict the tenant from updating the portion of the database in response to determining that the portion of the database is associated with neither the global tenant identifier nor the individual tenant identifier.

Claims (63)

1 . A system comprising:

a memory having computer-readable instructions stored thereon; and

a processor of a control plane that executes the computer-readable instructions to:

receive a request from a tenant to update a portion of a database including tenant-specific metadata of multiple tenants and global metadata, wherein the tenant-specific metadata of the multiple tenants is identified in the database using individual tenant identifiers of the multiple tenants and can be accessed only by the corresponding tenant, and wherein the global metadata is identified in the database using a global tenant identifier and can be accessed by all of the multiple tenants;

determine an individual tenant identifier of the tenant, wherein determining the individual tenant identifier comprises fetching the individual tenant identifier at runtime from a thread context that is global in scope and visible only in the thread handling the request, wherein the request does not include the individual tenant identifier;

determine whether the portion of the database is associated with the global tenant identifier; and

either allow the tenant to update the portion of the database in response to determining that the portion of the database is associated with the global tenant identifier, or restrict the tenant from updating the portion of the database in response to determining that the portion of the database is associated with neither the global tenant identifier nor the individual tenant identifier.

2 . The system of claim 1 , wherein the portion of the database comprises one or more rows of the database, and wherein the processor further executes computer-readable instructions to apply a row-level-security policy to allow or restrict the tenant from updating rows of the portion.

3 . The system of claim 1 , wherein to determine the individual tenant identifier, the processor further executes computer-readable instructions to:

fetch the individual tenant identifier from an execution context of the request.

4 . The system of claim 3 , wherein the execution context is a thread context.

5 . The system of claim 1 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database is triggered by an update to the one or more entities on the database server.

6 . The system of claim 5 , wherein the processor further executes computer-readable instructions to:

receive a message from the database server in a topic of a messaging cluster, wherein the topic is associated with the database server, and wherein the message includes the update to the one or more entities on the database server; and

determine the tenant based on one or more of the individual tenant identifier or one or more characteristics of the topic.

7 . The system of claim 1 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database triggers an update to the one or more entities on the database server.

8 . The system of claim 7 , wherein to update the one or more entities on the database server, the processor further executes computer-readable instructions to:

publish an update command in a topic of a messaging service, wherein an agent of the control plane running on the database server subscribes to the topic.

9 . The system of claim 1 , wherein the tenant is a tenant of a database management system, and wherein the database comprises a database on the control plane comprising metadata of entities on a database server in communication with the control plane.

10 . The system of claim 9 , wherein to communicate with the database server, the processor further executes computer-readable instructions to generate topics associated with the database server on a messaging service, wherein the messaging service includes a plurality of topics associated with a plurality of database servers.

11 . The system of claim 1 , wherein the control plane and one or more database servers are hosted on a hyperconverged system comprising a plurality of nodes, each node including compute, storage, and network resources.

12 . The system of claim 11 , wherein the plurality of nodes comprise database virtual machines managed by hypervisors and controller virtual machines configured to manage workflow requests between the nodes.

13 . The system of claim 11 , wherein the plurality of nodes are interconnected via a network to access a shared storage pool including at least one of network-attached storage or direct-attached storage.

14 . A non-transitory, computer-readable media comprising computer-readable instructions stored thereon that when executed by a processor of a control plane cause the processor to:

receive a request from a tenant to update a portion of a database including tenant-specific metadata of multiple tenants and global metadata, wherein the tenant-specific metadata of the multiple tenants is identified in the database using individual tenant identifiers of the multiple tenants and can be accessed only by the corresponding tenant, and wherein the global metadata is identified in the database using a global tenant identifier and can be accessed by all of the multiple tenants;

determine an individual tenant identifier of the tenant, wherein determining the individual tenant identifier comprises fetching the individual tenant identifier at runtime from a thread context that is global in scope and visible only in the thread handling the request, wherein the request does not include the individual tenant identifier;

determine whether the portion of the database is associated with the global tenant identifier; and

either allow the tenant to update the portion of the database in response to determining that the portion of the database is associated with the global tenant identifier, or restrict the tenant from updating the portion of the database in response to determining that the portion of the database is associated with neither the global tenant identifier nor the individual tenant identifier.

15 . The non-transitory, computer-readable media of claim 14 , wherein the portion of the database comprises one or more rows of the database, and wherein the instructions further cause the processor to apply a row-level-security policy to allow or restrict the tenant from updating rows of the portion.

16 . The non-transitory, computer-readable media of claim 14 , wherein the instructions further cause the processor to:

determine the individual tenant identifier by fetching the individual tenant identifier from an execution context of the request.

17 . The non-transitory, computer-readable media of claim 16 , wherein the execution context is a thread context.

18 . The non-transitory, computer-readable media of claim 14 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database is triggered by an update to the one or more entities on the database server.

19 . The non-transitory, computer-readable media of claim 18 , wherein the instructions further case the processor to:

receive a message from the database server in a topic of a messaging cluster, wherein the topic is associated with the database server, and wherein the message includes the update to the one or more entities on the database server; and

determine the tenant based on one or more of an identifier of the tenant and one or more characteristics of the topic.

20 . The non-transitory, computer-readable media of claim 14 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database triggers an update to the one or more entities on the database server.

21 . The non-transitory, computer-readable media of claim 20 , wherein to update the one or more entities on the database server, the instructions further cause the processor to:

publish an update command in a topic of a messaging cluster, wherein an agent of the control plane running on the database server subscribes to the topic.

22 . The non-transitory, computer-readable media of claim 14 , wherein the tenant is a tenant of a database management system, and wherein the database is a database on the control plane comprising metadata of entities on a database server in communication with the control plane.

23 . The non-transitory, computer-readable media of claim 22 , wherein to communicate with the database server, the instructions further cause the processor to generate topics associated with the database server on a messaging cluster, wherein the messaging cluster includes a plurality of topics associated with a plurality of database servers.

24 . The non-transitory, computer-readable media of claim 14 , wherein the computer-readable instructions are executed in a hyperconverged system comprising a cluster of interconnected nodes, each node including processing resources, memory, storage, and a network interface.

25 . The non-transitory, computer-readable media of claim 24 , wherein each node of the hyperconverged system includes a hypervisor that manages multiple virtual machines including database virtual machines and control/service virtual machines.

26 . A method comprising:

receiving, by a processor of a control plane, a request from a tenant to update a portion of a database including tenant-specific metadata of multiple tenants and global metadata, wherein the tenant-specific metadata of the multiple tenants is identified in the database using individual tenant identifiers of the multiple tenants and can be accessed only by the corresponding tenant, and wherein the global metadata is identified in the database using a global tenant identifier and can be accessed by all of the multiple tenants;

determining, by the processor, an individual tenant identifier of the tenant, wherein determining the individual tenant identifier comprises fetching the individual tenant identifier at runtime from a thread context that is global in scope and visible only in the thread handling the request, wherein the request does not include the individual tenant identifier;

determining, by the processor, whether the portion of the database is associated with the global tenant identifier; and

either allowing, by the processor, the tenant to update the portion of the database in response to determining that the portion of the database is associated with the global tenant identifier, or restricting the tenant from updating the portion of the database in response to determining that the portion of the database is associated with neither the global tenant identifier nor the individual tenant identifier.

27 . The method of claim 26 , wherein the portion of the database comprises one or more rows of the database, and wherein the method further comprises applying, by the processor, a row-level-security policy to allow or restrict the tenant from updating rows of the portion.

28 . The method of claim 26 , further comprising:

determining, by the processor, the individual tenant identifier by fetching the individual tenant identifier from an execution context of the request.

29 . The method of claim 28 , wherein the execution context is a thread context.

30 . The method of claim 26 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database is triggered by an update to the one or more entities on the database server.

31 . The method of claim 30 , further comprising:

receiving, by the processor, a message from the database server in a topic of a messaging cluster, wherein the topic is associated with the database server, and wherein the message includes the update to the one or more entities on the database server; and

determining, by the processor, the tenant based on one or more of an identifier of the tenant and one or more characteristics of the topic.

32 . The method of claim 26 , wherein the portion of the database includes metadata of one or more entities on a database server associated with the tenant, and wherein the request to update the portion of the database triggers an update to the one or more entities on the database server.

33 . The method of claim 32 , further comprising:

publishing an update command in a topic of a messaging cluster to update the one or more entities on the database server, wherein an agent of the control plane running on the database server subscribes to the topic.

34 . The method of claim 26 , wherein the tenant is a tenant of a database management system, and wherein the database is a database on the control plane comprising metadata of entities on a database server in communication with the control plane.

35 . The method of claim 34 , further comprising generating topics associated with the database server on a messaging cluster to communicate with the database server, wherein the messaging cluster includes a plurality of topics associated with a plurality of database servers.

36 . The method of claim 26 , wherein the method is executed within a hyperconverged system comprising a plurality of nodes, each node integrating compute, storage, and network resources under unified management.

37 . The method of claim 36 , wherein the plurality of nodes comprise virtual machines hosted by hypervisors on respective nodes, the virtual machines including database virtual machines and controller/service virtual machines in communication over a network to a shared storage pool.