# Data Storage

When the [data is collected](/umbraco-engage/developers/introduction/dataflow-pipeline/data-collection.md) it is temporarily stored in memory. At some point, a threshold is reached and all data is stored in the database.

## Flushing the memory

Two thresholds can be set and reached which will trigger the storage of data. If one of these two is reached the data will be stored in the database.

* The first threshold is the '`FlushRateInRecords`'.
  * When this number of records is in memory the data will be stored in the database. An example could be if you set it to 100, the data will be permanently stored after 100 page visits.
* The second threshold is the `FlushIntervalInSeconds`.
  * After this number of seconds, the data will be sent to the database. If you set it to 30 seconds, for example, every 30 seconds the data will be sent to the database. No matter how many records there are in memory.

Both settings can be set in the [configuration](/umbraco-engage/developers/settings/configuration.md) file of Umbraco Engage.

The higher the value set for these thresholds, the more memory Umbraco Engage uses on your web server(s) and less of your database connection. Please be aware the memory impact is low because there is not a lot of complex data stored.

The lower the value you set, the less memory Umbraco Engage uses on your web server(s), and the more database calls are made.

## Data storage

The data will be stored as quickly as possible to minimize the needed resources. For this reason, the data collected from client-side events will be stored in so-called raw tables in a non-normalized. This data will be processed in [the next step](/umbraco-engage/developers/introduction/dataflow-pipeline/data-parsing.md) of the data flow.

The data collected from clientside events is stored in the table `umbracoEngageAnalyticsRawClientSideData`.

When the data is stored in these tables the columns `processingStarted`, `processingFinished`, `processingMachine`**,** and `processingFailed` are empty. They will be filled in the parsing step.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.umbraco.com/umbraco-engage/developers/introduction/dataflow-pipeline/data-storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
