2010-04-13 7 views

답변

2

전체 항목을 검색하지 않고 DPL을 사용하지 않으려는 경우 저장된 바이트 배열의 크기에 보조 색인을 추가하고 DAO가 제대로 업데이트되는지 확인해야합니다. 저장 또는 갱신시이 값. KeyCreator을 추가하면 레코드에 따라 보조 데이터베이스에 size 보조 키가 생성됩니다.

수행하려는 쿼리 유형은 무엇입니까? 주어진 크기의 모든 레코드를 검색하고 싶습니까? 또는 검색하기 전에 특정 레코드의 크기를 알고 싶습니까? 나는 후자의 질문이 대답하기가 더 어렵다고 생각한다.

+0

필자의 경우 키 아래에 저장된 값은 문서 ID의 (매우) 긴 목록입니다. 나는 그 중 100 개를 먼저 검색하고 "5 000'000 중 100"과 같이 사용자에게 표시 할 수 있기를 원했습니다. 현재이 작업은 취소되지만 보조 색인을 만드는 것은 내가하는 일입니다. 감사! – Fixpoint

0

JE 버전 (또는 BDB의 Java 바인딩)을 사용 중이라고 가정 할 경우, 원하는 키를 DatabaseEntry으로 가져 오면 getSize()가 원하는 것을 제공해야합니다.

C 바인딩을 사용하는 경우 DBT 핸들의 크기 필드를 확인하십시오.

+0

나는 단지 크기가 필요하기 때문에 전체 항목을 검색하는 것을 피하는 방법을 찾고 있습니다. – Fixpoint

0

하나의 blob 데이터 항목 값 대신에 중복 된 데이터 항목으로 문서 ID를 저장하면 DBC-> count()를 사용하여 긴 ID 목록을 실제로 검색하지 않고도 일치하는 문서 수를 감지 할 수 있습니다. 그렇지 않으면 Berkeley DB API가 사용자가 요청한 내용을 지원하지 않는 것 같습니다 (비록 사용자가 추가하는 것이 효율적일 수 있다고 생각하더라도). 나는 이것에 대해서 당혹 스러웠다. 그리고 그것은 내가 나의 자신의 프로젝트를 위해 생각해 낸 해결책이었다.

0

문제의 경우 DB_DBT_PARTIAL 플래그를 사용하여 레코드의 시작을 묻는 ang은 첫 번째 ID를 제공하고 DBT.size는 총 ID 수를 계산하는 데 사용될 수 있습니다.

관련 문제