2015-01-27 5 views
1

특정 데이터 세트가 포함 된 MongoDB Collection을 작성 중이며 데이터의 MD5 (또는 아마 SHA256) 해시를 취하여 비교를 수행하여 해당 데이터에 대한 비교를 실행하고 싶습니다 그것의.MD5 해시를 인덱스로 사용하기

16 진수의 고정 길이 문자열을 사용하는 것이 올바른 방법인지 궁금합니다. "blob"또는 값을 보유하기위한 64 비트 long integer와 같은 더 나은 데이터 유형이 있습니까? (이것은 long을 생성하는 해시 함수를 사용해야 할 수도 있습니다. Eclispe를 사용하여 Java .hashCode() 함수를 재정의하는 것을 제외하고는 하나도 모릅니다.)

더 좋은 방법이 있다면 모범 사례는 여기에 감사하겠습니다!

+0

기본적으로 컬렉션의 요소에 대해 적절한 해시 함수를 찾고 있음을 올바르게 알고 있습니까? – fishi

+0

예 - 해시 함수가 발견되면 Mongo에서 해시를 유지하는 데 사용할 최상의 데이터 유형입니다. 해시가 0-9A-F로 구성되기 때문에 문자열이 과도하다고 생각합니까? –

+0

나는 이것을 당신이 정말로 사용하기를 원하는지에 달려있다. 바이너리 컨텐트를 MongoDB로 덤프하는 것만으로도 매우 간단합니다. 정확한 비교 역시 문제가되지 않습니다. 이것이 완전히 무작위이고 어떤 종류의 정렬이 필요하다고 생각하지 않는다면 문자열로 더 나을 것입니다. 나는 이것이 필드의 "하위 집합"에있는 내용을 일치시키는 것이 목적이라고 가정합니다. 그렇지 않으면 전혀 의미가 없습니다. 고유하게 해시 된 컨텐트의 전체 문서를 이미 "기본 키"라고합니다. –

답변

1

당신은 (here 참조) MD5 해시를 저장하기로 결정 문자열 또는 경우에 바이너리 (절반 크기)를 사용해야

MongoDB를의 MD5 해시를 저장.

최고의 해쉬 함수

이 높은 컬렉션에 데이터의 종류에 의존하기 때문에 이것은 대답하기 힘든 것입니다. 나는 개인적으로 MD5 해시가 좋은 방법이라고 생각하지만, 다시 유스 케이스에 의존한다. 해시를 맞춤 설정/최적화하려는 경우이 post 및이 post을 사용해 볼 수 있습니다. 그들은 사용자 정의 해시 함수 작성에 대한 간단한 레시피를 다룹니다.

관련 문제