임의의 샘플과 구별 할 수없는 확률 적 암호화 된 요소로 구성된 데이터 세트로 작업하고 있습니다. 이렇게하면 같은 번호의 순차적 인 암호화가 서로 다른 암호문을 생성합니다. 그러나 SHA256과 같은 알고리즘을 적용하여 두 개의 암호문을 비교하는 특수 함수를 통해 비교할 수 있습니다.MongoDB의 사용자 정의 인덱스 비교기
설명 된 암호 텍스트 목록을 MongoDB 데이터베이스에 추가하고 트리 기반 구조 (예 : AVL)를 사용하여 색인을 생성하려고합니다. 설명 된 것처럼 특수 기능을 사용하여 레코드를 비교할 수 있어야하기 때문에 단순히 데이터베이스의 기본 인덱싱을 적용 할 수 없습니다.
예 : I 데이터베이스 DB 다음 문서 형식으로 이루어지는 컬렉션 C 있다고 가정 또한
{
"_id":ObjectId,
"r":string
}
를 F (INT, 문자열, 문자열) 다음 함수하자 :
F(h,l,r) = (SHA256(l | r) + h) % 3
여기서 연산자 | 표준 연결 기능입니다.
나는 같은 몇 가지 적절한 인덱싱 된 컬렉션과 같이 효율적인 방법에서 다음 쿼리 를 실행하려면 : 시간 및 임의가 아닌 상수 선택 리터에 대한
db.c.find({ F(h,l,r) :{ $eq: 0 } })
. I : 어떤 쌍 (h1, l1)에 대해 F (h1, l1, r)를 만족하는 모든 레코드를 찾고 싶다고 가정합니다. 나중에, 다른 순간에 나는 같은 것을하고 싶지만 h1! = h2와 l1! = l2와 같이 (h2, l2)를 사용하고 싶다. h와 l은 정수들의 집합에서 어떤 값을 취할 수있다.
어떻게하면됩니까?
위대한 질문을!코드 예제를 추가하여 더 명확하게 만들 수 있습니까? – Shawyeok
Shawyeok가 완료되었습니다. 확인해 봐. –