Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Applies to:Image RemovedKyvos Enterprise  Image RemovedKyvos Cloud (Managed Services on AWS)  Image RemovedKyvos Azure Marketplace

Image RemovedKyvos AWS Marketplace  Image RemovedKyvos Single Node Installation (Kyvos SNI)  Image RemovedKyvos Free (Limited offering for AWSApplies to: (tick) Kyvos Enterprise  (tick) Kyvos Cloud (SaaS on AWS) (tick) Kyvos AWS Marketplace

(tick) Kyvos Azure Marketplace   (tick) Kyvos GCP Marketplace (tick) Kyvos Single Node Installation (Kyvos SNI)

...

The primary purpose of the caching service is to improve server performance by managing static and non-static java objects. The performance gain is from reducing the number of trips to the repository or other external sources of information, avoiding the cost of repeatedly re-creating objects, sharing objects between threads in a process and, when possible, between processes, and efficient use of process resources.

...

It gets updated in case of the following events:

  • Creating a new Kyvos entity

  • Updating/modifying existing entity

  • Deleting an entity

Folder cache

Logically related entities can be grouped together in a Folder for easy accessibility, sharing, and organization. Folder details are also cached in memory to reduce dependency on the repository for fetching the details.

...

Following is the list of events triggering cache updates:

  • Creating a new folder

  • Updating/modifying existing folder details

  • Deleting a folder

Entity properties cache

Kyvos lets you apply a wide range of properties on entities to derive optimal performance and utilization of resources. These properties also offer a greater degree of control over the configurations and resource utilization. Each entity can be uniquely configured according to its design or performance requirements.

...

The properties cache gets updated whenever:

  • A new property is applied to any entity

  • The value of the existing property is modified

  • An applied property is removed

Users’ cache

User details are stored in the repository. The user profile could be imported from an external directory such as LDAP etc., or user could be native to Kyvos. Access restrictions are closely governed often by the user permissions or their roles. To enforce security checks without degrading system performance or overloading the repository with requests, user details are cached in memory.

User details are synced every 15 minutes with the repository. User details get updated when:

  • New Kyvos user profile is created

  • Existing Kyvos user profile is modified

  • Existing Kyvos user profile is deleted

  • Changes are identified while syncing the Kyvos user repository with the external active directory

  • User logs into Kyvos

  • User is added to a group

  • User is removed from a group

Group cache

For easier management of users and performing batch operations, on the group of users, users are organized into groups, either in Kyvos or in an external directory. These group details are persisted in repository and maintained in memory cache also.

The details are synced every 15 mins with Kyvos repository. Group details get modified when

  • New group is created

  • Existing group is modified

  • Existing group is deleted

  • New user is added to the group

  • Existing user is removed from the group

Access rights cache

Entities in Kyvos are shareable across users with the following three access types:

  • Read-only

  • Read-write

  • Deny

Users can share the folders or individual entities. These access rights come into play throughout the user interaction with Kyvos, such as:

  • Showing the list of entities.

  • Performing CRUD operations on these entities.

These access rights are cached in memory for faster access at bootup.

The cache gets updated when:

  • An entity is shared

  • Permissions on already shared entity are modified/ revoked

Data security rules cache

...

The cache gets updated when:

  • New rule is created

  • Existing rule is modified

  • Existing rule is deleted

Cuboid distribution cache

There are many pertinent details of cuboids required while serving any browsing requests, such as:

  • Dimension/ measure set/ version they belong to

  • Query Engines where they are replicated

  • Other details which may help in filtering the cuboids

These details are persisted in the repository and require the joining of two or more tables, which is an expensive operation. To improve the browsing performance, cuboid distribution cache is created.

...

The cache gets warmed at bootup. It gets invalidated when:

  • Semantic model process is completed successfully (complete cache is invalidated)

  • Semantic model definition gets altered (partial cache is invalidated)

  • Semantic model is deleted

Successful queries served by query engines are continually cached.

Upon invalidation, cache can be warmed by executing auto-population suite which executes historical queries. To invalidate cache externally, a REST API has also been exposed. After invalidation, the cache can be re-warmed by auto population suite.

Query Engine caches

Kyvos provides multi-level caching options, when a query is received by the BI Server, it checks whether that query has been previously executed, if yes then the output will be served from the BI Server cache, also known as the Result cache.  

If not, then the query is passed on to the Query Engine. If some portion of the node information is available on the Query Engine heap memory, it is known as the Look Ahead Cache. Node is the smallest unit of a cuboid. 

After that, the result will be served from the Query Engine off-heap or the main memory. If the block cache is not available in the Off-Heap memory, then the cuboids are read from the local disk, which is replicated from the persistent storage. If still some cuboids are not found in the local disk, then those are fetched from Persistent storage like the HDFS or S3.

The cuboids used to serve the query are cached in the Query Engine RAM and is known as the cold cache or cuboid cache strategy.

...

The cached reference gets invalidated and removed from cache when

  • The semantic model is not browsed for 15 minutes.

  • The semantic model is successfully built

To close the cached reference externally, a REST API has been exposed.

...

The cache gets populated as the blocks get queried and remains in the memory until their cleanup. The purge thread performs cleanup of the cache when the following conditions are met:

  • Cache has consumed 100% of configured memory.

  • There are some blocks older than a day (Time to live).

The above-mentioned conditions are configurable and trigger a cleanup of 25% (configurable parameter) memory consumed by cache.

...

Advanced properties for Cuboid Distribution

  • cuboid.replication.type: Specifies where cuboid replication should take place. Local stores cuboids on the local disk of each query engine. NFS will replicate the cuboids in a shared location for all Query Engines and None will not replicate any cuboids

  • cuboid.balance.threshold: The ranges/cuboids for a given dimension should be balanced if the difference of range/cuboid count for a dimension in any 2 query engines exceeds this value.

  • cuboid.replication.factor: Specifies the number of query engines on which a particular cuboid will be assigned for querying.

Advanced properties for Query Cache

  • query.resultcache.lookup.strategy: Specifies the records cache lookup strategy. In case of Exact strategy, only exact lookup is performed. In case of Auto strategy, complete records cache is iterated to serve the request.

  • query.resultcache.strategy: Specifies BI Server's strategy for caching metadata and user query results. You can choose NONE, ALL, or AUTO options. When the value is set as AUTO, the system will determine which query results should be cached when the execution time exceeds the query cache time threshold.

  • query.cuboidcache.compression: Specifies the compression status of cached cuboid blocks. You can choose to keep the cuboid blocks as compressed or uncompressed.

  • query.cuboidcache.strategy: Specifies the cuboid cache level. This is an off-heap memory-based cache on the query engines. Enabling this cache helps improve the performance of queries. The maximum number of cuboids that can be cached depends on the off-heap memory configurations of the query engines.

  • query.cuboidcache.tier: Specifies the location where cuboid blocks will be cached. If cached to disk, the blocks are always stored in compressed form. You can choose to cache the blocks on an off-heap memory or a disk-backed off heap memory.