2012-06-27 6 views
3

다양한 데이터베이스 유형 (Microsoft SQL2005, MySql 및 IBM Informix, Oracle)에서 동일한 데이터 테이블을 가지고 있으며 데이터에 대해 SHA-1 해시 결과를 생성해야합니다. 서로 다른 데이터베이스 유형에서 동일한 테이블. 다른 데이터베이스 유형에서 데이터베이스 테이블의 일관된 해시

나는이 작업을 수행하는 가장 좋은 방법을 결정하기 위해 노력하고 있고 지금까지 내가 함께 온 것입니다 : .NET SqlDataAdapter를 선택 * 원하는 테이블에서 의 DataTable에 사용

  • . List.Sort()를 통해
  • 정렬 열 이름은 다음과 같이 해시를 수행, 각 행에 대한 데이터베이스 유형 간의 일관성 순서
  • 을 보장 :
    • 문자열을 각 열 값을 변환하고에서 rowString에 추가 위의 순서는 다음과 같습니다.
    • 전체 rowString을 해시하여 rowHash를 가져 와서 목록에 추가하십시오.
  • 다음으로 모든 rowHash 값을 SHA-1 값으로 정렬하고 결과를 해시하여 최종 테이블 해시를 얻습니다. 이렇게하면 데이터베이스 유형간에 행이 다른 순서로 반환되는 문제가 처리됩니다.

이 구현에 문제가 있습니까? 다른 문자열 결과를 일으키는 다른 데이터베이스의 데이터 유형과 같은?

또한 정렬이 필요합니까? 쿼리에서 정의되지 않은 한 열과 행의 순서가 보장되지 않는다고 가정하고 가능한 한 동적이어야합니다.

감사합니다.

+0

테이블 스키마 및 총 데이터 양에 대한 최대 예상치에 대한 정보를 추가 할 수 있습니까? 또한 테이블의 데이터는 정적이며 주어진 시점에 두 개 이상의 공급자에서 동일한 테이블을 비교하기 위해 해시를 생성하고 있습니까? –

+0

제가 이해한다면 차이 데이터베이스 서버 소프트웨어를 사용하는 여러 데이터베이스 서버에서 단일 테이블에 저장된 동일한 데이터가 있습니다. 데이터가 실제로 동일한 지 알고 싶습니다. 그리고 전체 테이블에 대한 해시 값을 계산하고 그 해시 값을 사용하여 차이를 비교하기로 결정했습니다. –

+0

데이터베이스 서버 소프트웨어에서 null의 정의가 서로 다른 경우에도 동일성은 무엇을 의미합니까? 오라클은 'varchar'또는'varchar2' 문자열에' '''을'null '과 동등하게 만들기 위해 0 문자 문자열''''을 포함 할 수 없습니다. 다른 데이터베이스에서는 최소한 MS SQL Server가'' '는''null'과 동등하지 않습니다. –

답변

1

숫자 값, 특히 반올림 및 정밀도에주의하십시오.

관련 문제