문제

내가 필요로 아이디어를 구현하려(정말)고성능 메모리 데이터베이스/저장 메커니즘이 있습니다.에서의 범위를 저장하는 20,000+java 체,업데이트된 모든 5 도 초입니다.
몇 가지 옵션이 나는 열려:

순수한 JDBC/데이터베이스의 조합

JDO

JPA/ORM/데이터베이스의 조합

체 데이터베이스

기타 저장 메커니즘

무엇이 내 최고의 옵션?여러분은 어떤 경험을 하셨나요??

편집:또한 필요할 수 있 이러한 개체를 쿼리

도움이 되었습니까?

해결책

당신이 시도할 수 있습 같은 것 Prevayler (기본적으로 메모리 캐시 처리하는 직렬화 및 백업을 위한 당신이 그렇게 데이터를 지속하고 안전한 트랜잭션).거기에는 다른 비슷한 프로젝트입니다.나는 그것을 사용에 대한 대형 프로젝트의 안전하고 매우 빠르다.

의 경우 동일한 세트의 20,000 체,또는 적어도 20,000 새로운 객체를 5 초마다 하지만 많은 변화에,당신은 더 있을 수도 있습 캐시에 저장하는 작업이 변경 사항 및 주기적으로 작성 변경 사항에는 배치 모드(jdbc 일괄 업데이트보다 훨씬 빠른 개별적인 행 업데이트).에 따라 필요한지 여부를 각각 작성할 트랜잭션으로 감싸고,필요한지 여부 레코드의 로그를 변경하거나 집계 변경합니다.

편집:로 다른 게시물을 언급 Prevayler 거라고 생각했던 남모에서 그것이 무엇:기본적으로 만드 검색/serializable 체(일반적으로도 어떤 종류)에 싸여있 Prevayler 인스턴스는 직렬화하여 디스크에 있습니다.기보다는 변화에 직접지도,당신은 당신 변경 사항을 전송하여 Prevayler 인스턴스는 직렬화 가능한 레코드의 변경(단지 포함하는 객체를 변경 명령).Prevayler 버전의 거래를 직렬화의 변화를 디스크는 이벤트의 실패를 로드할 수 있습니다 마지막 전체 백업 및 재생에 대한 변경 사항을니다.그것은 안전하고 있지만,당신이 할 충분한 메모리드의 모든 데이터를,그리고 그것은 상당히 오래된 API,그래서 아무 일반 인터페이스도해 보시기 바랍니다.하지만 확실히 안정적이고 작동하고 있습니다.

다른 팁

내가 추천 H2.이것은 일종의 두 버전의 HSQLDB 중 하나에 의해 이루의 본래 저자. H2 우리 장치-테스트는 우리의 DAO 층을 필요로하지 않고 실제 PostgreSQL 데이터베이스 멋진.

이 있 net 그룹 및 우편 목록,그리고 저자 Thomas 뮬러는 것은 매우 반응을 쿼리(hah,작은 말장난다.)

내가 알지 못하는 경우 그것은 가장 빠른 옵션이 있지만,나는 아주 만족합니다 H2 때마다 나는 그것을 사용했습니다.그것의 서면에 의한 동일한 사람은 원래 쓴 극 초음속(나중 된 HSQLDB).

또 다른 옵션은 주장을 매우 빠른 Prevayler.

그것은 약간의 오래된 질문이지만,이러한 일이 많이 있는 데이터베이스의 수준의 성능을 20,000/s.는 데이터베이스의 선택에 따라 달라집하는 데이터 구조 및 종류를 쿼리할 수 있습니다.그것은 또한에 따라 전반적인 볼륨에 있습니다.

우리는 유사한 문제와 많은 양의 시계열 데이터에 대해 300,000 레크리에이션/s 고 우리를 쓰게 됩니다 새로운 데이터베이스 NFSdb, 으로,간단한 충분한 API 고 괜찮은 성과입니다.할 수 있는지에 대해 2,000,000 데/s 그리고 우리는 멀리 ORM.스토리지 API 는 다음과 같:

JournalFactory factory = new JournalFactory("/mnt1/data/tick");

MyObject o = new MyObject();
try (JournalWriter<MyObject> writer = factory.writer(MyObject.class)) {

   o.setBlah(...);
   writer.append(o);

   // more appends here
   //
   writer.commit();
}

다음을 시도,그것은 정말 잘 수행으로 최대 절전 모드 및 다른 ORM 프레임워크

http://hsqldb.org/

기도 OrientDB.

연대기 지도 은 임베디드 pure Java 지속적인 데이터베이스를 제공하고,간단한 java.util.Map 인터페이스입니다.그것에 의하여 대 1million 쿼리를 업데이트/초당 에서 하나의 스레드, 고,일관된 읽기/쓰기 성능을 저울에 거의 선형적으로 숫자의 코어에서는 기계입니다.

여기에는 최근 연구과제번호:

테라코타 수도 있습에 대한 해답이 될 수 있습니다.그것은 여러 Vm 객체를 공유하려면 그렇게 배포할 수 있습니다드 등...

당신은 또한 확인할 수 있습니다 db4o

을 저장하려면 모든 데이터의 메모리에서,당신은 수도에서 보고 싶 Prevayler.

나는 그것을 자신을 사용하지 않지만,그것처럼 보인다 훨씬 더 나은 솔루션보다는 관계형 데이터베이스를 사용하는 경우에 대한 모든 데이터의 수 있는 메모리에 저장됩니다.

Berkeley DB Java 빠른 메모리에 데이터베이스에 대한 매우 유용한 간단한 개체 그래프.

hsqldb 은 확실히 빨리,하지만 그것은 아산 트랜잭션에 안전합니다.가장 빠르바이 데이터베이스 내가 알고있 db4o: 벤치마크.

편집:하십시오 Prevayler 지 않은 데이터베이스를 참조하십시오 http://www.prevayler.org/wiki.jsp?topic=PrevaylerIsNotADatabase.는 경우에 당신은 램,당신은 당신의 행운입니다.

H2 진정으로 환상적인,참으로,메모리에 정상적인 서버 및 트랜잭션,당신은 모든 것을 가지고있다.그러나 그것을 비교하지 않는 성능을 개체 데이타베이스,나는 Db4o 언급하고,나는 훨씬 더 나은 성능과 Neodatis 사실,그리고 모든 것이 잘 설정에서 Maven 저장소가 여기에 해당합니다.지 않지만 매우 강력리는,빠르지만 트럭 다음과 같습니다.

시도할 수 있습니다 CSQL (에서 사용할 수 있는 오픈 소스 기업 버전)제 30 배 성능 향상을 통해 디스크 기반 데이터베이스 시스템을 제공합 JDBC 인터페이스입니다.그것은 작동하도록 설정할 수 있습으로 혼자 서 있는 주기억장치 데이타베이스 또는 투명한 캐시 MySQL,Postgres,Oracle 데이터베이스가 있습니다.

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