# Connector Data Model Design

> Your data model can be built in different ways. There is a trade-off between comprehensibility, effort, and performance for the user. Without restricting the data volume, there are trade-offs you can make to ensure the Connector does not become slow.

## Introduction

Your data model can be built in different ways. There is a trade-off between comprehensibility, effort, and performance for the user. Without restricting the data volume, there are trade-offs you can make to ensure the Connector does not become slow.

While a slow Connector may impact the performance experience of a developer, it will have no impact on the end-user, if the output file is the same. Sometimes it may be worthwhile to invest in the design phase and to accept a slower performance when developing a well-performing dataset or application for the end-users.

## Solution

### Connector Data Model Design

* Avoid unions where possible
* Set the availability of attributes that are not used in the output dataset of the Connector to private/hidden where possible.

### Cache Generation

For cached data, the startup time of the application is independent of the number of columns. When data is pre-calculated and cached, it can be loaded directly from the cache when it is requested.

Extracting data from source systems can be time-consuming. It is recommended to schedule the cache updates, for example outside production hours.

Besides the extraction of data, during cache generation, the data is also transformed into the **UiPath Process Mining** internal format and all calculations that do not depend on user input, are cached.

For calculations that depend on user input, the initial state is cached. When the user changes a control or filter that changes the calculation, the calculation is performed again. Keeping these recalculations to a minimum is very important in good application design.
