문제

간단한 데이터에 대한 스토리지 파일 형식을 테이블 형식으로 만들어야하고 HDF5를 사용하려고했지만 일부 문제로 인해 거의 포기한 것이 었으며 임베디드 데이터베이스의 사용을 재검토하여 이들이 있는지 확인하고 싶습니다. 내 응용 프로그램에 충분히 빠릅니다.

한 파일에 데이터를 저장할 수있는 옵션이있는 평판이 좋은 임베디드 Java 데이터베이스가 있습니까? 내가 알고있는 유일한 것은 sqlite입니다 (Java 바인딩 사용 가능). H2와 HSQLDB를 시도했지만 상자에서 여러 파일을 만드는 것처럼 보이며 한 파일로 데이터베이스를 갖는 것이 매우 바람직합니다.

편집하다: 합리적으로 빠른 성능이 중요합니다. 객체 저장소는 아닙니다. 성능 문제를 위해서는 정수와 얼룩을 저장하면됩니다. (+ 일부 문자열이지만 성능이 중요하지 않음)

편집 2 : 스토리지 데이터 효율성은 더 큰 데이터 세트에 중요하므로 XML이 나옵니다.

도움이 되었습니까?

해결책 10

지금은 메모리 인덱싱을 위해 H2 또는 다른 데이터베이스와 함께 영구 데이터 저장에 HDF5를 계속 사용할 것이라고 생각합니다. 나는 내가 가진 Java 드라이버와 함께 Blob을 사용할 수없고, 내장 된 파이어 버드를 올려 놓을 수 없으며, 아직 page_store와 함께 H2를 신뢰하지 않습니다.

다른 팁

아질산염 데이터베이스 http://www.dizitart.org/nitrite-database.html

NOSQL 객체 (NO2 일명 아질산염) 데이터베이스는 API와 같은 MongoDB와 함께 Java로 작성된 오픈 소스 NOSQL 내장 문서 저장소입니다. 메모리 및 단일 파일 기반 영구 저장소를 모두 지원합니다.

읽기 액세스 만 있으면 H2가 zip 파일에서 데이터베이스 파일을 읽으십시오.

마찬가지로 끈기가 필요하지 않으면 Memory In Memory 버전의 H2를 가질 수 있습니다.

읽기/쓰기 액세스 및 지속성이 모두 필요하다면 표준 SQL 유형 데이터베이스에서 운이 좋지 않을 수 있습니다. 거의 모두 색인과 데이터 파일을 별도로 균일하게 유지하기 때문입니다.

H2는 Page_Store 옵션과 함께 최신 H2 빌드를 사용하는 경우 하나의 파일 만 사용합니다. 새로운 기능이므로 견고하지 않을 수 있습니다.

데이터를 파일에 저장 한 객체 데이터베이스를 사용한 후. Java 및 .NET 인터페이스가 있습니다. 확인하고 싶을 수도 있습니다. 라고 불린다 DB4O.

연대기지도 임베디드 순수 Java 데이터베이스입니다.

  • 데이터를 하나의 파일로 저장합니다 (즉)

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • 크로니클 맵은 성숙합니다 (현재는 몇 달 동안보고 된 심각한 저장 버그가없고 활발한 사용 중입니다).

  • 노인 벤치 마크는 크로니클 맵이라는 것을 보여줍니다 가장 빠른 그리고 가장 메모리 효율적입니다 Java의 키 가치 저장소.

유스 케이스의 주요 단점은 크로니클 맵이 간단한 키 값 모델 만 지원하지만 더 복잡한 솔루션을 구축 할 수 있다는 것입니다.

면책 조항 : 저는 Chronicle Map의 개발자입니다.

다른 프로그램과 함께 배송 할 작고 빠른 데이터베이스를 찾고 있다면 확인하겠습니다. 아파치 더비 나는 당신이 임베디드-다타베이스를 어떻게 정의하는지 모르겠지만 일부 프로젝트 에서이 프로젝트에서 소스로 체크인 할 수 있고 모든 개발자 기계에서 즉시 사용할 수있는 디버깅 데이터베이스로 사용했습니다.

이것은 SQL 엔진이 아니지만 사용하는 경우 Prevayler ~와 함께 xstream, 모든 데이터로 단일 XML 파일을 쉽게 만들 수 있습니다. (Prevayler는 그것을 스냅 샷 파일이라고합니다.)

SQL 기반이 아니기 때문에 약간의 팔꿈치 그리스가 필요하지만 자체 포함 된 특성은 개발 (특히 좋은 테스트)을 훨씬 쉽게 만듭니다. 또한 엄청나게 빠르고 신뢰할 수 있습니다.

체크 아웃하고 싶을 수도 있습니다 JDBM - 우리는 여러 프로젝트에서 사용하며 매우 빠릅니다. 산성 유형 앱에 사용하는 경우 2 개의 파일 (데이터베이스 파일 및 로그 파일)을 사용하지만 고체 산이 필요하지 않은 경우 직접 데이터베이스 액세스 (로그 파일 없음)로 직접 삭제할 수 있습니다.

JDBM은 정수와 얼룩 (원하는 모든 것)을 쉽게 지원하며 매우 빠릅니다. 실제로 동시성을 위해 설계되지 않았으므로 여러 스레드가있는 경우 잠금을 직접 관리해야하지만 간단하고 견고한 내장 데이터베이스를 찾고 있다면 좋은 옵션입니다.

SQLITE를 언급 한 이후로, 나는 당신이 기본 DB를 신경 쓰지 않는다고 가정합니다 (좋은 Java 바인딩을 사용할 수있는 한). 파이어 버드 Java와 잘 작동하며 기본적으로 단일 파일 스토리지를 수행합니다.

단일 파일 요구 사항이없는 경우 H2와 HSQLDB는 모두 훌륭한 선택입니다.

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