2011-01-21 3 views
4

Java의 큰 순차 데이터 세트와 상호 작용하고 있습니다. 이상적으로, 나는 스트리밍 데이터를 저장할 수있는 라이브러리 (immutable object의 순서를 생각해 볼 수있는)를 찾고, 나중에 저장된 데이터를 뛰어 넘는다. 데이터는 궁극적으로 디스크에 저장되어야하며 전체적으로 메모리에 저장되어서는 안됩니다. 데이터는 수학적 시스템의 상태가 될 것입니다. 따라서 숫자 (두 배 또는 BigDecimal)와 일부 문자열이 주를 이룹니다.매우 큰 일련의 순차 데이터 읽기/쓰기/저장

이 순간은 데스크톱 응용 프로그램을위한 것이므로 한 번에 하나의 사용자와 몇 개의 동시 연결 만있을 것입니다 (개체/상태의 여러 스트림). 나중에 동일한 데이터베이스 백엔드에서 여러 클라이언트에 대한 분산 된 접근 방식 및 지원을 고려할 수 있습니다.

저는 다양한 NoSQL 라이브러리를 살펴 보았지만 제 필요에 맞지 않습니다. 이견있는 사람?

+0

나를 생각하면 (자바 기반의 라이브러리).nio하지만 대답을 제공하는 데 대해 충분히 모르겠다. – extraneon

+0

얼마나 많은 (동시) 사용자입니까? –

+0

데이터의 모양에 대한 세부 정보를 제공 할 수 있습니까? 그건 sql/nosql 질문에 대답하는 데 도움이 될 것입니다. 그럼 거기에서 갈 수 있습니다. –

답변

2

OrientDB에 한 번보세요 : 삽입 매우 매우 빠릅니다. 내 노트에 6 초 만에 1,000,000 개의 항목이 삽입됩니다. 또한 자바이며 프로세스에 내장되어 실행될 수 있습니다.

+1

아직이 라이브러리를 테스트하지는 않았지만 (필자는 곧 다룰 예정 임) 필자가 필요로하는 것을 수행하는 것으로 보인다. 좋은 API 스택이있는 것처럼 보입니다. – Andy

+0

지금 라이브러리를 테스트하고 사용 했으므로 좋아합니다. 그래도 아직 미션 크리티컬 애플리케이션에서 사용하고 있습니다 ... – Andy

1

64 비트 JVM이있는 경우 파일을 메모리에 메모리 맵핑 할 수 있습니다. 이렇게하면 각 파일에 최대 2GB의 창을 제공합니다.

여러 클라이언트가있는 경우 파일 또는 데이터베이스에 액세스 할 수 있고 클라이언트에 데이터를 캐시/배포 할 수있는 서버 프로세스가있을 수 있습니다.

0

이진 파일 만 사용 하시겠습니까? 개체의 크기가 동일하면 쉽습니다. 임의 액세스를 사용하여 파일에서 이동할 수 있습니다. 운영 체제는 디스크 캐시를 사용하여 캐싱을 무료로 제공합니다. 때때로 사람들은 데이터베이스와 SQL 인터페이스를 golden hammer으로 사용합니다.

+0

기본 테스트를 위해 처음에는 로컬 시스템에서 이진 파일을 사용할 계획입니다. 궁극적으로 나는 입증 된 데이터베이스/데이터 저장소 시스템이 가장 좋을 것이라고 믿습니다. 또한 NoSQL은 SQL이 내 데이터 사용 유형 (afaik)에 이상적이지 않기 때문에 언급했습니다. – Andy

2

액세스하려는 각 개체의 오프셋을 계산할 수있는 방법이 있다면 간단히 java.nio.MappedByteBuffer (mmap에 해당)이 작업을 수행 할 수 있습니다.

0

Berkeley DB Java Edition을 보았습니까? 이 유스 케이스는 염두에두고 설계되었습니다. 매우 많은 Java 개발자 - 친구 API 세트로 ​​대규모 데이터 세트, 높은 쓰기 처리량, 안정적인 지속성. Base API (key/value pairs), Collections API 또는 JPA와 유사한 DPL (Direct Persistence Layer) API를 사용할 수 있습니다.

예제가 있고 다양한 API를 설명하는 우수이 있습니다.

비슷한 사용 사례가 많이 있습니다. 실제로, Terracotta와 Coherence는 모두 지속성을 위해 Berkeley DB를 사용합니다. Heretix, Internet Archive 프로젝트, Tibco 및 기타 여러 회사 및 프로젝트와 마찬가지로 그 이유는 BDB가 그들이 필요로하는 성능, 신뢰성, 확장 성, 유연성 및 단순성을 제공하기 때문입니다.

면책 조항 : 저는 Berkeley DB의 제품 관리자 중 한 명이므로 자연스럽게 편향되어 있습니다. 그러나 유스 케이스는 BDB가 설계된 것과 정확히 일치합니다.

프로젝트에 대한 행운을 빕니다. 우리가 도울 수있는 것이 있다면 알려주십시오. OTN Forums에서 Berkeley DB Java Edition에 관한 질문을 할 수 있습니다. 여기서 활성 Java 응용 프로그램 개발자의 대규모 커뮤니티를 찾을 수 있습니다.

감사합니다,

데이브