Cassandra

개요

Cassandra를 위한 Spring 데이터 프로젝트는 핵심 Spring 개념을 Cassandra 컬럼형 데이터 저장소를 사용하는 솔루션 개발에 적용하여 문서를 저장하고 쿼리하기 위한 높은 수준의 추상화 템플릿을 제공한다. Spring 프레임워크에서 제공하는 JDBC 지원과 유사하다는 것을 알 수 있다.

설명

데이터베이스 연동

Spring Data Cassandra와 Spring WebFlux를 함께 사용하여 Cassandra 데이터베이스와의 비동기적인 상호 작용을 지원하기 위해 Spring Data Cassandra에서 제공하는 DefaultBridgedReactiveSession 클래스를 사용한다. 해당 클래스를 사용하여 Cassandra 클러스터에 대한 연결을 설정하고, 세션을 관리하며 비동기 쿼리를 실행하고 결과를 처리할 수 있다.

실행환경 라이브러리

package org.egovframe.rte.psl.reactive.cassandra.connect;
 
public class EgovCassandraConfiguration {
 
    public ReactiveSession reactiveSession() {
        return new DefaultBridgedReactiveSession(
            CqlSession.builder()
                .withLocalDatacenter(getDataCenterName())
                .withKeyspace(getKeyspaceName())
                .addContactPoint(InetSocketAddress.createUnresolved(getContactPoint(), getPort()))
                .withAuthCredentials(getUsername(), getPassword())
                .build()
        );
    }
}

적용 예제

package egovframework.webflux.config;
 
import org.egovframe.rte.psl.reactive.cassandra.connect.EgovCassandraConfiguration;
......
 
@Configuration
public class EgovCassandraConfig {
 
    @Bean(name="reactiveSession")
    public ReactiveSession reactiveSession() {
        EgovCassandraConfiguration egovCassandraConfiguration = new EgovCassandraConfiguration();
        egovCassandraConfiguration.setDataCenterName(this.dataCenterName);
        egovCassandraConfiguration.setKeyspaceName(this.keyspaceName);
        egovCassandraConfiguration.setContactPoint(this.contactPoints);
        egovCassandraConfiguration.setPort(this.port);
        egovCassandraConfiguration.setUsername(this.username);
        egovCassandraConfiguration.setPassword(this.password);
        return egovCassandraConfiguration.reactiveSession();
    }
}

Repository 구성

Spring WebFlux와 ReactiveCassandraTemplate을 사용하면 비동기, 논블로킹 처리와 높은 가용성을 통한 효율적인 Cassandra 데이터베이스 상호 작용을 달성할 수 있으며 확장성, 효율성, 그리고 반응형 스트리밍을 통해 데이터베이스 처리를 최적화할 수 있다. 또한 Flux 및 Mono와 같은 리액티브 타입을 사용하여 스트림 데이터를 다룰 수 있으며, 실시간 데이터 처리 및 웹 소켓과 같은 실시간 기능을 구현하기가 용이하다.

실행환경 라이브러리

@Repository 클래스에 EgovCassandraRepository 클래스를 extends 하여 insertData, updateData, deleteData, selectAllData 메소드를 활용한다.

package org.egovframe.rte.psl.reactive.cassandra.repository;
 
public class EgovCassandraRepository<T> extends ReactiveCassandraTemplate {
    public EgovCassandraRepository(ReactiveSession reactiveSession) {
        super(reactiveSession);
    }
 
    public Flux<T> selectAllData(Query query, Class<T> entityClass) {
        return select(query, entityClass);
    }
 
    public Mono<T> selectOneData(Query query, Class<T> entityClass) {
        return selectOne(query, entityClass);
    }
 
    public Mono<Long> countData(Query query, Class<T> entityClass) {
        return count(query, entityClass);
    }
 
    public Mono<T> insertData(T entity) {
        return insert(entity);
    }
 
    public Mono<T> updateData(T entity) {
        return update(entity);
    }
 
    public Mono<T> deleteData(T entity) {
        return delete(entity);
    }
}

참고자료

 
egovframework/rte4.2/psl/reactive/cassandra.txt · 마지막 수정: 2024/02/23 00:48 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki