문제

수백 GB의 데이터를 통해 키 가치 조회를 수행하는 방법이 필요합니다. 이상적으로는 분산 된 해시 테이블을 기반으로하는 것입니다. 결함 내전형과 오픈 소스 여야합니다.

상점은 지속적이어야하지만 메모리에 데이터를 캐시하여 속도를 높이기 위해 이상적입니다.

동시 읽기 및 여러 기계의 쓸 수 있어야합니다 (읽기는 100 배 더 일반적입니다). 기본적으로 목적은 웹 서비스에 대한 사용자 메타 데이터를 빠르게 초기 조회하는 것입니다.

누구든지 추천 할 수 있습니까?

도움이 되었습니까?

해결책

체크 아웃하고 싶을 수도 있습니다 헤이즐 캐스트. 배포/분할, 슈퍼 라이트, 쉽고 무료입니다.

java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");

문안 인사,

-탈립

다른 팁

열린 코드 의 구현입니다 Java의 프로토콜. 그것은 당신의 요구에 완벽하게 맞아야하는 분산 된 해시 테이블 프로토콜입니다.

유스 케이스에 따라 테라코타 필요한 것일 수 있습니다.

당신은 아마도 그것이 지속적이든 아니든, 메모리에 있든 없든지를 지정해야 할 것입니다. 시도 할 수 있습니다. http://www.danga.com/memcached/

분산 된 해시 테이블에는 태피스트리, 코드 및 생과자가 포함됩니다. 이 중 하나는 귀하의 요구에 맞아야합니다.

OpenChord는 유망한 것 같습니다. 그러나 나는 또한 고려할 것이다 BDB, 또는 다른 비 SQL 해시 테이블을 분산시킬 수있는 다른 비 SQL 해시 테이블 (스토리지 노드의 수가 최소한 거의) 일정하는 경우 적절한 서버를 얻기 위해 클라이언트의 키를 해시 할 수 있습니다.

NMDB 정확히 필요한 것 같습니다. 영구 온 디스크 스토리지가있는 메모리 캐시에 분산됩니다. 현재 백엔드에는 QDBM, Berkeley DB 및 (최근 개발자에게 빠른 이메일 후 추가)가 포함됩니다. 도쿄 캐비닛. 키/값 크기는 제한적이지만 TICP 지원이 필요하지 않으면 해제 할 수 있다고 생각합니다.

분산 된 맵 구조를 시도하십시오 레디슨, 그것은 기반입니다 레 디스 섬기는 사람. Redis 클러스터 구성을 사용하면 1000 개의 서버에서 데이터를 분할 할 수 있습니다.

사용 예 :

Redisson redisson = Redisson.create();

ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");
map.put("123", new SomeObject());
map.putIfAbsent("323", new SomeObject());
map.remove("123");

...

redisson.shutdown();

DNS는이 작업을 수행 할 수있는 기능이 있습니다. 각 레코드가 얼마나 큰지 (8GB의 작은 데이터입니까?) 작동하는지 모르겠지만 효과가있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top