Java 앱에서 사용할 디스크 기반 맵 구조가 필요합니다. 그것은 다음과 같은 기준이 있어야합니다빠르고 확장 성이 뛰어난 영구 맵 권장 - Java
기록의 수백만 (심지어 수십억)- - 키가 이미 존재하는 경우지도에 대한 작업의 대부분이 간단하게 볼 수 있습니다. 이것과 위의 1이 가장 중요한 기준입니다. 자주 사용되는 키에는 메모리 캐싱 메커니즘에 효과적이어야합니다.
- 지속성은 있지만 트랜잭션 일 필요는 없으며 일부 실패로 인해 생존 할 수 있습니다. 즉, 주기적으로 디스크와 동기화 할 수 있으며 트랜잭션 일 필요는 없습니다.
- 간단한 기본 유형을 저장할 수는 있지만 일련 화 된 객체는 저장할 필요가 없습니다.
- 배포 할 필요가 없습니다. 즉, 모든 컴퓨터에서 실행됩니다.
- 간편하게 &을 설정하십시오.
- 없음 관계형 쿼리는
기록 키 문자열이나 걷고있을 것입니다 필요하지 않습니다. 전술 한 바와 같이, 판독은 쓰기보다 훨씬 더 빈번하며, 판독의 대부분은 단순히 키가 존재하는지 (즉, 키 관련 데이터를 판독 할 필요가 없는지)를 검사하는 것일 것이다. 각 레코드는 한 번만 업데이트되고 레코드는 삭제되지 않습니다.
현재 Bdb JE를 사용하고 있지만 다른 옵션을 찾고 있습니다.
업데이트
보조 키에 대한 의존성을 줄여 기존 BDB 설정에 대한 향상된 쿼리 성능 때문에 되세요. 일부 쿼리는 두 개의 보조 키에 대한 조인을 필요로했으며이를 복합 키로 결합하여 룩업에서 간접적 인 수준을 제거했습니다.
내가 고려중인 한 가지 옵션은 기존 BDB 구현 방식을 변경하는 것입니다. 현재 모든 기록에 대해 하나의 큰 데이터베이스가 있습니다. 그러나 데이터를 세트로 분할하고 세트 당 하나의 데이터베이스를 가질 수 있어야합니다. 어떤 시점에서 특정 세트에만 액세스해야한다는 것을 알고 있으면 사용하지 않는 세트를 닫을 수 있습니다. bdb가 데이터를보다 효율적으로 관리하는 데 도움이됩니다. – Joel
bdb je를 사용했습니다. 귀하의 기준에 따라, 그것은 매우 적합합니다. 그러나, 나는 그것의 허약함에 정말로 실망했고, 프로덕션 사용을 위해 그것을 추천하지 않을 것이다. 자바 프로세스의 어떤 문제로 인해 bdb 서브 시스템이 재시작, 블리치가 필요합니다! – james
BDB JE의 "취약성"이 무슨 뜻인지 잘 모르겠습니다. BDB JE는 테라 바이트의 데이터까지 확장 가능하며 항상 프로덕션 시스템에서 사용합니다. 멋진 기술입니다. – jasonmp85