SonkoDmitry
@SonkoDmitry
Веб разработчик

Вычисление разницы между двумя ассоциативными массива

Не так давно столкнулся с задачей, при сборке статистика с одного из сервисов, в ответ приходит ассоциативный массив данных. Необходимо иметь возможность хранить весь этот объем данных, что бы в дальнейшем можно было восстановить состояние на любой момент времени. Данные приходят каждые 5-10 секунд, хранить в базе весь массив не есть хорошо, поэтому столкнулся с проблемой. Необходимо найти решение, с помощью которого можно получить diff между двумя массивами в виде третьего, а именно: какие из ключей были удалены, у каких ключей были изменены значение, какие были добавлены. Быть может кто-то сталкивался с подобным? Буду крайне благодарен.

ЗЫ: я знаю про array_diff_*/array_udiff_* функции, но в любом случае, приходится применять комплекс этих функций. Вдруг есть более красивое и простое решение.
  • Вопрос задан
  • 4696 просмотров
Пригласить эксперта
Ответы на вопрос 2
fear86
@fear86
Developer
Да, что то не до конца понятно, массивы, база данных, хранить полностью но не полностью =)

Array_ функции будут работать лучше всего, так как они нативные. Если это база, то вычислить расхождения можно и с ее помощью. Если это инкрементальные бекапы, то myqldump + gzip =)) Или вообще полное логирование запросов опять же с упаковкой в gzip.

Надо больше информации.

PS: Так же не ясно сколько данных и какая нагрузка. И почему не хорошо хранить все в базе.
Ответ написан
Комментировать
Slavenin999
@Slavenin999
программист php/erlang/elixir/js
не думаю, что можно придумать что-то лучше, чем array_diff_assoc или array_diff_uassoc, когда решал подобную задачу использовал именно их, лучше решения не нашёл

ну и если нужно хранить действительно большие объемы можно посмотреть в сторону NoSql, например mongo
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы