2013-05-31 3 views
-1

나는 Spring 신청서를 작성 중이므로 을 사용하여 Cassandra과 상담해야합니다. 접근하는 방법에 관해서는 도움이 필요합니다. 나는 JPA을 사용하고 Spring의 의존성 주입 기능을 활용하기를 원한다.헥터를 사용하여 cassandra와 스프링을 통합

모든 포인트가 도움이됩니다.

+1

시도한 것을 보여주십시오. – krlmlr

+0

안녕 내 봄 MVC 프로젝트를 내 로컬 카산드라 DB와 통합하려고했다 .POM.xml을 구성하고 필요한 종속성을 얻었다. Dal 계층이 완료되었다. 두 가지 문제에 직면하고 있습니다. 1. 둘 이상의 열에서 데이터를 가져와야 할 때 쿼리를 만들 수있는 방법은 무엇입니까? Families.2) 쿼리에 대한 열 인덱싱 방법 –

답변

0

JPA 준수의 경우 Kundera, 나는 쉽게 봄과 그것을 통합 할 수 있습니다. Hardik Bhalani가 columnfamilies가 최대 효율을 달성하기 위해 조심스럽게 설계되었다고 제안했습니다.

1

첫 번째 문제에 대한 답변 : 여러 열 패밀리 간의 순회를 줄일 수 있도록 데이터 모델을 표준화해야합니다. 예 : CF itemlist에 일부 사용자 ID를 저장하는 경우 usermaster에 대한 호출을 가져올 때 이런 식으로 해당 userid 대신에 사용 세부 정보가있는 사용자의 JSON 객체를 삽입해야합니다.

+0

대답하는 문제는 무엇입니까? 귀하의 조언은 스프링 카산드라 헥터 (Spring-Cassandra-Hector)를 보유하는 데 도움이됩니까? 아니면 JPA와 관련이 있습니까? 저는 JPA와 Spring-Hector-Cassandra와 함께 일한 적이 없습니다. – Crowie

+1

필자의 대답은 "하나 이상의 열 패밀리에서 데이터를 가져와야 할 때 어떻게 쿼리를 만들 수 있습니까?" 내 솔루션은 데이터 모델을 설계하여 내 예문에 설명 된대로 종속성이 덜 필요합니다. –

+0

이제 나는 코드로 생산에 들어갔다. 나는 Kundera + SPrings를 사용했다. Hardik Bhalani가 columnfamilies가 최대한의 효율성을 달성하기 위해주의 깊게 설계되었다고 제안했다. –

0

documentation을 사용하여 쉽게 처리 할 수 ​​있었지만 SimpleCassandraDao (당신은 당신의 DAO에 주사 할 수 있습니다) - 이것은 매우 제한적입니다. 응용 프로그램이 배포되면 연결 풀 생성되도록

@PostConstruct 
public void connect() { 
if (Boolean.parseBoolean(isActive)) { 
    CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(this.socket); 
    cluster = HFactory.getOrCreateCluster(clusterName, cassandraHostConfigurator); 
    ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel(); 
    consistencyLevelPolicy.setDefaultReadConsistencyLevel(getConsistencyLevelPolicy()); 
    keyspace = HFactory.createKeyspace(keyspaceName, cluster, consistencyLevelPolicy); 
    if (isConnected()) 
    fireConnectionEvent(true); 
    else { 
    LOG.error("Could not connect to socket " + this.socket + ". Connection to Cassandra DB is down!!!"); 
    } 
} else { 
    LOG.info("Cassandra connection is not active hence could not connect to socket " + this.socket 
     + ". Please activate the connection before trying to connect"); 
} 
} 

이 방법은합니다 (구성 요소 주석 주석) 스프링 빈의 일부입니다 : 나는 실용적으로 연결을 작성했다 않았다 무엇

. 아시다시피, 나는 연결 이벤트 (Spring Application-Event 지원 사용)를 실행하고 있습니다.이 이벤트는 새로 만든 키 공간을 보유하고 있으며 Dao에 의해 잡혔습니다. 이렇게하면 Dao가 필요한 쿼리를 초기화 할 수 있습니다. 예 :

StringSerializer stringSerializer = StringSerializer.get(); 
SliceQuery<String, String, String> query = HFactory.createSliceQuery(this.keyspace, stringSerializer, stringSerializer, stringSerializer) 
     .setColumnFamily(columnFamily).setRange(null, null, false, 4).setKey(rowKey); 

    ColumnSlice<String, String> columnsSlice = query.execute().get(); 
    List<HColumn<String, String>> columns = columnsSlice.getColumns(); 

이 정보가 도움이되기를 바랍니다.

0

Playorm은 두 개의 열 패밀리에 대해 sql과 같은 조인을 지원합니다. 2. 열에도 색인 지원을 제공합니다.