Я вставляю / обновляю данные в таблицу. Система баз данных не обеспечивает функциональность «Upsert». Таким образом, я использую промежуточную таблицу для вставки с последующим слиянием с «финальной» таблицей и, наконец, усекаю промежуточную таблицу.
Это приводит к состоянию гонки. Если новые данные вставляются в промежуточную таблицу между объединением + усечением, эти данные теряются.
Как я могу убедиться, что этого не происходит?
Я пытался смоделировать это через Wait / Notify, но это тоже не чистое решение. Очередь для процессора «Поместить данные в промежуточную таблицу» PutDatabaseRecord может быть заполнена, и ExecuteSQL «MergeVertica for Insert / Update» все еще может выполняться.
![Nifi Flow](https://i.stack.imgur.com/Blhtq.png)