У меня есть объект списка, который может меняться со временем.
Например, на 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
- избыточны), но восстановление довольно медленное, поскольку сначала нужно распаковать весь родительский список.
У любого есть какие-то интересные шаблоны для решениявыше?