2014-01-27 2 views
0

사용자 그룹을 기반으로 다른 데이터베이스에 데이터를 밀어 수평으로 확대하려고합니다. 이는 데이터가 거대하기 때문에 필요합니다. 지금 우리는 RDBMS만을보고 있습니다. Spring과 hibernate/Eclipse-link는 우리가 가지고있는 선택 사항이다. 나는 주위에 몇 가지 질문을 가지고 있으며 비슷한 질문이 여러 번 요청되었습니다 참조하십시오. 나는 몇 가지 더 구체적인 것을 이해하고 싶으므로이 질문을 다시하고있다.스프링 및 최대 절전 모드를 사용하는 다중 데이터베이스 처리

여러 데이터베이스를 사용할 때 하나가 따라야 할 모범 사례? (아래 세부 문의)

  1. 여러 세션 공장 또는 단일 세션 공장은 무엇입니까? 권장되는 접근 방식은 무엇입니까? 많은 세션이 여러 세션 팩토리를 만들고 동적 데이터 소스 구현이 단일 세션 팩토리를 사용하고 사용자 그룹을 기반으로 다른 데이터 소스를 제공하는 것에 대한 이야기가 많이 있습니다. 많은 사용자 그룹이있는 단일 세션 팩토리를 사용하여 확장 성 문제가 있습니까?

  2. 모든 세션이 세션 팩토리 또는 기본 데이터 소스에 연결되어 있습니까? 나는 여러 개의 연결 풀이 각 db를 기반으로 만들어 졌다고 가정합니다.

  3. 여러 데이터베이스 또는 최대 절전 멀티 테넌시를 처리하기위한 스프링의 동적 데이터 소스 구현은 무엇입니까?

  4. 동적 데이터 소스를 사용할 때 트랜잭션 관리에 문제가 있습니까? 제 2 수준 캐시를 제외한 게시물을 보지 못했습니다.

  5. 연결 풀링에 c3P0을 사용하는 경우 동적 데이터 소스 접근 방식에서 어떻게 처리됩니까?

  6. 위의 방법에 대한 모든 책임과 의무?

답변

0

최대 절전 모드 사람들과 Google이 개발 한 프로젝트는 Hibernate Shards입니다. 필요로하는 것만으로 여러 데이터베이스에서 데이터를 샤딩 할 수 있습니다.

그것은라는 이름의 인터페이스를 제공합니다

  • org.hibernate.shards.session.ShardedSession
  • org.hibernate.shards.ShardedSessionFactory
  • org.hibernate.shards.criteria.ShardedCriteria을
  • 조직 .hibernate.shards.query.ShardedQuery

각각은 Hibernate의 고전적인 인터페이스 (비슷한 n ame!)

Hibernate Shards를 사용하면 모든 멀티 테넌시 (multi-tenancy) 로직이 Hibernate 뒤에서 처리되므로 대다수의 시간을 처리 할 필요가 없다.

트랜잭션 관리가 남아 있으므로, 분산 된 JTA 트랜잭션 관리자가 있어야하며 JBoss와 같은 응용 프로그램 서버를 사용하면 훨씬 쉽게 작업 할 수 있습니다.

+0

이 프로젝트가 얼마나 활발한 지 잘 모르겠습니다. http://hibernate.org/others/ 링크를 참조하십시오. – Milind

관련 문제