Эффективное добавочное хранилище и быстрое восстановление списка изменений по метке времени - PullRequest
2 голосов
/ 01 ноября 2019

У меня есть объект списка, который может меняться со временем.

Например, на 2001-01-01 10:00 это может быть list('a' = 1), затем через 5 минут на 2001-01-01 10:05 он меняется на list('a' = 1, 'b' = 2),затем на 2001-01-01 10:10 он становится list('a' = 3) и т. д. Иногда он может вообще не меняться.

В действительности список имеет много атрибутов и может содержать списки в списках. Содержимое - это примитивные объекты, такие как строки, целые числа, ... и списки.

Я хочу эффективно хранить изменения, но также сделать восстановление списка в определенный момент времени вычислительно эффективным. Нечто похожее на то, как Subversion отслеживает изменения файлов, но только для списков.

Один очевидный способ - хранить каждый новый список в родительском списке, например:

list('2001-01-01 10:00' = list('a' = 1),
     '2001-01-01 10:05' = list('a' = 1, 'b' = 2),
     '2001-01-01 10:10' = list('a' = 3))

Сжатие этого с помощьюmemCompress() сделает хранилище эффективным (потому что дубликаты - например, 'a' = 1 - избыточны), но восстановление довольно медленное, поскольку сначала нужно распаковать весь родительский список.

У любого есть какие-то интересные шаблоны для решениявыше?

...