Гарантировать согласованность данных с большим количеством транзакций
Я пишу веб-приложение, которому нужна база данных.
Транзакции IndexedDB и websql должны быть короткими, и я прочитал, что лучше получить все данные с сервера, а затем открыть транзакцию и записать все, чтобы быть уверенным в согласованности.
Моя проблема в том, что мне нужно получить много данных, и я не могу хранить их в памяти (особенно в мобильных браузерах). По этой причине лучше читать чанк и писать чанк, таким образом, потребление памяти намного ниже. Каждый кусок записывается с помощью отдельной транзакции (они короткие и автоматически принимаются). Таким образом, я не могу гарантировать последовательность. Каковы лучшие практики для этого сценария? Есть ли другие решения?
1 ответ
Существует компромисс между более короткой транзакцией для согласованности и более длинной транзакцией для производительности.
В моей библиотеке (YDN-DB) я рекомендую использовать отдельный поток транзакций для заполнения (параллельный, множественный запрос), обновления (последовательный, атомарный) и запроса (параллельный, одиночный).