전체 글 306

[Cassandra] 원격(remote), 로컬(local) 동시 접속

카산드라 운영시, 원격 서버에 카산드라를 설치하고 로컬에서 CQL쉘을 실행하거나 동시에 접속하고 싶은 경우가 있다. bin/cassandra.yaml 파일의 옵션을 아래와 같이 수정하면 원격에 있는 카산드라도 로컬에서 접속 가능하다. 1. 수정 항목 rpc_address: 0.0.0.0 broadcast_rpc_address: 192.168.0.2 listen_address: 192.168.0.2 seeds : 192.168.0.2 2. 추가 항목 start_rpc: true 수정 항목 및 추가 항목을 yaml에 적용 후, 카산드라를 재 실행하면 카산드라가 어디 있든, 로컬, 원격 접속 모두 가능하다. https://docs.datastax.com/en/archived/cassandra/3.0/cassa..

Database/Cassandra 2020.05.22

[Cassandra] Table, Column, Partition Key Clustering Key

카산드라 테이블 생성, Partition Key와 Clustering Key 설정, 컬럼 특성에 대해서 알아보자. 1. 테이블 생성 규칙 테이블 이름은 영숫자 및 밑줄로 구성될수 있다. 반드시 문자로 시작해야한다. 2. 주요 키 카산드라의 주요 키(Primary key)는 파티션 키(Partition Key)와 클러스터링 키(Cluster Key)로 구성되어 있다. 주요 키를 설정은 테이블을 생성할 때 적용할 수 있다. RDBMS의 쿼리문과 비슷하게 사용할 수 있다. 파티션키는 필수적으로 설정되어야하고, 복합키로도 설정이 가능하다. 주요 키 설정 방법은 2가지가 있다. 방법 1. Column에 직접 설정 CREATE TABLE emp( emp_id int PRIMARY KEY, emp_name text,..

Database/Cassandra 2020.05.21

[Youtube][이팩티브 자바] #5 의존성 주입

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 5 : 리소스를 엮을 때는 의존성 주입을 선호하라 대부분의 클래스는 여러 리소스에 의존한다. 이책에서는 SpellChecker와 Dictionary를 예로 들고 있다. 즉, SpellChecker가 Dictionary를 사용하고 이를 의존하는 리소스 또는 의존성이라고 부른다. 이때 SpellChecker를 다음과 같이 구현하는 경우가 있다. 부적절한 구현 static 유틸 클래스 유틸클래스 -> 인스턴스로 만들지 않기 때문에 pivate한 생성자로 만들어준다. (지난 강의 #4 참고) package me.whiteship.effectivejava3rd.item05.usecase1; im..

Programming/Java 2020.05.21

[Cassandra][java] PreparedStatement vs Statement

PreparedStatement, Staement 개념 PreparedStatement와 Statement의 가장 큰 차이점은 캐시(cache) 사용여부이다. 주요 역할 ① 쿼리 문장 분석 ② 컴파일 ③ 실행 Statement를 사용하면 매번 쿼리할때마다 3가지 주요역할을 수행한다. 하지만 PreparedStatement는 처음 한번만 3가지 주요역할을 수행하고, 캐시에 담아 재사용한다. 특징 비교 Statement PreparedStatement 어떤 SQL문을 사용하는지 파악하기 쉽다. executeQuery() 나 executeUpdate() 를 실행하는 시점에 파라미터로 SQL문을 전달 어떤 SQL문을 사용하는지 파악하기 어렵다. 보통 조건절과 함께 사용되며 재사용이 되는데, ? 부분에만 변화를 ..

Database/Cassandra 2020.05.20

[Youtube][이팩티브 자바] #4 인스턴스를 못만들게 하고 싶다면?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 4. private 생성자로 noninstantiability를 강제할 것 static 메서드와 static 필드를 모아둔 클래스를 만든 경우 해당 클래스를 abstract로 만들어도 인스턴스를 만드는 걸 막을 순 없다. 상속 받아서 인스턴스를 만들 수 있기 때문이다. static 메서드와 static 필드를 모아둔 클래스를 만든 경우 utility 클래스를 이렇게 많이 만든다. utility 클래스는 인스턴스를 만들 필요가 없기 때문에, abstact로 만들어서 강제할 수 있다. static클래스는 너무 많이 쓰면 안좋은 평판이 있다. (하지만 유효한 경우도 있다. Math, Arra..

Programming/Java 2020.05.20

[kafka] Confluent Platform Versions

카프카 구축 프로젝트를 진행하다보면, Confluent 에서 제공하는 플랫폼 버전과 카프카 버전을 확인해야할 때가 있다. 2020년 5월 18일 기준 버전은 아래와 같다 컨플루언트 플랫폼 릴리즈 버전 지원 종료 날짜는 부 버전 (예 : 5.5.x)에만 적용됩니다. 유지 관리 버전은 동일한 2 년 수명주기를 따릅니다. 2 년 지원 정책이 표준입니다. 프리미엄 지원 플랜에는 연장 지원 정책이 적용될 수 있습니다. 각 버전의 Confluent Platform에는 특정 Confluent Platform 버전에서만 호환되는 여러 구성 요소 서비스가 포함되어 있습니다. 여러 버전에서 사용할 수있는 클라이언트 및 Confluent Control Center를 포함한 예외가 있습니다. Apache Kafka® 및 그 ..

Programming/Kafka 2020.05.20

[kafka] multi-node zookeeper & kafka docker-compose.yml file

주키퍼와 카프카를 도커에 구축하기 위해서는 도커로 하나씩 실행하는 것보단 도커 컴포즈나 도커 스왐으로 실행하는 것을 추천한다. 주키퍼, 카프카 모두 분산 처리 시스템이기 때문에 여러개의 어플리케이션을 한꺼번에 띄우고 관리하는 것은 도커 컴포즈가 편하기 때문이다. 도커 컴포즈를 사용하다보면 도커 스왐이나 쿠버네티스가 더 편할것 같고, 옮길까 고민도 했지만 우선 도커 컴포즈 기준으로 분산 처리 시스템을 구축해본다. Sample docker-compose.yml 주키퍼 1개와 카프카 3개를 셋팅한 도커 컴포즈 파일은 아래와 같다. version: "3.8" services: zoo1: image: zookeeper:3.4.9 restart: always hostname: zoo1 networks: broker..

Programming/Kafka 2020.05.19

[Cassandra] multi-node cassandra docker-compose.yml file

카산드라를 도커에 설치하기 위한 방법은 대표적으로 도커와 도커 컴포즈 방법이 있다. 하나씩 띄우기에는 도커로 간편하게 띄울 순 있지만, 카산드라를 멀티 노드로 구축하거나, 카산드라 외에 다른 어플리케이션과 함께 설치하고 관리해야하는 경우에는 도커 컴포즈 파일로 한꺼번에 띄우는 방법을 사용할 수 있다. 도커 컴포즈는 사전에 설치 되어 있어야한다. 도커 컴포즈를 실행시키기전에 아래 yml 파일 구성을 먼저 확인한다. version: "3.8" services: cassandra-0: image: cassandra:latest restart: always ports: - 7000:7000 - 9042:9042 volumes: - /home/cassandra-node-0/commitlog:/var/lib/cas..

Database/Cassandra 2020.05.18

[DockerCompose] confluentinc/cp-kafka server.properties 설정

docker compose로 주키퍼 카프카 구축시, 로컬에서 구축하는 것처럼 server.properties 파일을 도커 외부에서도 확인하고 싶을때가 있다. 이를 설정하기 위해선, 외부에 server.properties파일을 미리 생성해주고, volum 환경 변수를 아래와 같이 설정해 주면된다. ... volumes: /home/config/server.properties:/etc/kafka/server.properties ... /home/config/server.properties : docker-compose 외부에 설정할 파일 경로 /etc/kafka/server.properties : docker-compose 내부에 설정된 properites 경로 docker-compose.yml git 바로..

Programming/Server 2020.05.16

[kafka] 보관 주기 설정

카프카의 데이터 보관 주기는 기본적으로 7일로 설정되어 있다. 보관 주기를 수정하는 방법 2가지가 있으며, 수정할때도 용량단위, 시간단위, 일단위, 초단위로 구체적인 단위로 설정 가능하다. 방법1. server.properties 파일 수정 보관주기 옵션 항목 log.retention.bytes : byte 단위 기준으로 데이터 보관 log.retention.ms : 초 단위 기준으로 데이터 보관 log.retention.minutes : 분 단위 기준으로 데이터 보관 log.retention.hours : 시간 단위 기준으로 데이터 보관, 해당 옵션이 168으로 기본으로 적용되어 있음 server.properties 파일 확인 ############################# Log Retentio..

Programming/Kafka 2020.05.15