Насколько велик ваш список? Если это миллионы, имеет смысл добавить, при условии, что вы сможете извлекать вновь добавленные элементы в каждом раунде. Если их тысячи или меньше, то, вероятно, проще каждый раз писать их все.
Похоже, вы могли бы самостоятельно добавить файл. То есть кодирует вновь добавленные элементы в ByteString
и добавляет их в файл. (Сделайте уверенным , что только один процесс делает это одновременно!)
А затем при чтении файла итерируйте decodeOrFail
, передавая ему неизрасходованный ввод из предыдущего вызова, пока вы не проанализируете все и не получите пустой ByteString
.
Несколько ортогонально, я нашел, что использование safe-copy очень полезно. Это позволяет сделать сериализацию прямой / обратной совместимости очень простой.
Если вы не возражаете писать все данные целиком, то acid-state дает вам очень надежные гарантии относительно ваших данных. Он также имеет интеграцию с безопасным копированием.