2011-01-27 3 views
13

디스크에 구현 된 java.util.Map을 찾고 있습니다. 너무 화려하지는 않지만 디렉토리 나 파일을 가리키며 그 내용을 거기에 저장할 수있는 어떤 방법 으로든 선택합니다. 누구든지 그런 것을 알고 있습니까?Java Map의 디스크에 구현되어 있습니까?

답변

10

Disk-Backed-map 프로젝트를 살펴볼 수 있습니다.

자바

키 값 쌍 많은 수를 저장하는 디스크 백업 맵 구현을 제공 작은 도서관에서 디스크 백업 맵을 구현하는 라이브러리입니다. 맵 구현 (HashMap, HashTable)은 매우 간단한 키/값 쌍에 대해 약 3-4Million 키/GB의 메모리를 제공하며 대부분의 경우 한계가 훨씬 낮습니다. 한편, DiskBacked 맵은 키/값 쌍의 크기에 관계없이 16Million (64 비트 JVM)에서 20Million (32bit JVM) 키/GB 사이에 저장할 수 있습니다.

+0

이것은 웹 사이트에서 정확한 인용문이지만 잘못된 것입니다. 64 비트 JVM이 32 비트 JVM보다 작은 콜렉션을 갖는 것은 당연합니다. –

1

간단한 EHCache 구현을 사용할 수 있습니까? EHCache에 대한 좋은 점은 일 수 있습니다.은 구현하기가 매우 간단합니다 :-)

나는 실제 Map 인스턴스를 serialize/deserialising하는 것을 배제 했습니까?

+0

예, 제가 배제했습니다. 나는 그 모든 것을 기억해야 할 필요가 없다. – jjujuma

+0

Isnt EHCache가 지불 되었습니까? 어떤 무료 버전이 있습니까 –

+0

오픈 소스이기 때문에 라이선스 비용이 없습니다 – Brian

6

데이터를 유지하기 위해 key-object 기반 구조를 찾고 있다면 NoSQL 데이터베이스를 사용하는 것이 좋습니다. 당신은 그 중 일부가 그러한 MongoDB 또는 Redis 규모의 큰 데이터 집합을 찾는다는 것을 알게 될 것이며, 흥미로운 쿼리와 트랜잭션 기능을 제공하는 해시 기반 검색과는 별도로 수행 할 것입니다.

본질적으로 이러한 유형의 시스템은 Map 구현입니다. 또한 다리를 연결하기 위해 java.util.Map을 구현하는 자체 어댑터를 구현하는 것이 너무 복잡하지 않아야합니다.

이이 문제에 비교적 새로운 오픈 소스 솔루션처럼 보인다
5

MapDB (mapdb.org)을 정확히 찾고있는 무엇. 디스크 지원 TreeMap과 HashMap 외에 다른 컬렉션 유형을 제공합니다.

지도는 스레드로부터 안전하며 성능이 좋습니다.

Features

+0

종이로보기에는 좋아 보이지만 제 경험상 슬프게도 완전히 느리고 안전하지는 않습니다 ('transactionEnable'도 마찬가지입니다). – dagnelies

0

Chronicle Map이 문제에 대한 현대적이고 the fastest 솔루션을 참조하십시오. 그것은 ConcurrentMap 인터페이스를 구현하고 데이터를 디스크에 저장합니다 (내부적으로 크로니클 맵의 메모리를 파일에 매핑하여 수행됩니다).

관련 문제