Скажем, у меня в файле базы данных sqlite есть таблица с именем luluTable
. Также у меня есть два отдельных процесса source_process
и sink_process
, которые имеют открытые соединения с этой базой данных.
проблема:
source_process
редактирует строку luluTable
, а затем указывает его с sink_process
по ipc
. Затем sink_process
получает сообщение ipc
, затем читает измененную строку в luluTable
(с помощью содержимого ipc
) и затем проверяет измененную строку. Если измененная строка действительна, sink_process
отправить и ACK
на source_process
, в противном случае она отправляет NACK
через ipc
.
Если source_process
получает NACK
, как можно он изменяет обратно измененную строку luluTable
на свои начальные значения?!
мое самое первое решение:
использовать две таблицы вместо одной: luluTable
и luluTableCache
. luluTableCache
является модифицированной версией luluTable
. source_process
сначала меняется только luluTableCache
. Затем sink_process
просто читает luluTableCache
и запускает процедуру проверки. Если source_process
получает ACK
, то фиксирует luluTableCache
в luluTable
; в противном случае он удаляет luluTableCache
и освобождает luluTable
нетронутым.
мой вопрос:
Есть ли более оптимальное решение, чем мое ?? !! Мое решение удваивает размер моей базы данных, а также производительность процессора, потому что ему нужно читать / записывать две таблицы вместо одной. Есть ли в sqlite3
API для предложенных вами операций?!