복붙노트

[REDIS] Java 클라이언트에 키 - 값 데이터베이스

REDIS

Java 클라이언트에 키 - 값 데이터베이스

내가 나중에 조회 할 수 있도록 나는 기본적으로 디스크에 해시 테이블을 저장할. 내 프로그램은 자바로 작성된 것입니다. 해시 테이블은 목록에 문자열로 매핑합니다.

이 거기 키 - 값 저장이 많이 있지만, 하나의 나의 목적을 위해 가장 적합한, 읽기 /는 명확하지가 많은 연구를하고 후. 여기에 나에게 중요한 몇 가지가 있습니다.

나는 레디 스 및 MongoDB를로 보았다. 약속하지만 내 목적에 적합하지 모두보기. 모든 정보를 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.답변 모든 종류의를 제공하기 전에, 나는 데이터 세트가 작고 나는 그것이 메모리에 들어갈 수있는 가정 귀하의 설명에 따라 나는 디스크에 해시 테이블을 저장해야 할 이유를 자신에게 물어 시작 했죠. 그냥 응용 프로그램을 다시 시작한 후이 구조를 재사용 할 수 있다면, 당신은 아마 그것을 지속하는 형식의 어떤 종류를 사용할 수 있습니다.

    답변 모든 종류의를 제공하기 전에, 나는 데이터 세트가 작고 나는 그것이 메모리에 들어갈 수있는 가정 귀하의 설명에 따라 나는 디스크에 해시 테이블을 저장해야 할 이유를 자신에게 물어 시작 했죠. 그냥 응용 프로그램을 다시 시작한 후이 구조를 재사용 할 수 있다면, 당신은 아마 그것을 지속하는 형식의 어떤 종류를 사용할 수 있습니다.

    둘째, 당신은 레디 스 또는 MongoDB를 이상적 존재하지 않는 어떤 이유를 제공하지 않습니다. 3 구 사항 (짧은)을 바탕으로, 나는 레디 스 아마 가장 좋은 건 말했다 것입니다 :

    내가 레디 스를 제거하는 가정 수있는 유일한 이유는 엄격한 ACID 특성을 찾고있는 것입니다. 즉, 당신은 아마 BerkleyDB JE를 살펴 수있는 것보다 무엇을 찾고 있다면. 그것은 잠시 동안 주변되었습니다 및 설명서 좋다.

  2. ==============================

    2.당신이 찾고있는 무슨 지원하는 빈도를 반대하는 라이브러리입니다. 이 라이브러리는 단순하게 설계하고 빠른 API와 같은 모음을 제공하고 있습니다. 다음은 컬렉션으로하지만 장면 디스크 스토리지를 사용 뒤에 작업 할 수 있도록 몇 가지와 같은 라이브러리입니다.

    당신이 찾고있는 무슨 지원하는 빈도를 반대하는 라이브러리입니다. 이 라이브러리는 단순하게 설계하고 빠른 API와 같은 모음을 제공하고 있습니다. 다음은 컬렉션으로하지만 장면 디스크 스토리지를 사용 뒤에 작업 할 수 있도록 몇 가지와 같은 라이브러리입니다.

  3. ==============================

    3.데이터 세트는 작고 당신은 단순하게합니다. 왜 파일 또는 RDBMS에 해시 맵을 직렬화 및 응용 프로그램에서로드하지?

    데이터 세트는 작고 당신은 단순하게합니다. 왜 파일 또는 RDBMS에 해시 맵을 직렬화 및 응용 프로그램에서로드하지?

    어떻게 당신의 해시 맵 "쿼리"하시겠습니까? 키 근사? 값 '형상'? 나는 알고 단지를 위해 키 값 저장을 유지하기 위해 나에게 지나친 것 같습니다하지 않습니다.

  4. ==============================

    4.확인 JDBM2 - http://code.google.com/p/jdbm2/

    확인 JDBM2 - http://code.google.com/p/jdbm2/

    나는 JDBM 1 코드베이스에 근무, 나는 jdbm2에서 본 적이 무엇에 감동 한

  5. ==============================

    5.크로니클지도, 그것은 최상의 "클라이언트"역할 때문에 실제로 더 "클라이언트"또는 "서버"가 없지만이 (순수 자바로 작성된 임베디드 키 - 값 저장소의 완벽한 적합해야 당신이 당신의 데이터베이스를 열고 )이 전체 읽기 / 업데이트의 프로세스에 액세스 할 수 있습니다.

    크로니클지도, 그것은 최상의 "클라이언트"역할 때문에 실제로 더 "클라이언트"또는 "서버"가 없지만이 (순수 자바로 작성된 임베디드 키 - 값 저장소의 완벽한 적합해야 당신이 당신의 데이터베이스를 열고 )이 전체 읽기 / 업데이트의 프로세스에 액세스 할 수 있습니다.

    크로니클지도는 하나의 파일을 상주합니다. 이 파일은 파일 시스템의 주위에 이동, 심지어 다른 OS 및 / 또는 아키텍처를 다른 컴퓨터로 전송하고 여전히 개방 크로니클지도 데이터베이스가 될 수 있습니다.

    만들거나 데이터 저장소를 엽니 다 (데이터베이스 파일이 생성되고, 존재하지 않는 경우, 그렇지 않으면 기존 저장소에 액세스하려면) :

    ChronicleMap<String, List<Point>> map = ChronicleMap
        .of(String.class, (Class<List<Point>>) (Class) List.class)
        .averageKey("range")
        .averageValue(asList(of(0, 0), of(1, 1)))
        .entries(10_000)
        .createPersistedTo(myDatabaseFile);
    

    그럼 당신은, 단순한의 HashMap과 마찬가지로 생성 ChronicleMap 객체와 함께 작동 키와 값 직렬화 귀찮게 수 없습니다.

  6. from https://stackoverflow.com/questions/4881450/key-value-database-with-java-client by cc-by-sa and MIT license