Вычисление разницы между двумя ассоциативными массива
Не так давно столкнулся с задачей, при сборке статистика с одного из сервисов, в ответ приходит ассоциативный массив данных. Необходимо иметь возможность хранить весь этот объем данных, что бы в дальнейшем можно было восстановить состояние на любой момент времени. Данные приходят каждые 5-10 секунд, хранить в базе весь массив не есть хорошо, поэтому столкнулся с проблемой. Необходимо найти решение, с помощью которого можно получить diff между двумя массивами в виде третьего, а именно: какие из ключей были удалены, у каких ключей были изменены значение, какие были добавлены. Быть может кто-то сталкивался с подобным? Буду крайне благодарен.
ЗЫ: я знаю про array_diff_*/array_udiff_* функции, но в любом случае, приходится применять комплекс этих функций. Вдруг есть более красивое и простое решение.
Да, что то не до конца понятно, массивы, база данных, хранить полностью но не полностью =)
Array_ функции будут работать лучше всего, так как они нативные. Если это база, то вычислить расхождения можно и с ее помощью. Если это инкрементальные бекапы, то myqldump + gzip =)) Или вообще полное логирование запросов опять же с упаковкой в gzip.
Надо больше информации.
PS: Так же не ясно сколько данных и какая нагрузка. И почему не хорошо хранить все в базе.
не думаю, что можно придумать что-то лучше, чем array_diff_assoc или array_diff_uassoc, когда решал подобную задачу использовал именно их, лучше решения не нашёл
ну и если нужно хранить действительно большие объемы можно посмотреть в сторону NoSql, например mongo