2010-12-01 1 views
1

몇 가지 REST 호출을 사용하고 데이터베이스에 관계형으로 저장하여 OAuth 소스에서 가져온 데이터 그래프가 있습니다. 데이터 구조는 여러 개의 일대 다 관계가있는 약 5-10 개의 테이블로 끝납니다. 나는 주기적으로 정보를 다시 검색하여 내 데이터베이스에 업데이트가 필요한지 확인하려고합니다.C# GetHashCode()를 사용하여 데이터 그래프 비교

많은 사용자가이 작업을 수행 할 것이므로 데이터가 자주 변경되지 않을 것이므로 내 목표는 불필요하게 데이터베이스의 부하를 최소화하는 것입니다. 내 전략은 내 OAuth 공급자로부터 데이터를 쿼리하지만 그 결과를 해시 한 다음 동일한 데이터 세트에 대해 생성 한 마지막 해시와 비교하는 것입니다. 해시가 일치하지 않으면 데이터베이스에서 트랜잭션을 시작하고 해당 사용자의 모든 데이터를 날려 버리고 데이터를 다시 쓰고 트랜잭션을 닫습니다. 이것은 데이터베이스에서 데이터를 읽는 시간을 절약하고 변경된 내용, 변경된 행 등을 비교하기 위해 모든 비교 작업을 수행합니다.

내 질문 : 모든 데이터를 함께 메모리에 붙이면 큰 문자열로 사용하고 C# GetHasCode()를 사용하면 내 데이터가 변경되었는지를 상당히 신뢰할 수있는 메커니즘으로 확인할 수 있습니까? 또는이 고양이를 가죽 닝하는 데 더 좋은 기법이 있습니까?

감사합니다.

답변

0

예, 변경 사항을 감지하는 데 상당히 신뢰할 수있는 메커니즘입니다. 나는 GetHashCode() 메쏘드에서 충돌의 확률에 대해서 모른다. 그러나 나는 그것이 안전하다고 생각할 것이다.

더 나은 방법 : 데이터에 변경 될 때마다 설정되는 버전 스탬프 또는 타임 스탬프를 사용할 수 없습니까?

+0

동의합니다. 타임 스탬프 방식이 가장 좋지만 유감스럽게도 내 공급자가 전체 데이터 그래프에서 타임 스탬프 "적용 범위"를 갖고 있다고 생각하지 않습니다. 일부 타임 스탬프가 있지만 특정 필드에만 적용됩니다. 그 타임 스탬프를 앞쪽에 비교해 보면 약간의 마일리지가 생길지 모르지만, 99 %의 시간이 나는 일종의 원시 비교로 돌아갈 필요가 있다고 생각합니다. string.GetHasCode() 메서드의 충돌 특성을 검사하기 시작합니다. – sisdog