# US 12,182,293 B2 · System and method for maintaining tenant data isolation in a messaging service

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,293 B2
- Document ID: US12182293B2
- Status: Granted
- Kind: B2
- Application number: 17/456,770
- Filed: 2021-11-29
- Published: 2023-06-01
- Granted: 2024-12-31
- Earliest claimed: 2021-11-29
- Assignees: GONG.io Ltd.
- Applicants: Gong.io Ltd.
- Inventors: Nadav Hoze; Yoel Amram
- Web page: https://patentgrep.com/patent/US12182293B2

## CPC

- G06F 21/6227: {where protection concerns the structure of data, e.g. records, types, queries}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and system for maintaining tenant isolation in a messaging service are disclosed. The method includes receiving, in at least one source topic, records sent by a plurality of producer systems associated with a plurality of tenants, wherein each of the plurality of tenants is associated with a unique tenant identifier (ID); partitioning the received records into a plurality of partitions in an intermediate topic based on the respective tenant IDs of respective tenants that sourced the records; grouping, for each of the plurality of partitions in the intermediate topic, records within the partition into an isolated batch, wherein the records in each isolated batch belong to the same tenant; and placing the isolated batches in a destination topic to be consumed system by a consumer, wherein the isolated batches are placed in the destination topic in a round-robin manner.

## Claims

### Claim 1

A method for maintaining tenant isolation in a messaging service, comprising:
receiving, in at least one source topic, records sent by a plurality of producer systems associated with respective ones of a plurality of tenants, wherein each of the plurality of tenants is associated with a unique tenant identifier (ID) and wherein each of the at least one source topic includes a plurality of partitions each of which is adapted to store records received from at least one of the tenants in the order of receipt and each respective record contains the unique tenant ID of the tenant sourcing the record;
partitioning the received records into a plurality of partitions in an intermediate topic based on the respective tenant IDs of respective tenants that sourced the records;
grouping, for each of the plurality of partitions in the intermediate topic, records within the partition into an isolated batch, wherein the records in each isolated batch belong to the same tenant; and
placing the isolated batches in a destination topic to be consumed by a consumer system, wherein the isolated batches are placed in the destination topic in a round-robin manner;
wherein each of the source, intermediate, and destination topics are realized as respective data structures stored in memory and wherein each partition of any topic is a memory area within that topic.

### Claim 2 (depends on 1)

The method of claim 1, wherein all records from the same tenant are stored in only one partition of the plurality of partitions in the intermediate topic.

### Claim 3 (depends on 2)

The method of claim 2, wherein grouping, for each of the plurality of partitions in the intermediate topic, records within the partition into an isolated batch further comprises:
instantiating a plurality of consumer threads in the consumer system, wherein consumer threads group records of different tenants in parallel, and wherein each consumer thread groups all records of a tenant stored in a single partition in the intermediate topic into one or more isolated batches, the records in each of the one or more isolated batches are substantially evenly distributed.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
placing the received records in the at least one source topic in a round-robin manner.

### Claim 5 (depends on 1)

The method of claim 1, wherein the respective size of each isolated batch is fixed by a predefined records limit parameter.

### Claim 6 (depends on 5)

The method of claim 5, wherein the predefined records limit parameter is any of: a number of records, and a time interval for reception of records.

### Claim 7 (depends on 1)

The method of claim 1, wherein each partition in the intermediate topic stores records keyed with at least one respective tenant ID for the intermediate topic.

### Claim 8 (depends on 1)

The method of claim 1, wherein each of the plurality of producer systems is at least a record generator configured to stream records to the at least one source topic.

### Claim 9 (depends on 1)

The method of claim 1, wherein the consumer system is at least a processing server configured to process the records per tenant.

### Claim 10 (depends on 9)

The method of claim 9, wherein the processing of the records by the processing server generates at least deal flow intelligence for each tenant.

### Claim 11 (depends on 1)

The method of claim 1, wherein the records are substantially evenly distributed among the partitions of the source topic so as to result in a similar number of records being stored in each partition of the source topic.

### Claim 12

A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute a process for maintaining tenant isolation in a messaging service, the process comprising:
receiving, in at least one source topic, records sent by a plurality of producer systems associated with respective ones of a plurality of tenants, wherein each of the plurality of tenants is associated with a unique tenant identifier (ID) and wherein each of the at least one source topic includes a plurality of partitions each of which is adapted to store records received from at least one of the tenants in the order of receipt and each respective record contains the unique tenant ID of the tenant sourcing the record;
partitioning the received records into a plurality of partitions in an intermediate topic based on the respective tenant IDs of respective tenants that sourced the records;
grouping, for each of the plurality of partitions in the intermediate topic, records within the partition into an isolated batch, wherein the records in each isolated batch belong to the same tenant; and
placing the isolated batches in a destination topic to be consumed by a consumer system, wherein the isolated batches are placed in the destination topic in a round-robin manner;
wherein each of the source, intermediate, and destination topics are realized as respective data structures stored in memory and wherein each partition of any topic is a memory area within that topic.

### Claim 13

A system for maintaining tenant isolation in a messaging service, comprising:
a processing circuitry; and
a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:
receive, in at least one source topic, records sent by a plurality of producer systems associated with respective ones of a plurality of tenants, wherein each of the plurality of tenants is associated with a unique tenant identifier (ID) and wherein each of the at least one source topic includes a plurality of partitions each of which is adapted to store records received from at least one of the tenants in the order of receipt and each respective record contains the unique tenant ID of the tenant sourcing the record;
partition the received records into a plurality of partitions in an intermediate topic based on the respective tenant IDs of respective tenants that sourced the records;
group, for each of the plurality of partitions in the intermediate topic, records within the partition into an isolated batch, wherein the records in each isolated batch belong to the same tenant; and
place the isolated batches in a destination topic to be consumed by a consumer system, wherein the isolated batches are placed in the destination topic in a robin-round manner;
wherein each of the source, intermediate, and destination topics are realized as respective data structures stored in the memory and wherein each partition of any topic is a memory area within that topic.

### Claim 14 (depends on 13)

The system of claim 13, wherein all records from the same tenant are stored in only one partition of the plurality of partitions in the intermediate topic.

### Claim 15 (depends on 14)

The system of claim 14, wherein the system is further configured to:
instantiate a plurality of consumer threads in the consumer system, wherein consumer threads group records of different tenants in parallel, and wherein each consumer thread groups all records of a tenant stored in a single partition in the intermediate topic into one or more isolated batches, the records in each of the one or more isolated batches are substantially evenly distributed.

### Claim 16 (depends on 13)

The system of claim 13, wherein the system is further configured to:
place the received records in the at least one source topic in a round robin manner.

### Claim 17 (depends on 13)

The system of claim 13, wherein the respective size of each isolated batch is fixed by a predefined parameter.

### Claim 18 (depends on 17)

The system of claim 17, wherein the predefined parameter is any of: a number of records, and a time interval.

### Claim 19 (depends on 13)

The system of claim 13, wherein each partition in the intermediate topic stores records keyed with at least one respective tenant ID for the intermediate topic.

### Claim 20 (depends on 13)

The system of claim 13, wherein each of the plurality of producer systems is at least a record generator configure to steam data records to the at least one source topic.

### Claim 21 (depends on 13)

The system of claim 13, wherein the consumer system is at least a processing server configured to process the records per tenant.

### Claim 22 (depends on 21)

The system of claim 21, wherein the processing of the records by the processing server generates with at least deal flow intelligence for each tenant.

### Claim 23 (depends on 13)

The system of claim 13, wherein the records are substantially evenly distributed among the partitions of the source topic so as to result in a similar number of records being stored in each partition of the source topic.
