2012-04-10 3 views
3

내 웹 응용 프로그램 (Tomcat에 배포)은 임베디드 데이터베이스가 빠른 사용자 검색을 위해 임시 사용자 데이터를 저장해야했습니다. 필자는 웹 애플리케이션에 임베드하기 쉽고 순수한 Java DB이기 때문에 Apache Embedded Derby를 선택했습니다.다중 연결 포함 임베디드

또한 연결 풀링을 구현하기 위해 연결 풀링을 구현했습니다. 나는 여기서 두 가지 중요한 문제 (쇼 스토퍼)에 직면하고있다. 첫째, 내 응용 프로그램은 한 번에 두 개 이상의 활성 연결을 가질 수 없습니다. 그래서, 제 응용 프로그램이 멈 춥니 다.

둘째, 계속 다른 응용 프로그램이 이미 데이터베이스를 부팅했습니다. 하나의 연결이 이미 활성화되어 있고 풀에서 다른 연결을 가져 오는 경우이 문제가 발생할 것으로 판단됩니다.

나는 내장 된 derby db가 한 번에 단 하나의 연결 만 가질 수 있다는 것을 읽었으며, 그 다음으로는 연결 풀링을 지원하는 방법이 EmbeddedConnectionPoolDataSource입니다.

이제 네트워크 더비 또는 내장 서버 더비 모드에서 db를 실행해야합니까? 나는 빠른 검색이 필요하기 때문에 네트워크 모드에 대한 아이디어를 좋아하지 않는다. 차라리 MySQL을 사용하려고합니다. 그리고 DB를 임베디드 서버 db 모드로 실행하면 연결 풀링과 적어도 50 개의 동시 연결을 지원합니다 또는 더비를 H2 또는 HSQL 데이터베이스와 같은 다른 임베디드 데이터베이스로 대체해야합니까? 더비는 교육 목적으로 사용됩니다. 프로덕션 환경에서만 사용하면 안됩니다. 친절하게 도와주세요

+1

Derby는 확실히 많은 프로덕션 환경에 전개되며 Derby는 확실히 많은 동시 연결을 확실히 지원합니다. 정확히 어떤 질문을 하시는지, 어떤 종류의 도움을 원하는지 명확하지 않습니다. 네트워크 서버 구성은 매우 빠릅니다. 나는 확실히 그것을 충분히 빨리 나의 사용을 위해 발견했다. –

+1

임베디드 모드에서 Derby를 실행 중입니다. 내 질문은 임베디드 모드에서 동시 연결을 지원하는지 여부입니다. 하나의 연결이 활성화되어 있으면 다른 getConnection() 메소드로 인해 "Derby의 다른 인스턴스가 데이터베이스를 이미 부트했을 수 있습니다."라는 오류가 발생합니다. – user748316

+0

두 가지 옵션이 있습니다. 네트워크/서버 모드 또는 포함 된 서버 모드로 전환하거나 새로운 데이터베이스로 전환합니다. 내 기본 요구 사항은 동시 연결을 지원하고 네트워크에서 쿼리하지 않도록 빠른 검색 (포함 된 DB)을 지원하기 위해 연결 풀링입니다. 도와주세요 – user748316

답변

2

아파치 커먼즈 dbcp와 연결 풀링을 구현했습니다. 완벽하게 작동하며 임베디드 모드에서도 작동합니다.