Enhancing metadata storage in caches
Methods, systems, and computer-readable storage media for storing, within a cache, a set of P byte arrays, a first byte array representing a map of a first plurality of entities of a first tenant associated with M entities, where M>P>1 and the set of P byte arrays are indexed by tenant and group identifier pairs, receiving a first request, the first request associated with a first entity, for the first entity, retrieving, from the cache, the first byte array by indexing at least a first subset of the P byte arrays using a tenant identifier of the first tenant and a first group identifier from a set of first group identifiers, generating a first map from the first byte array, the first map comprising first metadata that defines properties and logic associated with the first entity, and processing at least a portion of the first request using the first metadata.
1 . A computer-implemented method for storage and retrieval of metadata representative of entities in caches of cloud computing environments, the method being executed by one or more processors and comprising:
storing, within a cache, a set of P byte arrays where a first byte array in the set of P byte arrays is a representation of a map associated with a first plurality of entities where the first plurality of entities are associated with a first tenant and the first tenant is associated with M entities, where M>P>1 and the set of P byte arrays are indexed by tenant identifier and group identifier pairs, storing within the cache comprising:
receiving the M entities,
dividing the M entities into a set of initial groups so that each initial group comprises a sub-set of M entities,
splitting at least one initial group into multiple initial groups using an undirected, weighted graph comprising vertices representing the M entities and edges representing relationships between the M entities, each edge having a weight determined by the relationship between two of the M entities, and
storing a map that associates each of the M entities with one of the initial groups;
receiving a first request from the first tenant, the first request being associated with a first entity in the first plurality of entities;
for the first entity in the first plurality of entities, retrieving, from the cache, the first byte array by indexing at least a first subset of the P byte arrays using a tenant identifier of the first tenant and a first group identifier from a set of first group identifiers wherein the first group identifier is associated with the first entity;
generating a first map from the first byte array, the first map comprising first metadata that defines properties and logic associated with the first entity; and
processing at least a portion of the first request using the first metadata.
2 . The computer-implemented method of claim 1 , wherein the first entity has an association to a second entity and wherein the second entity is part of the first plurality of entities wherein the first map further comprises second metadata that defines properties and logic associated with the second entity and the processing at least a portion of the first request uses the second metadata.
3 . The computer-implemented method of claim 1 , wherein the first request is further associated with a second entity in a second plurality of entities further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
4 . The computer-implemented method of claim 2 , wherein the first entity is associated with a second entity in a second plurality of entities, the method further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
5 . The computer-implemented method of claim 1 , further comprising merging at least two the initial groups into a single initial group.
6 . The computer-implemented method of claim 1 , wherein splitting the at least one initial group is executed in response to determining that the at least one initial group includes a number of entities that exceeds a threshold number of entities.
7 . The computer-implemented method of claim 1 , where the relationship between two of the M entities is determined from access logs.
8 . A non-transitory computer-readable storage medium coupled to one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations for storage and retrieval of metadata representative of entities in caches of cloud computing environments, the operations comprising:
storing, within a cache, a set of P byte arrays where a first byte array in the set of P byte arrays is a representation of a map associated with a first plurality of entities where the first plurality of entities are associated with a first tenant and the first tenant is associated with M entities, where M>P>1 and the set of P byte arrays are indexed by tenant identifier and group identifier pairs, storing within the cache comprising:
receiving the M entities,
dividing the M entities into a set of initial groups so that each initial group comprises a sub-set of M entities,
splitting at least one initial group into multiple initial groups using an undirected, weighted graph comprising vertices representing the M entities and edges representing relationships between the M entities, each edge having a weight determined by the relationship between two of the M entities, and
storing a map that associates each of the M entities with one of the initial groups;
receiving a first request from the first tenant, the first request being associated with a first entity in the first plurality of entities;
for the first entity in the first plurality of entities, retrieving, from the cache, the first byte array by indexing at least a first subset of the P byte arrays using a tenant identifier of the first tenant and a first group identifier from a set of first group identifiers wherein the first group identifier is associated with the first entity;
generating a first map from the first byte array, the first map comprising first metadata that defines properties and logic associated with the first entity; and
processing at least a portion of the first request using the first metadata.
9 . The non-transitory computer-readable storage medium of claim 8 , wherein the first entity has an association to a second entity and wherein the second entity is part of the first plurality of entities wherein the first map further comprises second metadata that defines properties and logic associated with the second entity and the processing at least a portion of the first request uses the second metadata.
10 . The non-transitory computer-readable storage medium of claim 8 , wherein the first request is further associated with a second entity in a second plurality of entities further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
11 . The non-transitory computer-readable storage medium of claim 9 , wherein the first entity is associated with a second entity in a second plurality of entities, the method further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
12 . The non-transitory computer-readable storage medium of claim 8 , wherein operations further comprise merging at least two the initial groups into a single initial group.
13 . A system, comprising:
a computing device; and
a computer-readable storage device coupled to the computing device and having instructions stored thereon which, when executed by the computing device, cause the computing device to perform operations for storage and retrieval of metadata representative of entities in caches of cloud computing environments, the operations comprising:
storing, within a cache, a set of P byte arrays where a first byte array in the set of P byte arrays is a representation of a map associated with a first plurality of entities where the first plurality of entities are associated with a first tenant and the first tenant is associated with M entities, where M>P>1 and the set of P byte arrays are indexed by tenant identifier and group identifier pairs, storing within the cache comprising:
receiving the M entities,
dividing the M entities into a set of initial groups so that each initial group comprises a sub-set of M entities,
splitting at least one initial group into multiple initial groups using an undirected, weighted graph comprising vertices representing the M entities and edges representing relationships between the M entities, each edge having a weight determined by the relationship between two of the M entities, and
storing a map that associates each of the M entities with one of the initial groups;
receiving a first request from the first tenant, the first request being associated with a first entity in the first plurality of entities;
for the first entity in the first plurality of entities, retrieving, from the cache, the first byte array by indexing at least a first subset of the P byte arrays using a tenant identifier of the first tenant and a first group identifier from a set of first group identifiers wherein the first group identifier is associated with the first entity;
generating a first map from the first byte array, the first map comprising first metadata that defines properties and logic associated with the first entity; and
processing at least a portion of the first request using the first metadata.
14 . The system of claim 13 , wherein the first entity has an association to a second entity and wherein the second entity is part of the first plurality of entities wherein the first map further comprises second metadata that defines properties and logic associated with the second entity and the processing at least a portion of the first request uses the second metadata.
15 . The system of claim 13 , wherein the first request is further associated with a second entity in a second plurality of entities further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
16 . The system of claim 14 , wherein the first entity is associated with a second entity in a second plurality of entities, the method further comprising:
for the second entity in the second plurality of entities, retrieving, from the cache, a second byte array by indexing at least a second subset of the P byte arrays using the tenant identifier and a second group identifier from the set of first group identifiers wherein the second group identifier is associated with the second entity;
generating a second map from the second byte array, the second map comprising second metadata that defines properties and logic associated with the second entity; and processing the at least a portion of the first request further using the second metadata.
17 . The non-transitory computer-readable storage medium of claim 8 , where the relationship between two of the M entities is determined from access logs.
18 . The non-transitory computer-readable storage medium of claim 8 , wherein splitting the at least one initial group is executed in response to determining that the at least one initial group includes a number of entities that exceeds a threshold number of entities.
19 . The system of claim 13 , where the relationship between two of the M entities is determined from access logs.
20 . The system of claim 13 , wherein splitting the at least one initial group is executed in response to determining that the at least one initial group includes a number of entities that exceeds a threshold number of entities.