Decouple History to No SQL database

Hey @dhatric,

We used to have async history support, i.e. we would create the data that needs to be stored in the history during the runtime, store it in a blob and then read that and populate the history in another transaction. However, there were some problems with that approach, there was also time spend in computing the history during the runtime and storing it in the same transaction.

In any case, have you looked into tweaking the history level for your processes?
Depending on the level it the variables and / or the activity instances can be ignored in the history tables.

I see that there are inserts and deletes from the ACT_GE_BYTEARRAY table. This usually indicates that you are either using large string / json variables (that do not fit in the text_ column in the variable instance table) or that you are using serializable variables. I would advise you to review that part.

I also see that there are 4 select from the ACT_RU_EXECUTION table when a process is completed, but I think you know already from Process variables in synchronous execution that this would already be optimized.

If you would like to hook in different type of history logic, then I would suggest that you look into the HistoryManager. You can check how the async history used to work in Flowable 6 if you are interested in that. However, since our implementation was guaranteeing consistency, (i.e. if there was a failure in the runtime transaction), we were not storing the history data. However, this did mean that we had to do some additional logic which had certain implications on the length of the transactions.

Cheers,
Filip