Лучший способ сравнить переменные объекта и искать изменения - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть функция, которой будет передан объект, который содержит МНОГИЕ переменные. Все эти переменные хранятся в базе данных. Позже новый объект будет передан моей функции, и в большинстве случаев он будет идентичен. Но иногда одна или две переменные будут разными, и мне придется предпринять различные действия на основе этих изменений. Как я могу это сделать, кроме как перебирать каждую переменную и сравнивать ее с каждой сохраненной версией этой переменной? Можно ли как-нибудь сгенерировать хеш-значение для всего объекта? Поскольку объект будет в большинстве случаев одинаковым, если его передать мне, это будет быстрый способ определить, что ничего не изменилось.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Вы, вероятно, будете использовать столько, если не больше, ресурсов, пытаясь определить, изменилось ли что-нибудь или нет. Если вы не получаете сотни тысяч запросов в час, то, вероятно, столь же легко обновлять базу данных с помощью записи каждый раз.

0 голосов
/ 01 декабря 2011

Вы написали, что храните все переменные в базе данных, поэтому я думаю, что вы должны делать вызовы из базы данных как можно меньше.Для этого вы можете написать хранимую процедуру, которая вызывается при вставке строки в таблицу, содержащую ваши значения.В этой процедуре вы можете вычислить хеш-значение и обновить столбец в таблице, который добавляется для хранения хеш-значений.Вы можете использовать функцию sys.dbms_crypto.hash в Oracle для вычисления значения хеша.Когда вам нужно найти объект, если он там, снова вызовите хранимую процедуру, которая вводит текстовое значение ваших текущих значений объектов, снова создает хеш-значение с той же функцией и вызывает оператор выбора, и если строка возвращается, она возвращаетY "иначе" N ".Вы можете добавить индекс в «столбец хеш-значений», чтобы ускорить процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...