Database/Cassandra 24

[Cassandra][datastax]Application Workflow and Access Patterns

Application Workflow 비즈니스 프로세스와 관련된 작업을 자동화하는 것을 의미한다. 각각의 어플리케이션은 작업흐름(workflow)을 가진다. Task와 의존성은 그래프를 형성된다. 액세스 패턴은 어떻게 데이터를 정의하는 것을 돕는다. 어떤 쿼리가 빠르게 동작할지 알게 해준다. 예시 Tasks : Show videos that were uploaded by a particular user. Add access pattern Q5 Add access pattern Q6 ~ Q11 참고사이트 https://academy.datastax.com/paths https://kissflow.com/workflow/workflow-application/

Database/Cassandra 2020.05.25

[Cassandra][datastax] Hierarchy

데이터 설계시 필수 개념인 상속성(Hierarchy)에 대해서 알아보자. Entity Type Hierarchy ISA(is-a) Hierarchies라는 뜻은 만약 A ISA B라고 한다면, 모든 A entity는 B entity로서 간주됨을 의미한다. 상위클래스(Superclass)-하위클래스(Subclass)의 관계로 말할 수 있다. ex ) Employees ISA Constract_Employees, Video ISA Full Video Superclass(A)의 속성들을 subclass(B)에게 적용시키기(물려주기)위해 사용한다. Relationship에서 entity를 identity하기 위해 사용한다. Transitivity Transitivity의 원어적 의미는 전이종속성이다. 동일한 테..

Database/Cassandra 2020.05.25

[Cassandra][datastax] Relationship Keys

Relationship Keys는 엔티티간의 관계를 나타내주는 의미를 한다. One-to-One key 엔티티의 키를 1:1로 매칭으로 사용할 수 있다. One-to-Many key 엔티티의 키를 1:n으로 매칭으로 사용할 수 있다. Many-to-Many Key 엔티티의 키를 m:n으로 매칭으로 사용할 수 있다. Attribute Key Participation Attribute를 유니하게 구별해줄 키 값이다. 예를 들어 사용자의 Attribute에서는 id가 될 수 있다. 참고 사이트 https://academy.datastax.com/paths

Database/Cassandra 2020.05.25

[Cassandra][datastax] Conceptual Data Modeling, Entity-Relationship (ER) Model

강의에서는 카산드라 모델링 과정을 아래와 같이 가이드 하고 있다. 그중 Conceptual Data Model을 먼저 작성해보자. 데이터 모델링의 개념적 접근을 위해 Entity-Relationship (ER) Model 개념을 선행한다. Entity-Relationship (ER) Model은 데이터베이스를 디자인하기 위해 이용되는 모델링 기법으로 데이터베이스 요구 사항을 그래픽 적으로 표현하는 방법이다. ER 모델에서는 데이터 베이스에 저장되는 데이터를 추상화하여 나타내기 때문에 특정 DBMS 및 하드웨어에 독립적으로 데이터베이스의 구조를 나타낼 수 있다. Entity-Relationship (ER) Model은 Entity Types - Relationship Type - Attribute Type..

Database/Cassandra 2020.05.25

[Cassandra] Import, Export csv file using CQL COPY command

카산드라에서는 Insert로 데이터를 넣는 방법 외에 csv 파일로 데이터를 한꺼번에 넣을수 있는 기능과 카산드라의 데이터를 csv 파일로 저장하는 기능을 지원한다. 이런 기능은 cql창에서 COPY 명령어를 사용하면 가능하다. # Import : Csv File -> Cassandra COPY table_name [( column_list )] FROM 'file_name'[, 'file2_name', ...] | STDIN [WITH option = 'value' [AND ...]] # Export : Cassandra -> Csv File COPY table_name [( column_list )] TO 'file_name'[, 'file2_name', ...] | STDOUT [WITH optio..

Database/Cassandra 2020.05.23

[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

[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

[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

[Cassandra] select 쿼리 작성시 참고사항

Cassandra 디자인 하면서 데이터를 가져오는 Select 쿼리 실행시 참고하면 좋을 내용을 정리해보았다. 1. 대소문자 구분 안함 카산드라는 대소문자를 구문 안하므로, CamelCase와 같은 문자 표기법을 사용할 수 없다. 대문자로 입력해도 무조건 소문자로 저장한다. 대문자를 사용하고 싶다면 큰따옴표를 사용하면 강제로 실행할수 있다. [공식 다큐먼트] 2. 복합키 사용 (Compund Primary key) 카산드라에서는 Primary key가 Partition key와 Clustering key로 구분된다. 이는 테이블 생성시 Primary key 항목에 , 로 구분하여 입력하면된다. 기억해야할 점은 Partition key는 필수적으로 지정해줘야하고, 복수개 설정이 가능하다. Clusterin..

Database/Cassandra 2020.05.14